🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

哈希密封授权 Hyperionjust/dsh-tool-underseal

DeepSeek Harnessv0.1.4
Hyperionjust81 天前有提交已提供中文文档扫描:含敏感能力需联网

为 AI 代理间委托签发可验证的密封授权文件

31.7/100
综合分
2
GitHub 星标
96
npm 周下载
—/5
用户评分

数据截至 2026/8/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-tool-underseal
npm 源 · dsh-tool-underseal 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · security
装得上吗
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 81 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-tool-underseal @ 0.1.4
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/10 15:48:14

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 5 处,展示前 5 条)
  • 读取本地文件
    lib/index.js:103
    readFileBytes: (path) => readFileSync(path),
  • 读取本地文件
    lib/index.js:104
    exists: (path) => existsSync(path),
  • 读取本地文件
    lib/guard.js:46
    const stats = statSync(path);
  • 读取本地文件
    lib/guard.js:49
    readdir: (path) => readdirSync(path),
  • 读取本地文件
    lib/guard.js:50
    readFile: (path) => readFileSync(path, 'utf8'),
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

⚠ 该插件运行需访问外部网络 / 远程 API,部署在国内无外网环境时可能无法正常使用。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-subprocess@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 签发可验证密封授权
  • 代理间委托授权
V0.1.12026-08-14
· dsh-tool-underseal v0.1.1 为 DeepSeek Harness 提供哈希密封、可第三方审计的智能体委派。 · 中文 0.1.1 补强了文档与可信度: · README 新增「实战记录」:原版 Codex 时代三天生产数据(输入缓存命中率 99.164%、输入/输出 173:1)作为设计动机; · 新增中文 README 并与英文互链;补卸载说明;顶部挂 CI / npm / license 徽章; · 修复 0.1.0 里 repository / homepage / bugs 的占位符链接; · 新增 CI(严格编译 + guard/sentinel 93 个断言)与 BENCHMARK.md 对照实验模板; · 让 guard 测试跨平台,CI 在 Linux 上全绿。 dsh plugin --profile add dsh-tool-underseal · English 0.1.1 补强文档与可信度: · README 新增「实战记录」一节(289.5M token 上输入缓存命中率 99.164%;输入/输出 173:1)作为设计动机; · 新增中文 README 并互链;补卸载说明;挂 CI / npm / license 徽章; · 修复 0.1.0 里 repository/homepage/bugs 的占位符 URL; · 新增 CI(严格构建 + 93 个 guard/sentinel 断言)与 BENCHMARK.md 实验模板; · 让 guard 测试套件跨平台,CI 在 Linux 上全绿。 dsh plugin --profile add dsh-tool-underseal · npm: · 源码:
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-tool-underseal CI npm license 一句话定位: 聊天是运输,不是授权。授权 = 哈希密封的 assignment 文件;证据 = 只追加、任何第三方可重算;所有边界都 fail-closed——密封工具、worker 签到锁、字节级供应链哨兵,一条 dsh plugin add dsh-tool-underseal 全部到手。 已在 DSH 0.1.0-rc.5 实测 —— 运行时挂载冒烟测试通过:dsh plugin add + dsh --dump-config 挂载双层(underseal 与 underseal-guard),完整仪式链(doctor → seal → start → event → audit → retire)在真实 Git 仓库中经 vendored 适配器端到端跑通。两条实战笔记:dsh plugin add 接含空格的本地路径时要用字面双引号包裹(dsh plugin --profile p add '"D:\项目路径"',CLI 经 shell 拼 pnpm 参数不加引号);seal 之后、worker 开始之前必须先提交 lead plane(.underseal/、.underseal-runs/),否则规范性范围审计会对未提交的控制面文件 fail-closed(见随包 skill)。
展开完整文档(README 剩余 1 节)
dsh-tool-underseal

CI
npm
license

一句话定位: 聊天是运输,不是授权。授权 = 哈希密封的 assignment 文件;证据 = 只追加、任何第三方可重算;所有边界都 fail-closed——密封工具、worker 签到锁、字节级供应链哨兵,一条 dsh plugin add dsh-tool-underseal 全部到手。

