dsh-skill-manage:给 DSH 智能体增加技能创建与管理能力

前言

在 DSH 这类插件化框架里,智能体可以在会话中执行复杂流程。如果只保留结果,不保留“怎么做”,下次遇到类似任务时仍可能重复试错。dsh-skill-manage 针对这个问题,为 agent 提供 skill_manage 工具,用于创建、修补、禁用、删除技能,并在删除和修改时加入保护。

这是什么

dsh-skill-managefuxin123z 维护的 DSH (DeepSeek Harness) 插件,许可证为 MIT。它把程序性记忆落到可维护的技能文件上,让 agent 能通过 skill_manage 工具管理自己的技能。

仓库地址:

https://github.com/fuxin123z/dsh-skill-manage

核心功能

skill_manage 工具

插件提供 skill_manage 工具,支持以下动作:

  • create
  • patch
  • edit
  • delete
  • disable
  • enable
  • pin
  • unpin
  • write_file
  • remove_file
  • list

作用域

支持两种 scope:

  • scope: 'user':写入 ~/.dsh/skills,面向所有工作区
  • scope: 'project':写入 <projectRoot>/.dsh/skills,面向当前工作区

技能布局

支持两种 on-disk 布局:

  • 目录技能:<root>/<name>/SKILL.md
  • 单文件技能:<root>/<name>.md

禁用与启用

disable / enable 通过切换 SKILL.md frontmatter 中的 disable-model-invocation 实现。

固定与取消固定

pin / unpin 通过切换 frontmatter 中的 pinned 标志实现。pinned: true 会阻止删除。

删除保护

skill_manage 的删除操作受以下限制:

  • 仅限带 created_by: agent 标记的技能可删除
  • pinned: true 阻止删除
  • 技能根路径限制
  • 拒绝 symlinked skill directories
  • patch / edit 不可隐式重命名

校验与写入

插件对技能内容做校验:

  • 名称正则和长度校验
  • frontmatter 必须有 name + description
  • description ≤1024 字符
  • SKILL.md ≤100k 字符
  • 辅助文件 ≤1 MiB
  • 辅助路径限制在 references/ templates/ scripts/ assets/

写入方面:

  • 使用 temp + rename 原子写入
  • 支持 CRLF-safe frontmatter 解析
  • 基于 skill-filesystem 的 hot-reload watcher

安装与启用

推荐安装

执行下面命令,把插件添加到 web profile:

dsh plugin --profile web add dsh-skill-manage

手动安装

在 DSH profile dir 执行:

npm install dsh-skill-manage

这一步添加插件依赖。然后将 dsh-skill-manage 加入 package.jsondsh.profile.bundles,再重启 dsh web

插件无需配置。日志中出现:

[dsh-skill-manage] ready

表示插件已加载。

典型用法

安装后,agent 可以调用 skill_manage 工具对技能文件进行操作:

  1. create 新建技能
  2. patch / edit 修改技能
  3. write_file / remove_file 维护辅助文件
  4. disable / enable 切换技能状态
  5. pin / unpin 决定是否允许删除
  6. list 查看技能

如果只想暂时停用某项技能,可以先用 disable;如果某项技能需要避免被删除,可以用 pin

开发与测试

开发或调试时,可以运行:

node test.mjs

这一步运行 guard-level smoke tests。再运行:

node loadtest.mjs

这一步运行 host-shape contract 和 real round-trip 测试。

限制

当前 v0 有以下限制:

  • 嵌套分类目录 <root>/<category>/<name>/SKILL.md 不被列出或操作
  • frontmatter 不支持 YAML flow collections,例如 tags: [a, b] 保持为原始字符串
  • project scope 假设每个会话只有一个根,即 session cwd 的 git root

适用场景与注意

适合需要让 DSH 智能体把流程沉淀为技能文件,并对技能创建、修改、删除做约束的开发者。

注意:

  • 插件以当前 dsh 进程权限运行,会读取和写入 ~/.dsh/skills<projectRoot>/.dsh/skills 下的技能文件。
  • 安装前应检查源码、依赖与 MIT 许可证。

链接

  • GitHub:https://github.com/fuxin123z/dsh-skill-manage
羽毛球分组比赛记分
小程序二维码

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

小夜