在 DeepSeek Harness (DSH) 的开发实践中,插件需要向用户展示自身的连接状态或功能入口。如果每个插件都独立在设置面板中开辟区域,会导致界面杂乱且难以维护。dsh-authorize-app 插件提供了一个标准化的解决方案,它将“连接应用”作为一个统一的设置区块,供其他 DSH 插件通过插槽注册自身。
插件定位¶
dsh-authorize-app 是一个由 extension-hunter 维护的 DSH 插件。它的核心作用是在设置面板中新增“Connected Apps / 连接应用”区块(顺序为 25),作为其他 DSH 插件自我展示的中央平台。
核心功能¶
- 统一设置区块:在设置面板中增加第 5 个入口“连接应用”,位置紧随 General、Models、Plugins 和 Agent Presets 之后。
- 插槽声明:声明子插槽
settings.connected-apps.item,任何 DSH 插件都可以注册到该插槽。 - 双语空状态:默认渲染一个双语空状态提示,显示“No connectable apps yet”和“暂无可连接的应用”。
- 占位工具注册:注册了一个主机端的占位工具
dsh_authorize_app。
安装与启用¶
使用官方命令安装该插件:
dsh plugin --profile web add dsh-authorize-app
安装完成后,重启 profile (dsh web) 并刷新页面。在设置页面中即可找到“连接应用”选项。
典型用法¶
其他插件若希望在该列表中显示,需要在客户端通过注入插槽的方式注册卡片。以下是注册示例:
ctx.slots.inject('settings.connected-apps.item', () =>
ctx.slots.register({
name: 'settings.connected-apps.item',
id: 'your-app-id', // 唯一 ID
order: 0, // 排序顺序(升序)
inject: () => ({
// 卡片所需数据:名称、描述、连接状态等
}),
}, YourAppCard), // React 组件
)
最小的卡片渲染示例如下:
function YourAppCard(props) {
return React.createElement('div', { style: { padding: '12px 0' } },
'My App', ' — ', props.t ? props.t('status') : 'connected')
}
适用场景与注意¶
该插件适合需要向用户展示连接状态或功能入口的其他 DSH 插件使用。
开发者在开发相关插件时,需注意以下几点:
- 环境要求:Node.js 版本需为
^22.19.0 || >=24.0.0。 - 依赖关系:
@deepseek-ai/cordis为 peerDependency,仅导入类型定义即可,运行时由主机提供上下文。 - 客户端发现:若插件包含客户端代码,
package.json的exports字段必须包含"./package.json": "./package.json"和"./client",否则客户端模块会被静默跳过。 - 版本标签:NPM 上的
latest标签目前指向过时的0.0.1-rc.1,请使用next标签(如0.1.0-rc.x)。
总结¶
dsh-authorize-app 通过插槽机制实现了 DSH 插件间轻量级的自我展示。开发者无需自行构建复杂的注册表或网络传输层,只需注入卡片组件,即可在统一的“连接应用”列表中展示自身。