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

内核补丁库 xiamubumu/dsh-patch-library

DeepSeek Harness
xiamubumu17 天前有提交已提供中文文档扫描:含敏感能力

以数据形式管理内核补丁,自适应应用并支持一键回退

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xiamubumu/dsh-patch-library
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · dev
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件
查看扫描证据(共 27 处,展示前 27 条)
  • 读取本地文件
    apply.mjs:64
    const readChange = (root, p) => JSON.parse(readFileSync(join(patchDir(root, p), 'change.json'), 'utf8'))
  • 读取本地文件
    apply.mjs:107
    if (p.kind === 'regex') console.log(readFileSync(join(patchDir(LIB_ROOT, p), 'change.json'), 'utf8'))
  • 读取本地文件
    apply.mjs:108
    else console.log(readFileSync(diffPath(LIB_ROOT, p), 'utf8'))
  • 读取本地文件
    apply.mjs:116
    const handledBy = plugin && existsSync(plugin) ? p.pluginReplaceable : null
  • 读取本地文件
    apply.mjs:118
    const text = readFileSync(target, 'utf8')
  • 读取本地文件
    apply.mjs:122
    const op = p.kind === 'regex' ? readChange(LIB_ROOT, p) : parseDiff(readFileSync(diffPath(LIB_ROOT, p), 'utf8'))
  • 执行外部命令来自配置/变量
    apply.mjs:139
    const r = spawnSync(process.execPath, ['--check', file], { encoding: 'utf8' })
  • 写入本地文件
    apply.mjs:171
    writeFileSync(st.target, st.proposed, 'utf8')
  • 读取本地文件
    lib/manifest.mjs:9
    const raw = readFileSync(join(root, 'manifest.json'), 'utf8')
  • 读取本地文件
    lib/discover.mjs:10
    const isDir = (p) => { try { return statSync(p).isDirectory() } catch { return false } }
  • 读取本地文件
    lib/discover.mjs:11
    const has = (p) => existsSync(p)
  • 读取本地文件
    lib/discover.mjs:33
    try { entries = readdirSync(dir, { withFileTypes: true }) } catch { return }
  • 读取本地文件
    lib/discover.mjs:50
    for (const e of readdirSync(profiles, { withFileTypes: true })) {
  • 读取本地文件
    lib/backup.mjs:10
    try { entries = readdirSync(dir) } catch { return [] }
  • 读取本地文件
    lib/backup.mjs:24
    for (let i = 2; existsSync(dest); i++) dest = join(dir, `${base}.orig-${i}`)
  • 写入本地文件
    lib/backup.mjs:25
    copyFileSync(file, dest)
  • 写入本地文件
    lib/backup.mjs:26
    try { chmodSync(dest, 0o666) } catch { }
  • 写入本地文件
    lib/backup.mjs:31
    copyFileSync(backup, file)
  • 写入本地文件
    lib/backup.mjs:32
    try { chmodSync(file, 0o666) } catch { }
  • 读取本地文件
    lib/hash.mjs:5
    export const sha256File = (file) => sha256(readFileSync(file, 'utf8'))
  • 读取本地文件
    verify.mjs:22
    const text = readFileSync(diffPath(LIB_ROOT, p), 'utf8')
  • 读取本地文件
    verify.mjs:30
    const op = JSON.parse(readFileSync(join(patchDir(LIB_ROOT, p), 'change.json'), 'utf8'))
  • 读取本地文件
    verify.mjs:70
    const op = JSON.parse(readFileSync(join(patchDir(LIB_ROOT, p), 'change.json'), 'utf8'))
  • 读取本地文件
    verify.mjs:97
    for (const e of readdirSync(dir, { withFileTypes: true })) {
  • 读取本地文件
    verify.mjs:101
    else if (/ (?:md|json|mjs|js|yml|yaml|txt)$/i.test(e.name) && statSync(full).size < 4_000_000) files.push(full)
  • 读取本地文件
    verify.mjs:115
    const text = readFileSync(f, 'utf8')
  • 执行外部命令来自配置/变量
    verify.mjs:126
    const r = spawnSync(process.execPath, [join(LIB_ROOT, 'apply.mjs'), '--check', '--json'], { encoding: 'utf8' })
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 内核官方补丁的数据化版本:10 条自包含补丁加自适应应用器,自己找安装位置、逐个备份、语法检查、一键回退,五种打法,零硬编码路径,仅支持 DSH 1.5,后续会跟进更新。

README

由 DeepSeek 最新模型翻译生成
dsh-patch-library 官方 DSH 内核补丁,以「数据」形式发布 —— 五种方式随你挑。 十条自成体系的补丁,针对 @deepseek-ai/dsh- 与 @earendil-works/pi-ai;配一个小巧的应用器,它会自己找到你的 DSH 安装位置。没有硬编码路径,仓库里没有任何个人信息,全程不需要联网。 面向 @deepseek-ai/dsh 0.1.5-rc.2(1.5 系列)。每条补丁都记录了它所期待的原文件与它产出的新文件各自的 sha256,所以应用器在动手之前就能告诉你 exact / applied / conflict。 🌐 English README → README.md 另外两份中文材料:给 agent 的中文提示词 ·五种方式的详细步骤。 为什么会有这个仓库 有些修复没法做成插件:它们必须跑在官方文件内部,在 Cordis 没有暴露成接缝的函数中间。 其中一批已经做成了插件(dsh-context-reclaim、dsh-capability-composer、 dsh-composer-launcher、dsh-aux-degrade)。剩下的那些 —— 以及只有想凑齐全套时才需要的那些 —— 就住在这里,是普通的 unified diff:任何人可以阅读、审查、应用、回退、重新生成。
展开完整文档(README 剩余 1 节)
dsh-patch-library

官方 DSH 内核补丁,以「数据」形式发布 —— 五种方式随你挑。

十条自成体系的补丁,针对 @deepseek-ai/dsh- 与 @earendil-works/pi-ai;配一个小巧的应用器,它会自己找到你的 DSH 安装位置。没有硬编码路径,仓库里没有任何个人信息,全程不需要联网。

面向 @deepseek-ai/dsh 0.1.5-rc.2(1.5 系列)。每条补丁都记录了它所期待的原文件与它产出的新文件各自的 sha256,所以应用器在动手之前就能告诉你 exact / applied / conflict。

🌐 English README → README.md

另外两份中文材料:给 agent 的中文提示词 ·五种方式的详细步骤。

为什么会有这个仓库

有些修复没法做成插件:它们必须跑在官方文件内部,在 Cordis 没有暴露成接缝的函数中间。
其中一批已经做成了插件(dsh-context-reclaim、dsh-capability-composer、 dsh-composer-launcher、dsh-aux-degrade)。剩下的那些 —— 以及只有想凑齐全套时才需要的那些 —— 就住在这里,是普通的 unified diff:任何人可以阅读、审查、应用、回退、重新生成。

这里没有二进制黑盒,也没有魔法:patches/<id>/change.diff 就是一份普通的补丁, manifest.json 是让脚本能安全、可回退地应用它的元数据。

十条补丁

| id | 包 → 文件 | 类型 | 规模 | 需重启 | 已有插件代劳? |
| dsh-llm-writable-request | @deepseek-ai/dsh-llm → lib/index.js | lines | +18 −1 | 是 | 是 —— dsh-context-reclaim |
| agent-loop-snapshot-prompt | @deepseek-ai/dsh-agent-loop → lib/index.js | lines | +97 −20 | 是 | 否 |
| llm-pi-ai-system-prompt | @deepseek-ai/dsh-llm-pi-ai → lib/index.js | lines | +96 −54 | 是 | 否 |
| compaction-pruner | @deepseek-ai/dsh-compaction-tool-result-pruner → lib/index.js | lines | +354 −14 | 是 | 否 |
| ui-renderer-turntail | @deepseek-ai/dsh-client-ui-renderer → lib/client.js | lines | +9 −1 | 否 | 否 |
| ui-sidebar-wrap | @deepseek-ai/dsh-client-ui-sidebar → lib/lib-client.js | regex | +1 −1 | 否 | 否 |
| session-format-v1-to-v2 | @deepseek-ai/dsh-session-format-v1-to-v2 → lib/index.js | lines | +2 −1 | 是 | 否 |
| session-persistence-jsonl | @deepseek-ai/dsh-session-persistence-jsonl → lib/worker.cjs | lines | +2 −1 | 是 | 否 |
| mcp-client | @deepseek-ai/dsh-mcp-client → lib/index.js | lines | +59 −6 | 是 | 否 |
| pi-ai-max-tokens-floor | @earendil-works/pi-ai → dist/api/simple-options.js | lines | +11 −1 | 是 | 否 |

每条补丁都有自己的 patches/<id>/NOTES.md,中英双语写明改了什么、什么时候需要它、怎么验证、和你的构建对不上时怎么办。

ui-sidebar-wrap 故意做成正则补丁:侧栏的类名前缀是构建哈希,行级 diff 一旦遇到重建就失效。patches/<id>/change.json 里存着模式串以及它显式的逆操作。

五种应用方式

挑你顺手的。五种的详细步骤都在 docs/methods.zh-CN.md (英文:docs/methods.md)。

| | 方式 | 命令 |
| A | 脚本(推荐) | node apply.mjs --check,然后 node apply.mjs --apply --all |
| B | git apply | cd <包目录> && git apply -p1 <库>/patches/<id>/change.diff |
| C | 交给你自己的 AI agent | 把 PROMPT.zh-CN.md 里的整块复制给它,让它按 A 或 B 打 |
| D | 为你的构建重新生成 | node tools/make-patch.mjs --file <改后> --orig <原文件> --pkg <包> --rel <相对路径> |
| E | 回退 | node apply.mjs --revert --all,或手工把任一 .orig 还原回去 |

十条 diff 全部在包目录里通过了 git apply -p1 --check,所以方式 B 对每一条都可用。

方式 A 全流程

node apply.mjs --list # 这里有什么
node apply.mjs --roots # 本机找到了哪些 DSH 安装
node apply.mjs --check # 逐文件状态:exact / applied / conflict / missing
node apply.mjs --apply --all # 应用所有能对上的
node apply.mjs --apply --only mcp-client,compaction-pruner
node apply.mjs --revert --all # 把所有 .orig 备份还原回去

--check 会给出五种状态之一:

| 状态 | 含义 |
| exact | 文件正是本库构建时所用的原版 —— 应用是安全的 |
| applied | 文件已经等于打补丁后的版本,无需操作 |
| variant | 版本号相同但构建不同(哈希不同)而 hunks 仍能对上 —— 需要 --allow-variant,或用方式 D |
| conflict | hunks 对不上。不会写入任何东西。 用方式 D 为你的构建重新生成 |
| missing | 找到的这个安装里没有这个包 |

应用器的硬保证

* 它去找你的安装,而不是假设某台电脑。 --root、$DSH_APP_ROOT、$DSH_INSTALL_ROOT、 $DSH_HOME(含 profiles/)、当前进程自己的 DSH 路径、从当前目录做的 node 解析,以及对 Windows / macOS / Linux 常规安装位置做的有界扫描 —— 见 lib/discover.mjs。
--root 的含义是「就这一个」,绝不会变成「这一个 + 顺便扫到的那些」。
.orig 是圣物。 备份只在文件旁边写一次,永不覆盖;已存在就直接复用。
* 每次改写都做语法检查。 写入后立刻 node --check;失败就立即还原备份,并把该条报为失败。
* 对不上的 hunk 是冲突,不是猜测。 引擎要求 hunk 的旧侧在它被记录的位置附近精确匹配、且只匹配一处。
* 只在解析出的根目录内写入。 除了你显式把 --root 指向某个 profile 目录(那是该 profile 自己的 node_modules 副本),不会碰 $DSH_HOME 下的任何东西。

退出码:0 成功,1 某个请求的操作失败或冲突,2 没找到安装。

如果你已经在用那四个插件

dsh-llm-writable-request 可以跳过 —— dsh-context-reclaim 在插件内部接管了这条路径,官方补丁保持原样即可。--check 会明说:

= dsh-llm-writable-request already node_modules/@deepseek-ai/dsh-llm/lib/index.js
not needed: the dsh-context-reclaim plugin already handles this

其余九条与插件互不依赖:插件装不装、装一个还是四个,都行。

自检

node verify.mjs

离线运行,不需要装 DSH。它会检查:每条 diff 都能解析、hunk 行数与声明一致、声明的 marker 确实由该补丁新增、应用/回退引擎在合成样本上来回一趟是恒等变换、重复上下文会被拒绝而不是被猜、正则补丁能在任意类名前缀上往返 —— 以及仓库里没有任何文件含盘符、个人主目录或私有工作区名(这条扫描是测试套件的一部分,不是一个口头承诺)。

verify.mjs 最后会对本机找到的安装做一次只读的 --check 汇总。

仓库结构

apply.mjs 应用器:--list --roots --check --apply --revert --show verify.mjs 离线自检 + 个人信息扫描 manifest.json 每条补丁的元数据:哈希、字节数、marker、风险、为什么、何时该打 lib/manifest.mjs manifest 加载与 schema 校验 lib/discover.mjs 自适应定位 DSH 安装(跨平台) lib/unified.mjs unified diff 解析/应用/回退引擎 lib/backup.mjs .orig 备份与还原 lib/hash.mjs sha256 小工具 patches/<id>/change.diff 补丁本体(路径相对包根) patches/<id>/change.json 正则补丁:模式串 + 显式逆操作 patches/<id>/NOTES.md 改了什么/何时需要/怎么验证,中英双语 tools/make-patch.mjs 为同版本的另一种构建重新生成补丁 docs/methods.zh-CN.md 五种方式的分步说明 PROMPT.zh-CN.md 复制粘贴给自己 agent 的提示词

如实说明边界

* 这些补丁是按 0.1.5-rc.2 构建的。如果你的构建不同,--check 会告诉你(variant / conflict)—— 那是信息,不是失败。方式 D 就是为这种情况准备的。
* 打补丁就是在改你 DSH 安装里的文件 —— 补丁的本义如此。应用器为它碰过的每个文件留下 .orig, --revert 能把它们放回去。卸载或升级 DSH 会整体替换目录树,补丁也随之消失。
* manifest 里的 restartRequired 说明受影响的代码跑在主进程(重启 DSH)还是渲染进程(刷新窗口即可)。
* 这些补丁是修复,它们不构成对 DSH 的安全审计。应用之前请读一读 patches/<id>/change.diff —— 把补丁当数据发布,图的就是这个选项。

许可

MIT。上游包的权利归其作者所有;本仓库只包含针对它们的 diff。
预览分享卡片长什么样 ↓xiamubumu/dsh-patch-library
分享 · DeepSeek Harness Hub
xiamubumu/dsh-patch-library

以数据形式管理内核补丁,自适应应用并支持一键回退

回到顶部