DeepSeek Harness 插件

dsh-apply-patch

DSH plugin: a codex-style apply_patch tool (*** Begin Patch / *** Update File / *** Add File / *** Delete File) injected into the model toolset through DSH's built-in sandbox, with a settings card to(英文原文)

跳到安装方式

来源信息

GitHub 仓库
fonlan/dsh-apply-patch
最近更新
2026年8月19日
分类
工具与能力
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/fonlan/dsh-apply-patch
插件名:dsh-apply-patch
作者:fonlan

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-apply-patch

DSH 插件:为模型注入 codex 风格的 apply_patch 工具

GPT 系列模型在训练时大量使用 OpenAI Codex 的 apply_patch 工具,因此在 DSH 里使用 GPT 模型时,模型会本能地调用 apply_patch —— 但 DSH 默认不提供该工具,导致报错。本插件通过 DSH 强大的插件系统补上这个工具,并且完全走 DSH 自带的沙盒系统,绝不绕过沙盒直接修改文件。

功能

  • apply_patch 工具:与 OpenAI Codex 完全一致的补丁格式(* Begin Patch / * Update File: / * Add File: / * Delete File: / * Move to: / * End of File / *** End Patch),并支持 gpt-4.1 风格 heredoc(<<'EOF' ... EOF)的宽松解析。
  • 沙盒写入:所有文件写入都通过 ctx.fs(DSH 沙盒文件系统)执行,删除通过沙盒 bash 执行 —— 沙盒拒绝时返回 [sandbox: ...] 错误,绝不绕过。
  • 按模型条件注入:设置里的配置卡片只有一个下拉选择:

- 关闭:完全不注入 apply_patch - 仅GPT模型(默认):只对模型 id 以 gpt- 开头的模型注入 - 所有模型:对所有模型注入

  • 设置卡片:设置 → 插件 → 插件配置 → Apply Patch,实时生效(live)。

安装

通过 dsh plugin 命令安装到目标 profile(默认 web):

从 npm 安装

dsh plugin --profile web add @fonlan/dsh-apply-patch

从 GitHub 安装

# 默认分支(仓库带 prepare 构建脚本,pnpm 会自动构建)
dsh plugin --profile web add github:fonlan/dsh-apply-patch

# 指定 release tag
dsh plugin --profile web add github:fonlan/dsh-apply-patch#v0.1.0

本地源码链接安装(开发)

pnpm build
dsh plugin --profile web add .

安装后插件通过 cordis.patch.yml 自动挂载:服务端注册 apply_patch 工具与 dsh-apply-patch 设置命名空间,web 端注册 settings.plugin.item 设置卡片(设置 → 插件 → 插件配置 → Apply Patch)。安装后需要重启 dsh web 进程生效

删除插件

dsh plugin --profile web remove @fonlan/dsh-apply-patch

升级

dsh plugin --profile web update @fonlan/dsh-apply-patch

使用

模型(尤其是 GPT 系列)会像在 Codex 中一样直接调用 apply_patch,例如:

*** Begin Patch
*** Update File: hello.py
@@
-print("hello")
+print("hello, world")
*** Add File: new.py
+x = 1
*** Delete File: old.py
*** End Patch

工具返回 codex 风格的摘要:

Success. Updated the following files:
M /path/to/hello.py
A /path/to/new.py
D /path/to/old.py

沙盒说明

所有变更都通过 DSH 内置沙盒:

操作沙盒路径
Add / Update / Move 写入ctx.fs.writeText(沙盒文件系统,遵守会话 sandbox mode 与 workspace root)
Delete / Move 删除原文件ctx.shell(沙盒 bash rm,遵守同一策略)
  • read-only 模式下任何写入都会被沙盒拒绝,返回 [sandbox: file access denied under read-only mode]
  • workspace-write 模式下只允许写入 workspace root(以及沙盒策略允许的 /tmp)。
  • 观察策略(fs-observation-policy)要求先读后写,工具内部自动完成 stat/read/observe/write 流程。

工作原理

1. 通过 ctx.settings.register 注册 dsh-apply-patch 命名空间(单字段 mode)。 2. 通过 ctx.tools.register 注册 apply_patch 工具(defineTool)。 3. 挂钩 system-prompt/assemble 瀑布:组装工具列表时,按 mode + 当前会话模型决定是否保留 apply_patch。 4. 模型判定优先读取组装变量中的 variables.model(模型选择层注入的权威值,切换模型零延迟),回退到 agent/request 捕获的已解析路由、会话请求头、agentDefaultModel 默认值。

开发

pnpm install
pnpm build        # 构建 host + client
pnpm typecheck    # 类型检查
pnpm test         # 单元测试(解析器/应用器)+ 集成测试(真实 cordis + 沙盒 fs)

License

MIT