# @adlc/context-handoff 中文文档

规范地址：https://npmcn.com/package/%40adlc/context-handoff/

版本：1\.12\.0
npm 元数据更新时间：2026-10-10T03:05:28.921Z
中文译文更新时间：2026-11-06T00:02:33.196Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40adlc/context-handoff
原文对照：https://npmcn.com/package/%40adlc/context-handoff/?lang=original
项目主页：https://github.com/voodootikigod/adlc/tree/main/packages/context-handoff#readme
源码仓库：https://github.com/voodootikigod/adlc

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

- 包体积（解压后）：297 kB，34 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=18
- 运行依赖：3 个
- 首次发布：2026-08-08T13:29:16.988Z
- 最新版本发布：2026-10-10T03:05:28.549Z
- 近 30 天下载量：8564（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 6 个）

## 中文简介

上下文-rot接发——绝对波段信号,会话-地平线拒绝(D1-D3),操作员CLI用于写出/取回/通过/修理/解锁(F3连续性).

## 安装

```sh
npm install @adlc/context-handoff
```

也可以使用：`pnpm add @adlc/context-handoff`、`yarn add @adlc/context-handoff`、`bun add @adlc/context-handoff`

## README

# @adlc/context-handoff (英语)

**ADLC阶段:P4连续性(F3)** 绝对上下文带,会话-直线 变异拒绝 (D1-D3) 和操作员 CLI 书写/恢复/通过/修理/解锁/继续。 装订设计 : [`docs/specs/context-rot-handoff.md`](https://npmcn.com/package/docs/specs/context-rot-handoff.md)。 。 。 .

> **1.1.1.1 以来的状况** (单位:千美元)[966号](https://github.com/voodootikigod/adlc/issues/966): 默认情况下, 不评估会话- terminal 拒绝( D1- D3) 。 Claude 代码和 Codex 插件没有钩入; pi 和 OpenCode 只能用 `ADLC_CONTEXT_ROT_HANDOFF_ENABLED=1`。波段阈值仍然被 `build-gate`,则 `adlc handoff` CLI不受影响.

```sh
adlc handoff write --session <id> [--ticket <id>] [--write] [--json]
adlc handoff resume --session <consumer> --deny-session <denier> [--write]
adlc handoff bypass --session <id> [--unbound-reason <text>] [--write]
adlc handoff repair --session <id> --ticket <id> --content-hash <h> [--write]
adlc handoff unlock --session <id> --pid <n> --started-at <iso> --host <h> --nonce <n> [--write]
adlc handoff continue --deny-session <denier> [--session <new>] [--capture-from <transcript>] [--write]
adlc handoff supervise [--dir .adlc] -- <command> [args...]
```

变异 `--write` 需求 `ADLC_MANIFEST_KEY` (从来没有沉默的成功).

`--dir` 命名分类账目录及其最后路径段 `.adlc`数字 : 文物和明显证据共享这棵树,任何其他名称都被拒绝 而不是把它们分开. `repair` 约束已经存在且 仍然开放——它从未产生过. `unlock` 只能回收这个的锁 主机,所以来自另一个机器的死相 PID 无法驱赶一个活的会话 . A 类 `bypass` 在stdout上给予的补助金范围为调用适配器的引用 持久证明是 `context-handoff-bypass` 明显条目 空 `--unbound-reason` 被拒绝,而不是贬低为受约束的赠款.

`write`, (中文(简体) ), `resume`,以及 `repair` 全部读取 - 修改 - 写入一个否定标记, 所以每个 举行这次会议 `.adlc/handoffs/<id>.lock` (O EXCL,退出时发布)和 当此主机的活会话持有时, 退出 2 . `write` 重置标记 写到最后.. `ensureDenyMarker` 是天能的,所以没有这个 刷新了的散列物会在以后的每一次恢复时会楔出——并拒绝拆卸或取消 求你使一个否认者复活。 当显示附件失败时, 运行文件 变异被卷回 所以没有束缚存活 没有证明.

## 续设

`continue` 是从拒绝交割处获得的许可: 否认会话, 将最终会话绑定在捕捉器上, 并消耗否认的会话 继任者。 否认者从不否认 一个新的会议。 它的构成捕捉 写 —— 恢复在单跑下 denier的锁,记录 `context-handoff-continue`,然后卷回所有文件 当证据附件失败时触动.

俘虏尸体的住址 `.adlc/handoffs/content/<session_id>.md` 已经 仅由主机优先代码编写; `isProtectedHandoffPath` 拒绝代理 写到 `.adlc/handoffs/content/**`,以及 `continue` 加入变异 子命令代理的外壳不得在否定下运行 . `content_hash` 为sha256 横过被划入的捕捉体( LF 线末端, 没有后行的白空间), 因此从磁盘中重新找到它 抓取一个编辑过的、有效的签名 无法.

与2号出口相抵而无所消耗:一个无所容留的否认者 `repair` (第一) 被毁灭的否认、失踪或腐败 `--capture-from` 来源, 一个已经持有恢复自动的后继代号,一个不能安全的代号 引用在即时, 或有效票 不同意拒绝的约束. 后继 id 来源于 `--session` 或被命令所铸造 代理输入 .

A 类 `--capture-from` 记录比 `HANDOFF_MAX_AGE_HOURS` 贡献否 模型叙事:简介仍为"活船",其中有遗漏. 年龄是 从记录本上读取最新时间戳, 倒回文件 mtime 只有在没有输入时.

**约束是强制性的,而不是咨询性的.** 抓获后的记录携带 `content_kind: 'capture'` 在最后和否定标记上。 每一次执行 适配器在每次变异检查时从磁盘上重新切出捕捉到的sha256,所以 编辑、超大小或删除的抓取否认 `capture_tamper:<session>` 理由——包括已经穷尽否认的继任者的理由。 这很平淡 sha256,所以一个没有钥匙的钩子 执行精确的 钥匙的CLI做什么。 记录 写在本字段存在之前,保留其以前的语义不受影响: 大麻是永远无法重新找到的, 所以没有什么可检查的. `repair` 清除 `content_kind` 当它重置一席之地的时候,那是一条经文记载的出路 捕获.

**读取回取.** 使用 `readVerifiedCapture(root, sessionId, expectedHash)`。 。 。 . 它只当磁盘上的字节仍然散到值时返回正文 否认记录,恢复原貌; 丢失、超大和更改所有 没有尸体就关门了 督导员和会话启动员必须离开 而不是读文件 授权, 绝不能让文件仍然匹配 .

A 类 **无键** 注射器(一个拉带钩子,它擦去它面前的显式钥匙) 从此函数中获取内容绑定, 仅此而已: 无法验证恢复- 自动的 HMAC, 所以它必须浮出一个捕捉器作为咨询 上下文并说,永远不要证明阅读会话是授权的 继续。 授权是在有钥匙的情况下决定的——主管,以及 变异的门,在每一个变异上都重新分出同样的花序.

```js
import { readVerifiedCapture } from '@adlc/context-handoff/lib/capture.mjs';

const got = readVerifiedCapture(root, denySessionId, denyRecord.content_hash);
if (!got.ok) return; // absent, oversize, or edited — inject nothing
```

**抓取内容已编辑 .** 全权证书被剥去,作为组织工作的一部分 简言之,并不是一个召唤者记得的一步——俘虏是持续的 贴入继任者的提示 在一个路径上。 形状反映了发现 分类账(`packages/core/lib/ledger.mjs`)),拒绝做出结论 包含一个; `test/capture-redact.test.mjs` 双人双人双. 删除的跨度会留下一个明确的 `[adlc: redacted <kind>]` 所以读者知道. 纯hex跑步可以任意延长 萨瓦256 `content_hash` 后继者证实反对。 最好成绩,不是证据 秘密自由的爱.

**一个接班人的身份,一个授权.** 恢复自动创建于 `O_EXCL`因此,两个不同的续作否认 命名同一个继任者 无法相信他们授权了它—— 否认的锁不能序列化 因为他们有不同的锁。 失败者通过2号出口和 赢家的赠款没有受到影响.

**退后从不征服陌生人.** 每一回都是比对和取出 此运行所写的字节 : 从此之后, 另一个作者所拍摄的文物被留下 在错误中单独命名,因为触发回滚的失败是 经常是那个作家.

**捕捉内容有栅栏.** 随身携带的每件东西都是可以攻击的 — 一个分支名称, 文件名 `git status`,一个门票标题,前一个 会话本身的单词——所以每一节都用 `<<<UNTRUSTED-CAPTURE-DATA` 编号 : `END-UNTRUSTED>>>` 标记,这些划界者从内容中剥去 栅栏不能从里面关闭. `bootstrap_prompt` 重复, 在和 在身体之后,栅栏内容是记录数据而不是指示.

## 监督

`supervise` 是零触摸路径:它包起一个绑带命令,当它 会话点击一次交接 拒绝它完成整个回收 操作员会 以其他方式进行.

```sh
ADLC_MANIFEST_KEY=$KEY adlc handoff supervise -- claude --model opus
```

它将第一课的ID, 民意测验该课的否定标记(~2 s; `fs.watch` 不可信),等待笔录停止生长(稳定5分;或 因此,交割摘要被完整地抓取,运行 `handoff continue --write`,终止被替换的孩子(SIGTERM,然后 SIGKILLL 10 s)后,并用接班人ID和 靴子夹快。 后继身份来自 `continue`从来没有从包装.

**钥匙留给主管.** `ADLC_MANIFEST_KEY` 需要在前面 并且只达到连续的一步; `superviseChildEnv` 剥去它,连同 `ADLC_ADMIN_KEY` ——从每个被骗的孩子.

**合同项目24.** 每个产卵也都会下降 `CLAUDECODE`, (中文(简体) ), `CLAUDE_CODE_CHILD_SESSION`, (中文(简体) ), `CLAUDE_CODE_SESSION_ID` 财务报告和审定财务报表 `CLAUDE_CODE_ENTRYPOINT`A级 `claude` 继承它们的过程将自己视为 一个被窝住的小孩 默默地停止了笔录的写作 没有错误,没有警告, 只是一个没有线索的续作 每个产卵都施用洗涤剂,不是 一次开始.

**把会话交出来.** 一个无所不包的否认, 一个腐败的记录,一个 无法信任的有效载荷,或不再与其匹配的捕获 `content_hash` 全部停止循环 出口2,一个警告,和 可复制 `handoff continue` 单行 孩子们在逃 没有任何东西被消耗——降解是操作者的决定,而杀戮 他们的届会首先会夺走他们的生命.

**失败的操纵者就是失败的主管.** 包裹是脚本 等待,所以它从来没有报告它自己成功 的会话失败: 第3出道 当受监管的命令退出非零或被杀死时,当它能够退出时,退出4 完全没有开始。 带子本身的密码 载在消息和 JSON 有效载荷而不是通过, 因为1和2已经意味着什么 关于监管本身。 一个干净的出入口和一个操作员的Ctrl-C都是0.

**报告一个崩溃的中间体, 没有失败 .** 写其 否认,然后自行死亡——非零,或主管从未发出的信号 - 仍不交接:否认者已经说过正在更换,而且 主管不管怎样都会在普通的路径上终止,所以失败运行会 失败了所有成功的交接。 它被命名在 Stderr 上,并携带在 JSON 作为 `abnormalExits`因为坠毁的会话所写的交接稿 与被问及的情况不同.

**缺少记录不是继续失败.** 叙述是可选的 ——确定性简报仍然带有票,证据和状态——如此 在笔录出现之前死亡的会话在无记录的情况下继续进行 比退化。 都大声报道了,因为缺少记录 24号设备是外部环境的故障.

**在注射点重新验证俘获.** 已经变了的门 在每个评价上重新划出散列,但可以保护突变 触摸工具前, 由模型读取即时, 所以主管呼叫 `readVerifiedCapture` 在接班人诞生之前.

```js
import { WARN_PCT, HANDOFF_PCT, HARD_PCT } from '@adlc/context-handoff/lib/thresholds.mjs';
import { evaluateBands } from '@adlc/context-handoff/lib/bands.mjs';
import { evaluateMutationGate } from '@adlc/context-handoff/lib/mutation-gate.mjs';
```

```sh
node --test packages/context-handoff/test/*.test.mjs
```

## 拒绝存储期望

`loadDenyRecords` 处理缺失 `denies/` 仅在 `.adlc/.deny-store` 存在( JSON) `{schema,sessions}` 撰写人: `ensureDenyMarker` 在经过验证的标记后;会话\[\]使选择性的标记删除失败关闭). 哨兵是一个兄弟 `handoffs/` 因此删除 `handoffs/` 一个人 无法明确预期; 完整的按密度分类账仍然被推迟. 单凭车票店的存在不会被否认。 遗产 `.adlc/handoffs/.deny-store` 按预期处理,并自愈于新的 路径. `evaluateMarkerOnReentry` 已经 **没有** 使用全局监视器 每届会议 `marker_vanished` - 呼叫线 `denyEverWritten`。非约束运算符绕行可能清除 `D0:deny_store_unavailable` 财务报告和审定财务报表 `D3:invalid_record`。 。 。 .

咨询`nagSuppression`)当剩余至硬度低于 `MIN_REMAINING_TO_HARD` (接近硬度/交接区) 所以否认/交接拥有 信号; 绝不影响突变否认.

## 常见问题

### @adlc/context-handoff 是什么？

上下文-rot接发——绝对波段信号,会话-地平线拒绝\(D1-D3\),操作员CLI用于写出/取回/通过/修理/解锁\(F3连续性\)\.

### 如何安装 @adlc/context-handoff？

在项目目录运行 npm install @adlc/context-handoff，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 handoff，可以用 npx handoff 直接运行。

### @adlc/context-handoff 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/adlc\_\_context-handoff 是否存在。

### @adlc/context-handoff 支持 ESM 还是 CommonJS？

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

### @adlc/context-handoff 需要什么版本的 Node\.js？

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

### @adlc/context-handoff 可以商用吗？

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

### @adlc/context-handoff 的下载量有多少？

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

### @adlc/context-handoff 还在维护吗？

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

