feat: 基于 Skills + 沙箱 + 数据库存储构建自动代码评审 Agent(#92) - #248
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #248 +/- ##
==========================================
Coverage ? 87.86456%
==========================================
Files ? 482
Lines ? 45157
Branches ? 0
==========================================
Hits ? 39677
Misses ? 5480
Partials ? 0 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
AI Code Review现在我已经掌握了所需的所有信息。让我来编写审查报告。 发现的问题🚨 严重问题
|
|
CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅ |
- 实现基于 Skill 的确定性代码评审规则 - 增加沙箱任务规划与隔离执行 - 接入 Filter 策略、敏感信息脱敏和资源限制 - 持久化 Finding、监控指标和执行审计记录 - 支持 Diff、Git 仓库、Fixture 和文件列表输入 - 补充结构化报告、测试样例和中文文档
修复回放、资源清理与遥测统计 按实际 sandbox 任务汇总执行耗时 统一释放支持 destroy() 的 runtime 支持相同 task_id 重复回放并更新执行轨迹 删除无效的符号链接检查和冲突的二进制 diff 参数 补充 Finding 状态、回放及遥测回归测试
e0da24a to
31c472b
Compare
AI Code Review现在我已经有了完整且经过验证的全貌。让我来写这份审查报告。 发现的问题🚨 Critical未发现 Critical 级别问题。
|
|
I have read the CLA Document and I hereby sign the CLA |
|
recheck |
feat: 新增具备沙箱治理、审计和持久化能力的自动代码评审 Agent
关联issue
1. Code Review Skill
新增
skills/code-review/,包含:SKILL.md:定义能力、输入输出和安全边界。rules/:基于 YAML 的可执行规则。references/rules.md:规则依据、误报边界和修复说明。detectors/:正则和 Python AST 检测器。parser/:Diff 和结构化输入解析。scripts/:沙箱执行入口。validators/:候选问题验证脚本。runner.py:规则加载与执行入口。当前规则覆盖:
2. 输入解析
支持以下输入方式:
--diff-file:Unified Diff 或 PR Patch;--repo-path:Git 工作区相对于HEAD的变更;--fixture:测试 Fixture;--file-list:项目相对文件路径清单。解析结果包含:
同时增加路径逃逸、二进制文件和输入大小校验。
3. 沙箱任务规划与执行
新增
ReviewTaskPlanner,根据输入内容规划:Git 仓库和文件列表输入会将项目源码装载到独立 Workspace。源码快照会排除:
.git;.venv;node_modules;__pycache__;生产默认使用禁网 Container Runtime,同时支持 Cube Runtime
每项任务均具备:
单项检查失败时报告进入
partial,不会丢失其他检查结果。4. Filter 前置治理
所有 SandboxTask 在执行前都会转换为
ExecutionRequest并经过 Filter。Filter 检查范围包括:
.env、.ssh和 credentials 等受保护路径;决策结果包括:
allow;deny;needs_human_review。只有
allow可以进入沙箱执行器。Filter 决策会写入报告、独立审计文件和数据库。5. Finding 归一化与降噪
Finding 包含以下字段:
归一化流程包括:
needs_human_review。6. 敏感信息脱敏
报告、数据库和执行日志写入前统一进行脱敏。
当前覆盖:
7. 数据库存储
默认使用 SQLite,并保留切换其他 SQL 后端的能力。
主要数据表:
数据库支持通过
task_id查询:SQLite 显式启用外键,并为任务状态、创建时间、Finding Task ID 和严重级别增加索引。
8. 监控与审计
每次评审记录:
9. 结构化报告
报告按 Task ID 分目录保存,避免覆盖历史结果:
报告包含:
10. Dry-run 与确定性模式
支持:
--dry-run:完成输入解析、任务规划和 Filter 决策,但不执行沙箱命令;--deterministic-only:不依赖真实模型,仅运行确定性规则;--fake-model:兼容原有无模型测试入口;--task-id:指定稳定任务 ID,便于重放和生成固定示例。Dry-run 报告会明确说明检查未实际执行,不会将零 Finding 表述为代码没有问题。
测试情况
新增和完善 39 项测试,覆盖:
needs_human_review禁止执行;验证命令:
验证结果:
同时通过:
使用方式
Container 模式
Git 工作区
python3 examples/skills_code_review_agent/run_agent.py \ --repo-path . \ --runtime container \ --deterministic-onlyDry-run
本地开发回退
python3 examples/skills_code_review_agent/run_agent.py \ --fixture examples/skills_code_review_agent/fixtures/security.diff \ --runtime local \ --fake-model兼容性与影响范围
--db-url更换;.gitignore;sample_output/。后续计划
Checklist