已在 DSH 0.1.0-rc.5 实测 —— 运行时挂载冒烟测试通过:dsh plugin add + dsh --dump-config 挂载双层(underseal 与 underseal-guard),完整仪式链(doctor → seal → start → event → audit → retire)在真实 Git 仓库中经 vendored 适配器端到端跑通。两条实战笔记:dsh plugin add 接含空格的本地路径时要用字面双引号包裹(dsh plugin --profile p add '"D:\项目路径"',CLI 经 shell 拼 pnpm 参数不加引号);seal 之后、worker 开始之前必须先提交 lead plane(.underseal/、.underseal-runs/),否则规范性范围审计会对未提交的控制面文件 fail-closed(见随包 skill)。

面向 DeepSeek Harness 的类型化模型工具,包装冻结的、经审阅的 underseal 适配器。

Underseal 是一个哈希密封的文件授权协议,用于在 AI agent 之间委托有边界的工作。它冻结的 Python 验证器是唯一权威;本包只是进程外壳——从不重新实现验证逻辑。每个工具经 ctx.subprocess seam 启动 vendored 适配器,要求适配器输出规范的 UNDERSEAL_ADAPTER_ 成功标记,失败则抛出适配器的 E_ 诊断码。

本包还随附一个 DSH skill(skills/underseal-delegation/SKILL.md),用 DSH 语义(subagent / subagent_fork / workflow / goal)记录整个委托工作流,参考文件位于 skills/underseal-delegation/references/。

实战记录:仪式在生产中的形状

原版 underseal 工作流(Codex 任 lead、DeepSeek 任 worker)在 2026 年 8 月连续三天的生产运行留下了 OpenAI 侧计量,值得作为设计信号一读——但有两点保留:它早于本 DSH 插件;且 Codex 自身上下文与 underseal 混在一起,无法干净地按部分归因。

| 指标(三天,加权) | 数值 |
| 输入缓存命中率 | 99.164% |
| 总输入 | 289,510,152 tokens |
| 总输出 | 1,669,568 tokens |
| 输入/输出比 | ≈ 173:1 |
| 按 0.1× 缓存读取折算的有效输入成本 | ≈ 31.1M tokens(约省 89%) |

两读:

1. 99% 缓存命中率是值得保留的性质。 密封 assignment、receipt、dispatch 绑定与仪式规则都是稳定、被哈希约束的文本,长提示前缀几乎完全命中缓存。
协议的稳定性即缓存友好性。
2. 173:1 是"仪式活在聊天里"的税。 同一个约 100K token 的前缀被重复读取数千次;缓存让它便宜,却没有让它变轻——速率限制、延迟与暴露的提示面都在为它买单。

本插件就是修正:权威住在文件里,不住在提示词里。稳态回合只携带 8 个工具 schema(约 1–2K tokens)加上有界的工具结果({marker, payload, exitCode, stdout, stderr});assignment 只被必须服从它的 worker 精确读一次,证据永不重新进入上下文。按任务归一化(同任务密封 vs 不密封)的基准见 BENCHMARK.md——跑一遍,填一行真实的 Δ。

实测于 DSH 0.1.0-rc.5、deepseek-v4-flash:密封开销是*每个任务恒定的 ~10.4K 未缓存 token,不是按比例的税(墙钟另加数十秒:微型任务 +10s、真实任务 +54s)——微型写文件任务里它占总输入的 42%;真实编码任务(Python 模块 + 16 个测试)里降到 14%,且任务越大占比越低。完整表格与注意事项见 BENCHMARK.md。

基准:密封到底花多少

在 DSH 0.1.0-rc.5、deepseek-v4-flash 上端到端实测,同一任务跑两遍——不密封(A)vs 完整密封仪式(B):

| 任务(A → B) | 未缓存 Δ | 墙钟 Δ | 占总输入比例 |
| 微型:写一个文件 | +10,420 token | +10.2s | 41.7% |
| 真实:Python 模块 + 16 个测试 | +10,282 token | +54.3s | 13.8% |

密封是每个任务恒定的 ~10.4K 未缓存 token,不是按比例的税。 任务越大, token 账单几乎不动(+10,420 → +10,282),于是它占总输入的比例从微型任务的 42% 降到真实任务的 14%,且继续趋近于零。(墙钟略涨,因为仪式多出的几次模型往返耗时随思考量走。)完整表格、方法与注意事项见 BENCHMARK.md。

状态:出树 bundle

本目录是一个出树插件包,同时是可安装的 DSH bundle:package.json 声明 dsh.bundle = { patch: "./cordis.patch.yml" },因此 dsh plugin add 会自动激活它的层。用普通 tsc -p . 即可编译(见 tsconfig.json),尚未注册进 monorepo 的 tsconfig.host.json / knip.json / 根 workspaces。见并入 monorepo。

