Skip to content

Latest commit

 

History

History
83 lines (58 loc) · 3.83 KB

File metadata and controls

83 lines (58 loc) · 3.83 KB

本地 AI Coding Agent 设计

1. 目标

处理“读取本地项目与日志 → 定位根因 → 生成最小补丁 → 运行验证 → 输出证据”的闭环任务,同时保护源码、凭据和工作区。

2. 参考架构

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

3. 工具与数据

能力 用途 默认权限
文件/代码搜索 目录、符号、引用、配置 读允许
补丁编辑 最小范围修改 仅工作区
终端/测试 复现、编译、测试、lint 沙箱内允许
Git status、diff、history 只读默认
LSP/AST 定义、引用、类型、调用图 读允许
本地 RAG README、API、历史故障、规范 按任务检索
网络/远端仓库 下载、push、PR、部署 默认拒绝或确认

4. 控制循环

Plan → Act → Observe → Verify → Replan

每一步保存 task_id/action_id/tool/input/output/exit_code/timestamp。设置 max_steps、max_tool_calls、max_retries;同一确定性错误连续出现应重规划,不机械重试。

临时错误(超时、502、文件短暂占用)可有限重试和退避;确定性错误(权限、语法、文件不存在、缺依赖)应分析并换计划。

5. 权限与 Human-in-the-loop

可自治:读取、搜索、查看 diff、运行只读诊断、沙箱测试、工作区内目标文件的小范围补丁。

需确认:需求目标有实质歧义;方案在兼容性/性能/成本间有明显取舍;安装系统软件;访问网络或敏感文件。

必须确认:删除数据、覆盖大量文件、生产配置/数据库变更、部署、push/merge/force push、上传源码、驱动与系统环境修改。

6. 隐私与注入防护

  • .env、私钥、凭据文件默认拒绝;
  • Prompt/日志前脱敏,密钥放 Secret Store;
  • 网络默认关闭或域名白名单;
  • README、Issue、网页、代码注释均视为不可信数据,不得改变上层权限策略;
  • 所有写入和外部调用保留审计日志;
  • 本地模型与本地索引优先,只有获授权的数据才能离机。

7. 上下文工程

本地模型资源有限时,不把整个仓库塞入上下文。采用:

  1. Repository Index:文件、symbol、依赖、调用关系;
  2. Hybrid Retrieval:精确代码/错误码词法召回 + 语义召回 + rerank;
  3. Hierarchical Context:策略 → 任务 → Repo Map → 相关文件 → 最新观察;
  4. Compression:把旧循环压缩成“已确认、已排除、证据、下一步”;
  5. Memory Governance:来源、置信度、作用域、过期时间、人工批准,避免模型幻觉永久写入。

8. 完成标准

只有同时满足才可 DONE:能复现原问题;根因有证据;补丁范围合理;原失败测试通过;新增回归测试;全量测试无新失败;lint/type/syntax 通过;服务启动检查通过;diff 无无关改动;最终报告包含真实命令与剩余风险。

否则状态应为 IN_PROGRESS 或 BLOCKED,不接受“模型认为已经解决”作为证据。

9. Benchmark

任务分级:单文件语法 → 跨文件逻辑 → 依赖环境 → DB/API → 复杂异步回归。指标包括任务成功率、定位准确率、补丁正确率、回归率、工具选择准确率、平均步骤/成本/时延、人工介入率和不安全操作率。

故障注入应覆盖:文件不存在、权限不足、测试超时、依赖冲突、脏工作区、网络断开、磁盘不足、恶意 README、Prompt Injection、工具返回错误结果。