🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

staff-os/dsh-workbench

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
⚠ 装前注意

@staff-os/dsh-workbench

基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/8/25 · 已提供中文文档

DeepSeek Harness 的企业工作台:AI 员工、知识库、技能、MCP 服务器和 DSH 插件,均可从运行中的会话进行管理。

综合分
35.3
GitHub 分
35.3
用户评分
—
★ Stars
3
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add staff-os/dsh-workbench
未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
信任档位:已验证本站已于 4 天前真实安装成功(L4 · 真实安装)
是什么
dsh 原生插件 · chat
装得上吗
本站已真实安装成功(L4 · 真实安装,非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
更新放缓:最近一次提交在 31 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/22
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@staff-os/dsh-workbench(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

未发布到 npm registry,仅可从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/20 08:39:27

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent-presets@deepseek-ai/dsh-atomic-write@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-credentials@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-invariants@deepseek-ai/dsh-launch-environment
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
@staff-os/dsh-workbench

DeepSeek Harness 的企业工作台插件:AI 员工、知识库、技能、MCP 服务、DSH 插件五个域,
每个域同时有一个给模型的工具和一块给人的管理界面。

单机运行——不依赖外部后端,也不需要数据库。所有状态都是 $DSH_HOME 下的本地文件。

能力

技能

本地技能落在 $DSH_HOME/skills,一个目录一份 SKILL.md;也可以从已配置的市场装。清单把三个
数字摆在最上面——受本插件管理的、被同名高优先级来源遮蔽的、被 DSH 因 frontmatter 不合规
整份拒收的。后两种在会话里的表现都是「装了却调不到」,而 DSH 那边只有一行日志。

本地技能清单:一行一个,左边身份与路径,右边两个调用方式的开关状态

写完之后回读一次 ctx.skills,给出的是「现在到底生没生效」,不是「重启后生效」——写完盘,
下一个模型回合就生效。

技能详情:左边正文与页签,右边来源、路径、可见性与操作

市场是多源聚合的,每张卡标出自己来自哪个源。留空浏览按累计下载量排,带关键词时保持市场给的
相关度次序。卡上不放安装按钮,整张卡点进详情:装一个技能不是装一个库,SKILL.md 的正文是模型
会照着执行的指令,该看的东西(发布者、审核结论、包内文件、静态扫描)都在详情里。

技能市场:分类在左、搜索靠右,卡片带来源、本机处境与热度数字

详情三页:概览把 SKILL.md 渲染出来(另有一档源码),文件是包内目录树、点开就地看内容,
安全扫描是十三条正则规则外加一条「字符集夹带」检测。规则表移植自腾讯朱雀实验室
AI-Infra-Guard(Apache-2.0)的 skill-scan。命中
只说明这段文字长得像某种高危写法,不代表它真会那么做;反过来,没命中也不等于安全。

包内文件树:目录可折叠、文件带体积,点开就地看内容

安全扫描报告:评分、命中分布与逐面解析

导入有四种来源——压缩包、下载链接、GitHub 仓库、市场 slug——共用同一条解包与落盘路径:先落技能
根之外的暂存目录,校验通过再整目录换上去。只有市场 slug 那条记安装台账,之后的更新检查按台账
里的源 id 回到同一个市场。

市场配置:ClawHub 兼容源的根地址、协议方言与凭据引用名

AI 员工

一个员工就是一个 DSH agent preset。发现、信任级别、复制与删除全部走原生 ctx.agentPresets:
新建只能以现成员工为模板整目录复制,复制出来的不会比源多出任何能力;trust 为 system
的随部署发布,改不了也删不掉。绑定写在 preset 目录里的 employee.yml,是职责声明而不是
自动装配——绑了知识库不会让检索自动发生。界面代码在 client/employee/,入口暂时隐掉了。

知识库

本地切块加关键词索引,检索走 BM25 而不是语义向量。只收文本。

MCP 服务

写进当前 profile 的 patch 文件,改动在下次启动 DSH 时生效。import_json 吃 Claude Code /
Cursor 风格的 {"mcpServers": {...}},并把 ${VAR} 转成 !!js process.env.VAR——DSH 不做
客户端环境替换,不转的话 MCP 服务拿到的 token 就是 ${GITHUB_TOKEN} 这十几个字符。

DSH 插件

转发给 dsh plugin 命令行,不自己碰 pnpm 也不自己改 dsh.profile.bundles。list 把「这个包
声明了 dsh.bundle 没有」与「它在不在组合层里」拆成两个标记:装完看这两个才知道是不是真的
装成了插件。

装

dsh plugin --profile web add @staff-os/dsh-workbench

本地开发用绝对路径:

dsh plugin --profile web add link:/path/to/dsh-workbench

装完重启 DSH。

配

插件自带的 cordis.patch.yml 是一层 opt-in patch,默认从环境变量读配置:

| 环境变量 | 作用 |
| --- | --- |
| DSH_PROFILE | MCP 与插件管理作用在哪个 profile 上,默认 web |
| CLAWHUB_REGISTRY | ClawHub 兼容市场的根地址;不配走出厂那一条(只读接口公开,不要 token) |
| CLAWHUB_API_KEY | 市场凭据。只存引用名,值从凭据服务或启动环境解析,不要内联写进 YAML |

环境变量放 $DSH_HOME/.env 或调用 dsh 的那个目录的 .env,两层都在启动时读进来。

换成自建市场时,改 profile 自己的 patch 层($DSH_HOME/profiles//cordis.patch.yml)
比改环境变量好:环境变量只能换地址,id 与展示名是写死的,界面上会挂着「ClawHub」的名字
指向内网。patch 层热重载,改完不用重启:

patch 对 config 是整份替换而不是深合并,所以这一行里每个键都要重述
- id: workbench
config:
profile: web                 # 作用的 profile
dshHome: ''                  # 覆盖 $DSH_HOME,留空走环境解析
registries:                  # 多源聚合,技能市场与插件市场共用
- id: skillhub             # 会记进安装台账,装过东西之后别再改
name: 内网技能市场
url: http://10.0.14.55
flavor: clawhub          # clawhub | skillhub
apiKeyEnv: SKILLHUB_REGISTRY_API_KEY   # 匿名可读时可以不写
registryTimeoutMs: 15000     # 单次市场请求
toolTimeoutMs: 20000         # 本地写操作
networkToolTimeoutMs: 120000 # 含下载的操作(技能导入、市场安装)
dshExecutable: dsh           # 插件装卸转发给谁
pluginToolTimeoutMs: 300000  # 一次 pnpm 安装可能要几十秒

flavor 只有两个值:clawhub(默认,也适用于任何 ClawHub 兼容的自建部署)与 skillhub
(把浏览拆成 /api/v1/showcase/ 榜单端点、/api/v1/skills 一律 405 的那种部署)。

技能市场的源也可以在界面上加减,写进 $DSH_HOME/workbench/market.json,立刻生效、不进
Cordis 配置;那份文件为空时回退到这里配的。

结构

一个 Cordis 插件,往三个挂点上放东西:

| 挂点 | 内容 |
| --- | --- |
| ctx.tools | 五个工具,每个域一个,用 action 选动作;破坏性动作必须显式传 confirm: true,否则直接返回错误、不落盘 |
| Typert Remote | 两个命名空间 workbenchEmployee、workbenchSkill,是管理界面的数据通道 |
| shell.sidebar / shell.overlay | 侧栏分区入口与管理界面;上游 ui-sidebar 由 cordis.patch.yml 停掉——sidebar 是 single 槽,两个占位方只会互相遮蔽 |

ctx.workbench 是插件自己的 Service,只装各域共用的东西:解析后的路径、市场客户端、
profile 名。

src/
├── index.ts              插件入口与配置 schema
├── runtime.ts            ctx.workbench
├── registry.ts           ClawHub 兼容市场客户端(技能与插件共用)
├── archive/              zip / tar 解包与安全校验
├── employee/             ┐ 每个域一份 tool.ts(给模型);
├── knowledge/            │ employee 与 skill 另有 remote.ts(给界面),
├── skill/                │ 两边共用同一份 view.ts 投影,
├── mcp/                  │ 界面上的东西与模型看到的不会各说各话
├── plugin/               ┘
├── typert-schemas.ts     Remote descriptor 表。手写的,改方法签名要跟着改
└── client/               浏览器半边:侧栏、管理面板、各域界面

Node 半边与浏览器半边是两个产物(lib/index.js 与 lib/client.js),走各自的构建配置。

数据落在哪

$DSH_HOME/
├── skills//SKILL.md              技能(DSH 原生的用户级技能根)
├── .agent-presets//                AI 员工(DSH 原生的 preset 根)
│   ├── agent.cordis.yml                  组合,DSH 拥有
│   ├── preset.yml                        展示元数据,DSH 拥有
│   └── employee.yml                      资源绑定,本插件附加
├── profiles//cordis.patch.yml MCP 服务(DSH 原生的 profile patch 层)
└── workbench/
├── skills.json                       已装技能的来源台账,更新检查靠它
├── market.json                       界面上配的市场源
├── staging/                          装包时的暂存目录,刻意不在技能根内
├── knowledge//                元数据、原文与倒排索引
└── cache/                            市场结果的离线缓存

文件权限一律 owner-only(0600 / 0700):patch 与知识库可能含 token 或企业内容。

明确不做

- 向量检索。DSH 没有 embedding 能力缝,做不了就不假装能做
- PDF / Office 解析。不预先引重量级依赖,需要就先转成文本
- 绕过 preset 的复制边界。ctx.agentPresets 只允许整目录复制,这是刻意的安全设计

开发

pnpm install
pnpm build        # 两半一起出:lib/index.js 与 lib/client.js
pnpm typecheck    # tsc -b
pnpm test         # node --test

客户端产物没法用 DSH 的 client 预设(它 glob harness 仓库找包,仓库外的插件查无此名),
所以 tsdown.client.ts 按同一份产物契约自己实现了一遍:__ModuleLoader__.load 闭包、
CJS/browser、固定 client.js、CSS 模块经 lightningcss 编译,以及只有加载器模块表里的
说明符能保持 external。改动那份配置之后要核对产物:

grep -o 'require("[^"]")' lib/client.js | sort -u

只应出现模块表里的说明符。多出别的就是运行时必炸的 require。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(staff-os)的其他插件

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群