本项目的目标不是做一个“会自己到处改代码的自动 agent”,而是做一个受控的仓库解耦迭代系统:
- 输入:一个待治理的本地仓库
- 输出:结构化诊断、复核后的 finding、受控的改造计划、双报告结果
- 约束:任何进入下一轮的改动,必须同时满足
- 通过测试
- 通过策略
- 仓库可运行
核心原则:
只有“通过测试 + 通过策略 + 可运行”的改动,才允许进入下一轮。
否则它不是解耦系统,而是自动破坏系统。
当前仓库已经实现的是“诊断 + 复核 + 规划 + 审查”的前半段系统。
已经存在的能力:
- Python 仓库静态扫描
- 规则引擎诊断
- Validator Agent 二次复核
- Planner Agent 生成整改计划
- Critic Agent 审查整改计划
- Markdown + JSON 双输出
- LLM 配置自检
- 金标回归测试
还没有开放的能力:
- 自动改代码落盘
- 自动提交 patch
- 自动执行重构
- 自动合并
因此,当前项目仍然是受控规划系统,不是自动执行系统。
系统按职责分为 6 层。
职责:
- 读取目标仓库
- 建立
RepoContext - 收集
.py文件 - 记录解析失败文件
当前实现:
scanner/__init__.pymodels/schema.py
职责:
- 扫描 import 关系
- 扫描 definitions
- 扫描 calls
- 扫描 env 使用
- 扫描 db/orm 信号
- 扫描 utils/common/helper 依赖
- 扫描 global state 风险
当前实现:
scanner/imports.pyscanner/definitions.pyscanner/calls.pyscanner/envs.pyscanner/db_usage.pyscanner/utils_usage.pyscanner/globals.py
这层必须保持确定性优先,不能让 LLM 代替基础扫描。
职责:
- 基于扫描 artifacts 运行规则
- 产出原始 findings
- 检测 simple import cycles
当前实现:
rules_engine/engine.pyrules/config.py
这层产出的是候选问题,不是最终可信结论。
职责:
- 对原始 findings 做二次确认
- 过滤明显误报
- 给 finding 打确认状态与置信度
- 基于可信 finding 生成 triage 与 action plan
- 对 action plan 做风险审查
当前角色:
Governor:总控编排Validator Agent:复核 findingPlanner Agent:生成行动计划Critic Agent:审查行动计划
当前实现:
agents/governor.pyagents/validator_agent.pyagents/planner_agent.pyagents/critic_agent.py
这层允许用 LLM,但必须满足:
- 只读上下文
- 只输出结构化结果
- 不直接改代码
- 调用失败时回退到确定性逻辑
职责:
- 限定允许的作用范围
- 检查 protected paths
- 检查 step 是否过大
- 阻止危险计划进入执行阶段
当前实现:
policy/engine.py
未来要补强的验证器:
- 目标仓库测试执行器
- 入口运行验证器
- 类型检查器
- 格式/静态检查器
这层必须是硬门禁,不能交给 agent 主观判断。
职责:
- 输出给 agent 的结构化 JSON
- 输出给人的 Markdown 报告
- 保证结果可复查、可回归、可比较
当前实现:
report/renderer.pymain.py
当前主流程如下:
目标仓库
-> RepoContext
-> 确定性扫描 artifacts
-> 原始 findings
-> Validator Agent
-> validated_findings
-> triage
-> action_plan
-> Critic Review
-> summary.md + artifacts/*.json
当前真实输出包括:
import_graph.jsondefinitions.jsoncall_graph.jsonenv_usage.jsondb_usage.jsonutils_usage.jsonglobal_state.jsonfindings.jsonvalidated_findings.jsonrepo_inventory.jsontriage.jsonaction_plan.jsoncritic_review.jsonplanner_agent.jsoncritic_agent.jsonmodel_routing.jsonsummary.md
这是本系统最重要的边界。
- 理解
- 复核
- 分诊
- 规划
- 审查
- 解释
- 扫描
- 规则判断
- 策略门禁
- 测试执行
- 可运行性验证
- 最终放行
以下能力不能由 agent 单独决定:
- 是否跳过测试
- 是否跳过 policy
- 是否允许改 protected files
- 是否在仓库不可运行时继续推进
- 是否把失败改动带进下一轮
系统中的每个独立能力都定义为一个模块。
每个模块必须具备:
- 独立职责
- 明确输入
- 明确输出
- 独立测试
- 模块 README
- 可被 agent 读取的结构化 contract
模块不是“任意一个文件”,而是“一个完整能力单元”。
例如:
scanner.importsscanner.envsrules_enginevalidator_agentplanner_agentcritic_agentpolicy.enginereport.renderer
系统最终将从“诊断系统”演进为“受控解耦迭代系统”。
目标形态:
诊断
-> 复核
-> 规划
-> 审查
-> 受控 patch plan
-> 受控执行
-> 测试/运行验证
-> 双报告
-> 进入下一轮
但进入执行阶段前,必须先补齐:
- 目标仓库运行验证
- 补丁执行器
- 回滚策略
- 每轮迭代门禁
- 模块级 README 与 contract 完整化
所有未来设计都必须遵守以下约束:
- 扫描必须确定性优先
- finding 必须先复核,再进入规划
- 计划必须经过 Critic 与 Policy 审查
- 执行前必须有测试与运行验证
- 不允许未验证改动进入下一轮
- 每轮必须同时产出 agent 可读结果和人类可读结果
建议后续按这个顺序推进:
- 强化模块 contract 与 README
- 为每个模块补齐更系统的测试
- 建立“测试 + 策略 + 可运行”三段式 gate
- 再引入 Refactor Agent 的 patch plan
- 最后才考虑受控写文件
这个项目的本质不是“多 agent 自动改代码”,而是:
一个以确定性扫描和硬验证为底座、以 agent 负责复核与规划的受控解耦迭代系统。