🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话级专家选择器 me9rez/dsh-workbuddy-experts

DeepSeek Harness
me9rez76 天前有提交已提供中文文档扫描:含敏感能力

为每个会话独立选择专家并注入人设与技能

28/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add me9rez/dsh-workbuddy-experts
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · skill
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/07·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 76 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(dependency_conflict · 2026/10/7) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 11 处,展示前 11 条)
  • 读取本地文件
    lib/catalog.js:39
    names = await readdir(rootDir);
  • 读取本地文件
    lib/catalog.js:58
    raw = await readFile(join(pkgRoot, '.codebuddy-plugin', 'plugin.json'), 'utf8');
  • 读取本地文件
    lib/catalog.js:79
    const text = normalizePersona(await readFile(path, 'utf8'), pkgRoot);
  • 读取本地文件
    lib/state.js:25
    const text = await readFile(this.file, 'utf8');
  • 写入本地文件
    lib/state.js:48
    await mkdir(dirname(this.file), { recursive: true });
  • 写入本地文件
    lib/state.js:49
    await writeFile(this.file, JSON.stringify(this.data, null, 2), 'utf8');
  • 写入本地文件
    lib/state.js:76
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    lib/state.js:77
    await appendFile(file, `[${new Date().toISOString()}] ${line}\n`, 'utf8');
  • 发起网络请求
    lib/client/service.js:22
    return fetch(`${BASE}/catalog`).then((r) => parse(r));
  • 发起网络请求
    lib/client/service.js:26
    return fetch(`${BASE}/current?id=${encodeURIComponent(sessionId)}`).then((r) => parse(r));
  • 发起网络请求
    lib/client/service.js:30
    return fetch(`${BASE}/select`, {
扫描于 2026/11/5(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-session@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-skill@deepseek-ai/dsh-skill-filesystem@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 按会话选择专家
  • 注入人设至系统提示词
  • 开放专家捆绑技能
展开完整介绍(136 字)↓

在 DeepSeek Harness(dsh)中复用 WorkBuddy 专家市场:Web 输入框内嵌按会话的「专家选择器」,选中专家后将其人设注入该会话的系统提示词、并把该专家捆绑的技能开放给该会话使用(按会话隔离、无需为每个专家维护预设),选择状态跨刷新/重启持久化。

README

由 DeepSeek 最新模型翻译生成
dsh-workbuddy-experts 在 DeepSeek Harness(dsh)中复用 WorkBuddy 专家市场。每个会话在输入框旁边都会有一个 专家 选择器;选择一个专家后,该专家的「人设(persona)」会被注入到会话的系统提示中(合并模式——dsh 工具链保持不变),且 无需为每个专家维护单独的预设。选择状态按会话持久化,刷新和完整重启后依然保留。 本项目改编自可用的 dsh-agent-teams 插件结构(host + client 打包),并遵循 DeepSeek Harness 插件契约(dsh.bundle.patch + dsh.client)。 工作原理 | WorkBuddy 专家概念 | dsh 中的等价实现(本插件) | | plugin.json 清单 + agents/.md 人设 | 扫描进内存的 ExpertEntry 目录(仅 agent) | | 在会话开始时注入人设 | 全局一段 expert:persona,text 为函数:每步按 context.agent.id 读内存表返回该会话所选专家的人设(order 0,非 complete,保留 harness 身份 + 全部 dsh 工具) |
展开完整文档(README 剩余 1 节)
dsh-workbuddy-experts

在 DeepSeek Harness(dsh)中复用 WorkBuddy 专家市场。每个会话在输入框旁边都会有一个 专家 选择器;选择一个专家后,该专家的「人设(persona)」会被注入到会话的系统提示中(合并模式——dsh 工具链保持不变),且 无需为每个专家维护单独的预设。选择状态按会话持久化,刷新和完整重启后依然保留。

本项目改编自可用的 dsh-agent-teams 插件结构(host + client 打包),并遵循 DeepSeek Harness 插件契约(dsh.bundle.patch + dsh.client)。

工作原理

| WorkBuddy 专家概念 | dsh 中的等价实现(本插件) |
| plugin.json 清单 + agents/.md 人设 | 扫描进内存的 ExpertEntry 目录(仅 agent) |
| 在会话开始时注入人设 | 全局一段 expert:persona,text 为函数:每步按 context.agent.id 读内存表返回该会话所选专家的人设(order 0,非 complete,保留 harness 身份 + 全部 dsh 工具) |
| 「切换专家」 | 更新内存人设表 + 技能 provider invalidate() → 下一次模型调用步骤生效(dsh 每个步骤都重新组装 system prompt) |
| 按会话状态在重启后保留 | SelectionStore ↔ ~/.dsh-workbuddy-experts.json,以会话 id 为键;启动时预填人设表 + 刷技能目录 |
| 技能(该专家的 skills/) | 全局 scope 门控 provider:list(options.scope) → 会话 → 所选专家 → 只返回其技能(按会话隔离,见 ) |
| Web GUI 开关 | ExpertSelect 注入 conversation.input.right,通过 /plugins/dsh-workbuddy-experts/ HTTP 路由与 host 通信 |

范围(v1):仅支持独立专家(expertType: "agent")。团队(teams)和连接器(connectors)会被忽略。

更多文档

- docs/architecture.md — 最终架构
- docs/layout-debug.md — UI 布局/交互排查记录(下拉定位、input 槽位、portal 外点关闭)
- docs/debug-persona-skills.md — 人设/技能"跟随切换"排障记录

目录结构

src/
├── index.ts host 入口:配置/注入/应用 + 接线 ├── catalog.ts 纯逻辑:扫描市场、解析清单、规范化人设 ├── persona.ts 按 agent 的 systemPrompt.section 注入 ├── state.ts 纯逻辑:按会话的选择持久化 └── client/ ├── index.tsx client 入口:插槽注入 ├── ExpertSelect.tsx ├── ExpertSelect.module.css └── service.ts host HTTP 客户端 cordis.patch.yml 将插件挂载进某个 profile 的 host 组合 scripts/verify.mjs 纯逻辑的离线冒烟测试

构建

要求:一份 DeepSeek Harness 源码检出,其 lib 构建产物为最新,以便 @deepseek-ai/* 对等类型可被解析。按照 dsh-agent-teams 开发指南,将你导入的包链接进 node_modules:

npm i # 或 pnpm install(devDependencies:typescript@^5.9、tsdown@0.22、lightningcss、react)
pnpm typecheck # 两个 tsc 程序:host(src)+ client(src/client)
pnpm build # tsc host → tsc client → tsdown(lib/client.js CJS 闭包工厂)
pnpm verify # 离线冒烟测试(纯逻辑,无需 dsh 运行时)

开发期的类型链接针对的是 DSH 源码检出的构建产物(packages//lib/types),而不是已安装的 staging 副本。如果没有 DSH 源码检出,你将无法对 client 包进行类型检查/构建。

安装到 profile 后重启

dsh plugin add 底层用 pnpm 安装,因此可以直接从 GitHub 仓库安装:

从 GitHub 仓库安装(pnpm 会解析 github: 说明符)
dsh plugin --profile add github:me9rez/dsh-workbuddy-experts

或指定分支:github:me9rez/dsh-workbuddy-experts#master 重启 dsh(web 或 headless)—— 新会话会显示专家选择器

本地开发/离线场景也可用本地路径:dsh plugin --profile add /absolute/path/to/dsh-workbuddy-experts。

配置(cordis.patch.yml)

| 键 | 默认值 | 含义 |
| root | ~/.workbuddy/plugins/marketplaces/experts/plugins | WorkBuddy 专家市场所在的路径 |
| stateFile | ~/.dsh-workbuddy-experts.json | 用于按会话保存选择状态的绝对/~ 文件(跨重启持久化) |
| logFile | ~/.dsh-workbuddy-experts.log | 插件自身诊断日志文件(追加写,含选择/注入/技能挂载/agent/created 重放等 [workbuddy-experts] 记录) |
| maxPersonaBytes | 65536 | 人设超过该大小会被带标记地截断 |
| personaOrder | 0 | deployment:persona 插槽的 order |

已验证内容

- ✅ pnpm build 构建通过(tsc host + tsc client + tsdown client bundle); lib/client.js 为正确的 window.__ModuleLoader__.load(...) 形态。
- ✅ 离线:市场扫描(仅 agent 过滤、清单/agenda 解析、人设 + 技能目录发现)、人设规范化(去除 frontmatter、${CODEBUDDY_PLUGIN_ROOT} 展开、未知变量标记)、选择持久化的往返测试(scripts/verify.mjs,node scripts/verify.mjs)。
- ✅ 面向真实市场:扫描 ...\experts\plugins → 找到 5 个独立专家(aihot、fbsir-super-partner、meituan-living-assistant、 remotion-video-generator、senior-developer);团队/不可读目录被排除。
- ✅ 已在 dsh web 实跑验证:选中专家后,会话的 system prompt 人设 与技能 均跟随切换动态更新;未选专家会话看不到他人技能(按会话隔离)。

已知边界(v1)

- 仅单专家:expertType === "agent";专家团(team)与连接器(connectors)本期忽略。
- 人设合并注入,不 complete 接管:用一个全局段 expert:persona(order 0, text 为函数、每步按会话读内存表返回),非完整覆盖 → 保留 harness 身份与全部
dsh 工具;切换专家下一步即生效。
- 技能按会话隔离:全局 scope 门控 provider,list(options.scope) → 会话 → 所选专家 → 只返回其技能;providerControl.invalidate() 刷缓存。选中专家的技能进入该会话,其它会话不可见。
- 会话 id 作为持久化键:~/.dsh-workbuddy-experts.json,重启间会话 id 稳定。
- 输入框插槽 conversation.input.right(EXPERT_SLOT 常量,输入卡内侧右侧,紧挨模型座);不同 profile 暴露的输入座位需自行调整。

完整设计见 docs/architecture.md。
人设/技能与 UI 的排障记录见 docs/debug-persona-skills.md、docs/layout-debug.md。
预览分享卡片长什么样 ↓me9rez/dsh-workbuddy-experts
分享 · DeepSeek Harness Hub
me9rez/dsh-workbuddy-experts

为每个会话独立选择专家并注入人设与技能

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部