@dungle-scrubs/harness-cli-normalizer

中文文档
0.9.20发布于 2026/11/10MITES Module构建来源已验证近 30 天下载 2552

一个跨越多个编码代理的统一接口.

中文使用文档
文档目录21 节
  1. 安装
  2. 使用量
  3. 转一圈
  4. 限制工具和访问
  5. 读取结果为 JSON
  6. 从模型路由器运行一个路径
  7. 保持会话开放
  8. 读取已保存的会话
  9. 从模型中回答一个问题
  10. 概念
  11. 三个包怎么合适
  12. 拒绝和分歧
  13. 参考文献
  14. 图标
  15. 退出代码
  16. 配置
  17. 警卫
  18. 捐款
  19. 状态
  20. 谢谢
  21. 许可证

常态化器

CI npm license: MIT

一个跨越多个编码代理的统一接口.

hcn是手动工作来编码代理CLI的脚本和代理的指令行工具. hcn电话 每一个CLIs都有一个带子。 它目前支持克洛德代码, Codex, pi, Muse, Cursor CLI, 反重力CLI,popeye,和OpenCode CLI. 你为每一项任务选择了绳子和模型,并通过同样的 任何一种选择。 hcn 将选项转换成绳子旗并报告结果 与JSON事件和退出代码相同。 如果吊带没有同等的选项, hcn 退出 不启动它 并列出 绳子做.

$ hcn inspect claude --argv --access read --context-window 200000 --prompt "find bugs in src/"
...
argv: claude -p --effort medium --autocompact 200000 --permission-mode dontAsk --disallowedTools mcp__* --tools Read,Grep,Glob,WebFetch,WebSearch ...

$ hcn inspect codex --argv --access read --context-window 200000 --prompt "find bugs in src/"
...
argv: codex exec --json ... -c model_context_window=200000 --disable memories --sandbox read-only ...

$ hcn inspect pi --argv --access read --context-window 200000 --prompt "find bugs in src/"
pi cannot express option "contextWindow" (200000); supported: effort, provider, ... - drop the option or route this work to a harness that supports it
supported on: claude (--autocompact), codex (-c), popeye (--context-window)

hcn inspect --argv 打印命令 hcn 会运行. hcn run 带着同样的旗帜,运行它. 要为您选择绳索和模型,请将模型-路由器放在 hcn 前面,如 三个包怎么合适。 。 。 .

安装

hcn需要节点24或更新,以及至少一个取用CLI,安装和签名. 国家领导才能是: 链接在 谢谢. hcn使用每个CLI自己的登录.

npm install -g @dungle-scrubs/harness-cli-normalizer

hcn ls 列出带和CLI版本hcn的对照:

$ hcn ls
[email protected] (npm:@anthropic-ai/claude-code)
[email protected] (npm:@openai/codex)
[email protected] (npm:@earendil-works/pi-coding-agent)
[email protected] (installed:muse)
[email protected] (installed:agent)
[email protected] (installed:agy)
[email protected] (npm:@dungle-scrubs/popeye)
[email protected] (npm:opencode-ai)

为了教你的编码代理 hcn的旗帜,事件和拒绝,安装它的代理技能:

npx skills add dungle-scrubs/harness-cli-normalizer --skill hcn -g

使用量

转一圈

$ hcn run claude "name three primes, nothing else" --model haiku
provenance: effort = "medium" (profile)
...
divergence: profile "sandbox" not expressible on claude; harness default applies
env: CLAUDE_CODE_DISABLE_AUTO_MEMORY=1
spawn: claude -p --effort medium [prompt:969ch] --output-format stream-json --verbose --include-partial-messages --model claude-haiku-5-5
provenance: questions = ask (default)
  ● session d8b139a5-14d4-40dc-852e-3ae87d23b221 (harness-minted)
2, 3, 5
  ○ clean (exit 0)

