yibei-wz/agent-review

GitHub: yibei-wz/agent-review

Agent Review 是一个面向编码智能体的本地优先代码审查执行内核,通过冻结 Git 变更、隔离审查角色上下文和运行确定性证据检查,为 AI 生成代码提供可审计、可复现的结构化审查报告。

Stars: 0 | Forks: 0

# Agent Review|面向编码智能体的可审计代码审查系统 [English](README_EN.md) · 中文 [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) Agent Review 是一个独立于宿主模型的本地审查执行内核。它冻结 Git 变更,生成不可变 `ReviewBundle`(审查包),为四类独立 Reviewer 投影不同上下文,校验结构化 `Finding`(审查发现),运行允许列表内的确定性 `Evidence`(证据),并保存可追踪的 JSON 与 Markdown 报告。 当前版本:`0.1.0`。核心流程与可选 Mechanical Check Packs 已实现并有自动化测试。本仓库是个人公开项目,用于作品展示、技术交流和招聘评估,并采用 Apache License 2.0 开源许可证。 ## 它解决什么问题 编码智能体可以快速生成或修改代码,但普通对话式 Review 容易出现四个问题:审查对象在过程中变化、不同 Reviewer 互相污染判断、结论缺少可复查证据、报告无法在另一台机器复现。 Agent Review 把这些问题拆成可验证的系统边界: - 用内容哈希冻结一次审查的输入和来源; - 让正确性、安全性、架构和测试 Reviewer 只看到各自所需的只读投影; - 用跨语言 JSON Schema 约束 Finding、Evidence 和报告; - 只执行仓库预先允许的命令 ID,并记录退出码、耗时、stdout/stderr 和截断状态; - 把警告、盲区、供应商降级和最终报告保存在本地台账中。 ## 为什么不能只用一个 Skill `Skill` 是宿主智能体中的技能与编排说明,适合告诉 Codex“按什么顺序调用工具”。它本身不能提供不可变快照、Schema 校验、角色隔离、本地持久化、Evidence 状态转换或确定性报告。 Agent Review 与 Skill 的关系是“执行内核 + 宿主编排”:Skill 可以驱动流程,但审查协议、数据验证、命令边界和审计记录由独立的 TypeScript CLI/MCP 内核负责。更换宿主模型不会改变这些核心契约。 ## 当前能力与边界 ### 已完成 - 本地 TypeScript CLI 和 stdio MCP(模型上下文协议)服务; - `working-tree`、`staged`、`branch`、`commit` 四种 Git 范围; - 不可变 ReviewBundle、内容派生的 `snapshotHash` 和本地审查台账; - 正确性、安全性、架构、测试四类角色上下文; - Zod 运行时校验与语言无关的 JSON Schema; - Basic、CRG、Auto 三种代码智能模式; - 允许列表 Evidence 与确定性 JSON/Markdown 报告; - 可选 Mechanical Check Packs,内置 generic、TypeScript、Java Pack; - 经过契约测试的 Codex Skill 和四个只读 Reviewer 配置。 兼容性术语:Mechanical 扩展仍是 **opt-in Mechanical Check Packs**;未启用或不存在时,**unchanged V1 workflow** 仍是默认路径。 ### 可选或降级能力 - CRG(代码关系图工具)是可选增强。`auto` 在 CRG 不可用时显式降级到 Basic 并写入 warning;`crg` 模式则直接失败。 - Mechanical Checks 默认不自动启用。配置必须先提交到可信 Git 基线,后续 Review 才能使用;候选配置只能被校验,不能为自身授权。 - Basic 模式保证最低可用流程,但只提供变更文件级上下文,不宣称图关系覆盖。 ### 尚未完成 - 操作系统级进程、网络或文件系统沙箱; - Claude Code、OpenClaw 等宿主的同等级安装器与集成测试; - 自动修复、修复者自证和独立验证闭环; - 企业多租户、中央控制平台、远程数据库和权限系统; - 对所有语言、构建系统和静态分析格式的覆盖; - 大规模真实用户、准确率、性能或节省时间数据。 ## 总体架构 flowchart LR A["Git 变更 + Requirement"] --> B["prepare / prepare_review"] T["可信 Git 基线中的可选 Mechanical Plan"] --> B B --> C["不可变 ReviewBundle"] C --> D1["正确性上下文"] C --> D2["安全性上下文"] C --> D3["架构上下文"] C --> D4["测试上下文"] D1 --> E["结构化 Findings"] D2 --> E D3 --> E D4 --> E C --> F["允许列表 Evidence"] E --> G["确定性报告"] F --> G G --> H["本地 JSON + Markdown 台账"] 代码依赖方向由自动化架构检查强制执行: protocol <- domain <- application <- adapters/report <- delivery/composition 详见 [架构说明](docs/architecture.zh-CN.md)。 ## 一次完整审查流程 1. `prepare` 解析 Requirement、验收标准和 Git 范围,冻结 ReviewBundle。 2. 宿主分别读取 `correctness`、`security`、`architecture`、`test` 上下文。 3. 四个独立 Reviewer 返回符合 Schema 的 Finding;上下文不包含 Author 的对话、隐藏推理、自评或身份。 4. 协调者用同一个 `snapshotHash` 提交四类 Finding。 5. 如需验证,协调者选择 `.agent-review/config.yaml` 中稳定的 `commandId` 运行 Evidence;Reviewer 不能直接提供命令。 6. `finalize` 生成确定性 JSON/Markdown,`report` 读取结果。 完整命令和失败处理见 [审查工作流](docs/review-workflow.md)。 ## 四种 Git 审查范围 | 范围 | 审查对象 | 典型用途 | | -------------- | ---------------------------- | ------------------------- | | `working-tree` | 当前已跟踪与未跟踪工作区变更 | 提交前检查 | | `staged` | Git index 中已暂存的变更 | commit 前门禁 | | `branch` | 指定 base ref 到当前 HEAD | Feature 分支里程碑 Review | | `commit` | 指定 commit 与其父提交 | 审查单个已提交变更 | ## 四类产品审查角色 | 角色 | 关注点 | 不替代什么 | | -------------------- | ------------------------------------- | ------------------------------ | | 正确性 `correctness` | Requirement、验收标准、状态与边界行为 | 产品所有者对需求的最终解释 | | 安全性 `security` | 信任边界、输入验证、泄露和危险执行 | 专业渗透测试与运行环境隔离 | | 架构 `architecture` | 依赖方向、模块职责、协议和演进成本 | 未获批准的新架构设计 | | 测试 `test` | 回归覆盖、失败路径、契约与证据充分性 | 把“测试通过”直接等同于产品正确 | ## 不可变审查包 ReviewBundle 记录请求、Git 基线、变更文件与符号、适用 Policy、代码智能来源、Evidence、warning 和 provenance。`snapshotHash` 由内容派生;后续提交若使用不同哈希会被拒绝。 它不会包含 Author 的完整聊天记录、隐藏思维链、自我评价、模型名、资历或原始环境变量。角色上下文是同一 Bundle 的只读投影,不是四个 Reviewer 共享的可变记忆。 ## 代码智能模式 | 模式 | 行为 | | ------- | --------------------------------------------------------------------------- | | `basic` | 始终可用;基于 Git 变更提供有限上下文并明确标记覆盖盲区。 | | `crg` | 强制使用 CRG;CRG 未安装、协议失败或结果无效时终止准备。 | | `auto` | 优先 CRG;失败时显式写入 `CRG_UNAVAILABLE` 或 `CRG_FALLBACK` 并使用 Basic。 | 核心协议不依赖 CRG 类型,CRG 只是可替换 Provider(供应商适配器)。 ## 七个 MCP 工具 | 工具 | 作用 | | --------------------- | ------------------------------- | | `prepare_review` | 冻结变更并创建 ReviewBundle。 | | `get_review_bundle` | 读取不可变 Bundle 与来源。 | | `get_role_context` | 读取一个角色的只读上下文。 | | `submit_findings` | 校验并保存一个角色的 Findings。 | | `run_evidence_checks` | 运行选定的允许列表命令 ID。 | | `finalize_review` | 生成并持久化确定性报告。 | | `get_review_report` | 读取 JSON 与 Markdown 报告。 | 输入输出、错误信封和版本兼容规则见 [协议与 MCP](docs/protocol.md)。 ## 确定性检查与 Evidence 普通 Evidence 命令定义在 `.agent-review/config.yaml`。Mechanical Check Packs 则从 scope 对应的可信 Git 对象解析 Pack、命令模板、模式、Parser 和角色,然后在候选工作区运行预先允许的命令。内置 Pack 不会自动安装工具或从远程下载规则。 Evidence 只能支持一个 Finding,不能把运行过的检查自动标记为 `VERIFIED`;没有运行的命令也不能被写成已通过。Mechanical Diagnostic 是候选观察,不会自动变成产品 Finding。 ## 快速开始 要求:Node.js 24–26、pnpm 10.34.5、Git。CRG 非必需。 pnpm install --frozen-lockfile pnpm build agent-review --repository /path/to/target setup agent-review --repository /path/to/target prepare \ --scope working-tree \ --provider basic \ --requirement "描述本次变更必须满足的行为" \ --acceptance-criterion "写出一条可验证的验收标准" `setup` 用一次确认完成基础配置、Codex MCP、Review Skill、四个只读 Reviewer,以及按仓库语言自动选择的 Mechanical Check Packs。它不会运行目标仓库代码,也不会提交文件;Mechanical 配置在人工审查并提交前保持 `PENDING_TRUSTED_BASELINE`。自动化环境可显式传入 `--yes`。执行前须先让已构建或安装的 `agent-review` 命令位于 Codex 可见的 `PATH`;当前 npm registry 尚无正式发布包。 `prepare` 返回 `reviewId` 和 `snapshotHash`。继续读取四类上下文、提交 Finding、可选执行 Evidence,再 finalization。可复制的完整流程、安装 tarball 和 Codex MCP 配置见 [快速开始](docs/quick-start.md)。 ## 脱敏示例 仓库提供一个虚构 Java 支付重试场景,仅用于展示协议,不来自真实公司或客户: - Requirement:重试必须复用调用者提供的幂等键; - Finding:重试路径生成新键,可能导致重复扣款; - Evidence:允许列表内的幂等测试返回 `FAIL`; - Report:Finding 为 `SUPPORTED`,同时保留未验证问题和 Basic/CRG warning。 完整 Markdown 示例见 [examples/review-report.md](examples/review-report.md)。示例中的仓库、路径、人员、标识和数据均为合成值。 JSON 报告片段: { "schemaVersion": "1.0", "reviewId": "review-example", "snapshotHash": "sha256:example-snapshot", "findings": [ { "findingId": "payment-retry-idempotency", "role": "correctness", "severity": "HIGH", "status": "SUPPORTED" } ], "conclusion": "This report is bounded evidence; no findings does not mean the change is absolutely safe." } Markdown 报告片段: ## Findings | Severity | Status | Role | Location | Title | | -------- | --------- | ----------- | ------------------------------ | ---------------------------- | | HIGH | SUPPORTED | correctness | `src/.../OrderService.java:12` | Retry can duplicate a charge | ## 安全模型和信任边界 必须先理解这些边界: 1. 当前本地命令执行器 **not an OS sandbox**,不是操作系统级沙箱。 2. 构建、测试和包管理脚本可能执行候选代码。候选 `package scripts`、`Maven/Gradle plugins`、`wrappers`、`tests`、`build hooks` 和 `runtime code` 都可能以当前用户权限运行。 3. `EvidenceCommandRunner`、参数数组、`shell: false`、`offline flags`、`timeout`、`output limits`、`cancellation` 和 `redaction` 是受控调用措施,不证明候选代码安全。 4. **Trusted execution configuration controls Plan authority only.** 可信配置只决定哪些命令可以进入 Plan,不改变 `candidate workspace` 中代码的可信度。 5. **Keep Mechanical Checks disabled for untrusted code**,或在外部容器、虚拟机、沙箱、隔离 CI Runner 中运行完整流程。 6. warning `MECHANICAL_CHECKS_EXECUTE_UNSANDBOXED_CANDIDATE_CODE` 会显式暴露未隔离执行边界。 7. 没有发现问题不代表代码绝对安全;Agent Review 辅助审查,不替代项目所有者的最终责任。 完整威胁模型、路径边界、秘密脱敏保证和残余风险见 [安全模型](docs/security.zh-CN.md)。 ## 已知限制 - 本地存储不承诺数据库级多写者、NFS/SMB 或任意断电恢复语义。 - Evidence 脱敏覆盖常见字面量与环境变量名称;编码、拆分、重排后的秘密可能逃逸。 - 自动降级到 Basic 会降低关系图覆盖,但会写入 warning,不会静默宣称完整。 - Reviewer 是概率模型;结构化输出和角色隔离不能消除错误判断。 - 候选执行可访问网络、启动子进程或修改 Diff 之外的数据,除非外部环境限制它。 - 当前仅 Codex 集成具备仓库内契约测试,其他宿主不作兼容承诺。 ## 路线图 路线图表示方向,不是已承诺的交付时间: 1. 扩充经过真实 Fixture 验证的 Pack 与 Parser; 2. 改善安全的 Evidence 目录发现与审查体验; 3. 为其他宿主增加同等级安装、隔离和契约测试; 4. 在单独威胁模型下研究远程控制面与更强执行隔离; 5. 只有在真实、可复查数据存在后才发布性能或准确率结果。 ## 开发与验证 pnpm format:check pnpm lint pnpm typecheck pnpm arch pnpm test pnpm test:contract pnpm build pnpm verify CI 使用 Node 24、pnpm 10.34.5、锁文件安装、只读 `contents` 权限,不读取 Secret、不发布包、不上传 Artifact。贡献流程见 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 Copyright © 2026 yibei-wz. 本项目采用 [Apache License 2.0](LICENSE)。你可以在遵守许可证条款的前提下使用、修改和分发本项目,包括商业用途。许可证包含明确的专利授权,不授予商标权,也不提供任何担保。 ## 文档 - [快速开始](docs/quick-start.md) - [审查工作流](docs/review-workflow.md) - [架构](docs/architecture.zh-CN.md) - [协议与 JSON Schema](docs/protocol.md) - [安全模型](docs/security.zh-CN.md) - [Apache License 2.0](LICENSE) - [Mechanical Check Packs](docs/mechanical-check-packs.md) - [代码智能 Provider 契约](docs/provider-contract.md) - [Codex 集成](integrations/codex/README.md) - [双语文档索引](docs/README.md) - [英文版 README](README_EN.md) 设计规格用于解释产品边界,不是新用户的上手入口;当前可用能力以上述 README、用户文档、实现和测试为准。
标签:AI编程助手, MITM代理, SOC Prime, 云安全监控, 代码审查, 开发工具, 网络安全研究, 自动化审查, 自动化攻击, 静态分析