安装

三种官方形态(发布指南):

1. npm(首选):预构建的 lib/ 随发布包分发
dsh plugin --profile add dsh-tool-underseal

2. Git 直装:pnpm 在拉取后会运行本包的 prepare(tsc -p .);首次 add 会失败,直到你在 profile 的 pnpm-workspace.yaml 里授权构建(照抄 pnpm 打印的确切键): allowBuilds: dsh-tool-underseal: true 然后重新执行,建议锁定 commit:
dsh plugin --profile add github:you/dsh-tool-underseal#

3. Tarball:完全不需要构建授权
pnpm pack
dsh plugin --profile add ./dsh-tool-underseal-0.1.0.tgz

不开机验证层,然后开机:

dsh --profile --dump-config # 应看到 "# == dsh-tool-underseal" 层
dsh --profile

卸载:dsh plugin --profile remove dsh-tool-underseal 会同时移除依赖与它的层。

请如实看待 allowBuilds:它意味着允许在安装期、在 agent 沙箱之外执行本包的代码。不想授予该权限时,请优先用 npm 或 tarball 形态。

服务 API

本包内含两个插件:

- 插件名:tool-underseal
- inject:['tools', 'subprocess'] —— 只有当工具注册表(ctx.tools)与子进程提供方(ctx.subprocess)都存在时插件才加载。
- 贡献:在 ctx.tools 上注册八个模型可用的工具。

- 插件名:underseal-guard(子路径 dsh-tool-underseal/guard)
- inject:['tools']
- 贡献:在 ctx.tools 上注册一个单调执行守卫——worker 签到锁(见 Worker 签到锁(guard))。

配置

tool-underseal:

| 字段 | 类型 | 默认值 | 含义 |
| adapterPath | string | vendored python/underseal_adapter.py(绝对路径,加载时解析) | 适配器脚本;当 pythonPath 为空时改为可执行文件名或绝对路径。 |
| pythonPath | string | python(Windows)/ python3(POSIX) | .py 适配器脚本的解释器前缀。空字符串表示把 adapterPath 直接当作可执行文件启动。 |
| cwd | string | process.cwd() | 子进程工作目录。适配器靠 --workspace-root 解析工作区,此配置只影响 PATH 相对的工具。 |
| graceMs | number | 30000 | 子进程终止升级的宽限时间(毫秒)。 |
| outputMaxBytes | number | 65536 | 每个输出流的内存上限,超出保留尾部。 |
| spillMaxBytes | number | 4194304 | 每个输出流的整流落盘上限。 |

underseal-guard:

| 字段 | 类型 | 默认值 | 含义 |
| blockedTools | string[] | ['write', 'edit', 'pwsh', 'bash'] | 缺失 READY 证据时被拒绝变更的工具名列表。 |
| cacheTtlMs | number | 2000 | 每个仓库的判定缓存寿命(毫秒);过期后重读那几个很小的 underseal 状态文件。 |

默认值即自包含:经审阅的适配器 vendored 在包内,所以裸 dsh plugin add 只需要宿主上有 Python 解释器。想改用独立安装的控制台脚本,覆盖 pythonPath: '' + adapterPath: underseal-adapter 即可。

Vendored 验证器

python/ 携带的是经审阅的确切字节,不是会移动的分支:

- 上游:https://github.com/Hyperionjust/underseal
- 审阅的上游 commit:18f85a6b3bc89a8b3325a9bd665ee51a8ab3d225
- underseal.py 的字节与 python/underseal.pin.json 一致(SHA-256 130c86e0…);python/.gitattributes 强制 LF,杜绝 checkout 时的 CRLF 改写漂移 pin 字节。
- Apache-2.0:LICENSE 与 NOTICE 随包分发。

每次更新 vendored 验证器,都要当作一次新的供应链审查(skills/underseal-delegation/references/maintenance.md)。

供应链哨兵

插件在 apply() 内、注册任何工具之前运行三道字节级防伪检查,被篡改的包无法静默激活:

- E1 —— vendored 验证器字节。 python/underseal.py 的 SHA-256 必须等于 python/underseal.pin.json 中的 pin;python/underseal_adapter.py 必须存在。任何不匹配,插件记录 error 并不注册任何东西(宁可整包静默,也不运行漂移过的验证器)。
- E2 —— skill 正文 pin。 对 skills/underseal-delegation/SKILL.md 正文的每一个字节(frontmatter 结尾 --- 行之后的范围)做哈希,与 frontmatter 中 metadata.pin 值比对。漂移记录 warn 但仍加载 skill——skill 是指导而非权威,所以 E2 永不阻止工具注册。
- E3 —— bundle 补丁字节。 cordis.patch.yml 的 SHA-256 必须等于 cordis.pin.json 中的 pin。不匹配记录 error 且不注册任何东西,防止被供应链改写的层激活。

Pin 文件位置:python/underseal.pin.json(E1)、skills/underseal-delegation/SKILL.md frontmatter 的 metadata.pin 行(E2)、cordis.pin.json(E3)。期望哈希永远从 pin 文档本身读取,因此 pin 缺失、损坏或畸形本身就是一种 fail-closed 状态。

重 pin 是一次新的审阅动作。 对验证器、skill 正文或 bundle 补丁做出经审阅的修改后,用以下命令重算 pin:

powershell -ExecutionPolicy Bypass -File scripts\repin.ps1

脚本会打印三个新的 SHA-256 值,重写两个 pin JSON 文件,并更新 SKILL.md frontmatter 的 metadata.pin 行(正文字节永不改动)。它是幂等的:什么都没改时重跑,所有文件保持字节一致。请人工检查打印值,并把 pin 文件的变更当作一次新的供应链审查提交。

工具

每个工具成功时返回同一个规范值(output.schema,additionalProperties: false):

{ marker: string, payload: JsonValue, exitCode: 0, stdout: string, stderr: string }

marker 是适配器的确切成功标记;payload 是适配器随后输出的已解析 JSON。任何失败(非零退出,或缺预期标记)都会使工具抛出适配器的 E_ 码与 stderr——不存在"带着失败标记的成功值"。任何工具都不运行验收命令、不执行 Git 提交、不进行网络操作;每个工具与适配器的一个子命令一一对应。

| 工具 | 适配器子命令 | 必需标记 | 参数 | lead / worker |
| underseal_doctor | doctor | UNDERSEAL_ADAPTER_OK | workspaceRoot | 只读,皆可 |
| underseal_pin | pin | UNDERSEAL_ADAPTER_PIN_OK | workspaceRoot, replace? | lead |
| underseal_seal | seal | UNDERSEAL_ADAPTER_SEALED | workspaceRoot, taskName, expectedMode (owner\|mechanical), expectedRole, dispatchId? | lead |
| underseal_start | start | UNDERSEAL_ADAPTER_READY | workspaceRoot, taskName, expectedMode, expectedRole, summary? | worker |
| underseal_event | event | UNDERSEAL_ADAPTER_EVENT_OK | workspaceRoot, taskName, expectedMode, expectedRole, state, summary | worker |
| underseal_resume | resume | UNDERSEAL_ADAPTER_RESUMED | workspaceRoot, expectedRole, hostSameAgentConfirmed | lead |
| underseal_audit | audit | UNDERSEAL_ADAPTER_AUDIT_OK | workspaceRoot, taskName, expectedMode, expectedRole | lead |
| underseal_retire | retire | UNDERSEAL_ADAPTER_RETIRED | workspaceRoot, expectedRole | lead |

对协议有承重作用的说明:

- expectedRole 是自由字符串,按 Underseal 角色语法 [a-z][a-z0-9_]{0,63} 校验(适配器的 --expected-role 是 type=_role_name,不是封闭枚举)。deepseek_owner / deepseek_coder 是本 skill 的约定,不是适配器的封闭集合。
- underseal_event.state 是适配器的 PROGRESS_STATES 减去 READY。CLI 把 READY 视为合法选项,但 READY 是 underseal_start 拥有的激活边界;枚举排除它,以免 worker 通过通用事件路径发出第二个激活事件。
- underseal_resume.hostSameAgentConfirmed 是必填布尔值;为 false 时工具不调用适配器直接拒绝,只有 true 才传递 --host-same-agent-confirmed。
- underseal_seal.dispatchId 对 full 仪式 assignment 必填,对 lite 必须省略(适配器双向强制)。

Skill

随包 skill 用 DSH 语义记录了整个仪式。DSH 的 filesystem skill provider 不扫描 npm 包目录,所以每台机器/每个项目链接一次到被扫描的根:

项目级(提交进仓库):
mkdir -p .dsh/skills
cp -r node_modules/dsh-tool-underseal/skills/underseal-delegation .dsh/skills/