要使用另一把绳子, 替换 claude 与 codex, (中文(简体) ), pi, (中文(简体) ), muse, (中文(简体) ), cursor, (中文(简体) ), antigravity, (中文(简体) ), popeye,或 opencode 并保留其他旗帜。 hcn 检查 --model 财务报告和审定财务报表 --effort 先对着绳子. 在克劳德, --setting-sources <list> (单位:千美元)user, (中文(简体) ), project, (中文(简体) ), local选择哪个设置范围 子负载; 运行时默认不通过任何内容和会话标针 project。 。 。 . 譬如说, --model haiku 在编码器出口2上,列出编码器模型。 线条显示在哪里 每个设置来自( e)provenance:),绳子无法表达的(divergence:页:1 命令 hcn 运行 (spawn:) (中文(简体) ). Hcn 添加了序言, 提示比您输入的要长 这告诉模型如何问你一个问题。 见 从模型中回答一个问题。 。 。 .

限制工具和访问

hcn run codex "find bugs in src/" --access read
hcn run claude "update the parser" --access write --no-autonomy
hcn run claude "find bugs in src/" --tools read,grep,glob
hcn run claude "find bugs in src/" --context-window 200000

--access read 成为关闭 --tools Read,Grep,Glob,WebFetch,WebSearch 设置加 --permission-mode dontAsk 和明确的 mcp__* 否认克劳德的密码, --sandbox read-only 关于代码x,和 --tools 临τ. --tools 财务报告和审定财务报表 --exclude-tools 使用同样的 工具名称: read, (中文(简体) ), write, (中文(简体) ), edit, (中文(简体) ), shell, (中文(简体) ), grep, (中文(简体) ), glob, (中文(简体) ), list, (中文(简体) ), web-fetch, (中文(简体) ), web-search, (中文(简体) ), subagent,以及 skill。 。 。 . --skills 以同样的方式限制技能.

关于克洛德密码, --access write 选择 --permission-mode acceptEdits 并要求严格 土生土长的沙盒 自动批准沙盒的巴什。 hcn 保持文件系统隔离, 禁用 并请求克劳德停止 如果沙盒无法启动。 沙盒盖了 Bash,不是本地文件或网络工具. 土著许可检查和管理政策仍然适用.

严格模式也限制了网络访问. 除非管理的政策超越严格模式,否则克劳德会忽略 工程级域允许列表. 依赖性安装和测试可能需要信任的用户或管理 网络政策和可写路径。 hcn 既不添加域又不添加可写入的根 。 与 --access write --autonomy, Claude 保留清晰的 Bash 沙盒,同时其许可模式 变成 bypassPermissions该模式可以在网络许可列表之外批准主机,除非 strictAllowlist, (中文(简体) ), allowManagedDomainsOnly,或本地拒绝域政策阻挡他们。 克劳德 hcn 尚未验证其无头。 A 类 本地语言 httpProxyPort 或者说 socksProxyPort 将过滤器移动到克劳德外的自定义代理服务器 拥有域控件。 保存文件系统沙盒并不能保证网络封禁. 单靠自主并不要求这个沙盒. 见 访问绘图和本土限制。 。 。 .

在光标上, --access read 选择本地询问模式. 光标写入访问没有限制数字 : --access write 调制 --force,允许命令并绕过工作空间信任。 没有 提供工作空间沙盒; 本地明确拒绝仍然适用.

读取结果为 JSON

$ hcn run claude "name three primes, nothing else" --model haiku --json
{"kind":"identity","sessionId":"7e3712eb-76cf-4c00-a72a-ba08ab1f78db","authority":"harness-minted","capabilities":{...}}
...
{"kind":"message","role":"assistant","text":"2, 3, 5"}
{"kind":"done","exitCode":0,"cause":"clean","escalation":{"mode":"ask","detection":"none"}}

--json 每行打印一个 JSON 事件。 本地工具输出以 tool-result 事件, 包括结构化扩展结果和报告错误标记。 原生代号数和 费用估计数按规模计算 usage 事件。 干净 done 并不意味着每个工具都成功; 检查工具结果。 本地的工具拒绝报告也可以产生 error.denial 观察. hcn在克洛德的期末报告每个有效的条目 permission_denials 带有工具名称,可选 调用 ID , 以及一个限制输入摘要. 转一转 拒绝观察 增加了一个积极的 done.denialCount; 人类输出增加 [denials: N]。 。 。 . 计数报告观察,而非独特的调用或任务正确. 缺少的数不 建立成功:失败的命令只能产生 tool-result.isError。 。 。 . 见 事件合同。 。 。 . 每根绳子都一样,最后一行总是 done。 。 。 . 在非零跑出道时, done.completion 保存输出证据 : native-terminal 是指据报成功完成转弯的牵引装置; message-delivered 表示助理文本未确认回合完成即到达. 进程失败仍在 cause编号 :failure,以及 exitCode 保持绳子的真实状态. 如果运行失败, done.failure.retryable 说重试是否有帮助, 财务报告和审定财务报表 done.failure.class 给出原因,例如 rate-limit, (中文(简体) ), auth, (中文(简体) ), transport,或 rejected。拒绝还列出了支持该选项的杠杆:

$ hcn run pi "find bugs in src/" --context-window 200000 --json
{"kind":"failure","class":"rejected","retryable":false,...,"supportedBy":[{"harness":"claude","spelling":"--autocompact"},{"harness":"codex","spelling":"-c"},{"harness":"popeye","spelling":"--context-window"}]}
{"kind":"done","exitCode":null,"cause":"failed","failure":{...}}

从模型路由器运行一个路径

$ model-router '{"task":"code-review","stakes":"normal","privacy":"normal"}' \
    | jq -c '.routes[0] | {harness, modelId, effort}'
{"harness":"pi","modelId":"zai/glm-5.3","effort":"xhigh"}
$ hcn run pi --model zai/glm-5.3 --effort xhigh --access read "review the diff on this branch"

一条路线有一条绳子,一个模型的ID,一个努力,对于一些路线来说,是一个提供者. 传过来 hcn run 作为牵引论点, --model, (中文(简体) ), --effort,以及 --provider如果运行失败 retryable: true中,运行下一个路径 .routes路线来自您的注册,所以您 将不同.

保持会话开放

$ printf '%s\n' '{"op":"send","id":"in-1","text":"name three primes, nothing else"}' \
    | hcn session claude --model haiku --json
{"kind":"session","sessionId":"230f0d30-47d8-49bd-bcfc-ba2c5008776c","harness":"claude","hcn":"0.9.8","questions":"ask","origin":"fresh"}
{"kind":"disposition","id":"in-1","disposition":"started"}
{"kind":"turn","turnId":"230f0d30-47d8-49bd-bcfc-ba2c5008776c:turn-1","id":"in-1"}
...
{"kind":"message","role":"assistant","text":"2, 3, 5"}
{"kind":"done","exitCode":null,"cause":"clean",...}
{"kind":"closed","exitCode":0,"cause":"clean"}

与 --json,您将命令写入 stdin, 每行一个 JSON 对象(send, (中文(简体) ), answer, (中文(简体) ), interrupt, (中文(简体) ), settings, (中文(简体) ), approval, (中文(简体) ), close),从stdout读出事件. 每个 send 买一个 disposition; 转弯 由寄件人携带其身份证打开。 检查会话包 controls 在选择前 delivery queue 或者说 steer,或者在确认后打断并发送替换。 在克劳德 会议, --native-approvals 转发每个许可请求, 询问用户和计划批准 作为你 approval-request 事件;见 参考文献关于克劳德和皮伊会议 settings 业务改革模式和工作中期 send 带 "verbatim": true 键入 吊带本身的斜线命令没有改变( Claude slash 命令; 仅在 pi 上的扩展命令) 例如 /skill:x 运行);见 参考文献届会工作 与克洛德密码, Codex, pi, Antigravity CLI, 和popeye. 无 --json, (中文(简体) ), hcn session claude 打开交互式提示.

