zcbot/PROGRESS.md

4.6 KiB

实施进度

配合 DESIGN.md 阅读。本文件只记录 phase 状态、决策偏差、文件量、下一步。

最后更新:2026-05-07(TUI 打磨 + task_dir 概念真正落地)


状态

Phase 标题 状态 备注
1 最小可用骨架 全部验收点过
2 Skill 系统 + 三个 skill Anthropic 格式;coding/ppt/proposal
3 Hybrid 范式 (run_python) subprocess + 敏感 env 过滤
4 演化性能力 🟡 Model Profile + Capability Probing ;版本化 prompts 未做
5 Eval Suite ⏸ 不做 个人工具用 dogfooding 替代,probe 覆盖健康检查
6 长任务工程化 🟡 task + state.json + 中断恢复 ;context 压缩、双层记忆未做
7 打磨 Docker 沙盒 / 更多 skill / Web UI

已完成关键能力

Phase 1-3(2026 早期):骨架 + skill 系统 + run_python。所有工具基目录是用户当前 cwd(不是 zcbot 仓库本身),agent 操作的是用户项目。tools/fs.pyedit 用 CoreCoder 风格唯一匹配。tools/run_python.py 过滤 *API_KEY *TOKEN *SECRET *PASSWORD *PRIVATE_KEY 环境变量。三个 skill 中 ppt/ 最完整(v3:商务红硬约束 + apply_brand 品牌条 + Iconify 图标库 + scripts:fetch_icon / quality_check / render_icon;素材摄取改用 markitdown CLI)。

Phase 4(2026-05-06):

  • core/probe.py + cli.py probe —— basic_chat / parallel_tools / thinking_mode / long_context 四项探测
  • 真实 probe 跑通,flash mismatch 发现:yaml parallel_tools: false 但实测能并发(暂不自动改 yaml,需更多场景观察)
  • pro 全 ok

Phase 6 部分(2026-05-06):

  • core/task.py + workspace/tasks/<id>/{state.json, messages.json} —— TaskState 跟 mode/desc/status/tokens/timestamps;build_agent 返 5 元组;sync_task_tokens 每轮后写回
  • CLI 新增 tasks 子命令 + REPL /status /done /abandon /desc;chat--mode --desc 选项
  • 移除 legacy workspace/sessions/ 兼容(单一布局)

TUI 打磨 + task_dir 落地(2026-05-07):

  • assistant 文字走 rich.markdown.Markdown,粗体/列表/表格/代码块正常渲染(非流式)
  • thinking spinner 由 daemon 线程每 100ms 刷文案,显示实时耗时 + 累计 token;每轮 LLM 返回追加 dim 一行 [in N out N t Xs] 留痕
  • system prompt 显式注入 task_dir 绝对路径,SKILL.md 里 <task_dir> 占位符真正落地;spec_lock.md / sections/ / slides/ / 最终 docx/pptx 全收敛到 workspace/tasks/<id>/
  • .gitignoresections/ slides/ spec_lock.md 三条无锚 bandaid —— 现在写错位置 git status 立刻报红,不再靠 ignore 兜底

关键决策与偏差

决策 与设计差异
工具基目录 用户当前 cwd(读)+ task_dir(写) system prompt 同时给 cwd 与 task_dir 绝对路径,SKILL.md <task_dir> 占位符指向 task_dir
Workspace 用途 tasks/<id>/{state.json, messages.json} memory/ 待 Phase 6 双层记忆
Eval Suite 不做 设计为团队场景;个人工具 dogfooding 替代
版本化 prompt 直接 general_v1.md,无 active.md 软链接 Windows 软链接麻烦,真要切版本时再做
run_python 沙盒 subprocess + env 过滤 阶段 1 设计如此;Docker 待 Phase 7

文件清单(代码量)

core/capabilities.py        71
core/llm.py                 89
core/loop.py               157   ← +markdown 渲染 / spinner 显时长+token
core/probe.py              243   ← Phase 4
core/session.py             77
core/skills.py              81
core/task.py                63   ← Phase 6
tools/base.py               34
tools/fs.py                182
tools/shell.py              94
tools/run_python.py         84
tools/skill_tool.py         45
main.py                    185   ← Phase 6 task 装配 / +task_dir 注入
cli.py                     264   ← +probe / +tasks 子命令
─────────────────────────────────
Python 合计              ~1669 行

加上 skills/ppt 下的脚本(~600 行)、SKILL.md / references / config / prompts,总仓库约 2500 行可读源码。


下一步候选(性价比排序)

  1. Phase 6 双层记忆(~半天)—— workspace/memory/core.md 注 prompt,extended/<topic>.md 按需读
  2. Phase 6 context 三层压缩(~1 天)—— 兜底用,V4 长上下文一般用不到
  3. 小修打磨(~半小时)—— Session.save() 改原子写(tmp + rename),防 surrogate 等异常 truncate
  4. Phase 7 Docker 沙盒(~1 天)—— 替换 subprocess,run_python 安全升级
  5. Phase 7 更多 skill / 模型档案(持续)