dsh-agent-extension:把项目与用户目录里的命令、技能与路径规则接入 DSH

前言

在 DeepSeek Harness(DSH)里做智能体工作流时,常见做法是手写 slash 命令、维护技能清单,或在对话里反复粘贴同一套规范。若规范分散在仓库的 .dsh / .agents 目录和用户主目录下,DSH 默认并不会自动扫描并注册它们。维护者 SugarFatFree 提供的 dsh-agent-extension 是一个工作流类 DSH 插件:从项目与用户配置目录发现可复用的 Markdown slash 命令、skills,以及按路径生效的 rules,并按文档约定的优先级去重后挂到 DSH 上。

下面介绍它的定位、能力、安装步骤和典型写法。事实以 GitHub 仓库 README 为准;社区目录页见 SkillHub 插件页。

这是什么

dsh-agent-extension 是面向 DSH web profile 的插件(当前版本 0.1.5,许可证 MIT)。一句话:DeepSeek Harness plugin for workspace commands, skills, and path-scoped rules.

它解决的是「定义已在磁盘上,但未进入 DSH 会话」的问题:把 commands、skills、rules 目录下的 Markdown 发现出来,注册为 slash 命令、通过 DSH skills 提供方暴露技能,并在匹配的工作区文件被读写改之后注入路径规则。

核心功能

已核实能力如下(摘自官方 README):

  • 同时扫描项目级与用户级的 commands、skills、rules。
  • 兼容 .dsh 与 .agents 两套目录约定。
  • 重复定义按文档优先级解析,行为可预期。
  • Markdown 命令注册为 DSH slash 命令;skills 走 DSH skills provider API;匹配的路径规则在相关文件活动后注入。
  • 每个发现根下支持最多 六层嵌套目录。

会话中的项目根:向上找到最近包含 .git 的祖先;若没有 Git 仓库,则用会话工作目录。

类型 项目根 用户根
Commands <project>/.dsh/commands/**、<project>/.agents/commands/** ~/.dsh/commands/**、~/.agents/commands/**
Skills <project>/.dsh/skills/**、<project>/.agents/skills/** ~/.dsh/skills/**、~/.agents/skills/**
Rules <project>/.dsh/rules/**、<project>/.agents/rules/** ~/.dsh/rules/**、~/.agents/rules/**

冲突时先命中者优先,顺序为:

  1. 项目 .dsh
  2. 项目 .agents
  3. 用户 ~/.dsh
  4. 用户 ~/.agents

命令以命令名、技能以 skill 名、规则以 rules 目录下的相对路径作为冲突键。

安装与启用

环境要求:

  • 已安装 DeepSeek Harness,并启用 web profile。
  • pnpm(DSH 用其管理 profile 插件)。

插件目前仅从 GitHub 分发,未发布到 npm;用 DSH 原生命令安装即可,无需 npm 账号:

dsh plugin --profile web add github:SugarFatFree/dsh-agent-extension

DSH 因 package.json 中声明的 dsh.bundle.patch 识别该包;安装会写入所选 profile,并自动加入 dsh.profile.bundles。

安装后需要重启 DSH Web 进程并刷新浏览器;新建会话或恢复已有会话,以刷新 slash 命令目录。

本地开发时可在仓库根目录执行:

dsh plugin --profile web add .

若修改了本地 file: 依赖,需在 Web profile 目录执行 pnpm install --force 刷新 node_modules,再重启 DSH Web。

典型用法

Slash 命令

commands 根下每个 Markdown 文件对应一条 slash 命令。名称解析顺序:YAML frontmatter 的 name → 形如 # /release - Release 的 H1 → 文件名。

---
name: release
description: Prepare a release
---

Read the release checklist and prepare the release notes.

在会话中输入 /release optional arguments 会开启一轮普通 agent turn,命令正文与参数作为任务说明。

命令目录会被监听;新增例如 .agents/commands/aa.md 后,已打开会话可在不重启 DSH Web 的情况下获得 /aa(命令菜单通过 DSH 的 live command-change 事件更新)。

Skills

技能可以是单个 Markdown 文件,或含 SKILL.md 的目录包。需要标准 frontmatter:name(kebab-case)、description。

---
name: api-review
description: Review API compatibility
whenToUse: Before publishing a changed API
---

Review the changed API surface.

可选字段 disable-model-invocation、user-invocable、metadata 会透传给 DSH。Skills 出现在 DSH Skills 目录与 / 的 skill 来源,而非仅 command 来源;某一发现根内不可读的文件会被跳过,避免挡住其他根下的技能。

路径规则(path-scoped rules)

规则是 rules 根下的 Markdown,且 frontmatter 中 paths 非空;无 paths 的文件(含 README.md)会被忽略。

---
name: frontend-conventions
paths:
  - "code/frontend/**"
  - "web/**"
---

Use the established component and accessibility conventions.

匹配的规则在 agent 成功读、写或编辑匹配的工作区文件之后、下一次模型步之前注入一次。模式相对项目根计算。

验证安装

在 agent 会话中执行内置命令:

/dsh-extension-status

输出包含当前会话工作目录,以及已发现的 commands、skills、rules;项目命令会注册到会话命令目录并出现在 / 菜单中。

适用场景与注意

适合谁: 已在仓库或 ~/.dsh、~/.agents 里用 Markdown 维护命令、技能与团队规范,希望在 DSH Web 会话里自动生效的开发者;需要 .dsh 与 .agents 混用、或项目与用户层叠加且需明确优先级时。

注意:

  • 插件在 DSH 进程权限下运行,安装前请自行审阅 源码与 LICENSE,确认符合你的安全与合规要求。
  • 依赖 @deepseek-ai/dsh-llm(peer,^0.1.5-rc.2)与 chokidar;行为以当前 DSH 与插件版本为准。
  • SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系;安装命令以 README 为准,勿凭插件名自行拼接。

结尾

dsh-agent-extension 把分散在项目与用户目录里的 Markdown 工作流定义接到 DSH:命令进 / 菜单,技能进 Skills 目录,路径规则在编辑相关文件时自动注入。若你正在用 Harness 的 web profile 做团队智能体工作流,可按上文命令安装,用 /dsh-extension-status 核对发现结果。

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

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

Xiaoye