读取已保存的会话

$ hcn transcript ls --limit 1
{"schemaVersion":1,"kind":"session-list-source","hcnVersion":"0.9.8","harnesses":["claude","codex","pi","muse","cursor","antigravity","popeye"],...}
{"schemaVersion":1,"kind":"session","harness":"claude","id":"1daeb0ec-1d9c-4461-8e5c-84ca8c6ee3f6",...,"mode":"interactive","readable":true,"blocked":null}
{"schemaVersion":1,"kind":"session-list-result","exitCode":0,"status":"complete","rowsReturned":1,"more":true,...}
$ hcn transcript read claude --id 1daeb0ec-1d9c-4461-8e5c-84ca8c6ee3f6 > transcript.jsonl

hcn transcript ls 列出当前目录中保存的每个带的会话, 最新的 首先,以一种格式. hcn transcript read 输出一个会话的信息和工具结果 没有启动绳子。 支持因系系而异; 见 文档/缩写。 。 。 .

从模型中回答一个问题

$ hcn run claude "Add a database to the new service. Postgres or SQLite are both fine and the choice is mine, not yours." --model haiku --access read --json
...
{"kind":"question","question":"Which database should the new service use, ...","options":["SQLite","Postgres"],"recommended":"SQLite"}
{"kind":"done","exitCode":0,"cause":"awaiting-input","escalation":{"mode":"ask","detection":"block"}}
$ hcn run claude --resume 98ba94a4-f51b-49ef-b515-2e2202a4fc0e --prompt "Postgres"

