plwslpld-arch/loopward

GitHub: plwslpld-arch/loopward

Loopward 是一个测试和修复 AI Agent 工具路由决策的诊断工具,通过确定性 oracle 评估路由鲁棒性并将失败转化为可衡量的改进。

Stars: 1 | Forks: 0

Loopward # Loopward **测试你的 agent 的 harness。** 找出在你自己的工具上路由和停止出错的地方,修改 harness,并用确定性的 oracle 证明该改变推动了数据提升。 [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](./LICENSE) [![Node](https://img.shields.io/badge/node-%E2%89%A524-brightgreen.svg)](https://nodejs.org) [![npm](https://img.shields.io/npm/v/loopward.svg)](https://www.npmjs.com/package/loopward) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/99/993938d8ce5e902ccfb9d6747725c320d855dea3235ed9a304cedf0d94c9321f.svg)](https://github.com/plwslpld-arch/loopward/actions/workflows/ci.yml) [![Zero deps](https://img.shields.io/badge/runtime%20deps-0-brightgreen.svg)](./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, 后端开发, 大语言模型, 工具路由, 文档结构分析, 暗色界面