plwslpld-arch/loopward
GitHub: plwslpld-arch/loopward
Loopward 是一个测试和修复 AI Agent 工具路由决策的诊断工具,通过确定性 oracle 评估路由鲁棒性并将失败转化为可衡量的改进。
Stars: 1 | Forks: 0

# Loopward
**测试你的 agent 的 harness。** 找出在你自己的工具上路由和停止出错的地方,修改 harness,并用确定性的 oracle 证明该改变推动了数据提升。
[](./LICENSE)
[](https://nodejs.org)
[](https://www.npmjs.com/package/loopward)
[](https://github.com/plwslpld-arch/loopward/actions/workflows/ci.yml)
[](./package.json)
English | [简体中文](./README.zh-CN.md)
每个使用工具的 agent 都会一遍又一遍地做出相同的调用:*选择哪个工具*。Loopward 仅测试该决策,使用
你自己的工具,并由确定性的真值 oracle(无需 LLM judge)进行评分。它会审计容易混淆的工具名称,
通过六种方式对路由进行红队测试,提出并重新验证修复方案,比较循环策略,并将失败转化为
可测量的提升。每个人都在设计 agent 循环;但几乎没有人检查循环的*决策*是否站得住脚。
## 快速开始
无需安装步骤。`npx` 直接运行已发布的构建版本;你无需进行任何编译。需要 Node 24+。
```
# 1) 你的哪些工具会混淆 router?确定性的,无需 API key,即时生效。
npx loopward audit --tools ./my-tools.json
# 2) 使用真实模型对您自己的工具进行 routing 压力测试(6 种攻击 + 置信区间)。
OPENAI_API_KEY=sk-... npx loopward attack --tools ./my-tools.json --provider openai --model gpt-5.5
# 3) 提出修复方案并证明它改变了数据。
OPENAI_API_KEY=sk-... npx loopward fix --tools ./my-tools.json --provider openai --model gpt-5.5
```
或者直接运行 `npx loopward`(不带任何命令)进入引导式设置。
`--tools` 接收你传递给模型的相同 schema —— 即 OpenAI 的 function-calling 格式:
```
{
"tools": [
{ "type": "function", "function": { "name": "get_status", "description": "Get the current status of a service or job." } },
{ "type": "function", "function": { "name": "fetch_status", "description": "Fetch the latest status for a given resource." } },
{ "type": "function", "function": { "name": "refund_payment", "description": "Issue a refund for a completed payment." } }
]
}
```
Anthropic 的 `{ name, description, input_schema }` 数组以及普通的 `[{ name, description }]` 列表也同样适用。
## 命令
| 命令 | 功能说明 |
|---|---|
| `audit` | 标记路由器容易混淆的工具名称(例如 `get_status` 与 `fetch_status`)。无需调用模型,耗时仅几毫秒。 |
| `attack` | 通过六种方式重写每个请求,并报告路由偏离的程度,附带配对自举(paired-bootstrap)的 95% 置信区间。 |
| `fix` | 为容易混淆的工具提出更清晰的重命名建议,然后通过相同的 oracle 重新验证前后差值。 |
| `matrix` | 在*固定*模型上通过 `single` / `self-check` / `react` / `observe` 运行相同的攻击——被测试的对象是 harness。 |
| `flywheel` | 拆分你的测试用例,将失败转化为防护栏(guardrail),并使用置信区间测量留出(held-out)数据的路由提升。 |
| `multi` | 运行一个真实的多步循环,并评估单轮路由无法察觉的情况:过早停止、过度运行、成功。 |
| `coevo` | 将每一次错误路由导出为 DPO 偏好对、可验证奖励样本以及 SFT 负样本。 |
| `stats` | 使用单侧置换检验(permutation test)+ Holm 校正对六次攻击的报告进行重新评分。 |
| `verify` | 离线重新推导报告的确定性字段(哈希值、准确率、带种子的置信区间)并检查它们是否一致。 |
使其超越普通评估工具的三个命令:
- **`fix`** 将诊断转化为控制器。重命名是模型生成的*建议*;而证明其有效性的重新测量
严格是确定性的——这是基于 LLM judge 的评估在结构上根本无法宣称的。
- **`matrix`** 将 harness 视为自变量。在 GLM-5.1 上,一个 self-check 节点在遭受攻击时*恢复*了 +6.9pp
(置信区间不包含 0);同样的节点却*损害*了 deepseek-chat。循环升级是否有益
是“模型+ harness”组合的属性,而不是单靠 harness 的属性。
- **`flywheel`** 实现了端到端的模型↔harness 闭环,并测量留出集上的提升——这是实际展现出的协同演化故事,
而非空口无凭。它始终是一个演示(注入并重新测量),绝不会越俎代庖成为训练器。
## 天生诚实
由固定的真值 oracle 评分,从不使用 LLM judge。每次运行都会携带溯源清单(种子、
工具 schema 哈希、oracle 版本、模型 ID、git sha)。`loopward verify` 会在离线状态下重新检查;`npm run
regenerate-all` 证明 mock 流水线可以做到逐字节复现;并且 `stats` 应用了 Holm 校正,因此“显著”的标签
能够挺过六次同时进行的比较。运行时的防护机制会使扰动测试大声报错,而不是悄悄改变正确答案。
## 模型与密钥
适用于任何兼容 OpenAI 的端点。官方预设(`openai`、`deepseek`、`moonshot`、`dashscope`、
`groq`、`together`、`siliconflow`)内置了 base URL;其他任何服务均可通过 `--provider openai --base-url
` 使用。
密钥来自环境变量,每个提供商对应一个变量,因此仓库中不会存储任何机密信息。完整列表及
示例请见 [`docs/providers.md`](./docs/providers.md)。
## 在 CI 中设立关卡
```
npx loopward audit --tools ./tools.json --fail-on-high # fast, no key
npx loopward attack --tools ./tools.json --provider openai --model gpt-5.5 --fail-under 70
```
当突破阈值时,两者均会以非零状态码退出。完整设置请见 [`docs/ci.md`](./docs/ci.md)。
## 研究发现
13 个模型的可复现结果详见 [`docs/findings.md`](./docs/findings.md)。简短版本如下:
路由的鲁棒性是特定于模型的,且与模型的基础能力并不相关;真正有效的攻击往往是那些
乏味的手段(简短的请求、长得很像的名称),而不是那些看起来充满对抗性的手段;一个简单的 self-check 循环
可能对一个模型有益,却损害另一个模型;而在多步循环中将工具的观测结果反馈回去,使同一个模型的
任务成功率从 10% 提升至 60%。harness 和模型一样,都在同等程度上决定着最终结果。
## 本项目的定位
它不是排行榜,不是安全审计,也不是你部署到生产环境中的循环*运行器*。它是一个用于循环内
路由和停止决策的诊断与修复工具。它并不声称自己是第一个评估工具选择的工具。
关于与 CATS/ToolCert、MetaTool 和 Harness-Bench 的客观对比,请见 [`RELATED-WORK.md`](./RELATED-WORK.md)。
## 布局结构
```
packages/core loop runner + strategies, routing oracle, providers, multi-step, tool audit, manifest
packages/redteam 6 attack classes, robustness metrics + bootstrap CI, fix, meaning-preservation guard
packages/eval harness-matrix (variance across strategies), stats (Holm), verify (report linter)
packages/coevo export failures as training signal; micro-loop flywheel experiment
packages/cli audit / attack / fix / matrix / flywheel / multi / coevo / stats / verify
packages/dashboard self-contained bilingual findings dashboard (GitHub Pages)
datasets routing, multistep, tool-schema, and gold-label suites
```
运行 `npm test` 执行检查(离线,无需密钥)。设计文档详见 [`docs/`](./docs)。
## 来源与许可证
独立的净室(clean-room)实现。无任何前雇主或第三方的代码、数据或命名。参见
[`PROVENANCE.md`](./PROVENANCE.md)。采用 Apache-2.0 许可证。 标签:AI智能体, AI红队评估, DLL 劫持, GNU通用公共许可证, MITM代理, Node.js, 后端开发, 大语言模型, 工具路由, 文档结构分析, 暗色界面