或用户级:
cp -r node_modules/dsh-tool-underseal/skills/underseal-delegation ~/.agents/skills/

之后会话 skill 目录会列出 underseal-delegation;加载它(skill 工具或 /underseal-delegation 手势)会注入整个工作流,其中每个步骤都点名这些工具。

Worker 签到锁(guard)

第二个插件(dsh-tool-underseal/guard,插件名 underseal-guard)把"动工程文件前先调 underseal_start"从 skill 指导变成工具管线里的机器规则。

强制 seam

守卫通过 ctx.tools.guard() 注册,而不是可重排的 tools/pre-execute 瀑布。契约(packages/core/tools README,"Public API")把差别说得很明确:

ctx.tools.guard(guard: ToolGuard): () => void —— 在 tools/pre-execute 之后注册一个单调的同步执行守卫:返回原因即拒绝该调用,返回 undefined 则原样放行。plain-context 守卫全局生效……之后的瀑布监听器无法把守卫的拒绝改回允许。

ToolGuard 是 (execution) => string | undefined,在"可重排的 pre-execute 瀑布之后、派发之前"求值。机器规则绝不能被重排瀑布所逆转,所以单调守卫 API 才是强制点。守卫收到完整的、身份受保护的 Readonly(name、arguments、agent),从中取得调用 agent 的 session.header.cwd 用于仓库定位。

判定(v1,仅 full 仪式)

每次派发,当工具名在 blockedTools(默认 write、edit、pwsh、bash)中时:

1. 从 session.header.cwd 向上走到 Git 仓库根(任何 .git 条目)。无 .git(或无可用 cwd)→ 放行。
2. 扫描 /.underseal/assignments/.assignment.json;要求至少存在一个 ceremony == "full" 且 gate.status == "OPEN" 的 assignment。没有 → 放行。lite 仪式不在 v1 范围内。
3. 该 assignment 的 role 必须在 .underseal/dispatch/.current.json 有 INITIAL 代的 current dispatch(resume dispatch——非 INITIAL activation kind 或 generation > 1——不满足此条件)。
4. .underseal-runs/.events.jsonl 必须不含 READY 事件行。

三条同时成立 → 拒绝该工具调用,原因里点名 assignment 并指向 underseal_start(附上它所需的 workspaceRoot/taskName/expectedRole/expectedMode 参数)。Fail-closed: 任何读错误,只要不是被显式归类的"不存在"答案(无 assignments 目录 → 放行;无 current dispatch → 放行;无事件日志 → 拒绝),一律拒绝调用;任何畸形 JSON 同样拒绝。判定核心是纯函数(src/guard-core.ts),只依赖一个最小注入式读取接口,因此无需 DSH 运行时即可在 tests/run-guard-tests.mjs 中运行。

缓存

判定按仓库根缓存,命中时派发路径 O(1)。缓存在三种情况下失效:(a) 仓库下的 fs/observed 事件(fs 工具在读/写后发出);(b) 任何 underseal_ 工具成功后立即失效——underseal_start 的 READY 追加走子进程 seam、不发 fs/observed,因此这是让"拦→放"转变即时发生的关键;(c) 短 TTL(cacheTtlMs,默认 2000 ms)作为对两种信号都不发的子进程改动的陈旧性上限。缓存未命中时同步重读那几个小状态文件,与同步的 ToolGuard 契约一致。

该 seam 的已知局限

这是工具管线内的程序闸,不是 OS 沙箱:

- 它只看得见流经 DSH 注册表的工具派发。模型绕过工具层直达宿主、工具层不经手的宿主级子进程、或经 ACP 到达的远程后端,会完全绕过它。
- 它按工具名而非目标路径拦截:v1 在证据缺失时对任何位置的 write/edit/pwsh/bash 一律拒绝,即使写入在仓库之外。
- 权威验收复核仍是 underseal_audit;守卫是卫生闸门,不是证据。

模型体验

工具 schema

模型看到什么

八个工具 schema:underseal_doctor、underseal_pin、underseal_seal、underseal_start、underseal_event、underseal_resume、underseal_audit、underseal_retire,各自携带工具一节所述的参数与共享规范结果 schema。Schema 经 ctx.tools 自动汇入提示词组装。

Token 影响

每个可见工具每请求固定的 schema 成本,外加工具的 description 文案。

KV Cache 影响

工具定义与可见性不变时前缀稳定;限制、遮蔽或插件生命周期变化可能使该 schema 的复用失效。

工具结果

模型看到什么

