dsh-agent-instructions-editor:在 DSH 设置页编辑全局与项目指令

前言

DeepSeek Harness(DSH)会把工作区里的指令文件注入智能体会话:用户全局的 ~/.dsh/AGENTS.md,以及沿项目根到工作目录链路上的 AGENTS.md、CLAUDE.md 与对应的 .local.md 覆盖层。日常改这些文件通常要切到编辑器或终端,和 Web 设置、字节预算、加载器发现规则也对不上号。下面介绍社区插件 dsh-agent-instructions-editor(维护者 MaRi23333),它在 DSH Web GUI 的设置里增加「个性化指令」页,对标 Codex 式「个性化」设置,用同一套发现规则集中查看与保存。

这是什么

dsh-agent-instructions-editor 是 DSH 客户端类插件(npm 包名 dsh-agent-instructions-editor,当前 README 标明版本 0.2.3,面向 DSH 0.2,适配基线 0.2.0-rc.2)。它在 Settings 侧栏贡献 「个性化指令」 入口,由全局编辑器、项目链浏览器和覆盖层编辑组成,并显示字节预算与「新会话生效」提示。桌面客户端沿用同一 Web 插件界面,无需单独桌面包。

项目地址:GitHub — MaRi23333/dsh-agent-instructions-editor;目录页:skillhub.cn/plugins/MaRi23333/dsh-agent-instructions-editor。本插件为独立社区项目,与 DeepSeek 无隶属或背书关系;DSH 生态以「一切皆插件」为方向,skillhub 等目录为社区站点,并非官方应用商店。

核心功能

全局指令

设置页提供常驻编辑器,读写 ~/.dsh/AGENTS.md,并显示字节预算(默认 65,536 字节)。

项目指令链

项目指令区默认折叠。先通过项目选择器选定目标:自动发现来自工作区注册表与最近会话目录,也可手动粘贴路径。选定后按「项目根 → 工作目录」逐层展示,每一层有四个候选槽位:

  • AGENTS.md
  • CLAUDE.md
  • AGENTS.local.md
  • CLAUDE.local.md

已存在的文件可点击进入编辑;不存在时可新建。发现逻辑与 @deepseek-ai/dsh-agent-instructions 加载器一致:marker 上溯、祖先链、候选探测、按目录内容 sha1(trim) 去重(重复项在 UI 中带 ⧉ 徽标),字节合计与预算条同样遵循加载器规则。

保存与安全写入

写入侧做了约束,避免误写路径与静默覆盖:

  1. 文件名白名单(上述四个候选)。
  2. 目录 realpath 必须落在已注册项目的「项目根 → 工作目录」祖先链内。
  3. mtime 冲突检测:若磁盘上的修改时间早于保存请求所带基准,返回 409,可选择重新加载或覆盖。
  4. 临时文件 + 原子 rename 替换;同一 dsh web 进程内对同一文件的写入在内存队列中串行化。

保存成功后,界面会提示建议新建会话:编辑器不会直接替换已有会话里已加载的指令;已有会话何时重新读取由宿主加载器决定。

宿主 HTTP 与界面

Host 半区提供路由 /agent-instructions/api/{projects,chain,file};手动注册的项目列表存在本插件 profile 条目中,经 DSH 0.2 的 SettingsForms 读写,并带 revision 冲突检测。Client 半区向 settings.section 贡献设置页,编辑器为纯 textarea(无额外 UI 依赖)。README 说明当前界面文案以硬编码中文为主(locale 字典已注册,供后续接入 t())。

安装与启用

桌面客户端与 Web 实例的插件安装、启用状态相互独立,请按实际运行环境操作。环境要求:DSH 0.2、Node.js 22+、与宿主版本匹配的 DSH CLI;npm 包与 GitHub 发布均含 lib/ 构建产物,一般无需本地构建。

仍使用 DSH 0.1 的用户应保留插件 0.1.2(npm 指定 dsh-agent-instructions-editor@0.1.2),不要直接升级到 0.2.x 系列。

桌面客户端(推荐)

  1. 打开左侧 「插件 / Plugins」,点击 「添加插件 / Add plugin」。
  2. 输入 npm 包名 dsh-agent-instructions-editor@latest 并确认安装。
  3. 安装完成后点击 「立即启用 / Enable now」(若关闭完成弹窗,插件会留在已安装列表但未启用)。
  4. 仅在界面提示需要重启时,通过菜单 Quit 完整退出后重新打开(Windows / macOS 上关窗口可能仅隐藏到后台)。
  5. 打开 Settings,确认侧栏出现 「个性化指令」。

备选:在桌面配套 CLI 已注册且客户端已 Quit 的前提下:

dsh plugin --profile desktop add dsh-agent-instructions-editor@latest
dsh plugin --profile desktop list

然后重新启动桌面客户端。外部 npm 安装的普通 dsh CLI 不能管理 desktop profile。

Web 实例

优先使用与启动该 Web 实例相同版本的 dsh CLI:

dsh plugin --profile web add dsh-agent-instructions-editor@latest

停止当前进程后重新运行 dsh web,并刷新浏览器页面。

npm 不可用时,可按 README 从 GitHub 固定 tag 安装:

dsh plugin --profile web add github:MaRi23333/dsh-agent-instructions-editor#v0.2.3

若用 npx 执行安装,版本应与 Web 宿主一致(例如 npx @deepseek-ai/dsh@0.2.0-rc.2 ...)。从 GitHub 或本地目录切回 npm 时,请带上 @latest,避免已有安装被判定为已满足而跳过更新。

典型用法

  1. 安装并启用插件,重启宿主(按界面提示或 README 要求)。
  2. 进入 Settings → 个性化指令。
  3. 在 全局指令 区域编辑 ~/.dsh/AGENTS.md,留意预算条是否接近默认 65,536 字节上限。
  4. 展开 项目指令,从选择器选中目标项目(或粘贴项目根路径并完成注册)。
  5. 在项目链每一层点击已有文件编辑,或对空槽位新建四个白名单文件名之一。
  6. 保存后若收到 409,说明文件在外部被修改:先 重新加载 合并内容,或确认后 覆盖。
  7. 新建会话 后再验证智能体是否按新指令行为;不要假设当前会话会热更新。

适用场景与注意

适合谁:需要在 DSH 内统一管理全局与多项目指令链、且希望 UI 与官方加载器发现规则一致的用户;习惯 Codex 式「个性化」集中编辑场景的开发者也可对照使用。

运行与信任:插件以当前 DSH 进程权限运行,可读写本机 loopback 上的 API 与所允许路径下的指令文件。安装前建议阅读 源码仓库 与 MIT 许可证,理解 Host 校验(loopback Host 头、POST 的 JSON 与同源 Origin)及写入边界。

已知限制(摘自 README):

  • 跨进程无文件锁;外部编辑器与本插件同时保存同一文件时,理论上存在极小竞态,可能与常规编辑器一样丢失一次外部更新。
  • 若修改了 dsh-base 的 agent-instructions 配置(自定义 markers、候选或预算),编辑器展示会随加载器默认值漂移。
  • 指令文件为 symlink 时,读取跟随目标;写入通过 rename 替换 symlink 本身,不会写穿目标。

结尾

dsh-agent-instructions-editor 把 DSH 指令文件体系搬进设置页:全局 AGENTS.md、项目链四件套与字节预算一屏可见,保存带路径白名单与 mtime 冲突提示。按需从目录页或 GitHub 安装对应 profile 的包,启用后在 个性化指令 中编辑,并通过新建会话确认生效。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