按当前任务自动挑选并注入最合适的技能,无需点名或手动插入;同一技能每次会话只注入一次,并可从有效操作中积累经验。
安装
# Release 预构建包
dsh plugin --profile web add "https://github.com/474885697-alt/dsh-kit/releases/download/v0.1.0/dsh-auto-skill-0.2.0.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:474885697-alt/dsh-kit#path:/plugins/dsh-auto-skill
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
按任务内容自动选出合适的技能并注入,不需要在对话里手动点名。
版本 0.2.0 | 包名 dsh-auto-skill | 仅宿主侧(无客户端代码)| MIT
它解决什么问题
DSH 的技能默认要自己调用(或靠描述被模型想起来)。任务一多,经常是「明明装了却没用上」。
这个插件在每一步开始前看一眼任务文本,用确定性关键词打分(不是让模型猜)挑出最匹配的本机技能,把它的正文包成 <skill_content> 注入。
注入只发生一次:同一会话里同一个技能不会被反复塞进去,避免上下文膨胀。
用久了的技能还会积累经验:learned.md 记录有效做法,下次加载时一起带上(见下)。
安装
plugin_manager install_bundle target="C:/Users/03/Documents/deepseek-harness/default-workspace/plugins/dsh-auto-skill"
装完即可用,工具会出现在工具列表里;用 plugin_health 可以体检清单。要卸载就用插件页的开关。
工具
| 工具 | 用途 | 参数(* 表示必填,? 表示可选) |
|---|---|---|
skill_learn |
把一条有效做法记到技能名下(写入 learned.md,不改 SKILL.md) | skill stringmethod stringevidence? string |
skill_learnings |
列出各技能积累了多少条有效做法 | skill? string |
skill_forget |
清空某技能积累的做法(需 confirm="CLEAR") | skill stringconfirm string |
用法示例
示例:说人话就行
帮我把这段中文润色一下,去掉翻译腔
# 匹配到 humanizer-zh,自动注入;你不需要写「用 humanizer-zh」
示例:查看会让哪个技能生效
GET /api/dsh-auto-skill/match?text=帮我写一章小说,悬疑风格,主角是侦探
# → [{ name: "chinese-novelist", score: 8 }]
HTTP 路由(仅本机 loopback)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/dsh-auto-skill/match |
?text=<任务文本>&dir=<目录>,返回打分与入选技能(纯诊断,不注入) |
| GET | /api/dsh-auto-skill/learned |
?name=<技能名>,返回该技能积累的做法摘要 |
| GET | /api/dsh-auto-skill/health |
返回 version 与生效的 teamPolicy/teamAllow/teamExclude,用于确认 0.3.x 已加载 |
配置
- 插件配置(
cordis.patch.yml里config:段):enabled、maxSkills(默认 1)、minScore(默认 8)、minShared(默认 2)、maxChars、debug。 - 学习相关:
learnEnabled、autoLearn、learnInjectChars(默认 1800)、learnMaxEntries(默认 60)、learnMaxBytes(默认 48 KB)。 - 打分规则:技能名整名命中 +60;名字分词命中 +8;描述关键词按稀有度加权(
max(2, 6/df));至少命中minShared个词才算强匹配,再比minScore。
数据存在哪
- 日志:
~/.dsh/auto-skill.log(JSONL,超过 512 KB 自动清空,可用debug打开逐步日志)。 - 积累的做法:
~/.dsh/skills/<技能名>/learned.md(不改SKILL.md)。
安全边界
- 只读任务文本与本机技能目录;不改会话历史,不覆盖
SKILL.md。 - 注入内容带
source.kind = "auto-skill",DSH 不会把它当成用户消息重复处理。 - 任何异常都被吞掉并原样返回决策,不会让一步失败拖垮整轮。
团队 / 子会话策略(0.3.0)
团队会话(header.origin === "subagent"、带 parentSession、或 delegationDepth > 0)可以关闭或收窄自动注入;普通个人会话完全不受影响。
| 配置键 | 取值 | 说明 |
|---|---|---|
teamPolicy |
inherit(默认)/ off / allow / exclude |
inherit 保持旧行为(teamExclude 仍生效,teamAllow 不生效);off 团队会话不自动注入;allow 只注入 teamAllow 名单;exclude 注入除 teamExclude 外的技能 |
teamAllow |
技能名数组 | 仅 teamPolicy: "allow" 时生效 |
teamExclude |
技能名数组 | 团队会话中始终排除(含 inherit),优先于 teamAllow |
环境变量可覆盖(显式配置优先):DSH_AUTO_SKILL_TEAM_POLICY、DSH_AUTO_SKILL_TEAM_ALLOW、DSH_AUTO_SKILL_TEAM_EXCLUDE(逗号或空格分隔)。
示例(团队会话完全关闭自动注入):
- id: auto-skill
config:
teamPolicy: "off"
显式 /skill 或 skill 工具加载不受该策略影响。团队会话的匹配、学习与日志仍照常工作,只是不把技能正文注入消息。
已知行为
- 本地 21 个技能参与匹配;内置技能(office 系等)只在不带 scope 的快照里可见。
- 极短消息(<
minMessageChars,默认 8 字)不触发匹配,避免「继续」「好」这类词误命中。
验收
- 假 ctx 单测 18/18;真宿主
GET /api/dsh-auto-skill/match、/learned均 200。
宿主兼容性
- Web / 桌面宿主:HTTP 路由与工具都可用。
- headless / CLI(没有 webServer 服务):路由自动跳过,工具照常注册。
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-skill-explorer★ 9959
技能中心:按来源分级浏览已加载的全部 skill,启用/禁用模型调用、创建新技能、删除进可恢复回收站。
iflytek/skillhub#dsh★ 5358
在 DeepSeek Harness 内浏览、搜索 SkillHub 技能,并管理本地技能的安装、更新和卸载。适配 DSH 0.2.0-rc.2 与 0.2.1-rc.2,暂不兼容 0.2.1-rc.3。
QingYunA/answer-me-with-html★ 5085
把回答做成一页可视化 HTML:模型只写简短的 Markdown 草稿,随包附带的 `am` 命令行生成页面,支持流程图、时序图、树、时间线、ER 图、表格和提示框。
hyhmrright/brooks-lint★ 1556
提供六个代码质量技能,涵盖代码审查、架构审计、技术债、测试质量、健康看板与修复。
GanyuanRan/Aegis★ 1411
面向编码 Agent 的软件工程方法包,提供基线优先规划、系统化调试、提示词卫生、完成前验证,以及修复/退役双轨跟踪技能。
superdesigndev/superdesign-skill★ 935
在 Superdesign 画布上做 UI 与营销图的设计技能:先读代码库拿上下文、抽取现有设计系统,再通过 Superdesign CLI 生成并迭代可分支的设计稿、流程页与可复用组件。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。