处理“读取本地项目与日志 → 定位根因 → 生成最小补丁 → 运行验证 → 输出证据”的闭环任务,同时保护源码、凭据和工作区。
User / Policy
↓
Task Parser → Completion Criteria
↓
Planner / State Machine
↓
Code Search · File System · Terminal · Git · Tests · Local RAG
↓
Observation Store → Verifier
├─ PASS → Diff Review → DONE
├─ FAIL → Root-cause update → Replan
└─ RISK/AMBIGUITY → Human confirmation
| 能力 | 用途 | 默认权限 |
|---|---|---|
| 文件/代码搜索 | 目录、符号、引用、配置 | 读允许 |
| 补丁编辑 | 最小范围修改 | 仅工作区 |
| 终端/测试 | 复现、编译、测试、lint | 沙箱内允许 |
| Git | status、diff、history | 只读默认 |
| LSP/AST | 定义、引用、类型、调用图 | 读允许 |
| 本地 RAG | README、API、历史故障、规范 | 按任务检索 |
| 网络/远端仓库 | 下载、push、PR、部署 | 默认拒绝或确认 |
Plan → Act → Observe → Verify → Replan
每一步保存 task_id/action_id/tool/input/output/exit_code/timestamp。设置 max_steps、max_tool_calls、max_retries;同一确定性错误连续出现应重规划,不机械重试。
临时错误(超时、502、文件短暂占用)可有限重试和退避;确定性错误(权限、语法、文件不存在、缺依赖)应分析并换计划。
可自治:读取、搜索、查看 diff、运行只读诊断、沙箱测试、工作区内目标文件的小范围补丁。
需确认:需求目标有实质歧义;方案在兼容性/性能/成本间有明显取舍;安装系统软件;访问网络或敏感文件。
必须确认:删除数据、覆盖大量文件、生产配置/数据库变更、部署、push/merge/force push、上传源码、驱动与系统环境修改。
.env、私钥、凭据文件默认拒绝;- Prompt/日志前脱敏,密钥放 Secret Store;
- 网络默认关闭或域名白名单;
- README、Issue、网页、代码注释均视为不可信数据,不得改变上层权限策略;
- 所有写入和外部调用保留审计日志;
- 本地模型与本地索引优先,只有获授权的数据才能离机。
本地模型资源有限时,不把整个仓库塞入上下文。采用:
- Repository Index:文件、symbol、依赖、调用关系;
- Hybrid Retrieval:精确代码/错误码词法召回 + 语义召回 + rerank;
- Hierarchical Context:策略 → 任务 → Repo Map → 相关文件 → 最新观察;
- Compression:把旧循环压缩成“已确认、已排除、证据、下一步”;
- Memory Governance:来源、置信度、作用域、过期时间、人工批准,避免模型幻觉永久写入。
只有同时满足才可 DONE:能复现原问题;根因有证据;补丁范围合理;原失败测试通过;新增回归测试;全量测试无新失败;lint/type/syntax 通过;服务启动检查通过;diff 无无关改动;最终报告包含真实命令与剩余风险。
否则状态应为 IN_PROGRESS 或 BLOCKED,不接受“模型认为已经解决”作为证据。
任务分级:单文件语法 → 跨文件逻辑 → 依赖环境 → DB/API → 复杂异步回归。指标包括任务成功率、定位准确率、补丁正确率、回归率、工具选择准确率、平均步骤/成本/时延、人工介入率和不安全操作率。
故障注入应覆盖:文件不存在、权限不足、测试超时、依赖冲突、脏工作区、网络断开、磁盘不足、恶意 README、Prompt Injection、工具返回错误结果。