# @collabb/hammurabi 中文文档

规范地址：https://npmcn.com/package/%40collabb/hammurabi/

版本：0\.6\.0
npm 元数据更新时间：2026-10-18T19:26:46.927Z
中文译文更新时间：2026-11-10T11:01:44.852Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40collabb/hammurabi
原文对照：https://npmcn.com/package/%40collabb/hammurabi/?lang=original
项目主页：https://hammurabi.collabb.ai/
源码仓库：https://github.com/collabb-innovations/hammurabi

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

- 包体积（解压后）：476 kB，246 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：5 个
- 首次发布：2026-06-05T17:46:51.679Z
- 最新版本发布：2026-10-18T19:26:46.592Z
- 近 30 天下载量：3031（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 12 个）

## 中文简介

花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花 信任您的输出而不重读每个 diff .

## 安装

```sh
npm install @collabb/hammurabi
```

也可以使用：`pnpm add @collabb/hammurabi`、`yarn add @collabb/hammurabi`、`bun add @collabb/hammurabi`

## README

# 汉谟拉比

> 花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花 一个小的,有意见的框架 编写LLM评价 你将真正信任.

[![npm](https://img.shields.io/npm/v/@collabb/hammurabi.svg)](https://www.npmjs.com/package/@collabb/hammurabi)

**状态 :** α (v0. 3. 0) (中文(简体) ). 盘上装载器,CLI跑车,a **多供应商** 评委面板(Anthropic + OpenAI + Google + DeepSeek + Fireworks + 任意OpenAI相容主机) **在 spec 前题中配置**, (中文(简体) ), **确定性计分标准**, (中文(简体) ), **基线意识退出语义** (已知故障级), **导入分辨率飞行前**,基线回归探测,以及回波范围 `hammurabi-check` CI命令全部运出. 斯克马斯使用Zod v4.

## 为什么

团队在可以信任输出而不重新读取每个diff时,会更快地飞出. Hammurabi是连接组织:用于任何跑道(或下游工具,如: [纳克](https://npmcn.com/package/%40collabb/knack/))可以消耗.

## 安装

```sh
npm install @collabb/hammurabi
```

或直接运行 CLI 不安装:

```sh
npx @collabb/hammurabi hammurabi-run path/to/foo.spec.md
```

## 国 际

Hammurabi轮船用来判断捆绑物和用于非互动性的 提议 / 选择 / 锁流( 通过 npm bin 安装后可用) .

**`hammurabi-run`** - 一个捆:

```sh
hammurabi-run path/to/foo.spec.md \
  --aggregator min \
  --filter foo-001,foo-007 \
  --update-baseline
```

法官小组决定 `eval` 块(见下文); CLI 旗帜 超过它。 一个兄弟 `foo.baseline.report.json` 自动发现 回归检测( e)`--no-baseline` 跳过, `--update-baseline` 祝福一个 (见A/CN.9/WG.III/WP.96,第1段)。 写作 `foo.report.json` 财务报告和审定财务报表 `foo.report.md` 与 spec 并列(或 单位) `--out <dir>`) (中文(简体) ).

**`hammurabi-check`** ——目录下的每一捆(CI入门点):

```sh
hammurabi-check evals/
```

发现每个 `*.spec.md`并按预定的基线运行 合计为1 `check-report.json` + 合并退出代码.

退出代码(两个宾箱)都具有CI意义和 **基线认识** (自0.1.1起):

-   `0` ——无新故障(vs基线)和回归
-   `1` - 任何新的失败(在基线中通过固定,现在失败)或回归
-   `2` 无法运行( 错误的参数、 错误的捆绑、 跑道错误、 未解决的导入)

在承诺的基线地表上完全没有固定的 `known-fail (baselined)` 警告,不要破裂大门 一个诚实的基线,不是100%的绿色 仍然可以坐在CI。 基线d 现在通过表面的固定 `improvement` 提示通过 `--update-baseline`。 。 。 .

在打分前, 两箱 **每个动态导入** 捆绑使用 (功能目标模块+代码评价模块). 无法解答的道具出口 2 带有精确信息,指定标准或目标。 跳过 `--no-preflight`。 。 。 .

运行 `hammurabi-run --help` 编号 : `hammurabi-check --help` 为全旗列表。 A 类 滴入的 GitHub 动作模板位于 `templates/eval-gate.yml`。 。 。 .

**`hammurabi-propose` 编号 : `hammurabi-select` 编号 : `hammurabi-lock`** - 转动任务 源到内容隐藏的锁。 没有提示和模式呼叫。 打电话的人 提供决定草案作为JSON;hammurabi验证、正常化和散列. 从任务列表复选框中读取选择, 以及一个明确的选择文件 推翻每个决定的复选框。 锁是写给Stdout的,或者 `--out`。 。 。 . `--publish` 财务报告和审定财务报表 `--post` 这是唯一的写作, 而且两者都是选择进入.

```sh
hammurabi-propose --source github-issues:owner/repo#32 --in draft.json > proposal.json
hammurabi-select --proposal proposal.json --source text:./tasks.md > selection.json
hammurabi-lock --proposal proposal.json --selection selection.json > lock.json
hammurabi-lock --verify lock.json
```

`github-issues` 读取 `owner/repo#N` 与 `GITHUB_TOKEN` (可选的 API 基础 : `HAMMURABI_GITHUB_API`) (中文(简体) ). `text` 读取下调任务列表,或 `-` 为斯丁. 复选框区域坐到 a 下 `D1` 标题(`## D1 ...` 或者说 `**D1 ...**`) (中文(简体) ). `contentHash` 实值 `sha256:` 超过RFC 8785 Canonial JSON的锁,不包括 `contentHash`, (中文(简体) ), `lockedAt`,以及 `lockedBy`。 。 。 .

**`hammurabi-verify`** ——离线检查取出的问题LOCK. 没有网络和标志.

```sh
hammurabi-verify --issue-json issue.json --allowlist allowlist.json
```

`issue.json` 是问题机构加评论. `allowlist.json` 是GitHub 登录的 JSON 阵列. `lockedBy` 是最后一个 LOCK 注释 `user.login`。散列是 `sha256:` 超过问题机构的RFC 8785 Canonical JSON,并且必须与该评论相匹配. 印刷品 `{ok, reason, lockedBy, hash}` ,当锁有效时退出 0,当锁无效时退出 1.

提议/ 选择/ 锁定的退出代码 :

-   `0` 没事
-   `1` ——验证或验证失败(未决定决定,超选,提案不匹配,散列不匹配)
-   `2` 无法运行( 错误的参数、 缺少源、 证书或网络错误)

## 斜线命令

把它们复制到任何项目 `.claude/commands/`数字 :

```sh
cp node_modules/@collabb/hammurabi/commands/*.md .claude/commands/
```

-   `/hammurabi <path-to-spec.md>` - 4个步骤的作者流:通过QQA来精炼光谱 出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出
-   `/hammurabi-run <path-to-spec.md>` ——援引CLI,再以聊天方式总结报告(失败,回归,错误的定着,法官投票)

## 司马

手工类型, 磁盘上所有语言中性 :

| 艺术 | 格式 | TS 类型 |
| --- | --- | --- |
| 光谱 | `*.spec.md` (前题+正文) | `Spec` |
| 鲁布里克语Name | `*.rubric.json` | `Rubric` |
| 固定设备 | `*.fixtures.jsonl` | `FixtureSet` |
| 提议 | 贾森 | `Proposal` |
| 选择 | 贾森 | `Selection` |
| 锁定 | 贾森 | `Lock` |

报告是JSON: `Report` 类型.

```ts
import type { Spec, Rubric, FixtureSet, Report, Proposal, Selection, Lock } from "@collabb/hammurabi/schema";
import { run } from "@collabb/hammurabi/runner";
```

## 撰写指南

三个模式 总是咬 第一次捆绑的作者。 收养他们 在您撰写标题之前。 见 [`docs/authoring-guide.md`](https://npmcn.com/package/%40collabb/hammurabi/docs/authoring-guide.md) 为长式走过.

### 导入合同——不再重新编码

如果您的目标输出出符合计划、 JSON 光谱或函数的输出 签名, **您的评审员应当导入目标使用的相同定义**。 。 。 . 将密钥列表、类型形状或验证规则复制到评估者手中 保证目标第一次改变时漂移。 错误的常见形式 : (单位:千美元) `requiredKeys` 数组漂移出源代码同步 `*.schema.json`,则 门无声地腐烂了,而标题报告为不符合要求的输出为绿色.

### 镜像您的作品验证器库和配置

如果 eval 镜像 生产 验证器 (`ajv`, (中文(简体) ), `zod`, (中文(简体) ), `joi`,...) 针入 **同一个主要版本** 生产代码使用和应用 **相同的配置** (单位:千美元)`formats`, (中文(简体) ), `coerceTypes`, (中文(简体) ), `strict`(中文(简体) ). ajv 8 名评价员 ajv 6 生产代码不是同一门.

### 使用外部解析器的套件必须安装

导入的捆绑目录 `npm` 软件包必须包含 `package.json` 与宣布的道具。 依靠"母项目碰巧举起" 断开文件 `hammurabi-check evals/` 使用捆绑时的大小写 运行在 CI 工作空间或新检查中。 自0.1.1起,两个CLI机箱都在飞行前 每一次动态导入,在打分和发出指向 违法的标准或目标——根由的固定仍然是被宣布的dep.

## 这个 `eval` 块- 前题中的法官面板

如何严格地判断一个类别—— **小组的规模和推理** —— 说 生活在光谱的前题 `eval` 块,所以它是 版本控制 可审查而非暂时的CLI旗:

```yaml
---
name: trade-sizer
version: "1.0.0"
description: ...
target: { kind: http, url: https://... }
eval:
  riskTier: critical          # shorthand → a default cross-provider panel
  aggregator: min             # any single judge flagging a problem fails it
  generatorProvider: anthropic # warns if a judge shares this provider
  judges:                     # ...or spell the panel out explicitly
    - { provider: anthropic, model: claude-opus-4-8,   role: primary,    reasoning: high }
    - { provider: openai,    model: gpt-4o,            role: secondary,  reasoning: none }
    - { provider: google,    model: gemini-2.5-pro,    role: tiebreaker, reasoning: medium }
---
```

-   **`riskTier`** (单位:千美元)`low` | `medium` | `high` | `critical`) 扩展为默认值 通过面板 `RISK_TIER_PRESETS` 高级意味着更多的法官,更多的提供者, 更多推理,更保守的汇总。 以明白的方式克服其中任何一种 `judges` 编号 : `aggregator`。预设仅使用Anthropic/OpenAI/Google; **深网、烟花和 `openai_compatible` 选择进入** - 通过一个 明确 `judges` 输入.
-   **`reasoning`** (单位:千美元)`none` | `low` | `medium` | `high` qq 象征性预算) 映射到 每个提供者的机制: Anthropic 扩展思维, OpenAI `reasoning_effort`双子座思维预算 DeepSeek `deepseek-reasoner`。 。 。 .
-   **减少交叉提供者的偏见** 任何法官都不得分享产出 提供商(同一家庭模式对其本身的作风进行宽大评价)。 设定 `generatorProvider` 当法官与它相撞的时候,跑者将警告它.

决议优先性:CLI/`RunOptions` 覆盖 **\> 翻译:** `eval.judges` **\> 翻译:** `eval.riskTier` 预设 **\> 翻译:** 一个缺席的海库法官.

### 供应商

| 提供者 | 密钥环境 var | 基础 URL | 页:1 |
| --- | --- | --- | --- |
| `anthropic` | `ANTHROPIC_API_KEY` | `AI_GATEWAY_URL` 覆盖 | 原生结构输出+扩展思维. 缺席法官. |
| `openai` | `OPENAI_API_KEY` | `OPENAI_BASE_URL` 覆盖 | 严格 `json_schema` 模式; `reasoning_effort` 在o系列/gpt-5. |
| `google` | `GEMINI_API_KEY` (或 `GOOGLE_API_KEY`(中文(简体) ) | —— 说 | JSON MIME类型+思维预算. |
| `deepseek` | `DEEPSEEK_API_KEY` | `DEEPSEEK_BASE_URL` 覆盖 | 原生DeepSeek API(OpenAI有线格式). |
| `fireworks` | `FIREWORKS_API_KEY` | `https://api.fireworks.ai/inference/v1` (覆盖 : `FIREWORKS_BASE_URL`(中文(简体) ) | 一等烟花服务. 模型字符串传到线上 **逐字记录** (单位:千美元)`accounts/fireworks/models/...`) (中文(简体) ). |
| `openai_compatible` | 法官入口处 `api_key_env` | 法官入口处 `base_url` (必须) | 任意 OpenAI 兼容主机的逃出舱门(Together, vLLM, 一个网关,...). |

`fireworks` 只需要钥匙; `openai_compatible` 命名其终点 键入 var **法官的条目本身**,所以一个面板可以混合多个 主机 :

```yaml
eval:
  judges:
    - provider: fireworks
      model: accounts/fireworks/models/deepseek-v3p1
      role: primary
    - provider: openai_compatible
      model: kimi-k2-instruct
      base_url: https://llm.example.com/v1
      api_key_env: EXAMPLE_LLM_KEY
      role: secondary
```

`base_url`编号 :`api_key_env` 用于 `openai_compatible` 并被拒绝 每一个提供者(他们的终点都是在其中建造的). **缺少的密钥 Ev var 在任何固定执行前拒绝运行**,指定变量(`runner failed:` /出处2. 法官在呼叫时间出错(超时,529,分析) 被排除在总量之外 跑者警告过一次 `excluded from the aggregate`。两个提供者发送精确 在 DeepSeek- vi- Fireworks 上验证了请求形状: 不合理调用针 `reasoning_effort: "none"`, (中文(简体) ), `temperature: 0` 和 JSON 对象 模式; 思维调用省略温度/应答 格式并标出 JSON 形状 穿过电源.

设定您使用的提供者密钥 : `ANTHROPIC_API_KEY`, (中文(简体) ), `OPENAI_API_KEY`, (中文(简体) ), `GEMINI_API_KEY`, (中文(简体) ), `DEEPSEEK_API_KEY`, (中文(简体) ), `FIREWORKS_API_KEY`. Base-URL 覆盖 为: **每个提供者** 并且每个只调整自己的提供者的流量: `AI_GATEWAY_URL` (雅典语), `OPENAI_BASE_URL` (开放AI), `DEEPSEEK_BASE_URL` (深处), `FIREWORKS_BASE_URL` (烟花). 没有单个变量 通过一个网关向每个供应商传送.

> **折旧: `DEEPSEEK_*` (原始内容存档于2019-10-12). env-remap pattle.** 指点 `DEEPSEEK_BASE_URL` 在非本地的 OpenAI 兼容主机( 如烟花) 仍在工作——非理性法官派 `reasoning_effort: "none"` 财务报告和审定财务报表 stema- construction JSON-object 模式, 而本地的 DeepSeek 调用( 未设置基数) URL 或 网络 `https://api.deepseek.com`保持它们的形状不变。 但它重现 _每个_ 穿过环境 隐蔽地判断 光谱 偏好 `provider: fireworks` (或 `provider: openai_compatible` 页:1 其它主机: 相同的电线形状, 在它所在的光谱前题中声明 版本控制和可审查。 关闭 [16号](https://github.com/collabb-innovations/hammurabi/issues/16)。 。 。 .

## 决定性( 计分码) 标准

保留法官小组进行判决;让代码检查哪些代码可以检查 准确(召回、存在、格式、时间)。 附有一项标准 `code` 评价员通过导入一个函数来打分——没有法官呼叫,完美 可复制:

```json
{
  "id": "semantic-recall",
  "name": "Semantic recall",
  "description": "Fraction of must-include elements present in the top-N.",
  "weight": 0.35,
  "scale": { "kind": "ordinal", "min": 0, "max": 1 },
  "evaluator": { "kind": "code", "module": "./evaluators.ts", "export": "semanticRecall" }
}
```

导出收到 `{ input, expected, output, fixture }` 返回数字 或者说 `{ score, reasoning }` 在标准的比例。 LLM 和代码标准组合 在一个标题中自由使用;一个没有LLM标准的标题使得零API呼叫.

## 界定某些固定装置的标准—— `appliesTo`

一些目标释放出多个形状:成功响应和错误 反应,或者一个CLI背后的几个行动. 写给其中之一的标准 对其他人没什么好说的 也没什么好说的 以传道而行. 要求法官弃权,这样做不合理——法官 偶尔得分0 而他们自己的推理说规则要求 通过。 不要问,标准等级输出 它从来没有看到, 持续低调.

`appliesTo` 把它写在标题上 适用标准列名标签 仅用于至少装有其中之一的固定装置:

```json
{
  "id": "partition-integrity",
  "name": "Every parsed seed lands in exactly one bucket",
  "weight": 0.2,
  "scale": { "kind": "ordinal", "min": 0, "max": 1 },
  "appliesTo": ["collect"]
}
```

```jsonl
{"id": "parses-a-listing",  "input": {...}, "tags": ["parse"]}
{"id": "collects-a-page",   "input": {...}, "tags": ["collect"]}
```

奥米 `appliesTo` 并且该标准适用于每个固定点——默认,以及 每一个现有的标题做什么.

在评分前,放弃不适用的标准: **没有法官的电话**, (中文(简体) ), 和固定的加权分数 重新正常化的标准做 应用。 重归正常是重点 整体重量为1.0 标题,所以没有它,一个固定的,其中适用6个标准中的3个被除以 重量从来没有在玩, 一个完美的答案盖以0.5.

有两件事是故意的:

-   **没有遗漏.** 法官拒绝得分是一个故障——不包括在 以及一个标准,没有法官评分 错误的固定。 那个 高音对"不能评价"是正确的,对"不适用"是错误的. 不适用的标准列于每个表格中 `FixtureResult.inapplicable` 财务报告和审定财务报表 因此,坐以待毙是显而易见的,而不仅仅是缺席.
-   **无法代替拆分.** 如果一个RUBRIC的标准 被违反 脱节团体与脱节团体的关系,即通常两种行为 两个包. `appliesTo` 这是真正跨越一个标准.

一个 `appliesTo` 标记捆绑载中任何固定都是负载时间错误—— a 在运行停留时, type 将会在任何地方禁用标准 绿色,读起来就像覆盖.

## 运行者

```ts
import { run } from "@collabb/hammurabi";

const report = await run({
  spec,      // panel comes from spec.frontmatter.eval unless overridden here
  rubric,
  fixtures,
  judges: [{ provider: "anthropic", model: "claude-haiku-4-5" }], // optional override
  aggregator: "min",
  baseline: previousReport,
});
```

### 法官小组

跑步者判断每个固定器的输出 **可配置的LLMS面板**,通常写在 spec's [`eval` 块](https://npmcn.com/package/%40collabb/hammurabi/#readme-the-eval-block--judge-panel-in-the-spec-frontmatter)这些 `RunOptions` 控制它进行一次性运行。 默认(无 eval 块,无 覆盖)是单一的 Haiku 4.5 法官.

| 选项 | 默认 | 页:1 |
| --- | --- | --- |
| `judges` | 从 `eval` 块, 否则 `[{ provider: "anthropic", model: "claude-haiku-4-5" }]` | 法官配置阵列`provider`, (中文(简体) ), `model`, (中文(简体) ), `role`, (中文(简体) ), `reasoning`, (中文(简体) ), `weight`) (中文(简体) ). 小组的呼叫是平行进行的. |
| `aggregator` | `"mean"` | `"mean" | "median" | "min" | "max"` 或习惯 `(scores: number[]) => number`应使用对风险敏感的呼叫者 `"min"`。 。 。 . |
| `regressionThreshold` | `0.05` | 每平方位加权分数三角洲,下方标出回归与基线. |
| `execute` | —— 说 | 所需经费 `target.kind === "free-form"`自定义返回给定输入输出的执行器. |

**费用说明**:面板大小乘以线性成本. 由2名法官组成的分庭费用为2×1名法官。 长相间隔时间大致不变(小组电话通过 `Promise.all`) (中文(简体) ).

### 审计线索

每个 `CriterionScore` 报告中保留了小组的全部表决票数:

```ts
{
  criterionId: "is-uppercase",
  score: 0.5,                     // aggregated
  reasoning: "[claude-haiku-4-5] ...\n\n[claude-sonnet-4-6] ...",
  judgeVotes: [
    { model: "claude-haiku-4-5", score: 1, reasoning: "..." },
    { model: "claude-sonnet-4-6", score: 0, reasoning: "..." },
  ],
}
```

如果法官错误或省略了某项标准,其投票结果仍为: `judgeVotes` 带有 `error` 字段——但它是 **不包括在总数内**,所以一个 短暂的失败永远不能捏造出低分和虚假的回归. A 类 标准 _没有_ 法官可以给错误的固定标记(qq),永远不要 失败( QQ) , 并且仍然行走一个非零 CI 出口, 所以它不能默默通过 .

## 目标种类

`Spec.frontmatter.target` 是标记的联盟 :

| `kind` | 所需字段 | 跑者如何执行 |
| --- | --- | --- |
| `cli` | `command` | Shell-exec;固定输入被管道接通为Stdin为JSON;stdout解析为JSON(倒回纯文本). |
| `function` | `module`, (中文(简体) ), `export` | 动态 `import(module)`,电话 `module[export](input)`。模块路径应从调用者的解析上导入. |
| `http` | `url`选项 `method` (默认) `POST`(中文(简体) ) | `fetch` 与 `application/json` 躯体. |
| `free-form` | `description` | 电话 `options.execute(input)`时 `kind` 实值 `free-form`。 。 。 . |

## 吸烟试验

```sh
npm install
npm run smoke
```

要求数 `ANTHROPIC_API_KEY` (可选) `AI_GATEWAY_URL` cloudflare AI Gateway 路由).

小组吸烟:

```sh
HAMMURABI_SMOKE_JUDGES="claude-haiku-4-5,claude-sonnet-4-6" HAMMURABI_SMOKE_AGGREGATOR=min npm run smoke
```

预期费用:单名法官运行为0.02美元,包括Sonnet在内的2名法官小组运行为0.10美元.

## 版式

```
hammurabi/
├── src/
│   ├── schema/       # Spec, Rubric, Fixture, Report types
│   ├── loaders/      # On-disk parsers (*.spec.md, *.rubric.json, *.fixtures.jsonl)
│   ├── runner/       # Execute fixtures + judge panel + score
│   ├── cli/          # hammurabi-run CLI + Report → markdown renderer
│   └── index.ts
├── commands/         # /hammurabi, /hammurabi-run
├── examples/smoke/   # End-to-end smoke (inline + disk variants)
├── tests/            # Unit tests (tsx --test)
└── plans/            # Approved implementation plans
```

## 常见问题

### @collabb/hammurabi 是什么？

花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花相花 信任您的输出而不重读每个 diff \.

### 如何安装 @collabb/hammurabi？

在项目目录运行 npm install @collabb/hammurabi，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 hammurabi-run、hammurabi-lock、hammurabi-check、hammurabi-select、hammurabi-verify、hammurabi-propose，可以用 npx hammurabi-run 直接运行。

### @collabb/hammurabi 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @collabb/hammurabi 支持 ESM 还是 CommonJS？

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

### @collabb/hammurabi 需要什么版本的 Node\.js？

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

### @collabb/hammurabi 可以商用吗？

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

### @collabb/hammurabi 的下载量有多少？

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

### @collabb/hammurabi 还在维护吗？

最新版本 0\.6\.0 发布于 2026/10/19（22 天前）；至今共发布 12 个版本，其中过去 12 个月发布了 12 个；首次发布于 2026/06/06。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