默认情况下 Hcn的序言告诉模型 当它无法作出决定时 如何提问 自己来 转出一圈 question 事件和a done 有原因的事件 awaiting-input (出处0). 询问用户,然后使用 sessionId 从 identity 活动。 与 --questions assume,模型陈述了它的假设,而是继续.

概念

三个包怎么合适

task ──▶ model-router ──▶ routes, best first ──▶ hcn run <harness> --model <id> --effort <level>
              ▲                                              │
              │                                              └─ retryable failure: next route
       model-registry

三个软件包一起将每个工作都通往一个模型,并自动使用,跟随您 偏好. 模式登记 定义 注册文件:您可以使用的模型,到达他们的被套,以及每个被评分. 模型路由器 阅读登记册,承担一项任务 返回路径排在首位。 每一条路线都是一条绳子,一个模型,一个努力. hcn运行 路线。 如果运行失败 retryable: true,运行下一个路径. 双眼 是一种为hcn驾驶而建造的绳子,而且 注册处可以像其他任何吊带一样列出通过它的道路. 每个包裹也各自工作. hcn运行任何你给出的绳索和模型, 模型路由器排列路线而不运行任何东西.

拒绝和分歧

如果你通过一个选项, 吊带无法表达, hcn退出 2 不启动吊带和 列出支持选项的自带。 如果选项来自 hcn 的默认而不是 从你,hcn打印a divergence: 线到 stderr, 并使用它自己的默认值.

参考文献

图标

hcn run <harness> [prompt]     Run one headless turn
hcn session <harness>          Keep one process open across turns (--json for programs)
hcn interactive <harness>      Resume a native session in your terminal, with a control pipe
hcn inspect <harness>          Preview argv, capabilities, runtime, context, or saved settings
hcn transcript ls              List saved native sessions, newest first
hcn transcript read <harness>  Export one saved session as JSONL
hcn ls                         List harnesses and the CLI version each was verified against
hcn check                      Compare those versions with the latest releases

<harness> 这是其中之一 claude, (中文(简体) ), codex, (中文(简体) ), pi, (中文(简体) ), muse, (中文(简体) ), cursor (二进制) agent, (中文(简体) ), antigravity (二进制) agy, (中文(简体) ), popeye,或 opencode。 。 。 . hcn <command> --help 列出每个旗帜.

会议 send 财务报告和审定财务报表 answer 命令接受 delivery: "queue" 或者说 "steer" 支持的地方. 这个 会话控制引用 覆盖 每笔费用支助和 interrupt 请求和确认收据.

退出代码

代码含义
0 个回合结束,包括一个回合结束一个问题
1个吊带或运输失败; done.failure 说为什么
2个用法出错或拒绝; 控制未启动
页:1Hcn中的错误; a --json 流尾仍为 failure 财务报告和审定财务报表 done

配置

hcn从第一个设定源取出每个设置:

flags > .hcn/config.json (git root) > ~/.config/hcn/config.json > hcn defaults > harness default
{ "version": 1, "effort": "high", "access": "read", "toolsets": { "review": ["read", "grep"] } }

密钥 : effort, (中文(简体) ), model, (中文(简体) ), provider, (中文(简体) ), sandbox, (中文(简体) ), contextWindow, (中文(简体) ), tools, (中文(简体) ), excludeTools, (中文(简体) ), autonomy, (中文(简体) ), write, (中文(简体) ), shell, (中文(简体) ), memory, (中文(简体) ), maxSteps, (中文(简体) ), toolsets, (中文(简体) ), timeout, (中文(简体) ), questions, (中文(简体) ), systemPrompt, (中文(简体) ), appendSystemPrompt, (中文(简体) ), toolMap,以及 access。 。 。 .

用户配置也接受 claudeConfigDir克劳德的绝对道路 发射背景。 继承 CLAUDE_CONFIG_DIR 每个运行 --env 选择 优先级。 见 配置和账户上下文。 。 。 .

hcn的默认是努力 medium自主关闭 记忆关闭 发现 编码和 反重力CLI也得到沙盒 workspace-write,而 Codex 和 popeye 获得一个 272,000 个上下文 窗口。 在一个项目配置中, tools 也盖上什么 --tools 请求更多 退出 2. 一个未知的密钥或无效的 JSON 退出 2 有消息中的问题.

