终端里的 AI 编程搭档 — 支持多模型、自动备份、中英文双语。
当前访问频次受限,请登录后继续访问
CodeMate
极简主义 AI 编程助手 — 多模型 / 自动备份 / 双语 / 记忆系统 / 子代理 / 局域网与互联网协作 / 项目保护
CodeMate x CostCut-Infer(https://gitcode.com/fhz1206/CostCut-Infer )
当前版本: v2.3.0 · Python 3.14+ · PyQt6 桌面 UI · DSH 插件系统兼容 · DSH 极简提示词默认
📑 目录
功能总览
| 类别 | 功能 |
|---|---|
| 🤖 多模型 | DeepSeek / OpenAI / Anthropic / Ollama / 阶跃星辰 / OpenRouter,任意 OpenAI 兼容 API |
| 🔒 安全 | 自动备份、四级审批、项目保护(越界/敏感文件/Git 拦截) |
| 🧠 记忆 | .md 格式持久化,全局 + 项目双作用域,跨模型可读 |
| 🏠 局域网协作 | WebSocket 房间,房主审批,全房间广播 |
| 🌐 互联网协作 | 基于 Relay/STUN 的房间,支持非局域网团队 |
| 📎 多模态 | /attach 图片/音频/视频/代码文件 |
| 🧩 扩展 | skills/ 目录技能包自动加载,扩展开关独立控制 |
| ⚙️ 自检 | 启动 17 项功能检测,/selfcheck 随时检测 |
| 🖥 Computer Use | 截图、鼠标、键盘、窗口自动化(对标 Codex) |
| 🖱 鼠标/键盘 | 第三方技能包:移动/点击/滚动/拖拽/输入 |
| 🧪 测试 | 53 个 pytest 单元测试 + GitHub Actions CI/CD |
快速开始
# 1. 安装依赖
pip install rich prompt_toolkit httpx websockets
pip install PyQt6 psutil fastapi uvicorn pydantic python-dotenv
pip install pyautogui pygetwindow pillow # Computer Use 技能
pip install -e .
# 2. 配置 codemate.toml(见下节)
# 3. 启动
python app.py # CLI 模式(默认)
python app.py --desktop # PyQt6 桌面 UI
python app.py --webui # WebUI(HTTP + WebSocket)
python -m codemate # 同 CLI 模式
python -m codemate --desktop # 桌面 UI
需要 Python 3.14+(使用内置 tomllib 解析配置)。
桌面 UI
CodeMate v2.0+ 包含极简主义 PyQt6 桌面应用作为主要界面:
- 首次运行主题选择:白天(浅色)/ 晚上(深色)/ 自适应(跟随系统)
- 默认自适应主题:自动跟随系统偏好
- 持久化设置:主题和语言保存到
codemate.toml - 极简设计:干净的聊天界面,显示提供商状态
- 全部 CLI 功能:完整的工具支持、记忆、协作等
- 模式选择器:顶部下拉框切换 Standard / Python / Workflow 模式
启动方式:
python app.py --desktop
# 或
python -m codemate --desktop
# 或
codemate-desktop # 安装后的命令
配置文件 codemate.toml
完整示例(含注释):
# ═══════════════════════════════════════════════
# CodeMate 配置文件
# ═══════════════════════════════════════════════
# ── 全局设置(必须放在所有 [段] 之前)──
default_provider = "deepseek" # 默认提供商(对应 [providers] 段名)
language = "zh" # 界面语言: en / zh
prompt_style = "dsh_minimal" # 提示词风格: dsh_minimal / codemate_classic
theme = "adaptive" # 主题: light / dark / adaptive(跟随系统)
theme_first_run = false # 首次运行是否显示主题选择器
max_tokens = 4096 # 每次生成最大 token 数
temperature = 0.0 # 生成温度 (0.0-2.0)
max_tool_rounds = 20 # 单次对话最大工具调用轮次
context_window = 128000 # 全局上下文窗口
backup_rounds = 30 # 备份保留轮次(0=保留全部)
approval_level = "auto" # 审批级别: auto/plan/build/high-build
# ── AI 服务商(可配多个)──
[providers.deepseek]
type = "openai" # API 类型: openai / anthropic
api_key = "sk-..."
model = "deepseek-chat"
base_url = "https://api.deepseek.com"
context_window = 64000
[providers.ollama]
type = "openai"
api_key = ""
model = "qwen2.5-coder:14b"
base_url = "http://localhost:11434/v1"
context_window = 32000
# ── 子代理 ──
[sub_agent]
enabled = true # 启用子代理委派
max_rounds = 10 # 子代理最大工具轮次
model = "" # 子代理模型(空=与主 Agent 相同)
# ── 项目保护 ──
[project_protection]
enabled = true
block_outside_paths = true
sensitive_files = true
git_warning = true
sensitive_exts = [".db", ".sqlite", ".sql", ".key", ".pem",
".p12", ".keystore", ".env", ".secret"]
# ── 扩展开关 ──
[extensions]
enabled = true # 总开关: false = 全部关闭
skills = true # 技能系统
delegate = true # 子代理工具
memory = true # 记忆系统
todo = true # 任务列表
attachment = true # 多模态附件
collab = true # 局域网协作
relay = true # 互联网协作 (relay/STUN)
computer_use = true # 电脑自动化(对标 Codex)
miniwindow = true # 悬浮窗
protection = true # 项目保护
approval = true # 审批系统
# ── Relay 服务器(互联网协作用)──
[relay]
host = "relay.codemate.app" # 公共 relay 服务器地址
port = 8766 # 公共 relay 服务器端口
修改配置后执行 /reload 立即生效,无需重启。
命令一览
输入 / 后按 Tab 自动补全。
| 命令 | 说明 |
|---|---|
/help |
显示帮助(表格形式) |
/clear |
清除对话历史和缓存 |
/status |
查看项目状态和配置 |
/providers |
列出所有已配置的提供商 |
/reload |
重新加载 codemate.toml |
/skills |
列出已加载的技能包 |
/extensions |
查看扩展开关状态 |
/selfcheck |
运行全部功能自检(17 项) |
/lang en / /lang zh |
切换语言 |
/mode <mode> |
切换 Agent 模式: standard/python/workflow |
/workflow |
工作流模式: save/list/clear/status |
/subagent |
子代理管理: list/status/add/insert/cancel |
/history |
查看对话历史 |
/tool <N> |
查看第 N 个工具调用完整输出 |
/diff <N> |
查看文件修改前后红绿对比 |
/undo |
列出可恢复的备份并回滚 |
/update |
检查并应用更新 |
/attach <文件> |
附加图片/音频/视频/代码文件 |
/room create |
创建局域网协作房间(房主) |
/room join <ID> |
加入房间(成员) |
/room status |
查看房间状态 |
/room pending |
查看待审批请求(房主) |
/room leave |
离开/关闭房间 |
/approve <ID> |
批准房间请求(房主) |
/reject <ID> |
拒绝房间请求(房主) |
/relay create |
创建互联网 relay 房间 |
/relay join <ID> <TOKEN> |
加入 relay 房间 |
/miniwindow |
最小化到悬浮窗(PyQt6) |
/exit |
退出 CodeMate |
工具列表
内置工具(15 个)
| 工具 | 参数 | 说明 |
|---|---|---|
read_file |
file_path, offset, limit | 读取文件,返回带行号内容 |
write_file |
file_path, content | 写入文件(修改前自动备份) |
edit_file |
file_path, old_string, new_string, replace_all | 精确替换文件片段(自动备份) |
glob |
pattern, path | 按 glob 模式搜索文件名 |
grep |
pattern, path, context, max_results | 按正则搜索文件内容 |
list_directory |
path, depth | 列出目录树 |
bash |
command, timeout | 执行 Shell 命令 |
search_web |
query | 搜索网络 |
fetch_url |
url, max_chars | 抓取网页内容 |
create_todo |
action, title, items | 创建/管理任务列表(.md 文件) |
delegate |
action, task, context, tools, name, subagent_id, task_description, insert_after | 子代理管理(创建/列表/状态/添加任务/插入任务/取消) |
memory_save |
key, value, scope | 保存记忆(project/global) |
memory_read |
key, scope | 读取记忆 |
memory_list |
scope | 列出所有记忆 |
computer_use |
action, x, y, text, key, keys, button, clicks, direction, amount, window_title, duration, save_path | 电脑自动化(截图、鼠标、键盘、窗口) |
核心特性详解
1. 自动备份 + Diff + 撤销
每次文件修改都会在 cache/backups/ 创建带时间戳的备份:
- Diff 视图:
/diff <N>显示第 N 次工具调用的红绿对比 - 回滚:
/undo列出可恢复的备份,选择一个恢复 - 保留策略:配置
backup_rounds控制保留轮数(0 = 无限制)
2. 四级审批系统
通过 codemate.toml 的 approval_level 或 /approval 命令配置:
| 级别 | 行为 |
|---|---|
auto |
自动批准安全操作(read, grep, glob);写入/Shell 需要确认 |
plan |
所有工具调用都需要确认,执行前显示计划 |
build |
写入/Shell 需要确认;只读操作自动批准 |
high-build |
所有操作都确认,包括只读 |
CLI 中 F2 循环切换模式。桌面 UI 在状态栏显示当前模式。
3. 项目保护
执行前拦截危险操作:
- 路径越界:阻止读取/写入项目根目录外的文件(网络搜索除外)
- 敏感文件:拦截
.env、.key、.pem、.db、.sql等 - Git 操作:有未提交更改时警告
git pull/push/merge
在 [project_protection] 段配置。
4. 持久化记忆
cache/memory.md 中的 .md 格式 — 重启后保留,跨模型可读:
- 作用域:
global(所有项目)+project(仅当前项目) - 命令:
memory_save,memory_read,memory_list - 自动加载:Agent 在对话开始时读取相关记忆
5. 子代理委派
创建隔离子代理执行复杂任务:
- 在
[sub_agent]段启用(默认已启用) - 工具:
delegate(action, task, context, tools, ...) - 子代理有独立上下文,向父级返回摘要
- 后台运行:非阻塞执行,立即返回 ID
- 任务管理:主 Agent 可查看状态、添加任务、插入任务、取消
- 用途:代码审查、研究、分析
子代理管理命令:
/subagent list # 列出所有子代理
/subagent status <id> # 查看详细状态
/subagent add <id> <任务描述> # 添加新任务
/subagent insert <id> <索引> <任务> # 在指定位置插入任务
/subagent cancel <id> # 取消子代理
6. 局域网协作
本地网络内基于 WebSocket 的房间:
- 房主:
/room create→ 获得 RoomID(6 字符)+ 局域网地址 - 成员:
/room join <RoomID>→ 输入房主 IP - 审批:房主用
/approve <ID>//reject <ID>审批成员请求 - 广播:所有事件(加入/离开/请求/审批)对所有人可见
- 端口:8765(可配置)
7. 互联网协作 (Relay) — v2.0 新增
非同一局域网的团队使用。采用 relay/STUN 架构:
- Relay 服务器:转发客户端消息的公共服务器
- 房主:
/relay create→ 获得 RoomID + Token - 成员:
/relay join <RoomID> <Token>→ 通过 relay 连接 - 相同功能:请求审批、聊天、成员管理
- 默认 relay:
relay.codemate.app:8766(在[relay]段配置) - 自建:运行
python -m codemate.collab.relay server部署私有 relay
8. 多模态附件
/attach <文件> 支持:
| 类型 | 扩展名 | 发送格式 |
|---|---|---|
| 图片 | png/jpg/gif/webp/bmp | image_url + base64 |
| 音频 | mp3/wav/m4a/ogg/aac | input_audio + base64 |
| 视频 | mp4/mov/avi/mkv | 文本引用 + 路径提示 |
| 代码 | py/js/rs/go/java 等 | 代码块文本(超 2 万字符截断) |
实际图片/音频处理取决于模型是否支持(GPT-4o/Claude 支持视觉)。
9. Computer Use 技能(默认,对标 Codex) — v2.1 新增
computer-use 技能默认包含,提供对标 Codex computer-use 工具的电脑自动化能力:
操作列表:
| 操作 | 说明 |
|---|---|
screenshot |
截屏,保存到文件或返回 base64 |
click, double_click, right_click |
鼠标点击指定坐标 |
move |
移动鼠标(可带时长) |
drag |
从 (x,y) 拖拽到 (x2,y2) |
scroll |
上下左右滚动 |
type |
输入文本 |
key |
按单个键 |
hotkey |
组合键(如 ctrl+c) |
window_list |
列出所有窗口及边界 |
window_focus |
按标题聚焦窗口 |
window_bounds |
获取窗口位置/大小 |
wait |
等待指定时长 |
工具调用示例:
# 截屏
computer_use(action="screenshot", save_path="screen.png")
# 点击坐标
computer_use(action="click", x=100, y=200)
# 输入文本
computer_use(action="type", text="Hello World")
# 组合键
computer_use(action="hotkey", keys=["ctrl", "shift", "esc"])
# 窗口管理
computer_use(action="window_list")
computer_use(action="window_focus", window_title="CodeMate")
依赖: pip install pyautogui pygetwindow pillow
10. Agent 模式 — v2.1 新增
三种 Agent 操作模式,通过 /mode 命令或桌面 UI 下拉框切换:
| 模式 | 说明 | 特性 |
|---|---|---|
| Standard(默认) | 带工具的 ReAct 循环 | 15 个工具、审批、保护 |
| Python | 持久化 Python 环境(Phi Agent 风格) | %reset, %history, %vars;变量跨执行持久化 |
| Workflow | 记录操作 → 生成技能 | /workflow save <名称> <描述> → 生成 SKILL.md + workflow.py |
Python 模式命令:
%reset # 清空环境
%history # 显示执行历史
%vars # 列出变量
Workflow 模式命令:
/workflow save <名称> <描述> # 生成技能并保存到 skills/
/workflow list # 列出已生成的技能
/workflow clear # 清空记录的步骤
/workflow status # 查看当前记录状态
11. Skills 扩展系统
将技能包放入 skills/ 目录,每个技能是一个文件夹:
skills/
my-skill/
SKILL.md # 必填: YAML frontmatter (name/description) + 指令
scripts/ # 可选: 可执行脚本 (.js/.py/.sh, 通过 bash 调用)
tools.py # 可选: CodeMate 原生工具 (register_tool() 自动注册)
SKILL.md 格式(推荐:Agent Skills 开放标准)
采用 agentskills.io YAML frontmatter,兼容互联网上的技能包:
---
name: my-skill
description: 技能做什么、什么场景使用。Agent 靠这段判断是否触发本技能。
---
# 技能名称
## Instructions
给 Agent 的分步指令(正文按需读取,不会常驻上下文)
CodeMate 旧版格式(仍兼容):
# 技能名称
## Description
技能做什么
## Instructions
给 Agent 的指令
## When to use
什么场景下使用
加载机制:
- 启动时自动扫描
skills/目录,frontmatter 和旧格式都能识别 tools.py中的register_tool()自动注册原生工具(可选,纯 md 也能用)name+description注入系统提示词让 LLM 知道何时使用/skills列出已加载技能,/extensions查看开关状态
12. 扩展开关
[extensions] 段控制每个扩展,/reload 生效:
[extensions]
enabled = true # 总开关
skills = true
delegate = true
memory = true
todo = true
attachment = true
collab = true
relay = true
computer_use = true # 电脑自动化(对标 Codex)
miniwindow = true
protection = true
approval = true
关闭后对应工具不注册、命令不可用。/extensions 查看状态:
>>> /extensions
扩展开关 (11/11 启用)
总开关: ✅ 开启
✅ skills / ✅ delegate / ✅ memory / ✅ todo
✅ attachment / ✅ collab / ✅ relay
✅ computer_use / ✅ miniwindow / ✅ protection / ✅ approval
13. 启动自检
启动时自动运行 17 项检测,发现问题显示红色警告:
╔═ Self-Check ═══════════════════════╗
║ ⚠ 发现 2 项问题: ║
║ ❌ Shell 工具: bash 执行失败 ║
╚═════════════════════════════════════╝
/selfcheck 手动运行完整检测(17 项):
═══ CodeMate 自检 ═══
检测项: 17 | 通过: 17 | 失败: 0
✅ 配置文件 / 语法 / 导入链 / 配置系统
✅ 工具注册 / 文件工具 / Shell / 备份
✅ 记忆 / 国际化 / 技能 / 项目索引
✅ Agent / 项目保护 / 多模态
✅ 局域网协作 / 悬浮窗 (PyQt6)
✅ 互联网协作 (Relay)
14. 悬浮窗监控
/miniwindow 最小化终端到圆角悬浮窗:
┌──────────────────────────────────────────────────┐
│ ╭─────╮ ┌────────────────────────────────┐ │
│ │ 32% │ │ CPU: 23% RAM: 41% │ │
│ ╰─────╯ └────────────────────────────────┘ │
│ 上下文 Token CPU + RAM 实时监控 (1秒刷新) │
└──────────────────────────────────────────────────┘
- 左侧圆环:上下文 token 占用百分比(动态实时)
- 右侧状态条:CPU 占用 + RAM 占用(psutil,1 秒刷新)
- 暗色主题,左键拖动,双击恢复终端
- 需要 PyQt6 + psutil
开发技能包
按 Agent Skills 标准开发,第三方技能包只需两步:
1. 创建目录结构:
skills/my-skill/
SKILL.md # 必填: frontmatter(name/description) + 指令
scripts/ # 可选: 可执行脚本 (.js/.py/.sh…), Agent 经 bash 调用
2. 编写 SKILL.md:
---
name: my-skill
description: 做什么、什么时候用(Agent 据此判断是否触发本技能)
---
# My Skill
## Instructions
1. 分步指令……需要计算/处理时运行捆绑脚本:
node skills/my-skill/scripts/do.js <参数>
重启 CodeMate 或 /reload 自动加载,/skills 确认。
可选:需要原生 Python 工具(不经 bash)时,添加
tools.py调用register_tool()— 这是 CodeMate 的扩展机制,非标准要求。
项目结构
codemate/ # 45+ Python 模块
├── __main__.py # 入口 (python -m codemate)
├── cli.py # CLI 主循环
├── i18n.py # 国际化 (中/英 80+ 条目)
├── selfcheck.py # 启动自检 (17 项)
├── extensions.py # 扩展开关管理
├── config/ # 配置层
│ ├── settings.py # 全局配置 + TOML 加载
│ └── providers.py # 提供商配置解析
├── ui/ # 界面层
│ ├── display.py # 渲染:工具调用/状态/历史/diff
│ ├── commands.py # 命令分发 + 帮助表格
│ ├── room_commands.py # 局域网协作房间命令
│ └── desktop/ # PyQt6 桌面 UI (NEW)
│ ├── __init__.py
│ └── app.py # 桌面主应用
├── llm/ # LLM 提供商层
│ ├── __init__.py # Message/ToolCall/LLMProvider
│ ├── prompts.py # 系统提示词 (DSH 极简 + 经典)
│ ├── providers.py # 工厂模式
│ ├── openai_compat.py # OpenAI 兼容 API
│ └── anthropic_provider.py # Claude API
├── agent/ # Agent 核心
│ ├── agent.py # ReAct 主循环(支持多模式)
│ ├── modes.py # Agent 模式管理 (NEW)
│ ├── subagent_manager.py # 子代理管理器 (NEW)
│ ├── context.py # 对话上下文
│ ├── tool_runner.py # 工具调度
│ └── history.py # 历史持久化
├── tools/ # 内置工具 (15 个)
│ ├── registry.py # 工具注册表
│ ├── file_tools.py # 文件操作
│ ├── shell_tools.py # Shell 执行
│ ├── web_tools.py # 网络搜索
│ ├── backup.py # 备份 + diff + undo
│ ├── todo_tools.py # 任务列表
│ ├── delegate.py # 子代理(完整管理)
│ ├── memory.py # 记忆系统 (.md)
│ ├── approval.py # 四级审批
│ ├── protection.py # 项目保护
│ ├── attachment.py # 多模态附件
│ ├── updater.py # 版本更新
│ └── miniwindow.py # 悬浮窗 (PyQt6)
├── collab/ # 局域网 + 互联网协作
│ ├── __init__.py # 导出: CollabServer, CollabClient, RelayServer, RelayClient
│ ├── server.py # 局域网 WebSocket 服务器(房主)
│ ├── client.py # 局域网 WebSocket 客户端(成员)
│ ├── room.py # 房间/请求管理
│ ├── protocol.py # JSON 消息协议
│ └── relay.py # Relay/STUN 服务器与客户端 (NEW)
├── skills/ # 技能系统
│ └── loader.py # 技能发现/加载
└── project/
└── indexer.py # 项目索引
skills/ # 技能包
├── computer-use/ # 电脑自动化(对标 Codex,默认)
│ ├── SKILL.md
│ ├── computer_use.py # 原生 Python 实现
│ ├── tools.py # CodeMate 原生工具注册
│ └── scripts/computer-use.js # JS 包装器
├── example-skill/ # 示例技能(标准格式 + JS)
│ ├── SKILL.md
│ └── scripts/hello.js
├── mouse-control/ # 鼠标控制(零依赖 JS)
│ ├── SKILL.md
│ └── scripts/mouse.js
└── keyboard-input/ # 键盘输入(零依赖 JS)
├── SKILL.md
└── scripts/keyboard.js
tests/ # 测试目录 (NEW)
├── test_compat.py # 兼容性测试 (20 个)
├── test_modes.py # Agent 模式测试 (14 个)
├── test_computer_use.py # Computer Use 测试 (6 个)
├── test_subagent.py # 子代理测试 (13 个)
└── ...
.github/workflows/ci.yml # GitHub Actions CI/CD (NEW)
架构设计
用户输入 → cli.py → commands.py → agent.py → llm/ (LLM API)
│ │
room_commands.py tools/ (15 个内置工具)
(局域网协作) │
│ approval.py (审批)
collab/server.py protection.py (项目保护)
backup.py (备份)
display.py → 用户
桌面 UI (--desktop):
用户输入 → desktop/app.py → agent.py → llm/ (LLM API)
│
PyQt6 聊天 UI + 主题系统 + 模式选择器
数据流:
- 用户输入 → 主循环(CLI 或桌面)
agent.py调用 LLM 生成工具调用- 每个工具执行前经过:审批检查 → 项目保护检查
- 文件修改前自动备份,结果返回上下文
- LLM 整合结果流式输出给用户
依赖
rich>=13.0 # 终端彩色输出
prompt_toolkit>=3.0 # 交互式输入 + Tab 补全
httpx>=0.27 # HTTP 客户端
websockets>=12.0 # 局域网/互联网协作
PyQt6>=6.6 # 桌面 UI(必需)
psutil>=5.9 # 系统监控
fastapi>=0.109 # WebUI 后端
uvicorn>=0.27 # ASGI 服务器
pydantic>=2.5 # 数据校验
python-dotenv>=1.0 # .env 文件支持
pyautogui>=0.9 # Computer Use 自动化
pygetwindow>=0.0.9 # 窗口管理
pillow>=10.0 # 图像处理
开发依赖:
pytest>=8.0 # 测试框架
pytest-asyncio # 异步测试支持
ruff # 代码检查
mypy # 类型检查
打包为 exe
# 方式一:双击 build_exe.bat
# 方式二:手动执行
pyinstaller --onedir --name codemate --console \
--add-data "codemate;codemate" \
--add-data "skills;skills" \
--add-data "version.json;." \
codemate/__main__.py
输出:dist/codemate/codemate.exe(单目录,解压即用)
注意:
skills/和codemate.toml需放在 exe 同目录。
测试
# 运行全部测试
python -m pytest tests/ -v
# 运行特定测试文件
python -m pytest tests/test_compat.py -v
python -m pytest tests/test_modes.py -v
python -m pytest tests/test_computer_use.py -v
python -m pytest tests/test_subagent.py -v
# 运行特定测试类
python -m pytest tests/test_subagent.py::TestSubAgentManager -v
CI/CD: GitHub Actions 自动运行测试、lint、构建、部署(见 .github/workflows/ci.yml)。
更新日志
v2.3.0(当前)— 测试与 CI/CD
- 测试目录
tests/:53 个 pytest 测试test_compat.py(20 个):配置、i18n、提示词、工具、协作、技能、自检、模式、子代理、computer-usetest_modes.py(14 个):AgentModes、Python 模式、Workflow 模式、PythonExecutionStatetest_computer_use.py(6 个):工具注册、schema、参数、实现test_subagent.py(13 个):SubAgentManager、delegate 工具、集成
- GitHub Actions CI/CD(
.github/workflows/ci.yml)- 测试、lint(ruff + mypy)、构建、PyPI 部署
app.py统一入口:CLI / Desktop / WebUI 模式.gitignore更新:排除cache/
v2.2.0 — 子代理增强
- SubAgentManager:跟踪和管理子代理
- delegate 工具完整管理操作:create, list, status, add_task, insert_task, cancel
- 后台执行:非阻塞,立即返回 ID
- CLI 命令:
/subagent list|status|add|insert|cancel - 默认
sub_agent.enabled = true
v2.1.0 — Agent 模式 + Computer Use
- Agent 模式:Standard, Python (Phi Agent 风格), Workflow
- Python 模式:持久化 Python REPL,支持
%reset,%history,%vars - Workflow 模式:记录操作 → 生成 Agent Skills (
/workflow save) - 通过
/mode命令和桌面 UI 下拉框切换
- Python 模式:持久化 Python REPL,支持
- Computer Use 技能(默认,对标 Codex):
- 截图、鼠标、键盘、窗口自动化
- 原生工具:
computer_use(action, x, y, text, key, keys, ...) - 依赖:
pyautogui,pygetwindow,pillow
v2.0.0 — 大重构
- 极简 PyQt6 桌面 UI,自适应主题(白天/晚上/自适应)
- 首次运行主题选择器,持久化到
codemate.toml - DSH 极简提示词默认(通过
prompt_style可配置) - DSH 插件系统完全兼容(扩展注册表模式)
- 互联网协作:Relay/STUN(
relay.py,/relay命令) - 局域网协作保留(房间管理增强)
- Python 3.14+ 要求
- 更新依赖:PyQt6, FastAPI, Uvicorn, Pydantic
- 入口点:
codemate,codemate-desktop,--desktop,--webui
v1.3.1
- 局域网多人协作(WebSocket 房间 + 房主审批)
- 全房间广播(加入/离开/请求/审批对所有人可见)
- 项目保护(路径越界/敏感文件/Git 拦截)
- 多模态附件(
/attach图片/音频/视频/代码) - Skills 扩展系统(第三方技能包自动注册)
- 扩展开关(
[extensions]段,9 个独立开关) - 启动自检(17 项)+
/selfcheck - 悬浮窗监控(上下文 token + CPU/RAM)
- 命令帮助改为表格形式
- 鼠标控制技能包(
skills/mouse-control)
v1.2.0
- 四级审批系统(none/low/medium/high)
/undo代码回滚 + 多版本备份- 记忆系统改为 .md 格式
/diff文件改动对比- 子代理委派(隔离上下文)
- UI 重构为多模块(commands/display/room_commands)
- 任务列表强制化(
create_todo必先列计划)
v1.1.3
- 记忆系统(memory_save/read/list)
- 任务列表工具(create_todo)
- 工具调用着色区分
- 路径穿越安全防护
- Agent finish 循环 bug 修复
v0.2.0
- 自动版本检测与更新提示
- 对话历史按项目-时间分组存储
- 自定义服务商支持(OpenAI 兼容)
- 蓝色旋转等待动画
v0.1.0
- 初始发布:多模型、文件操作、Shell、备份、双语界面
- PyInstaller 打包,Windows .exe
常见问题
Q: 启动时报 No module named ...?
A: 安装缺失依赖:pip install rich prompt_toolkit httpx websockets PyQt6 psutil fastapi uvicorn pydantic python-dotenv pyautogui pygetwindow pillow
Q: 修改 codemate.toml 不生效?
A: 执行 /reload 重新加载;注意 [sub_agent] 是下划线不是连字符。
Q: 悬浮窗 / 桌面 UI 报错?
A: 确认已安装 PyQt6:pip install PyQt6。用 python -m codemate --desktop 启动。
Q: 局域网协作连不上? A: 确认同局域网、房主端口 8765 未被防火墙拦截、RoomID 大小写一致。
Q: 上下文满了怎么办?
A: 执行 /clear 清空上下文,或调大 context_window。
Q: 想禁用某个功能?
A: 在 [extensions] 段将对应项设为 false,然后 /reload。
Q: 记忆文件在哪?
A: cache/memory.md,直接编辑即可跨模型迁移。
Q: 怎么用互联网协作 (Relay)?
A: 在 [extensions] 启用 relay = true,然后房主用 /relay create,成员用 /relay join <ID> <TOKEN>。需要公共 relay 服务器。
Q: 怎么切换提示词风格?
A: 在 codemate.toml 设置 prompt_style = "codemate_classic" 用原版详细提示词,或 prompt_style = "dsh_minimal" 用 DSH 极简(默认)。
Q: 怎么运行测试?
A: python -m pytest tests/ -v。需要 pip install pytest pytest-asyncio。
Q: Computer Use 在无显示器环境能跑吗?
A: 需要图形界面(Windows 桌面 / X11)。CI 无显示器环境下 screenshot/click 会失败,属预期行为。
开发
python app.py # 启动 CLI
python app.py --desktop # 启动桌面 UI
python app.py --webui # 启动 WebUI
python -m pytest tests/ -v # 运行测试
CI/CD 流程(.github/workflows/ci.yml):
- test — Ubuntu/Windows + Python 3.14 运行 53 个测试
- lint — ruff 检查 + mypy 类型检查
- build — 发布时构建 Python 包
- deploy-pypi — 自动发布到 PyPI