dsh-agent-prompt:在 DSH GUI 里编辑 AGENTS.md

前言

DeepSeek Harness(DSH)在每个会话开始时,会把与 AGENTS.md 兼容的指令文件注入给 agent:一份用户全局文件,加上按工作区解析出的项目链。平时改这些内容,往往要开外部编辑器或进终端,一次只对一个路径动手,切换工作区时也容易漏改。

Agent Prompt(icrefin/dsh-agent-prompt)把同一套「Harness 实际会读的文件」收进 GUI 左侧边栏的一个面板:左侧是全局与各工作区的文件树,右侧是纯文本编辑器,保存后写下的字节就是下个会话 agent 会读到的内容。维护者为 icrefin,在 SkillHub 目录中归类为客户端插件;当前发布版本为 v0.1.0,面向 dsh 0.2.0-rc.2 生态。

这是什么

一句话:在 DeepSeek Harness 图形界面里,集中编辑用户全局与各工作区对应的 AGENTS.md,路径解析规则与官方包 @deepseek-ai/dsh-agent-instructions 一致。

插件不提供 Loader 配置项,也没有独立设置页——磁盘上的文件本身就是状态。

核心功能

界面与入口

  1. 侧边栏图标栏新增一行 Agent Prompt,位置在 Schedules 正下方(sidebar.panellist,id: 'agentPrompt',order: 11)。
  2. 点击后打开 Agent Prompt 主页面:左侧树列出 GLOBAL(User-global) 与每个已注册 WORKSPACES 节点,带工作区过滤;右侧为等宽字体的纯文本编辑区(无 Markdown 预览、无语法高亮)。
  3. 每个节点展示解析后的绝对路径;文件尚不存在时标记为 not created,保存时会创建文件及缺失的父目录。

编辑哪些文件

作用域 解析规则
用户全局 $DSH_HOME/AGENTS.md,未设置时回退到 ~/.dsh/AGENTS.md(空字符串的 $DSH_HOME 视为未设置)
某个工作区 从已注册工作区目录向上查找,直到第一个含 .git 的祖先目录;目标文件为 <该目录>/AGENTS.md。若一路无标记,则止于工作区目录本身

Monorepo 中若工作区目录与 Git 仓库根不一致,树节点显示的是仓库根,而不是包目录。

范围说明: 面板只提供 AGENTS.md。加载器在项目链各层还支持 CLAUDE.md、AGENTS.local.md、CLAUDE.local.md,本插件刻意不编辑这些文件。

编辑器操作

操作 快捷键 / 说明
Save Ctrl+S(macOS 为 ⌘S),全页有效;草稿与磁盘一致前按钮禁用
Reload 丢弃草稿并重新读盘;有未保存修改时会确认
Undo / Redo 系统原生撤销;本地历史,连续输入折叠为一步
Wrap 软换行开关,偏好保存在 localStorage

切换文件或关闭页面前,若有未保存修改会提示。剪贴板依赖系统快捷键(Ctrl+C / Ctrl+V 等),面板不提供重复按钮。

宿主 HTTP API(供集成或排查)

路由注册在 ctx.webServer,并带仅限回环访问限制;写操作会改写 agent 读取的指令文件,不宜在暴露于局域网的 dsh web 部署中开放。请求体上限为 4 MiB。

GET  /api/agent-prompt/tree
GET  /api/agent-prompt/file?key=global|ws:<workspaceId>
POST /api/agent-prompt/file   { key, content }

key 为 global 或 ws:<workspaceId>,工作区 id 必须已在 DSH 注册;未知 id 返回 404。

安装与启用

桌面 profile 由 Electron 应用管理,不能用 dsh plugin add 安装(该命令会拒绝此 profile)。应通过 Settings → Plugins(或插件管理器)添加本地打包产物。

从源码构建并打包:

pnpm install
pnpm build                              # tsc -> lib/, tsdown -> lib/client.js
npm pack --pack-destination dist        # dist/dsh-agent-prompt-0.1.0.tgz

在 Plugins 页面添加 dist/dsh-agent-prompt-0.1.0.tgz。bundle 会写入 profile 的 dsh.profile.bundles;cordis.patch.yml 挂载宿主侧,dsh.client manifest 加载浏览器侧。

运维上两点:

  1. 同一版本号重装不会替换已解压内容。 若在同一版本下重新构建了 tarball,需先从 profile 移除该 bundle 再安装,或提高 package.json 中的版本号。
  2. 首次安装通常无需重启;之后若改动涉及宿主侧路由等,需重启 DSH 进程。 浏览器 bundle 会随 revision 热更新,宿主 ESM 在进程启动时加载,与 @deepseek-ai/dsh-hmr 文档描述一致。若条目报 failed to import,可尝试重启。

构建环境要求 Node >= 22.17.0(见仓库 package.json 的 engines)。

典型用法

  1. 启动已安装插件的 DSH 桌面应用,在左侧图标栏选择 Agent Prompt。
  2. 在树中选择 User-global(例如 ~/.dsh/AGENTS.md)或某个工作区节点,在右侧编辑通用或项目级 agent 指令。
  3. 按 Save 或 Ctrl+S 写入;状态栏会反映行数、字符数及是否已保存。
  4. 新开 agent 会话时,Harness 按 @deepseek-ai/dsh-agent-instructions 规则加载刚写入的内容。

若需放弃本地修改,使用 Reload;若在外部编辑器改过同一文件,应 Reload 后再编辑,否则 Save 会直接覆盖(面板不做 mtime 合并)。

适用场景与注意

适合谁: 经常在多个 DSH 工作区之间切换、需要维护全局与各仓库 AGENTS.md 的开发者;希望在不离开 Harness 窗口的情况下核对「agent 下次会话实际读到的路径与内容」的用户。

权限与安全: 插件以当前 dsh 进程权限运行。写路由可创建或覆盖本机上的 AGENTS.md;README 指出这些 API 对回环地址可达,且不受 SPA ?token= 启动令牌保护(具名路由先于需认证的 SPA 回退匹配)。安装前应阅读 GitHub 仓库 源码与 MIT LICENSE。

其他限制:

  • 页面打开期间不会自动感知外部对同一文件的修改;保存即覆盖。
  • 未注册 workspaceRegistry 时,全局文件仍可用,按工作区的目标可能返回 503。
  • 若在 agent-instructions 配置中固定了与 $DSH_HOME || ~/.dsh 不同的 dshHome,面板显示路径可能与加载器不一致(默认组合仅设置 maxBytes,一般无此问题)。

DSH 社区奉行「一切皆插件」;SkillHub 目录 是独立社区站点,与 DeepSeek / 幻方无官方从属关系。

参考链接

若你已在 Harness 里用 AGENTS.md 约束 agent 行为,把编辑入口收进侧边栏,可以减少在外部编辑器与终端路径之间来回切换的次数。

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

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

Xiaoye