警卫

  • hcn没有保存证书。 每条绳子都用你自己的帐号.
  • hcn在故障信息中掩盖了从取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取 sk- 键和 token=, (中文(简体) ), key=, (中文(简体) ), secret=,以及 password= 双人.
  • 每个引用都附加起行和起行 hcn/commands.jsonl 下级 $HCN_STATE_DIR, (中文(简体) ), $XDG_STATE_HOME,或 ~/.local/state。 。 。 .
  • 若为 HCN_OBSERVER 被设定为可执行文件, hcn run 将事件传送到那个程序上. 见 文件/观察员.md如果还没有设定, hcn 发送什么.

文件/参考资料.md 有全旗表,每个吊带的工具名称 事件和失败字段、会话协议以及本地会话命令(tterminal recept, 编码批准,并保存设置).

捐款

你需要节点24或更新,pnpm和Bun.

pnpm install
pnpm setup:hooks           # once, from the primary checkout root: installs the Git hooks
pnpm check                 # full verification, including hook readiness and placement
bun run demo claude "hi"   # run a harness and print its event stream

不要打破层规则 test/interpretation/purity.test.ts 财务报告和审定财务报表 test/no-chat-imports.test.ts 执行, 不编辑 test/fixtures/输入 常规承诺。 见 捐款额 剩下的,还有 文件/档案更新 如何对照新的CLI验证绳子 版本.

状态

hcn为前1.0. 它不是一条绳子,也不是一个模型本身。 它在您之间增加了一层 所以如果你只使用一个CLI, 你可能宁愿直接调用CLI. ROADMAP.md 地图 列出计划的工作,包括新的工具。 支持方式不同:

  • Claude Code、Codex、pi、Antigravity CLI和popeye 与会议合作。 Muse, Cursor CLI, 和 化学反应 OpenCode CLI只运行单转.
  • hcn interactive 只支持 Codex .
  • --native-approvals 支持 Codex 一发响应和克洛德会话. 保存设置检查支持 Codex和pi.
  • CI的每周版本检查覆盖了出版到npm的被带. Muse, Cursor CLI, 和 化学反应 Antigravity CLI 在当地用自己的版本命令检查.

谢谢

hcn运行这些 CLI : 克劳德代码, (中文(简体) ), 代码, (中文(简体) ), 毕,Muse(从来源安装, cursor CLI (通过脚本、 二进制安装) agent,不在登记簿上, 反重力CLI, (中文(简体) ), 双眼,以及 打开代码 CLI。 。 。 .

许可证

麻省理工学院. 见 自由主义。 。 。 .

版本与发布记录

@dungle-scrubs/harness-cli-normalizer 共发布 77 个版本,首次发布于 2026/08/13;过去 12 个月发布了 77 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.9.20latest2026/11/103 天前
0.9.192026/11/103 天前
0.9.182026/11/076 天前
0.9.172026/11/049 天前
0.9.162026/11/049 天前
0.9.152026/11/0310 天前

关于 @dungle-scrubs/harness-cli-normalizer 的常见问题

@dungle-scrubs/harness-cli-normalizer 是什么?

一个跨越多个编码代理的统一接口.

如何安装 @dungle-scrubs/harness-cli-normalizer?

在项目目录运行 npm install @dungle-scrubs/harness-cli-normalizer,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 hcn,可以用 npx hcn 直接运行。

@dungle-scrubs/harness-cli-normalizer 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/dungle-scrubs__harness-cli-normalizer 是否存在。

@dungle-scrubs/harness-cli-normalizer 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@dungle-scrubs/harness-cli-normalizer 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@dungle-scrubs/harness-cli-normalizer 可以商用吗?

@dungle-scrubs/harness-cli-normalizer 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@dungle-scrubs/harness-cli-normalizer 的下载量有多少?

根据 npm 官方下载统计,@dungle-scrubs/harness-cli-normalizer 在 2026/10/13 – 2026/11/11 这 30 天内被下载 2,552 次,日均约 85 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dungle-scrubs/harness-cli-normalizer 还在维护吗?

最新版本 0.9.20 发布于 2026/11/10(3 天前);至今共发布 77 个版本,其中过去 12 个月发布了 77 个;首次发布于 2026/08/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。