前言¶
在 DeepSeek Harness(DSH)里和模型协作时,项目约定和全局工作原则往往写在 AGENTS.md 里。常见做法是手动打开编辑器或在外部工具里改文件,再切回客户端继续对话。路径记错、误覆盖已有规则、或全局与项目规则混在一处,都会增加维护成本。dsh-agents-md 是 DSH 的客户端插件,把两类规则的查看与保存嵌进现有界面:会话标签行编辑当前项目下的 AGENTS.md,设置页维护对所有项目生效的 ~/.dsh/AGENTS.md。
这是什么¶
dsh-agents-md(npm 包名 dsh-agents-md,仓库 Tkxyz1122/DSH_Agents_md)由维护者 Tkxyz1122 发布,分类为客户端插件。它只读写上述两个目标文件,不改动 CLAUDE.md、.cursorrules 等其它规则文件;接口仅接受本机回环、同源请求,不联网、不收集数据。插件以当前 DSH 桌面客户端进程权限运行,安装前宜自行查看仓库源码与 MIT 许可证。
社区目录页:skillhub.cn 上的 DSH_Agents_md。该目录为社区站点,与 DeepSeek / 幻方无官方从属关系。
两个入口与固定首行¶
下面介绍插件在界面上的两个入口,以及保存时如何处理标题行。
项目规则:会话标签行右侧按钮(与「对话 / 轨迹」同字号),打开弹层读取并编辑当前对话所在项目目录下的 AGENTS.md。弹层顶部可手动改项目路径,改完后需按回车重新读取。
全局规则:客户端「设置」页左侧独立分区,编辑 ~/.dsh/AGENTS.md。
两个编辑器共用一套体验:首行固定标题不可改、正文可编辑、Ctrl+S 或点保存写盘。保存时由宿主拼回固定首行,避免重复 H1;若已有文件首行是别的 H1,会被替换为下表中的固定行,其余正文原样保留。
| 范围 | 固定首行 |
|---|---|
| 全局 | # 工作原则(所有项目生效) |
| 项目 | # 工作原则(当前项目生效) |
已有规则优先:打开编辑器只读目标文件,不写盘。文件存在则展示现有内容,不会用默认模板覆盖。只有文件不存在时才在正文区预填内置默认规则,且必须点保存才会创建文件。安装插件、打开弹层或切换会话都不会自动写任何文件。
写入策略与项目目录定位¶
一次编辑按「先读、后写」执行。新建时保存请求带 createOnly;写盘前若发现目标位置已有文件(例如另一窗口刚创建),返回 409 并停止覆盖,项目弹层会自动重新读取,设置页会提示重新读取。项目弹层里改了目录但未按回车重新读取时,保存会被拒绝,避免把 A 项目的规则写到 B 项目。写入采用原子方式(先写临时文件再改名),单文件内容上限 1 MB。
项目目录默认跟随当前打开的对话。弹层打开时宿主按顺序尝试:手填目录(最高优先级)→ 窗口标题对应会话在 ~/.dsh/storages/session_projcache 中的 cwd → workspace.json 映射的最近写入会话 → 最近更新的工作区。标题重复时可能取最近写入的一份;定位不准时在弹层顶部改路径并按回车重新读取。
全局规则与项目规则互不干扰;项目内规则更具体,在模型侧通常优先于全局原则(具体优先级由 DSH 与模型上下文拼装决定,插件只负责本地文件的读写)。
安装与启用¶
两种方式任选其一;装完后必须完全退出客户端(含托盘)再重新打开才生效。当前 package.json 标注版本 1.0.3,与 DSH 0.2.1-rc.3 标注为 compatible。
方式一:从 GitHub 安装(推荐)¶
在客户端「插件」页右上角点「添加插件」,输入仓库地址后点「安装」:
https://github.com/Tkxyz1122/DSH_Agents_md
也支持简写:
github:Tkxyz1122/DSH_Agents_md
也可以在 profile 目录执行(命令行环境具备 pnpm 时):
cd "$env:USERPROFILE\.dsh\profiles\desktop"
pnpm add github:Tkxyz1122/DSH_Agents_md
装好后 node_modules\dsh-agents-md 为实体副本,不依赖源码目录位置。升级可在同一 profile 目录执行 pnpm update dsh-agents-md,或在客户端「插件」页重装,再完全重启客户端。
方式二:本地目录链接(改插件代码时用)¶
将仓库放到本地目录后,用 junction 链入桌面 profile 的 node_modules,并在 package.json 的 dependencies 与 dsh.profile.bundles 中登记 dsh-agents-md。此方式始终读取源码目录,改完 assets/agents-widget.js 后刷新页面即可;改宿主逻辑需完全重启客户端。详细步骤见仓库 README。
典型用法¶
经过上面的安装与重启,可按下面步骤日常使用。
- 打开任意会话,点标签行右侧「项目规则」。路径默认为当前对话项目,可在弹层顶部修改并按回车重读。已有
AGENTS.md则编辑后保存更新;没有则编辑预填默认正文后保存创建。 - 打开「设置 → 全局规则」,编辑并保存
~/.dsh/AGENTS.md。 - 编辑过程中随时
Ctrl+S保存;插件不会在未保存时写盘。
目标文件不存在时,编辑器预填的正文示例如下(固定首行单独写入,不会自动保存)。
全局默认正文要点:通用(先看清现状再动手)、文件与临时目录约定、交付说明、安全边界。
项目默认正文要点:一句话项目说明占位、文件与 _Temp/ 约定、禁止事项占位。完整模板见仓库 README「默认规则」一节;开发时可改 lib/index.js 中的 DEFAULT_GLOBAL_BODY 与 DEFAULT_PROJECT_BODY。
实现要点与限制¶
插件通过 Cordis bundle 挂载:宿主提供 /dsh-agents/state、/dsh-agents/save、/dsh-agents/widget.js 等路由;assets/agents-widget.js 注入标签行按钮与项目弹层;lib/client.js 注册设置页「全局规则」分区。需要带 settings.section 槽位和 webserver/index-inject 注入点的 DSH 桌面客户端;README 说明 dsh web 形态保留注入逻辑但未做完整回归。
同一份已有 AGENTS.md 被多窗口同时编辑时没有文件锁,后保存会覆盖先保存;首次创建有存在性校验。多窗口协作时宜约定谁先改、或改前再打开编辑器确认内容。
结尾¶
dsh-agents-md 把 AGENTS.md 的维护收进 DSH 客户端两处固定入口,强调只读打开、显式保存、已有文件不被默认模板覆盖,适合需要在对话旁快速维护项目与全局工作原则的 DSH 桌面用户。