Back to home@huanghai-lab

dsh-custom-instructions

DSH Web GUI 自定义指令编辑器插件:在设置页直接编辑 ~/.dsh/AGENTS.md 全局指令(类似 ChatGPT Custom Instructions),对所有聊天生效。热插拔安装,无需改动 DSH 源码。

Stars
1
Language
TypeScript
Created
Aug 15, 2026
Updated
Aug 28, 2026
GitHub repo

Introduction

dsh-custom-instructions

English · 更新日志 · 安全策略 · 参与贡献

CI npm npm downloads License

dsh-custom-instructions 社交预览

DSH Web 的安全指令管理器:编辑全局 AGENTS.md,复用模板,预览 Markdown,恢复历史,并在跨窗口或外部修改时阻止静默覆盖。

v0.4.0 仅适配 DSH 0.1.1-rc.2。仍在使用旧版 DSH 时,请继续使用本插件 v0.3.0。

快速开始

前提:Node.js ^22.19.0 || >=24.0.0、pnpm,以及已安装的 DSH 0.1.1-rc.2

dsh plugin --profile web add @huanghai-lab/dsh-custom-instructions
dsh web

重启 Web profile 后,打开 设置 → 自定义指令

中文界面:全局指令与模板

英文界面截图见 docs/assets/settings-en.png。界面跟随 DSH 语言设置,缺少翻译时回退到英文。

功能

功能v0.4.0 行为
全局指令保存、放弃草稿、撤销上次保存、编辑/Markdown 预览;限制 65 KiB
浏览器草稿按 DSH profile 存在 sessionStorage;保存或主动放弃后清除
并发保护所有写入校验磁盘 revision;冲突时保留草稿,只允许复制或重新加载
模板支持中英文名称、独立编辑/预览/保存、激活和确认删除;最多 50 个
历史覆盖前自动快照,可展开预览和确认恢复;最多保留最新 100 条
导入导出迁移当前内容、模板、历史和激活状态;严格校验、合并、失败回滚
环境概览只读展示项目级 AGENTS.md 与 Persona,并标明 DSH 数据来源
无障碍键盘保存、焦点恢复、ARIA、原生确认框/文件选择器和窄屏布局

Markdown 预览直接使用 DSH 官方 MarkdownText,没有引入另一套 Markdown 解析器。

数据安全

  • 插件只写当前 $DSH_HOME/AGENTS.md 和同目录下的 instructions/ 数据,不会修改项目级 AGENTS.md 或 Persona。
  • 写请求必须携带根据实际磁盘内容生成的 SHA-256 revision。多窗口或插件外修改会返回 409,不会静默覆盖。
  • 同一 DSH 进程内的修改串行执行;文件通过同目录临时文件写入、回读校验后替换。
  • 全局内容每次覆盖前写入 AGENTS.md.bak 和历史记录;只有备份文件确实存在时,界面才显示可撤销。
  • 导入先完整校验,再合并。失败时从导入前快照回滚;最近一次导入前快照保存在 instructions/import-rollback.json
  • 单项内容最多 65 KiB,导入最多 50 个模板、100 条历史,请求体最多 16 MiB。
  • 本插件不加入产品遥测。DSH 自身的遥测设置不由本插件改变。

导出文件、备份、历史和回滚包都可能含有私人指令或路径,请按敏感文件保存,不要直接贴到公开 Issue。

存储位置

$DSH_HOME/
├── AGENTS.md
├── AGENTS.md.bak
└── instructions/
    ├── active.json
    ├── import-rollback.json
    ├── templates/
    └── history/

模板物理文件名使用 Node 原生 Base64URL 编码,模板显示名称不会直接拼入路径。

从 v0.3.0 升级

dsh plugin --profile web add @huanghai-lab/dsh-custom-instructions@0.4.0

升级前建议先在 v0.3.0 中导出一次数据。v0.4.0 会继续读取 v0.3 的 ASCII 模板和数字历史 ID;旧模板第一次成功写入时会迁移到编码文件名。v0.3 导出包及缺少 format 字段的旧包会按 v0.3 格式解析。

如果 DSH 还不是 0.1.1-rc.2,不要升级插件:

dsh plugin --profile web add @huanghai-lab/dsh-custom-instructions@0.3.0

导入规则

  • 同名模板更新,本地额外模板保留;合并后超过 50 个模板会整体拒绝。
  • 历史记录按 ID 合并,并裁剪为最新 100 条。
  • 当前内容和激活状态会随包导入;激活模板必须在合并后的模板集合中存在。
  • 任意模板、历史或字段非法,整次导入都不会执行。
  • 导入文件只包含已保存数据,不包含页面上尚未保存的浏览器草稿。

常见问题

设置里没有“自定义指令”

确认安装目标是 web profile,并在安装后重启 DSH:

dsh plugin --profile web why @huanghai-lab/dsh-custom-instructions
dsh web

页面提示版本冲突

先点“复制草稿”,再点“加载最新内容”,手动合并后重新保存。不要通过重复点击绕过冲突。

页面加载失败或无法写入

检查界面显示的存储路径、$DSH_HOME 权限和 DSH 日志。服务端会区分 400404409413500,客户端也会显示网络、空响应和非 JSON 响应错误。

DSH 升级后插件无法加载

v0.4.0 只承诺兼容 0.1.1-rc.2。请先查看兼容矩阵,不要用重新构建来掩盖接口不兼容。

兼容矩阵

插件版本DSHNode.js状态
v0.4.x0.1.1-rc.2`^22.19.0
v0.3.00.1.0-rc.6`^22.19.0

开发与验证

pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm build
pnpm e2e

pnpm e2e 会在系统临时目录安装固定版本的官方 DSH 和当前 npm tarball,创建隔离的 DSH_HOME 与 workspace,再真实验证保存、预览、模板、历史、导入导出和中英文界面。它不会接触用户真实的 AGENTS.md

CI 在 Ubuntu 与 Windows 的 Node 24 上执行锁定安装、类型检查、测试和构建,并检查提交的 lib/ 没有落后源码;Ubuntu 还会执行隔离 DSH E2E。

参与项目

发现问题请使用 Issue 模板,使用经验和想法可以发到 Discussions。安全问题请按 SECURITY.md 私下报告。

如果这个插件确实解决了你的问题,欢迎 Star、分享实际使用场景,或提交可复现的反馈。真实反馈比泛泛宣传更有帮助。

许可证

Apache-2.0