dsh-commands
Verified@etby-studio/dsh-commands · v0.2.0 · MIT
Filesystem slash-command discovery for DeepSeek Harness UIs
Install
dsh plugin add @etby-studio/dsh-commands Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Creators
Readme
dsh-commands
English | 中文
面向 DeepSeek Harness UI 的文件系统 slash 命令发现。
本插件把 <dshHome>/commands 下的每个 Markdown 文件注册为一条 slash 命令,对齐 @deepseek-ai/dsh-skill-filesystem 的用户根布局:文件名(去 .md)即命令名,YAML frontmatter 提供描述,正文是命令执行时的指令。宿主 watcher 保持注册与目录同步:新增、修改或删除命令文件无需重启即可更新注册表,注册表自身的 commands/change 事件会刷新在线发现 UI。
它是 DeepSeek Harness 命令注册表(ctx.commands,@deepseek-ai/dsh-commands)的插件。
安装
从 npm 安装:
dsh plugin add @etby-studio/dsh-commands
本地开发(构建产物 lib/ 不入库;克隆后先构建):
pnpm run build
dsh plugin add /path/to/dsh-commands
本包声明了 dsh.bundle.patch(cordis.patch.yml),因此 dsh plugin add 会把它作为 profile
配置层安装,并由该层自行插入插件行——不需要再手工编辑 cordis.patch.yml。
不要同时在 $DSH_HOME/profiles/<name>/cordis.patch.yml 插入同一行:重复的同一 id 会成为重复 Loader 条目。
dsh plugin add 会拒绝没有 dsh.bundle 的包;DSH 还要求组合包的每个 @deepseek-ai/dsh-*
peer 版本范围匹配运行时版本,因此本版本面向 dsh 0.2.0-rc.2(peers 为 ^0.2.0-rc.2)。
启动后,<dshHome>/commands 下的每个 *.md 文件都会成为 slash 命令(dshHome 默认为 $DSH_HOME 或 ~/.dsh)。
命令文件格式
每个命令一个 Markdown 文件;文件名 stem(去 .md)即命令名,小写 ASCII,含字母、数字、_ 或 -,符合 parseCommand():
---
description: 执行计划
---
## 流程
1. 回顾计划
2. 创建任务列表
description(必填)— 显示在命令发现 UI。- 正文 — 命令执行时提交给模型的指令。
非法文件(缺 frontmatter、description 为空、名字非法、正文为空)带警告跳过、永不注册。
执行
命令处理器不会隐式把正文发给模型。/name [参数] 时读取当前正文并向接收 Agent 提交一条用户消息:
- 参数在空行后追加(
/go 目标描述→ 正文 + 空行 +目标描述)。 - 正文含
$ARGUMENTS占位符时用参数替换。
每次执行都重新读取正文,文件编辑即时生效、无需重启。
冲突
文件命令是低优先级:其他插件已注册同名时,该文件带警告跳过,程序化注册胜出(存续期间不补位)。
监听
已存在的根用 Chokidar 监听(realpath 锚点、depth: 1、awaitWriteFinish 稳定性)。缺失的根从最近存在的祖先用 fs.watchFile 探测,因此之后创建 ~/.dsh/commands 仍能挂上。根删除注销全部命令并退回探测;重建重新扫描。commands/change 由注册表自身发出。
配置
| 字段 | 默认值 | 含义 |
|---|---|---|
dshHome |
$DSH_HOME 或 ~/.dsh |
配置根;扫描其下 commands。 |
commandDirs |
[] |
在 <dshHome>/commands 之后扫描的额外命令根。 |
watch |
true |
监听命令根以更新注册。 |
watchUsePolling |
false |
改用 Chokidar 轮询而非原生事件。 |
watchStabilityThresholdMs |
200 |
Chokidar 事件的稳定写入窗口。 |
watchPollIntervalMs |
100 |
轮询/稳定与缺失路径探测间隔。 |
watchFollowSymlinks |
true |
监听根时跟随符号链接。 |
开发
pnpm install
pnpm run build # tsc → lib/
pnpm run typecheck
pnpm run test # 30 个测试:发现、watcher、真实 Loader 组合
@deepseek-ai/* 包是 peer 依赖,运行时从 dsh 安装解析;测试针对已发布的 npm 版本运行(当前 dsh 0.2.0-rc.2)。
许可证
MIT