Skip to content

BassShang/autopilot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Autopilot (AP)

基于 Claude Code 的自主多 Agent 开发系统。

Repo Type Status Mode

Claude Code Cursor Kiro

Multi-Language License

English

AP 将软件项目拆解为任务,分发给隔离的子 Agent 执行,通过独立的代码审查验证质量,自动推进项目直到完成——你只需要偶尔看一眼进度。

📖 设计详解我给 Claude 设计了一个自动驾驶系统 — 从一个朴素想法到四角色编排系统的完整构思过程


为什么需要 AP

买了 Claude Max plan,20 倍的 Opus 用量。然而:

  • 人的交互带宽是瓶颈:Claude Code 每写一段代码都需要你 review、确认。不管算力多少倍,产出上限取决于你做 code review 的速度。
  • Context 窗口会退化:长 session 后代码质量明显下降——命名随意、逻辑混乱、前后矛盾。新 session 又丢失所有上下文。
  • 自己审自己不可信:同一个 agent 写代码又审代码,缺乏独立性。

AP 的解法:把人从循环里摘出来,把长对话拆成短命实例,让不同角色互相制约。


工作原理

AP 使用四个角色,每个角色在独立的上下文窗口中运行,避免长会话导致的代码质量下降:

角色 类比 职责
Architect 架构师 将需求拆解为带依赖关系和验收标准的任务计划。只规划,不写代码
Orchestrator 项目经理 定时唤醒,从磁盘读状态,分发任务,更新状态,退出。天然无状态
Implementer 程序员 接收单一任务,写代码、写测试、跑测试。不超出任务范围
Reviewer 审查员 独立评估产出,看不到 Implementer 的推理过程,只看代码 diff

状态存储在项目根目录的 .ap/ 目录中。全局注册表在 ~/.ap/registry.json。没有任何 Agent 在调用之间保留记忆——一切都在磁盘上。


安装

autopilot/ 文件夹复制到 ~/.claude/skills/ 即可。

命令

命令 触发方式 说明
setup ap setup 需求访谈 → 创建 .ap/ → Architect 规划 → 你确认 → 定时任务启动
adopt ap adopt 深度理解现有代码库 → 创建 .ap/ → Architect 基于现状规划
status ap status 列出所有 AP 项目的进度、健康状态和待回答问题
interact ap interact 回答 Orchestrator 正在等待的问题
analyze ap analyze <项目名> 深入查看任务历史、Reviewer 反馈和当前状态
recover ap recover <项目名> 修复卡死的 Orchestrator(清除过期锁、恢复异常周期)
kill ap kill <项目名> 暂停 AP,保留所有状态。ap resume 恢复运行
resume ap resume <项目名> 恢复已暂停的项目
config ap config 修改模型(opus/sonnet/haiku)或轮询间隔

核心设计决策

.ap/ 就在项目目录内。 没有独立的工作区目录。状态文件、架构文档和日志与代码放在一起,就像 .git/ 属于项目本身。不想提交到 git 就加到 .gitignore

无状态 Orchestrator。 每个周期都是一个全新的 Claude 实例。从 .ap/state.json 读状态,做一件事,写回状态,退出。没有上下文累积,没有质量退化。崩溃也不怕——state.json 就是恢复点。

同步阻塞调用。 Orchestrator 通过 claude -p 启动子 Agent,调用本身就是阻塞的——子 Agent 完成后命令返回结果,无需轮询、无需定时器。执行流简洁可靠:启动 Implementer → 等完成 → 启动 Reviewer → 等完成 → 处理结果 → 循环

Reviewer 信息隔离。 Reviewer 看不到 Implementer 的推理过程,只看产出的代码 diff。就像真实团队中 code review 只看 PR,不看开发者的内心独白。这确保了审查的独立性和可信度。

should_runstatus 正交。 status 描述任务生命周期(planning、running、completed),should_run 是自动执行的开关。两个维度互不干扰——可以 status: running(还有任务)同时 should_run: false(AP 已暂停)。

orchestrator_notes:跨实例的便签纸。 每个周期结束时写 1-2 句摘要给"下一个自己",比如"Task-03 首轮通过,Task-04 是下一个"。不是完整的上下文传递(那会重蹈上下文爆炸的覆辙),而是精炼的短期记忆。

必须明确触发。 AP 永远不会悄悄启动。项目有 .ap/ 目录不代表所有操作都走 AP。你必须明确说 "ap" 或 "autopilot"。对于大型改动,AP 可能建议使用——但会等你确认。

增量规划。 项目完成后可以追加需求。ap resume 保留所有历史上下文(架构决策、已完成任务),Architect 只规划新增部分,新任务追加到已有列表后面。


设计原则

  1. 状态外置 — 不信任任何 Agent 的记忆,一切持久化到文件系统
  2. 角色隔离 — 每个角色只看到它该看到的信息,避免上下文污染
  3. 短命实例 — 没有长寿 Agent,每次调用都是新生
  4. 人在回路 — 关键节点(计划确认、失败升级)必须有人参与
  5. 显式优于隐式 — 宁可让用户多说一句 "ap setup",也不自作聪明地自动启动

项目结构

your-project/
├── .ap/
│   ├── state.json              # 唯一的状态来源
│   ├── context/
│   │   ├── architecture.md     # Architect 的技术决策
│   │   └── role-prompts.md     # 子 Agent 的 prompt 模板
│   └── logs/
│       └── cycle-*.json        # 每个周期的 Orchestrator 日志
├── src/
└── ...

配置

所有配置都在项目的 .ap/state.json 中:

  • model_config — 按角色选择模型:{"architect": "opus", "implementer": "sonnet", "reviewer": "opus", ...}
  • poll_interval_minutes — Orchestrator 唤醒间隔(默认 5 分钟)
  • should_run — 自动执行的总开关

运行时修改:使用 ap config 命令或直接编辑 state.json


Eval 验证

Skill 完成后进行了系统性评估,对比有 Skill 和无 Skill 基线:

场景 有 Skill 基线 差异
setup(创建项目) 60% 20% +40%
status(查看状态) 100% 75% +25%
analyze(分析项目) 100% 100% 速度快 2x,token 省 22%

关键发现:没有 Skill 时,Claude 面对"setup 项目"会直接写应用代码,而不是创建编排基础设施。Skill 教会了 Claude 一套结构化的开发流程。


已知限制

  • 需要 Claude Code 环境,依赖定时任务和 Agent tool
  • Orchestrator 的上下文窗口限制了单个任务的大小——保持每个任务涉及 2-4 个文件
  • Description 触发存在已知的召回率问题,建议使用 ap 前缀确保可靠触发
  • 暂无 Web 看板(计划中)

License

MIT

About

Multi-agent cooperation skill.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages