dsh-expert-hub
Expert center: browse and import WorkBuddy experts, create experts with AI, edit role.md and skills, and switch experts per session.
Install
dsh plugin --profile web add dsh-expert-hub
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
DSH Expert Hub · 专家中心
把 WorkBuddy 专家、自建专家、网上导入的专家统一收进 DSH 的同一个专家库,
在设置页里像应用商店一样浏览、导入、编辑,在会话输入框旁一键切换。
这是 DeepSeek Harness(DSH)的社区插件,
不是 DeepSeek 官方产品。


它解决什么
旧版 WorkBuddy 专家插件只能"只读扫描 → 逐个安装 → 再去输入框旁选择",看不到专家详情、
不能新建、不能编辑、不能从网上导入。Expert Hub 重新实现了整条链路:
能力 · 说明
WorkBuddy 专家市场 · 读取本机 WorkBuddy 已落盘的专家(.codebuddy-plugin/plugin.json + agents/*.md),展示头像、职业、分类、技能,一键导入/更新/全部导入
AI 创建专家 · 用自然语言描述你要的专家,AI 先读《DSH 专家创作规范》,再生成 role.md 与必要的技能并写入专家库
AI 代为导入 · 把专家链接、网页内容或一段介绍直接发给 AI,由 AI 读取并整理成专家条目后写入;不再需要填网址、找下载链接
对话内管理 · 直接在会话里说“改一下某专家的提示词 / 加个技能 / 从目录导入技能 / 让我用某专家”,由 expert_manage 工具完成;设置页的专家中心、专家档案和技能区都会提示这条入口
详情即编辑 · 卡片只有「详情」一个入口;打开后头像、名称、职业、role.md、技能在同一页面编辑,点「保存修改」生效
迁移专家 · 详情页可把全局专家整体迁移到某个项目,或把项目专家迁回全局;也可在对话里让 agent 调用 expert_manage 的 migrate 完成
项目级 / 全局专家 · 全局专家在 ~/.dsh/experts;项目专家在 <项目根>/.dsh/experts(随仓库走)。项目页顶部从 DSH 已登记工作区中选择,失效目录禁用;已安装页可按「全部 / 全局 / 项目」筛选,卡片带范围徽章;会话胶囊里也分组展示
技能管理 · 技能卡片式列表,可新增/编辑/删除;「从本机技能库选择」会自动扫描 DSH、Claude Code、Codex、Cursor、WorkBuddy 等技能目录,支持搜索、按来源筛选与多选导入,不再需要手填路径;高级选项仍保留手动路径
删除与回收站 · 卡片可直接删除(软删除到回收站);回收站可恢复或永久删除
会话内切换 · 输入框旁的专家胶囊:头像 + 搜索 + 当前标记,按 2 列网格分组展示全局/项目专家,选中即挂载“角色提示词 + 全部 skills”;「不用专家」随时退出
选择可恢复 · 选择按会话持久化,DSH 重启或会话恢复后自动重新挂载
实时刷新 · 专家库或 WorkBuddy 来源变化时,打开的下拉/页面通过 SSE 自动更新
界面
专家中心(设置 → 专家中心) · WorkBuddy 市场
 · 
专家档案(详情 + 编辑合并) · 会话输入框旁的专家胶囊
 · 
安装
桌面端(推荐):侧栏 插件 → 添加插件,输入 npm 包名 dsh-expert-hub,安装后重启桌面 App。
终端:
dsh plugin --profile web add dsh-expert-hub
也可以从源码目录安装(开发调试):
dsh plugin --profile web add D:\SystemFiles\Documents\Project\DSH\plugins\dsh-expert-hub
安装后重启宿主(bundles 只在启动时读取),浏览器强刷。
使用
专家中心(设置 → 专家中心)
- 已安装:专家卡片墙,支持搜索、分类筛选、排序;每张卡片直接显示头像、名称、职业、简介和技能图标(一个图标对应一个技能,悬停看技能名),可直接「详情」或「删除」(删除前二次确认,
删除是软删除,移入回收站)。详情与编辑合并成「专家档案」页:头像、名称、职业、role.md 和技能都在
一个页面里改,点「保存修改」生效;技能可增删改,或从本机技能库选择导入。
- 回收站:列出软删除的专家,可「恢复」或「永久删除」(永久删除需二次确认,删除后不可恢复)。
- WorkBuddy 市场:本机 WorkBuddy 里已"召唤"的专家。首次使用需在 WorkBuddy 专家中心
点击「召唤」,专家落盘到 ~/.workbuddy/plugins/marketplaces/experts/plugins 后这里就能看到。
支持单个导入、批量导入、发现源更新后的「更新」。
- AI 添加:页面只保留「让 AI 帮我创建专家」一条路——描述需求,AI 按《DSH 专家创作规范》
生成 role.md 与必要的技能并写入;不再有手动填表或本机路径导入。
从本机技能库添加技能
打开专家档案 → 技能 → 从本机技能库选择。插件会自动扫描本机常见的技能目录,按来源分组列出,
不需要再记路径:
- DSH:
~/.dsh/skills、~/.agents/skills,以及当前项目的.dsh/skills、.agents/skills - 其他 Agent:Claude Code、Codex、Cursor、Gemini CLI、GitHub Copilot、Qwen Code、OpenCode、
Windsurf、Cline、Roo Code、Kiro、Trae、Augment、Continue、Amp、Aider、Goose、WorkBuddy、CodeBuddy
- 其他遵循
~/.<agent>/skills或~/.config/<agent>/skills约定的目录
选择器支持按名称/描述/路径搜索、按来源筛选、多选导入;已经在专家里的技能会标记「已添加」并禁用。
扫描范围外的技能仍可在「高级:手动输入技能路径」里粘贴目录或 .md。也可以直接在对话里说
“给「像素君」加一个技能,内容是…”,由 expert_manage 完成。
AI 创建专家(推荐)
在任意会话里直接用自然语言描述即可:
创建一个「周报助手」:帮我整理零散工作记录,输出 Markdown 周报表格, 语气简洁,再加一个“周报检查清单”技能。
AI 会先调用 expert_manage({action:'guide'}) 读取创作规范(身份 / 工作流程 / 输出格式 /
质量检查 / 边界;技能只在确有可复用流程时创建),再调用 expert_manage({action:'create'})
写入;需要的话可以用 activate:true 立即在当前会话启用。
AI 代为导入(外部来源)
不需要再走"填网址 → 下载 → 解压 → 导入"的流程。在任意会话里直接把来源发给 AI 即可:
帮我导入这个专家:https://example.com/some-expert
把下面这段专家介绍整理成一位专家并导入: (粘贴网页正文 / 专家说明 / SKILL.md 内容)
AI 的处理流程:
1. 读取:网页正文用 web_fetch 读取;专家压缩包、本机目录、单个 .md 交给插件读取;
2. 整理:归一成一位专家的完整条目——中文显示名、职业/称号、role.md 角色提示词(必要时附技能正文);
3. 写入:调用 expert_import({expert:{…}}) 写入 ~/.dsh/experts/<id>/,并给出来源记录;
4. 选用(可选):用户说"导入并直接用"时传 activate: true,立刻在当前会话启用。
来源里有多位专家时,AI 会先问你要导入哪几位,再逐个写入;已有的同名专家不会被覆盖,会自动改用 -2 后缀。
对话内管理专家
除了设置页,也可以直接让 agent 改专家:
列出专家库里有哪些专家 看看「电脑管家」的角色提示词 把「电脑管家」的职业改成“硬件工程师”,角色提示词里加上二手配件避坑 给「像素君」加一个技能:设计评审清单,内容是…… 从 D:\skills\my-skill 导入技能到「像素君」 让我用「码小序」
对应模型工具 expert_manage,支持 list / get / create / update / add_skill / remove_skill / import_skill / use。
删除专家仍只在设置页操作,避免对话里误删。
需要用项目级专家时,让 AI 带 library="project",例如:
给这个项目建一个「本仓库代码评审」专家,用项目级 把当前项目的「接口约定」专家角色提示词补上错误码规范
项目根目录优先使用 DSH 工作区注册表里当前会话所属的 workspace;找不到时退回“最近的包含 .git 的祖先目录”,
再退回当前工作目录。项目专家存于 <项目根>/.dsh/experts;全局专家仍存于 ~/.dsh/experts。
项目页顶部可以从所有已登记工作区里切换查看,目录失效的工作区会禁用。
会话内切换
输入框左侧的专家胶囊会显示当前专家头像与名字(未选择时显示「专家」)。点开后:
- 搜索已安装专家,点选即切换,当前专家带 ✓;
- 「不用专家」移除当前会话的专家角色与 skills;
- 切换不会打断正在进行的回复,在下一个模型请求前生效。
命令行同样可用:
/expert 列出专家库 /expert <id> 切换当前会话专家 /expert off 取消 /expert info <id> 查看专家详情
数据与格式
专家库固定在 ~/.dsh/experts/<id>/($DSH_HOME 优先):
<id>/ ├─ expert.yml # 元数据(schema 1,中文优先,含来源/分类/快捷提示词) ├─ role.md # 角色提示词正文 ├─ skills/<name>/SKILL.md# 0..N 个技能,资源文件随目录复制 ├─ avatar.png # 可选 └─ .expert-source.json # 导入来源 + 内容指纹(仅导入的专家有)
兼容旧版 dsh-workbuddy-expert 导出的专家文件夹(expert.yml 只有
id/display_name/description/order 也能识别)。插件自己的会话选择记录与临时文件在
~/.dsh/expert-hub/。
安全边界
- 专家只贡献提示词与技能文本:
scripts/、.mcp.json、agent.cordis.yml等可执行内容一律不导入、不执行; - 导入的 Markdown 会做 CRLF/BOM 归一与
{{...}}模板消毒,避免破坏宿主提示词插值; - 专家库写入全部限制在
~/.dsh/experts内,ID 只允许[a-z0-9-],删除前校验目录归属; - HTTP 接口仅监听 loopback、只接受同源 POST、请求体有上限、响应
no-store; - 压缩包读取拒绝内网/回环地址,zip 解压防目录穿越,跳过符号链接与可执行位文件;
- 删除专家是软删除:移到
~/.dsh/expert-hub/trash/,误删可从该目录恢复; - AI 导入写入的专家同样是纯提示词与技能文本:模型只负责整理,来源里的"指令"不会被当作插件行为执行;导入不会自动启用,除非用户明确要求
activate。
配置
默认 WorkBuddy 来源目录写死在 bundle patch 里,需要改时编辑
cordis.patch.yml 的 config.sourcePath(支持 ~),重启宿主生效:
- id: expert-hub
name: dsh-expert-hub
config:
sourcePath: ~/.workbuddy/plugins/marketpla
…(truncated)Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::8,最后更新 2026-10-26