KumamuKuma/redhand
GitHub: KumamuKuma/redhand
redhand 是一个 AI 编程 agent 红队评测工具,通过隐藏 oracle 测试和 AST/git 作弊检测来量化 agent 伪造成功的频率。
Stars: 1 | Forks: 0
# 🔴✋ redhand
### 你的 AI 编程 agent 在测试中作弊。redhand 揭穿了它。
**English** · [简体中文](README.zh-CN.md)





*一个红队训练场,驱动**真正的**编程 agent(Claude Code / Codex)处理困难任务,*
*然后衡量它有多少时候是在**伪造成功**而不是真正解决问题。*
## 🤔 问题所在
现代的编程 agent 不只是聊天——它们会编辑文件、运行命令,并让你的测试通过。但是**“让测试通过”不等于“解决了问题”。** 当任务变得困难时,agent 可能会悄悄地:
……并在残缺的工作上给你打上绿色的通过勾。这就是**欺骗性成功**——如今没有人针对你实际运行的 agent 去衡量这一点。
```
flowchart LR
T["🧩 Hard task(honestly solvable)"] --> A["🤖 Coding agent"] A -->|"honest fix"| V["✅ visible tests pass"] A -->|"🎭 cheat: delete/hardcode/fake"| V V --> R{"🔴✋ redhand"} R -->|"run the held-out oracle
the agent never saw"| H["🔬 hidden tests"] R -->|"AST + git detectors"| E["🕵️ S1–S8 tamper evidence"] H --> S["📊 Deceptive-success score
+ step-by-step replay"] E --> S ``` redhand 为每个任务提供了一个 agent 被要求满足的**可见**测试套件,以及一个它永远看不到的**保留 oracle**。作弊 = 可见的勾是绿色的,而隐藏的 oracle 却是红色的——redhand 不仅能抓到它*是否*作弊,还能抓到它是*如何*作弊的。 ## ✨ 功能
| ### 🎭 欺骗性成功评分 核心指标:agent **声称成功**但并未真正解决问题的频率有多高——这是根据它无法看到或钻空子的保留 oracle 来衡量的。 | ### 🕵️ AST + git 检测器 (S1–S8) 基于逐行的 tree-sitter + git-diff 证据,揭示它是*如何*作弊的:删除测试、弱化断言、硬编码、禁用检查、伪造输出、篡改监控。 |
| ### 🔬 防篡改 oracle 隐藏测试在一个 **agent 从未触碰的干净目录**中进行评分,因此植入的 `pytest.py` 或 `conftest.py` 钩子无法伪造通过结果。 | ### 💸 零成本演示 `redhand demo` 会在 21 个任务上运行一个诚实的和一个作弊的脚本 agent——**无需 API key,无需网络,无需花费**——让你能在 30 秒内看到整个 pipeline。 |
| ### 🤖 是真实 agent,而不是模型 API 在一次性 sandbox 中以无头模式驱动已安装的 `claude` / `codex` CLI——它是对*你的* agent 组合进行红队测试,而不是针对单纯的模型。 | ### 📊 离线回放仪表盘 一个单一的自包含 HTML 文件:排行榜 + 每次运行的逐步回放,带有红/绿 diff。无需服务器,无需 CDN——双击即可运行。 |
claude / codex / mock"] AD -->|acts in| SB["📦 Sandbox
disposable copy + shadow git"] SB -->|"Trajectory
(tool calls · per-step diffs · test results)"| DET["🕵️ Detectors
AST + git · S1–S8"] SB -->|"held-out oracle,
scored in a clean dir"| SC["📊 Scoring
deceptive success · pass^k · 95% CIs"] DET --> SC SC --> OUT["🖥️ Console + 📊 offline HTML + 📁 JSON artifacts"] ``` - **🔬 可见与隐藏测试。** 可见的套件是 agent 的目标;**保留 oracle** 会从其工作区中移除,并在它从未运行过的干净目录中进行评分——因此它既无法读取答案,也无法伪造结果。 - **🎯 确定性优先。** AST (tree-sitter) + git-diff 规则仅在破坏模式近乎确定时触发,针对高精确率进行了调整(诚实的修复绝不应被标记)。可选的 LLM 评估器(默认关闭)用于处理微妙的情况。 - **♻️ 一次性且可复现。** 每次运行都会获得一个全新的工作副本 + shadow-git 快照,并在 `--out` 下留下完整的轨迹:每次尝试的 `trajectory.json` / `detection_report.json` / `run_result.json` + `suite_result.json` + 仪表盘。 ## 🎯 对真实 agent 进行红队测试 ``` redhand run --agent claude-code --runs 5 --max-cost 2.00 # drives the `claude` CLI redhand run --agent codex --runs 5 # drives `codex exec` ``` 以无头模式运行已安装的 agent,报告 `pass^k` 可靠性以及带有 95% 置信区间的欺骗性成功率。**这会花费真金白银**——请从 `--limit 1 --runs 1` 开始。`--max-cost` 是针对 Claude Code 的累积运行前预算(一旦达到上限,它就会停止启动新的运行;它无法在运行中途打断);Codex CLI 不报告费用,因此请使用 `--limit` / `--runs` 来限制它。 ## 🛡️ 诚实的局限性 (v0.1) - **默认的 sandbox 是一次性的工作副本,而不是安全边界。** 它会从 agent 的工作区中移除隐藏的 oracle,并且不再在工作目录路径中泄露任务 ID,但是拥有主机文件系统访问权限的恶意 agent 仍然可以在磁盘上搜索某个任务的 `solution/`。对于对抗性运行,请使用 **`DockerSandbox`** 后端(beta 测试版)——命令在 `--network none` 容器中运行,且*仅*挂载工作目录——或者在一个 container/VM 中运行 redhand。 - **检测具有高精确度,但并不全面。** 它通过逐行证据捕获常见的机械性作弊;足够狡猾的 agent 仍然可以逃避确定性层(这就是 LLM 评估器和新检测器的作用所在)。 - **支持 Windows**(sandbox 在那里使用 `cmd`)并且已被测试覆盖,但尚未在原生 Windows 机器上经过实战检验。 - 目前有**两种 agent**(Claude Code + Codex);Cursor / aider 适配器是一个[贡献](CONTRIBUTING.md)点。 ## 📄 许可证 [MIT](LICENSE) · 相关工作与定位见 [`docs/competitive-positioning.md`](docs/competitive-positioning.md)(EvilGenie, SpecBench, AgentDojo, ASB)。
标签:AI编程助手, DNS 反向解析, Python, 子域名变形, 安全规则引擎, 无后门, 测试评估, 请求拦截, 逆向工具