成功时 output.render 输出一个文本块:

underseal succeeded (, exit 0)

失败时工具抛出;模型看到的是 Error: underseal failed [E_] (exit N): 消息,而不是成功卡片。

Token 影响

数据依赖的工具结果 token;失败只增加有界的错误消息(适配器已把自己的 git stderr 截断到 500 字符)。

KV Cache 影响

仅追加;新可见内容跟随可复用的请求前缀。

Skill 目录

模型看到什么

当随包 skills/underseal-delegation/SKILL.md 被链接进扫描根(见 Skill)后,会话目录列出 underseal-delegation 及其 description 摘要。加载它注入 DSH 优先的委托工作流,其步骤点名这些工具。

Token 影响

可用时一条目录摘要行;完整 skill 正文只在按需时经 skill 工具或 /underseal-delegation 手势加载。

KV Cache 影响

仅追加;目录替换会重发整个 列表。

并入 monorepo

把本包移入 packages/ 时:

1. 把 tsconfig.json 换成包模板形态(extends: "../../../tsconfig.base.json"、rootDir: "src"、outDir: "lib/types",项目 references 指向 vendor/cordis、vendor/schemastery、core/tools、subprocess/subprocess)。
2. 在 tsconfig.host.json 的 references 中注册本包(只属于一个聚合——Host),必要时在 knip.json 中登记。
3. 重新加上 workspace 约束不变量(private: true、根版本一致、完整的 files 门禁)。当前 package.json 故意省略 private,因为它是可分发出树包。

已知局限与待办

- 未在 monorepo 工具链内构建 —— 本包用独立 overlay(tsconfig.verify.json 把四个 @deepseek-ai/ 说明符映射到 checkout 的已构建类型入口)验证:严格 tsc 退出码 0,guard/sentinel 套件通过(54 + 39 断言),DSH 0.1.0-rc.5 上运行时冒烟测试挂载双层并跑通完整仪式链。尚未经过 monorepo 的 tsdown/tsc 项目引用构建。
- 发布线漂移 —— peer 范围已按 npm registry 钉死:@deepseek-ai/cordis@^4.0.1 与 @deepseek-ai/schemastery@^3.18.1 与 vendored 构建源完全一致;@deepseek-ai/dsh-tools/@deepseek-ai/dsh-subprocess@^0.1.0-rc.0 会接受已发布的 0.1.0-rc.6 线,后者新于本地测试的 0.1.0-rc.5。首次真实安装解析完版本后请重跑冒烟测试;若 rc.6 改变了本包使用的 seam,则收紧范围。
- Windows 子进程捕获 —— 插件刻意让所有 spawn 走 ctx.subprocess 而非 node:child_process,因为 harness 沙箱拒绝裸 Node spawn 的管道 stdio 捕获(命名管道 EPERM);ctx.subprocess 的 collect 模式是受认可路径,也是本包唯一使用的路径。
- 需要 Python 解释器 —— vendored 适配器在宿主的 python/python3 下运行;本包不携带也不安装解释器。
- graceMs 上限 —— 子进程 seam 把宽限时间封顶在 MAX_TIMER_DELAY_MS;插件只断言正整数,上限留给 seam 并在此记录。
- resume 的 host-same-agent —— hostSameAgentConfirmed 是人/模型做出的断言,不是插件能验证的事实;插件只拒绝 false 并把 true 转发给适配器。
- 无 UI 卡片 —— 工具落回通用卡片;terminal/diff 呈现与 presentationMeta 投影器待做。
- 守卫是管线闸,不是 OS 沙箱 —— worker 签到锁(Worker 签到锁(guard))在 READY 证据缺失时拒绝变更形态的工具派发,但它看不见工具层不经手的宿主级进程或远程 ACP 后端,且 v1 按工具名而非目标路径拦截。权威复核仍是 underseal_audit;适配器的 fail-closed 验证器与人工工作流仍拥有最终边界。
- 无常驻 watcher —— 哨兵(供应链哨兵)只在插件 apply() 时运行一次。针对 python/(或 bundle 补丁/skill 文件)的 fs/observed 变更立即报警的常驻 watcher 尚未实现;漂移会在下次插件加载或重 pin 时浮出。
预览分享卡片长什么样 ↓Hyperionjust/dsh-tool-underseal
分享 · DeepSeek Harness Hub
Hyperionjust/dsh-tool-underseal

为 AI 代理间委托签发可验证的密封授权文件

回到顶部