关于 nomArmy
nomArmy 为编码助手协调沙箱中的编码工作者,并在提交前独立验证改动。检查包括在全新沙箱中运行测试、撤销改动后复测,以及扫描机密信息。
主要功能
- 01将编码任务分派给沙箱工作者
- 02核验差异并在全新沙箱中重跑测试
- 03撤销改动以检查测试能否检出问题
- 04扫描机密并标记测试规避行为
- 05将已验证改动提交到独立分支
- 06不启动工作者即可运行验证
适用场景
- 01按验收标准分派错误修复
- 02不启动工作者而检查分支测试
- 03在审查和合并前验证功能改动
- 04标记工作者改动中的机密或弱化测试
MCP 相关
README 提到 Reason 插件包含 MCP 服务端,但未说明 nomArmy 提供或使用 MCP。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
16收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mode | enum | 否 | verify:在没有 worker 和模型令牌的情况下运行必需的验证配置;base_ref 选择分支或提交(默认为当前 HEAD),task 是简短的记录标签,agent/model 不使用,army_role 仅作为标签。implement:在隔离的 worktree 中编辑,协调器在报告有效后提交。scout:只读研究;每项发现都必须引用 [path:start-end],nomArmy 会在根据基础提交验证引用内容后附上引用行。decompose:只读;针对宽泛目标提出 2 个或更多相互独立、以证据为依据的子任务,而不是在一个 worker 回合中完成所有工作。绝不自动分发——提案会像 scout 的发现一样接受审查,协调器会另行进行自己的分发调用,并选择要采用的子任务。scout | implement | decompose | verify |
| task | string | 是 | implement:worker 必须实现的目标,而不是应执行的编辑。scout:要从代码库中回答的问题。decompose:要提出拆分方案的广泛目标。 |
| agent | string | 否 | 按名称在操作者的 agents.yml 中指定要运行的 agent(例如 "codex"、"grok"、"local"):本地模型、按量计费的 api key,或个人订阅。省略 agent 和 army_role 可使用本地模型。遇到未知名称时会拒绝,且不会回退。不能与 army_role 同时使用。订阅型 agent 还需要 on_behalf_of。 |
| model | string | 否 | 要在作业的 agent(api 或订阅型 agent)上运行的模型,例如 "gpt-6-sol"。覆盖角色模型和 agent 默认模型。当角色模型为 "auto" 或 agent 没有默认模型时,此项为必填。`army` 工具会列出各 agent 的模型。若使用本地 agent 则会拒绝,因为其模型由 `nomarmy model` 设置。 |
| report | enum | 否 | worker 可返回报告的详细程度,受 agent 层级限制:brief(适合本地任务的简短报告)、standard(默认)、full(最高上限:implement 约 2k tokens,scout 约 4k tokens)。api 或订阅型 scout 默认使用 full,因为其调查结果最重要;其他作业默认使用 standard。报告会进入你自己的上下文,并在之后每一轮重新读取。对本地模型无影响,其上限已校准。brief | standard | full |
| run_id | string | 否 | 此作业所属的 /feature 运行(来自 run_start)。加入后会强制执行该运行的限制(作业数、api 支出、时长),并拒绝运行已因供应商使用限额错误而暂停的 agent;完成的作业会记录到该运行中。 |
| stakes | enum | 否 | implement:错误可能造成的代价,与工作难度分开评估。涉及安全或访问控制、个人或租户数据、数据丢失、资金,或无法撤销的更改时,设为 high:此时必须指定验证配置文件,不能关闭回滚检查,并且在独立审查(由另一家供应商的 scout 使用 reviews: <job id>,或由另一家供应商的 judge)完成之前,作业始终会标记为需要审查。一行身份验证更改也可能简单但风险很高。normal | high |
| reviews | string | 否 | scout:该 scout 要独立审查的作业 ID,审查结果会记录到该作业(nomarmy stats 会显示有独立审查和无独立审查的高风险作业)。请使用与该作业 worker 不同的供应商。 |
| base_ref | string | 否 | |
| criteria | array | 否 | implement:由此作业提供的 acceptance/*.yml 中的契约 ID。 |
| evidence | string | 否 | 仅限 implement:提供已确认的事实(例如通过 repo_evidence 获取),供 worker 信任且无需重新推导——准确的签名、调用位置、行范围、现有行为。这样可避免 worker 在你已掌握的信息上探索,耗费自身上下文预算。不能替代清晰的目标和验收标准。 |
| refactor | boolean | 否 | implement:行为保持不变的更改(代码移动或重组)。nomArmy 随后要求通过验证配置;如果任何测试文件被新增、修改或删除,就会拒绝提交:现有测试原样通过,才能证明没有行为变化。此时会跳过回退检查,因为回退重构会恢复可工作的代码,因此总能通过。改变行为的任务必须修改测试,因此无法作为重构通过。 |
| army_role | string | 否 | 按 army 角色分派(例如 "sr-dev"、"security-analyst"):nomArmy 会将任务交给此仓库为该角色指定的 Agent,并在任务说明开头附上该角色的描述。先调用 `army` 工具查看此仓库的角色。与 agent 互斥。如果该角色的 Agent 使用订阅,请添加 on_behalf_of;否则会忽略。 |
| reasoning | enum | 否 | 传递给 worker 模型的思考级别:off、minimal、low、medium、high、xhigh、adaptive、max 或 ultra(较高级别仅在供应商提供时可用,例如 Codex 模型的 xhigh;模型不支持的级别会回退一次到最接近的支持级别)。较高级别会更快耗尽订阅用量限额。对于本地模型,仅当该模型支持思考时才生效(NOMARMY_MODEL_THINKING);对于 api 或 subscription Agent,则按该 Agent 自身的 `thinking` 设置生效(false = off,固定级别 = 始终使用该级别)。默认值为 medium,而非 high,这是基于实际测量证据:处理相同工单时,gpt-oss-20b 使用 high 耗时 318s,调用工具 21 次且失败 4 次;使用 medium 耗时 62s,调用 9 次且失败 0 次——high 并未给出更好的答案,只是反复折腾。另一个开放式任务中,Qwen3.6-27B 在 high 下完全超时(630s,无输出),而在 medium 下成功。不要因为认为更多思考应该有帮助,就默认提高到 high——迄今测试中它只造成负面影响或超时。只有当任务在 medium 下已失败一次,且失败具体表现为思考不足(根因错误,而非格式或范围问题)时,才考虑使用 high。off | minimal | low | medium | high | xhigh | adaptive | max | ultra |
| worker_id | string | 否 | |
| acceptance | array | 否 | implement:worker 必须满足的验收标准。scout:完整答案必须涵盖的要点。decompose:良好拆分必须遵守的约束。 |
| on_behalf_of | string | 否 | 当任务的 Agent 使用订阅时必填:必须与 agents.yml 中该 Agent 的所有者完全一致,否则 nomArmy 会拒绝任务。这是自我报告的声明,并非独立验证的身份检查——nomArmy 目前没有调用者身份边界,因此它保证的是明确、可审计的意图,以及不匹配或缺失时的强制拒绝,而非调用者身份的加密证明。本地或 api Agent 使用时会忽略。 |
| verification | string | 否 | 验证配置名称(例如 quick、standard、browser)。语义由 nomArmy 定义;实际执行由 nomArmy 负责。scout 会忽略此项。 |
| continue_from | string | 否 | 仅限 implement:需要继续完成的保留中、未提交 implement 任务的 job id(部分完成、受阻或验证失败)。新的 worktree 会从该任务的 base 创建,并包含其已有更改,因此任务说明只需描述修正内容。完成后的整体工作(包括原有更改)会一并验证并提交。使用此项,而不要自行修复 worker 的文件,否则这些文件会未经验证就被提交。不要设置 base_ref。 |
| commit_subject | string | 否 | implement:nomArmy 在 worker 分支上创建的提交的主题行,例如 "Keep held-back tables in the list_tables cache"。默认使用任务的第一句话;正文为 worker 的 NOTE,并附带 job id 作为尾注。 |
| timeout_seconds | integer | 否 | 默认值为 600;review scout(带有 `reviews` 的任务,或处于 review 阶段的 army 角色)为 1200,因为一次真实的安全审查持续阅读了整整 10 分钟后被中断。 |
| verify_regression | boolean | 否 | 仅限 implement:diff 通过 `verification` 且涉及生产文件后,临时回退这些生产文件,仅重新运行相同的验证配置(预期没有修复时会失败),然后还原文件。若重新运行仍然通过,则证明没有测试能捕获此回归;无论 worker 如何报告,结果都会降级为 NEEDS_REVIEW——绝不会悄悄提交为已完成。这是唯一能捕获验证配置因错误原因而通过的机制(例如测试选择标志意外排除了变更文件自身的测试,会产生真实、有效的绿色运行,但实际上未覆盖 diff;仅检查退出码无法发现这种差异)。只要设置了 `verification`,此项默认开启,因为这一缺口正是 nomArmy 声称要封闭的信任边界;显式传入 `false` 可跳过双倍耗时(在拥有数千个测试的仓库中可能很重要),但需自行承担风险。未设置 `verification` 配置时无效——没有内容可重新运行。scout 会忽略此项。 |
| confirm_over_limit | boolean | 否 | 覆盖已达到的用量限额:General 必须先询问操作员,才能使用 confirm_over_limit: true 重新提交;或者将任务发送给另一个 Agent。nomArmy 不会自行设置此项。 |
详细介绍
每个字节都经过验证。 🍪
nomarmy.dev · 文档 · 赞助
你的编码助手负责规划;沙箱化的工作者负责构建;只有经 nomArmy 检查后,结果才算数。
AI 编码工作者信心十足。它们声称“完成了,所有测试都通过了”,但这只是说法,并非证据。nomArmy 让你的编码助手(Claude Code、Codex 或 Cursor)把工作交给称为 noms 的工作者,然后在提交任何内容之前自行检查每项改动:实际差异、在全新沙箱中运行的测试、这些测试是否确实能捕获改动,以及机密扫描。
简要说明
- 准备好 Git、Node 24.16+(或 26.1+)、Podman,以及已安装并登录的 Claude Code、Codex 或 Cursor。在 macOS 上,为 Podman 分配 8 GiB:
brew install podman && podman machine init --memory 8192 && podman machine start。 支持在 Windows 上使用 WSL2 中的引擎。请按照 Windows 设置指南操作。 - 安装并设置:
npm install -g nomarmy cd your-project nomarmy setupnomarmy setup是一本操作指南。它会显示检查清单,并在你每次答应后执行下一步:
可随时停止;✓ Where models run: hosted ✓ Installed: OpenClaw 2026.10.3 → Agents: add a hosted agent Roles: add an agent first This repo: configure this project Check: verify the installation Run `nomarmy agents add` now? [Y/n]nomarmy setup会从你上次停下的地方继续。想了解每一步的详细说明?设置示例:Claude Code、Codex 和 API 密钥逐条列出了命令。 - **开始使用:**在项目中重启 Claude Code,让它用 nomArmy 修复一个带有测试的小 bug。成功后,试试
/feature <what you want built>。
更喜欢使用插件?完成第 2 步后,Claude Code 用户可以运行 /plugin marketplace add rayson-tech/nomarmy 和 /plugin install nomarmy@nomarmy,而不是使用 nomarmy connect;Codex 也支持(插件)。
遇到问题?nomarmy doctor 会检查机器,nomarmy health 会检查 nomArmy 所依赖的一切。之后想升级?运行 nomarmy update。
如何验证每一个字节
- 你的编码助手 General 会说明任务:具体工作、验收标准,以及用于证明任务完成的测试。
- nomArmy 从你的分支创建一个 git worktree,并在 Podman 沙箱中运行 nom,不提供网络访问权限,也不提供主机凭据。(唯一例外是 Claude 订阅:请参阅安全态势。)
- nom 会编辑代码、运行测试,最后提供一份四行报告:
STATUS、TESTS、NOT_DONE、NOTE。 - nomArmy 将这份报告视为一项声明,并自行核验相关证据:
- 从 git 读取实际 diff,而不是依赖 nom 对 diff 的描述
- 在全新的沙箱中运行你的验证配置
- 撤销生产代码更改并重新运行测试:如果测试仍然通过,就无法证明任何事情,因此该任务会转交审核,而不会被提交
- 拦截机密信息,并标记为通过而刻意修改的测试(新增跳过项、存根导入)以及无人调用的代码
- 只有完成这些步骤后,才会在 nom 自己的分支上提交。它绝不会合并到你的分支:审核和集成仍由 General 和你负责。
验证失败就会一直保持失败,不设例外。报告格式不正确并不一定会导致任务失败:如果仓库发生了更改,nomArmy 会独立核验,并可能恢复相关工作。此外,General 无权豁免这些检查:仓库的 .nomarmy.yml 策略(新仓库默认启用)要求每项任务都必须通过验证和撤销检查。
展示检查结果。 /feature 运行完成后,General 会收到一个用于拉取请求的“已由 nomArmy 验证”区块,其中列出通过核验的“已完成,测试通过”声明数量、nomArmy 发现的问题数量及原因,以及撤销相应更改后会失败的新测试。nomarmy stats --share 会输出任意时间段的相同统计信息,nomarmy stats --badge 则会生成一个 README 徽章,例如 nomArmy | 78 claims checked · 11 caught。所有数字均来自已验证的记录。
无需构建即可检查,而且不花费任何成本:mode: verify 会针对任意分支运行验证配置,无需工作进程,也不会消耗模型令牌。
想要更深入的检查? 三个可选的验证器可进行更深入的检查,但都只会添加审核标记:变异测试(测试是否充分约束了更改的代码行?)、Jev(侦察员的引用是否支持其发现,报告是否与 diff 相符?;可在你自己的机器上使用 TypeSafe 或兼容的服务),以及模型裁判(验收标准、被削弱的测试)。
工作运行的位置
- Agents 说明任务可以在哪里运行:使用 API 密钥、你自己的 Claude、ChatGPT、Muse Code 或 Grok 订阅(或其他 OpenClaw 提供商),也可以使用 llama.cpp 上的本地模型。
- 团队说明哪些角色由哪些 Agent 执行:高级和初级开发人员负责构建,安全分析师和数据架构师负责审查,项目经理检查计划,产品负责人负责验收。
/feature端到端地完成整个功能,从规划到构建、审查和验收,最后交给你一个可供合并的分支。- Harness 为每个仓库提供合适的沙箱:Go、Rust、Python 和 Node(也支持混合仓库)、Playwright 浏览器测试,以及模拟登录服务等虚假服务;全程离线。添加 Harness 不会触及核心代码。
你得到的是无需盲目信任的工作成果,而不是更便宜的工作。委派任务也会消耗 General 的令牌,用于任务说明和审查:对于规模较小、问题已诊断的工单,我们测得 General 消耗的令牌是直接修复 Bug 的 4 到 8 倍;当修复需要阅读的上下文约有 150 行时,成本才达到盈亏平衡点(测量结果)。对于较大的工单、并行工作,以及任何原本需要你相信 Agent 说法的场景,委派就很划算。
有 GPU 或内存充足的 Mac? 在 nomarmy setup 中选择“本地模型”:无需按令牌付费,代码也会留在本地,但你需要付出硬件、电力和速度方面的代价。nomarmy sizing 会告诉你哪些配置适用。共享模型服务 也同样可用。
由 Rayson Technologies 开发和维护。这是一个 Beta 版(0.1.0-beta):升级后设置会保留(参见配置兼容性)。
文档
| 安装 | 各种安装方式:托管服务(API 密钥和订阅)、macOS 上的本地模型、Linux、通过 WSL2 运行引擎的 Windows 或 DGX Spark、共享模型服务、Bedrock |
| 安装示例 | Claude Code、Codex 和 API 密钥,逐条命令说明 |
| Agents 和团队 | 任务可以在哪里运行、各角色的职责、使用限制、如何选择 Agent |
/feature 运行 | 端到端完成一个功能,以及查看 nomArmy 的工作进度 |
| 你的仓库 | .nomarmy.yml、验证、依赖项、私有注册表、nomArmy 会检查的内容 |
| 验证器 | 可选的深度检查:变异测试、Jev、模型裁判 |
| Harness | 生态系统注册表、检测、网络级别和要求 |
| 配置 | 设置、切换本地模型、资源配置、准入 |
| 参考 | 所有 CLI 命令和 MCP 工具 |
| 安全态势 | 沙箱会限制什么,以及唯一的例外 |
| 常见问题 | 各角色适用的模型、切换模型、使用限制 |
| 故障排除 | 问题表现和解决方法 |
安全
一个 nom 在 Podman 沙箱中获得一个可写的 git 工作树,仅此而已:没有网络、没有主机凭据,也没有 Podman 套接字。所有模型调用都由你机器上的 OpenClaw 发起,从不在沙箱内发起。验证可以逐级开放网络:先使用专用网络上的模拟服务,再使用你批准的测试租户允许列表,但 noms 始终处于 network none 状态。例外情况是 Claude 订阅,其工具在你的机器上运行,因此除非你允许,否则 nomArmy 会拒绝在其上执行构建任务。切勿向 nom 提供生产凭据、部署权限或 SSH 密钥。详情:安全态势;如需报告漏洞,请参阅 SECURITY.md。
状态
| 能力 | 状态 |
|---|---|
| 验证核心:工作树、由 nomArmy 管理的 git、独立验证、还原检查、保留失败的工作树 | 可用,已完成端到端测试 |
mode: verify、密钥扫描(secretlint,硬性阻断)、测试变通方案和未接线代码检查 | 已通过单元测试和实时测试;启发式检查仅作为审查标记 |
Scout 和分解模式、auto_union | 已通过单元测试和实时测试 |
| Agent:API 密钥 | 已通过 xAI 的实时验证;其他提供商按 OpenClaw 的文档接口构建 |
| Agent:订阅 | ChatGPT(Codex)和 Muse Code 已沙箱化并通过实时验证;Claude 已通过实时验证,但其工具在主机上运行(默认用于侦察和审查) |
| 本地(llama.cpp)和 Bedrock 配置 | 可用 |
Army 和 /feature | 每天用于 nomArmy 本身和我们的产品:2026 年 9 月 18 日至 10 月 10 日共处理 783 个任务(测量结果) |
| 测试框架:Go、Rust、Python、Node 和混合仓库;Playwright;模拟服务 | 已通过离线实时验证 |
| 私有注册表和仅供验证使用的网络允许列表 | 已通过实时验证;均通过了独立安全审查 |
| 验证器:变异测试、Jev、模型裁判 | 已通过单元测试和实时测试;Jev 和模型裁判已在真实任务记录上评估 |
nomarmy stats | 已根据真实任务记录上的手工报告核对 |
关于真实运行中的经验,包括委派何时有效、何时无效,详见 docs/findings.md。
已知限制
- Claude 订阅不在沙箱中。 其工具会在你的计算机上运行,因此除非设置
allow_host_tools: true,否则会拒绝在其上执行任务。请参阅安全态势。 - 你自己的 compose 服务尚未启动。 如果验证配置文件需要从你的 compose 文件中获取真实数据库(
environment: basic或更高),则会报告not_run,而不会在缺少数据库的情况下运行(并且 compose 解析器无法解析 YAML 锚点)。测试框架提供的模拟服务(例如模拟登录服务)可以运行。 - 私有注册表尚不支持 Poetry 或 Yarn Berry:Poetry 无法保证经过身份验证的安装过程不会运行任何包代码,而 Yarn Berry 不读取
.npmrc。uv、pip wheels、npm、pnpm、Yarn Classic 和 bun 均可使用。请参阅私有注册表。 - 供应商列出但拒绝使用的模型,会在分派时通过测试调用捕获。 对于从未在其 Agent 上成功使用过的模型,首个任务会等待几秒,进行一次单 token 测试调用;如果被拒绝(例如 ChatGPT 方案中的 gpt-6-sol),系统会报告并记住此情况,而不会让任务承担费用。测试调用结果不明确(超时)时,任务会继续执行。
- Claude 订阅的 token 数量取自 Claude CLI 自身的会话日志,因为 OpenClaw 只能看到最终回复;总数包含缓存读取和写入。
- 测试规避检测是一个标记,而非定论:即使是合理的新跳过项,也会被标记。
- 部署时的失败需要你自行检查。 请参阅为单元测试无法发现的问题添加检查。
- 同主机沙箱:MCP 服务、OpenClaw 以及每个任务的沙箱都运行在协调器所在的计算机上。只有模型可以运行在其他位置。
更多信息
- docs/findings.md:实际运行带给我们的经验。
- docs/experiments:背后的实测报告。
- policies:如何监督侦察员和审查员。
- CONTRIBUTING.md、SECURITY.md、CODE_OF_CONDUCT.md。
配置变量为 NOMARMY_*;旧版 RAYSON_* 变量会在加载时转换一次,并显示弃用警告。
根据 Apache 2.0 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
