# @dungle-scrubs/harness-cli-normalizer 中文文档

规范地址：https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/

版本：0\.9\.20
npm 元数据更新时间：2026-11-10T07:31:08.524Z
中文译文更新时间：2026-11-13T01:51:39.684Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40dungle-scrubs/harness-cli-normalizer
原文对照：https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/?lang=original
项目主页：https://github.com/dungle-scrubs/harness-cli-normalizer#readme
源码仓库：https://github.com/dungle-scrubs/harness-cli-normalizer

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：6 MB，835 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=24
- 运行依赖：1 个
- 首次发布：2026-08-13T00:56:41.909Z
- 最新版本发布：2026-11-10T07:31:08.155Z
- 近 30 天下载量：2552（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：77（近 12 个月 77 个）

## 中文简介

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

## 安装

```sh
npm install @dungle-scrubs/harness-cli-normalizer
```

也可以使用：`pnpm add @dungle-scrubs/harness-cli-normalizer`、`yarn add @dungle-scrubs/harness-cli-normalizer`、`bun add @dungle-scrubs/harness-cli-normalizer`

## README

# 常态化器

[![CI](https://github.com/dungle-scrubs/harness-cli-normalizer/actions/workflows/ci.yml/badge.svg)](https://github.com/dungle-scrubs/harness-cli-normalizer/actions/workflows/ci.yml) [![npm](https://img.shields.io/npm/v/@dungle-scrubs/harness-cli-normalizer.svg)](https://www.npmjs.com/package/@dungle-scrubs/harness-cli-normalizer) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/LICENSE)

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

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

```console
$ 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 前面,如 [三个包怎么合适](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/#readme-how-the-three-packages-fit)。 。 。 .

## 安装

hcn需要节点24或更新,以及至少一个取用CLI,安装和签名. 国家领导才能是: 链接在 [谢谢](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/#readme-thanks). hcn使用每个CLI自己的登录.

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

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

```console
$ hcn ls
claude@2.1.312 (npm:@anthropic-ai/claude-code)
codex@0.165.0 (npm:@openai/codex)
pi@1.4.0 (npm:@earendil-works/pi-coding-agent)
muse@1.4.2 (installed:muse)
cursor@2026.10.01-e373342 (installed:agent)
antigravity@1.3.3 (installed:agy)
popeye@0.2.0 (npm:@dungle-scrubs/popeye)
opencode@1.19.5 (npm:opencode-ai)
```

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

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

## 使用量

### 转一圈

```console
$ 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 添加了序言, 提示比您输入的要长 这告诉模型如何问你一个问题。 见 [从模型中回答一个问题](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/#readme-answer-a-question-from-the-model)。 。 。 .

### 限制工具和访问

```sh
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` 将过滤器移动到克劳德外的自定义代理服务器 拥有域控件。 保存文件系统沙盒并不能保证网络封禁. 单靠自主并不要求这个沙盒. 见 [访问绘图和本土限制](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/docs/reference.md#access-presets)。 。 。 .

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

### 读取结果为 JSON

```console
$ 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`。 。 。 . 见 [事件合同](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/docs/reference.md#tool-results-and-usage)。 。 。 . 每根绳子都一样,最后一行总是 `done`。 。 。 . 在非零跑出道时, `done.completion` 保存输出证据 : `native-terminal` 是指据报成功完成转弯的牵引装置; `message-delivered` 表示助理文本未确认回合完成即到达. 进程失败仍在 `cause`编号 :`failure`,以及 `exitCode` 保持绳子的真实状态. 如果运行失败, `done.failure.retryable` 说重试是否有帮助, 财务报告和审定财务报表 `done.failure.class` 给出原因,例如 `rate-limit`, (中文(简体) ), `auth`, (中文(简体) ), `transport`,或 `rejected`。拒绝还列出了支持该选项的杠杆:

```console
$ 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":{...}}
```

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

```console
$ 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`路线来自您的注册,所以您 将不同.

### 保持会话开放

```console
$ 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` 事件;见 [参考文献](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/docs/reference.md#session-native-approvals)关于克劳德和皮伊会议 `settings` 业务改革模式和工作中期 `send` 带 `"verbatim": true` 键入 吊带本身的斜线命令没有改变( Claude slash 命令; 仅在 pi 上的扩展命令) 例如 `/skill:x` 运行);见 [参考文献](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/docs/reference.md#mid-session-model-and-effort)届会工作 与克洛德密码, Codex, pi, Antigravity CLI, 和popeye. 无 `--json`, (中文(简体) ), `hcn session claude` 打开交互式提示.

### 读取已保存的会话

```console
$ 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` 输出一个会话的信息和工具结果 没有启动绳子。 支持因系系而异; 见 [文档/缩写](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/docs/transcripts.md)。 。 。 .

### 从模型中回答一个问题

```console
$ 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`,模型陈述了它的假设,而是继续.

## 概念

### 三个包怎么合适

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

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

### 拒绝和分歧

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

## 参考文献

### 图标

```text
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"` 支持的地方. 这个 [会话控制引用](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/docs/reference.md#delivery-and-interruption-controls) 覆盖 每笔费用支助和 `interrupt` 请求和确认收据.

### 退出代码

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

### 配置

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

```text
flags > .hcn/config.json (git root) > ~/.config/hcn/config.json > hcn defaults > harness default
```

```json
{ "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` 选择 优先级。 见 [配置和账户上下文](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/docs/reference.md#defaults-config-provenance)。 。 。 .

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](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/docs/observer.md)如果还没有设定, hcn 发送什么.

[文件/参考资料.md](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/docs/reference.md) 有全旗表,每个吊带的工具名称 事件和失败字段、会话协议以及本地会话命令(tterminal recept, 编码批准,并保存设置).

## 捐款

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

```sh
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/`输入 常规承诺。 见 [捐款额](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/CONTRIBUTING.md) 剩下的,还有 [文件/档案更新](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/docs/harness-updates.md) 如何对照新的CLI验证绳子 版本.

## 状态

hcn为前1.0. 它不是一条绳子,也不是一个模型本身。 它在您之间增加了一层 所以如果你只使用一个CLI, 你可能宁愿直接调用CLI. [ROADMAP.md 地图](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/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 : [克劳德代码](https://www.npmjs.com/package/@anthropic-ai/claude-code), (中文(简体) ), [代码](https://www.npmjs.com/package/@openai/codex), (中文(简体) ), [毕](https://www.npmjs.com/package/@earendil-works/pi-coding-agent),Muse(从来源安装, cursor CLI (通过脚本、 二进制安装) `agent`,不在登记簿上, [反重力CLI](https://antigravity.google/docs/cli/), (中文(简体) ), [双眼](https://www.npmjs.com/package/@dungle-scrubs/popeye),以及 [打开代码 CLI](https://www.npmjs.com/package/opencode-ai)。 。 。 .

## 许可证

麻省理工学院. 见 [自由主义](https://npmcn.com/package/%40dungle-scrubs/harness-cli-normalizer/LICENSE)。 。 。 .

## 常见问题

### @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 和提交记录判断。

