FinClaw V1 Multi-Agent Execution Protocol
状态:Accepted Initial Protocol / V1 工程化期间多 Agent 协同的执行契约 日期:2026-05-16 项目:FinClaw 文档级别:项目级方法论协议 上游决策:v1-engineering-kickoff-decisions.md 配套协议:v1-task-packet-context-budget-schema.md、v1-handoff-anchor-template.md
1. Purpose
V1 工程化是一个长周期、多轮次、跨 Agent 的协同过程。本文件定义在该过程中:
- 多个 AI Coding Agent(Cursor / Codex / OOSO 等)如何并行执行而互不冲突;
- 单个 Agent 在执行单个任务包闭环时如何保持在最佳工作区间;
- 任务包之间如何通过 hand-off anchor 传递结论而不传递完整 context;
- 治理库与工程仓库如何在多 Agent 同时改动时保持一致性。
本文件是元规范,约束所有后续 task packet 与工程 PR 的执行方式。
2. Effective Context vs Context Window
2.1 关键概念校准
| 概念 | 含义 |
|---|---|
| Context Window | 模型 API 接受的最大 token 数(GPT-5.5 ~256K、Kimi K2.6 ~200K) |
| Effective Context | 模型在该长度下保持高质量结构化输出的范围(通常是 Window 的 30-50%) |
| Sweet Spot | coding 场景的最佳工作区间(30K-80K input tokens) |
2.2 经验阶梯
| 输入 context 长度 | Agent 行为 |
|---|---|
| < 5K | 约束过少;agent 容易跑偏 |
| 10K-30K | 理想;agent 表现稳定 |
| 30K-80K | 可工作;开始有 attention dilution |
| 80K-150K | 质量明显下降;幻觉率上升;tool_use schema 漂移 |
| > 150K | 模型不能可靠完成结构化输出任务 |
2.3 Agent 闭环 context 真实消耗结构
单轮 agent 闭环 context 消耗 =
system_prompt (~5K)
+ skill/advisor 指令 (~5-15K)
+ 必读文档 (~10-50K)
+ 工具调用结果累积 (5-50K,每次工具调用都进 context)
+ reasoning 中间产物 (3-20K)
+ 输出 budget (5-20K)
─────────────────────────
≈ 30K-150K
关键洞察:tool_use 累积是被低估的 context 消耗源。一个 coding agent 跑 10 次 Read + 5 次 Grep + 3 次 Shell,光工具调用结果就能塞 30K+ token。
3. Sweet Spot Targets
V1 工程化期间的硬性目标:
| Packet 类型 | Input Context Target | Total Budget Target |
|---|---|---|
| 设计文档撰写 sub-packet | ≤ 30K | ≤ 60K |
| 工程实现 sub-packet | ≤ 40K | ≤ 80K |
| 评测 / 测试 sub-packet | ≤ 35K | ≤ 60K |
| Skills 评审 / 自查 sub-packet | ≤ 25K | ≤ 50K |
| 大型 refactor / migration | ≤ 50K | ≤ 100K |
超过 target 时必须进一步切片为更小 sub-packet。
4. Hand-off Principle
4.1 闭环间不传递完整 context
每个 task packet / sub-packet 闭环完成时,必须产出符合 v1-handoff-anchor-template.md 的 hand-off anchor(≤ 5K tokens)。
下一个 Agent 启动时只载入:
新 Agent 输入 =
system_prompt
+ 下一个 sub-packet 的 must_read 文档(按 section navigation 切片)
+ 上一个 sub-packet 的 hand-off anchor
+ 本 sub-packet 自己的指令
禁止:
- 把前一个 agent 的完整对话历史作为输入;
- 重复加载已经在 hand-off anchor 中固化的结论;
- 让新 agent 「再读一遍」前一个 packet 已经读过的文档。
4.2 Anchor 是单向只读
Hand-off anchor 一旦写入治理库,对后续 agent 只读。如发现 anchor 中的结论错误,不修改原 anchor,而是新建一个 hotfix sub-packet 显式修正。这保留决策痕迹,避免「沉默回滚」。
5. Multi-Agent Concurrency Rules
5.1 文件所有权矩阵
V1 工程仓库按 package 切分所有权,避免并发改同一文件:
| Package | 主负责 Agent | 共享文件(需要协调) |
|---|---|---|
agent/ (runtime + skills + advisors 编排) | Agent A | agent/models.py(与 Agent B 协调) |
tools/ (内置工具 + crypto data) | Agent B | agent/models.py(与 Agent A 协调) |
api/ (FastAPI + SSE 事件) | Agent C | api/schemas.py(与 Agent D 协调) |
web/ (前端) | Agent D | api/schemas.py(与 Agent C 协调) |
skills/ (V1 7 个 Fin Skill 文件) | Agent E | — |
evaluation/ (cases + runs + reports) | Agent F | tests/(与所有 agent 协调) |
config/ (provider 路由 + budget 配置) | Agent G | — |
冲突解决规则:
- 共享文件改动必须先在 hand-off anchor 中声明意图;
- 同一文件同一行的并发修改由项目发起人裁决,不由 agent 间协商;
- 任何跨 package 的接口变更(如新增 API endpoint)走
v1-api-contract-design.md修订 PR,所有相关 agent 后续工作必须基于 PR 合并后版本。
5.2 Git Worktree 隔离
每个并行 Agent 在独立 worktree 工作:
# 在新工程仓库 /Users/mlabs/Programs/CurvatureLabs/finclaw/ 下
git worktree add ../finclaw-agent-A feature/agent-runtime
git worktree add ../finclaw-agent-B feature/tools
git worktree add ../finclaw-agent-C feature/api
git worktree add ../finclaw-agent-D feature/web
每个 worktree 是独立 Cursor / Codex 工作目录。Agent 不需要意识到其他 worktree 的存在。
5.3 同步点(Sync Points)
| 频率 | 动作 |
|---|---|
| 每个 sub-packet 完成 | Hand-off anchor 写入治理库 + worktree 当前分支 push 到 origin |
| 每个 milestone 完成 | 所有 worktree rebase 到 main,跑全量测试 |
| 每天结束(如果当天有多 agent 活动) | 项目发起人主导一次「集成 checkpoint」:把所有 feature 分支合并到 integration 分支,跑 smoke test |
5.4 Context 隔离
- 禁止:Agent A 把自己的对话历史粘贴给 Agent B(这会导致 Agent B 上下文爆炸 + 受 A 的偏见污染);
- 允许:Agent A 把自己的 hand-off anchor 路径告诉 Agent B(Agent B 自行选择性加载);
- 必须:跨 agent 共享的所有结论必须落盘到治理库(不在临时聊天中)。
6. Parallel Execution Topology
6.1 阶段性并行度建议
| 阶段 | 并行度 | 模式 |
|---|---|---|
| 阶段 0:方法论补强 | 1 Agent | 单 Agent 顺序执行(当前正在做) |
| 阶段 1:核心架构设计 | 1 Agent | tech-stack / data-persistence / api-contract 必须串行 |
| 阶段 2:辅助设计文档 | 3-4 Agent | UI / observability / memory / cost 可并行 |
| 阶段 3:新工程仓库骨架 | 1 Agent | 骨架建立必须单线 |
| 阶段 4:V1 工程实现 | 4-5 Agent | 按 §5.1 文件所有权矩阵并行 |
| 阶段 5:评测 / Skills 自查 | 与阶段 4 并行 | F + 自查 agent 独立运行 |
| 阶段 6:aifinlab Root Skills 分析 | 与阶段 3-5 完全并行 | Codex 独立异步执行 |
6.2 不可并行的场景
- 决策性变更(决策记录、execution plan 修订):单 Agent + 项目发起人确认;
- 跨 package 接口变更:先单 Agent 改 API contract,合并后其他 Agent 才能基于新版本工作;
- 数据模型重构:单 Agent,所有依赖此模型的工作暂停。
7. Quality Gates
7.1 单个 sub-packet 完成的 quality gate
| Gate | 验证 |
|---|---|
| Context budget 未超 | Agent 自报:input + 累积 tool_use + output 总计 ≤ packet 声明的 total_budget |
| Acceptance criteria 全通过 | 按 packet 内 acceptance_criteria 逐条验证 |
| Hand-off anchor 已产出 | 治理库新增 anchor 文档,符合模板 |
| 未污染共享文件 | git diff 限定在文件所有权矩阵内 |
| 测试通过 | 工程仓库 sub-packet 跑测试通过 |
任一 gate 失败 → packet 状态 partial 或 blocked,不进入 done。
7.2 集成 checkpoint quality gate
| Gate | 验证 |
|---|---|
| 全量测试通过 | pytest + lint + type check |
| 跨 agent 接口一致 | API contract 检查通过 |
| 无未声明的共享文件冲突 | git merge 无 conflict |
| 决策记录更新 | 本次集成涉及的决策已回写治理库 |
8. Failure Modes and Recovery
8.1 Sub-packet 执行失败
| 失败模式 | 恢复路径 |
|---|---|
| Context budget 超限(agent 报错或质量下降) | 立即停止;切片为更小 sub-packet;重启 |
| Tool_use schema 漂移(输出不符合 schema) | 检查 prompt 长度;如 > 80K 立即切片;如 < 30K 可能是 prompt 设计问题 |
| 未通过 acceptance criteria | 不强制 done;写入 partial anchor,下一个 sub-packet 处理遗留项 |
| 跨 agent 冲突 | 立即停止所有相关 agent;项目发起人裁决;裁决结果写入治理库 |
8.2 Hand-off anchor 缺失
如果某个 sub-packet 完成但未产出 hand-off anchor:
- 下游 agent 不启动;
- 项目发起人或后续 agent 负责补写 anchor(根据 sub-packet 实际产出反向归纳);
- 在治理库 risk log 中记录该次违规。
8.3 决策漂移
如果发现某个 sub-packet 实际产出与 v1-engineering-kickoff-decisions.md 决议冲突:
- 该 sub-packet 立即标记
blocked; - 升级到项目发起人;
- 决策修订(如确认)后才解除 block。
9. Tool / Skill Recommendations
V1 工程化期间推荐使用的 AI Coding 辅助技能:
| Skill | 路径 | 用途 |
|---|---|---|
| writing-plans | ~/.claude/skills/writing-plans/ | 写多步骤实施计划 |
| to-issues | ~/.claude/skills/to-issues/ | 计划拆 issue / sub-packet |
| codex plan | ~/.codex/skills/plan/ | 战略规划 |
| codex code-review | ~/.codex/skills/code-review/ | sub-packet 完成时自查 |
| codex autopilot | ~/.codex/skills/autopilot/ | 长周期自治循环 |
| using-git-worktrees | ~/.claude/skills/using-git-worktrees/ | worktree 隔离 |
| cursor frontend-design | ~/.cursor/skills/frontend-design/ | UI / web 实现 |
10. Anti-Patterns
V1 工程化期间禁止的做法:
| 反模式 | 为什么禁止 |
|---|---|
| 单个 Agent 单次会话试图完成整个 packet(含 10+ sub-packet) | Context 必然超限 |
| 让 agent 「快速浏览整个工程仓库」再开始工作 | 浪费 effective context 在无关文件 |
| 把上一个 agent 的对话历史粘贴给下一个 agent | Context 污染 + 偏见传递 |
| 跨 agent 直接聊天(A 让 B 做什么) | 没有治理库证据,违反 §5.4 |
| Sub-packet 完成但跳过 hand-off anchor | 后续 agent 必然重复劳动 |
| 把方法论协议本身当 must_read 加到每个 packet | 协议是元规范,agent 不需要每次读 |
11. Open Items
- Token 估算工具(自动统计治理库文档 token 数)尚未实现;当前估算手工进行;
- 工程仓库的 worktree 自动化脚本(一键开 4 个 worktree)尚未起草;
- Sub-packet 失败重试的指数退避策略尚未量化。
12. References
- v1-engineering-kickoff-decisions.md;
- v1-task-packet-context-budget-schema.md;
- v1-handoff-anchor-template.md;
- Liu et al. 2023, Lost in the Middle: How Language Models Use Long Contexts;
- Anthropic Long-context Benchmark;
- 个人域 manual
~/Programs/CurvatureLabs/personal-domain-admin/。