Skip to content

Commit 56b8487

Browse files
committed
feat(examples): add code review agent prototype
1 parent 9015558 commit 56b8487

48 files changed

Lines changed: 5380 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Acceptance Checklist
2+
3+
## 标准 1:8 条公开样本必须全部可运行并生成报告
4+
5+
- 已覆盖 8 条 fixture:
6+
- `clean.diff`
7+
- `security_issue.diff`
8+
- `async_resource_leak.diff`
9+
- `db_lifecycle_issue.diff`
10+
- `missing_tests.diff`
11+
- `duplicate_finding.diff`
12+
- `sandbox_failure.diff`
13+
- `secret_redaction.diff`
14+
- 已有集成测试和 CLI 路径生成 `review_report.json``review_report.md`
15+
- Phase 6 额外验证:
16+
- `fixture_runs_ok=8`
17+
- 新增质量门禁测试 `test_all_public_fixtures_generate_reports`
18+
19+
## 标准 2:隐藏样本高危问题检出率 >= 80%,误报率 <= 15%
20+
21+
- 当前实现以高信号确定性规则优先:
22+
- `eval`
23+
- `exec`
24+
- `pickle.loads`
25+
- `yaml.load`
26+
- `shell=True`
27+
- secret patterns
28+
- 低置信项自动降级为 `needs_human_review``warning`
29+
- 当前示例给出工程策略和测试基线,但隐藏样本上的最终指标仍需 PR 前人工复核说明
30+
31+
## 标准 3:数据库完整记录 task、sandbox run、finding 和 report
32+
33+
- SQLite 已持久化:
34+
- `review_tasks`
35+
- `review_inputs`
36+
- `filter_decisions`
37+
- `sandbox_runs`
38+
- `findings`
39+
- `review_reports`
40+
- 已支持 `get_review_bundle(task_id)` 查询完整链路
41+
42+
## 标准 4:沙箱具备超时和输出限制,失败不崩
43+
44+
- 脚本执行层有 timeout
45+
- stdout/stderr 有统一截断上限
46+
- sandbox failure / timeout 转换为结构化记录和 finding
47+
- 已有 `sandbox_failure.diff` 测试
48+
49+
## 标准 5:敏感信息脱敏检出率 >= 95%
50+
51+
- 报告和数据库前统一调用 `redactor.py`
52+
- 覆盖:
53+
- API key
54+
- token
55+
- password
56+
- bearer token
57+
- private key
58+
- 已有 `secret_redaction.diff` 集成测试
59+
60+
## 标准 6:dry-run / fake model 模式 <= 2 分钟
61+
62+
- 主链路不依赖真实模型
63+
- 规则和脚本执行均为轻量 deterministic 路径
64+
- 当前测试集运行时间远低于 2 分钟
65+
- Phase 6 单次 security fixture dry-run 实测约 `9.87s`
66+
67+
## 标准 7:高风险脚本必须先经过 Filter 决策
68+
69+
- 所有 skill 脚本执行前统一经过 `filter_policy.py`
70+
- `deny / needs_human_review` 不直接进入执行
71+
- 已测试 forbidden path 拦截
72+
73+
## 标准 8:报告必须包含关键信息
74+
75+
- 当前报告包含:
76+
- findings
77+
- severity stats
78+
- human review items
79+
- filter summary
80+
- sandbox summary
81+
- monitoring summary
82+
- actionable recommendations
83+
84+
## PR 前仍需复核
85+
86+
- README 与最终示例输出是否同步
87+
- 设计说明是否满足 300-500 字要求
88+
- 是否需要再补一轮原生 `skill_run` 接入说明
89+
- 是否需要附上最终 sample outputs 供 reviewer 直接查看
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# 方案设计说明
2+
3+
本方案将自动代码评审拆为“主流程编排 + 可复用 Skill + 受控执行 + 结构化落库”四层。主流程由 `agent/agent.py` 负责,统一接收 diff、repo path 或 fixture,完成输入归一化、diff 解析、规则执行、Filter 决策、skill 脚本调度、报告生成和 SQLite 持久化。`skills/code-review/` 则承载正式的 `code-review` Skill,包括 `SKILL.md`、规则文档、使用文档、脚本契约与三个确定性脚本,用于承接可复用的评审知识与脚本执行面。
4+
5+
沙箱隔离策略采用“默认受控脚本执行 + 本地 fallback + 容器接口预留”的实现方式。当前示例通过统一的脚本执行层提供 timeout、输出截断、失败记录和 Filter 前置治理,确保高风险脚本、禁止路径、默认网络访问和超预算输入不能直接进入执行链路。对脚本失败或超时,系统不会整体崩溃,而是转换为可追踪的 `sandbox_runs` 记录和结构化 finding。
6+
7+
数据库 schema 采用最小可查询设计,包含 `review_tasks``review_inputs``filter_decisions``sandbox_runs``findings``review_reports` 六张表,支持按 `task_id` 查询完整审查链路。报告输出同时生成 JSON 与 Markdown,两者都包含 findings 摘要、人工复核项、Filter 摘要、sandbox 摘要和监控指标。监控字段聚合总耗时、severity/category 分布、拦截次数和 sandbox 次数,便于回放和评测。
8+
9+
去重与降噪通过 `deduper.py` 实现:同类同文件同位置同证据的 finding 会被合并,低置信结果自动降级到 `needs_human_review``warning`。安全边界通过统一 `redactor.py` 落实,确保 API key、token、password、Bearer token 和私钥内容在报告与数据库中不出现明文。整体设计优先满足验收中的可验证性、可运行性、可审计性和 dry-run 可用性,为后续原生 `skill_run` 深化接入和 PR 收口保留清晰扩展点。

0 commit comments

Comments
 (0)