zcbot/PROGRESS.md

5.7 KiB

实施进度

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

最后更新:2026-05-14(Step 2)


状态

Phase 标题 状态 备注
1-3 骨架 + Skill + run_python 三个 skill;CoreCoder 唯一匹配 edit;敏感 env 过滤
4 演化性能力 🟡 Model Profile + Probing ;版本化 prompt 未做
5 Eval Suite ⏸ 不做 dogfooding 替代,probe 覆盖健康检查
6 长任务工程化 🟡 task + 恢复 ;双层记忆 ;context 压缩未做
7 打磨 Docker 沙盒 / 更多 skill
§7 SaaS DESIGN §7 路线 🟡 A 事件流化 ;B 进行中(Step 1 基建 ;Step 2 Session ORM ;Step 3-4/6 待;Step 5 migrate-from-fs 取消)

已完成关键能力

  • Q1 → 05-06 / Phase 1-4:骨架 / 三 skill / run_python / Model Profile + Probing。ppt v3 加商务红 + apply_brand + Iconify;素材摄取改 markitdown CLI。
  • 05-06 / Phase 6 部分:task + state.json + tokens 累计;CLI tasks + REPL /status /done /abandon /desc;移除 legacy workspace/sessions/
  • 05-07 / TUI + task_dir:rich Markdown 渲染;spinner 显实时耗时 + 累计 token;system prompt 注入 task_dir 绝对路径,产物收敛 workspace/tasks/<id>/;.gitignore 删 bandaid。
  • 05-08 / REPL 切换 + 懒创建:/resume [last|<id>];build_agent 不预占文件;_cleanup_if_empty 三条件守门。
  • 05-09 → 05-10 / §7 草案 + 导出:DESIGN §7 初版(05-12 重写);cli.py export <task_id> + core/export_docx.py
  • 05-11 / 原子写 + 双层记忆 + §7 A:atomic_write_text 接管 save;core/memory.py(core.md 入 prompt,extended/* 走索引);loop 事件流化(sink.emit)铺 SSE 路。
  • 05-12 / §7 改写:platform/core 多租户方案废弃,改 user-direct(folder-centric、task/messages 入 PG、no-subtask、hard cascade)。
  • 05-14 / §7.1 心智模型修正:Folder-centricTask 一等公民 + Dir 文件副视图(双视图正交,dir 不是 task 父容器);task_dir 留空=一次性对话 / 指定=项目化二分语义入文。
  • 05-14 / §7 B Step 1 基建:core/storage/{engine,models}.py SQLAlchemy 2.x ORM(users/tasks/messages/runs/usage_events 5 表)+ alembic(初版 migration 0001_initial_schema,GIN/复合索引)+ cli db {upgrade,downgrade,current} 子命令组 + 本地 sentinel user(00000000-...)+ ZCBOT_DB_URL 必填(未设给清晰报错,不引导 docker)。已在远端测试 PG 跑通 db upgrade head
  • 05-14 / §7 B Step 2 Session ORM:core/session.py 重写,messages 走 PG(append-only,jsonb,idx 严格递增);system prompt 不入库(每次 build_agent 重建);Session.load(task_id, system_prompt=...) resume 接口;ensure_local_task_row idempotent UPSERT(INSERT ... ON CONFLICT DO NOTHING)在首条非 system 消息前打底 tasks 行。task_id 切换为 UUID(原时间戳格式废弃,旧 workspace 不做兼容)。main.py/cli.py 适配:resolve_task_id(UUID 前缀解析)、_cleanup_if_empty 双检查(DB messages + FS 产物)、_list_task_rows 改读 PG。core/export_docx.py 改从 PG 读 messages。端到端 build/append/resume/cleanup smoke 全绿。取消 Step 5 migrate-from-fs(用户决定不兼容旧 workspace)。

关键决策与偏差

决策 备注
工具基目录 cwd(读)+ task_dir(写) system prompt 同时注入两者绝对路径
Workspace 布局 tasks/<id>/ + memory/{core.md, extended/} memory 跨 task 共享
Eval Suite 不做 个人工具 dogfooding
版本化 prompt 直接 general_v1.md Windows 软链接麻烦,真要切再做
run_python 沙盒 subprocess + env 过滤 Docker 在 §7 C 阶段

文件清单

core/capabilities.py        71
core/llm.py                 89
core/loop.py               152   ← §7 A: sink.emit
core/sinks.py              101   ← §7 A
core/ui.py                  38
core/probe.py              243
core/session.py            148   ← §7 B Step 2: ORM 改写,task_id anchored
core/skills.py              81
core/task.py                64
core/memory.py              76
core/export_docx.py        379   ← §7 B Step 2: 改从 PG 读 messages
core/storage/__init__.py    25   ← §7 B Step 1-2
core/storage/engine.py      80   ← §7 B Step 1
core/storage/models.py     124   ← §7 B Step 1
core/storage/utils.py       55   ← §7 B Step 2: ensure_local_task_row
tools/base.py               34
tools/fs.py                182
tools/shell.py              94
tools/run_python.py         84
tools/skill_tool.py         45
main.py                    228   ← §7 B Step 2: resolve_task_id (UUID)
cli.py                     526   ← §7 B Step 1-2: +db 子命令组 / +_task_has_messages
db/migrations/env.py        61   ← §7 B Step 1
db/migrations/versions/
  0001_initial_schema.py   125   ← §7 B Step 1
─────────────────────────────────
Python 合计              ~2841 行

加 skills/ppt 脚本 ~600 行 + SKILL.md / references / config / prompts + alembic.ini,总仓库约 3500 行。


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

  1. §7 B 剩余 Step 3-4 / 6(~2 天)
    • Step 3 TaskState ORM 改造(state.json → PG tasks 表;tasks.cwd 字段去掉,改读 task_dir;sync_task_tokens 走 UPDATE)
    • Step 4 main.py / cli.py 收尾(_list_task_rows 全 DB;清掉 state.json 路径剩余分支)
    • Step 6 no-subtask SQL 校验(new LIKE existing/% cascade)
    • Step 5 migrate-from-fs(取消,不兼容旧 workspace)
  2. Phase 6 context 三层压缩(~1 天)—— 兜底,V4 长上下文一般用不到。
  3. Phase 7 更多 skill / 模型档案(持续)。
  4. Proposal mermaid 预渲染(~半天)—— ASCII 透传不够用时再上 mmdc