最近我在学习用 DSH(DeepSeek Harness)制作智能体,把自己的实践沉淀成了一个开源仓库 PelyDeng/dsh-plugin-manager。这篇文章是对这个项目"到底做了什么"的一次自我复盘——它是什么、解决什么问题、和官方 DSH 是什么关系,以及对我学习智能体开发意味着什么。

一句话定位

基于 DeepSeek Harness 的 AI 应用开发与部署框架,让个人开发者和小团队开发自己的插件,并统一安装、更新和管理。

它不是一个"插件"本身,而是一个插件工程化框架:定义作者怎么接入、怎么打包、怎么交付,以及运行端怎么统一安装、配置和启停。典型的目标产物是知识库助手、报表助手、业务工具这类带独立页面的智能体应用。

解决的核心问题

官方 DSH 已经提供了 Cordis 插件运行、Bundle 组合、Agent、模型与会话等底层机制。但如果要开发多个自己的插件并交付给团队或客户,会缺一层工程约定。这个项目补的就是这一层,README 里概括为六项能力:

能力解决的问题
独立仓库接入作者维护自己的 pnpm 单包项目,通过声明接入,不用改管理器名单
内部插件扫描保留 plugins/* 自动发现、选集与批量构建
通用构建与打包按插件声明执行 build、必要 check 和 pack,输出清单与归档
发布物组合把多个作者的交付目录组合成站点发布物,运行端无需作者源码
配置与受控启停管理实例配置、安装、启动、停止和就绪探针
可选统一认证复用账号、登录和应用访问授权,业务接口由作者显式接入 kit

仓库结构

项目分为几个清晰的层次:

  • packages/plugin-kit@dsh-plugin-manager/plugin-kit):身份、权限、HTTP、工具登记——插件作者真正依赖的开发套件;
  • packages/plugin-manager@dsh-plugin-manager/plugin-manager**):发现、打包、安装和受控启停——管理器 CLI 本体;
  • plugins/dsh-auth:可选的账号、登录与插件授权;
  • plugins/dsh-example:开发者答疑、流式对话、历史与可选认证的完整示例;
  • integrations/dockerdeploy/:官方宿主镜像的 Compose 集成,以及 Bash / PowerShell / Node 部署入口。

一个值得注意的设计:发布运行端不需要作者源码。作者在自己的仓库执行 dsh-plugin-manager pack 生成版本化交付物(清单 + 归档),运行端把这些交付目录组合成站点发布物即可部署。这把"开发"和"交付"解耦了。

与官方 DSH 的分工

README 里有一张表把责任划得很清楚,我认为这是理解这个项目的关键:

  • 官方 DSH:负责 Cordis 插件运行、Bundle 组合、Agent、模型与会话;
  • 本框架:负责作者接入约定、发布物组合、配置和交付管理,以及可选基础认证;
  • 业务插件:负责工具、页面、业务参数、数据授权与业务验收。

也就是说,它沿用官方机制而不魔改——不需要修改 DSH 或管理器源码就能接入新插件。同时它也不越界:可信身份不等于业务数据许可,应用仍需自己检查用户能读哪些文档或报表。README 也明确声明这是社区独立维护的非官方项目。

对我学习智能体开发的意义

  1. 它是一个"从插件到应用"的完整参考路径。从最小独立 Bundle、复用统一登录的 kit 示例,到带流式对话和历史记录的完整问答应用,examples/plugins/dsh-example 提供了从零到可交付的渐进式模板。
  2. 它把智能体应用当作工程对象来对待:声明、打包、版本化交付、就绪探针、受控启停——这些正是把 demo 变成可交付产品时最容易缺失的环节。
  3. 模型凭据管理有完整约定:私有 .local/env.conf 与公开模板分离,网页只显示状态与不可逆指纹,密钥修改走受控重启。这在接入 DeepSeek/智谱等不同提供方时很实用。

查证说明

本文事实均来自仓库 README 原文(已直接抓取自 raw.githubusercontent.com/PelyDeng/dsh-plugin-manager/main/README.md,HTTP 200,全文读取成功),仓库主页 github.com/PelyDeng/dsh-plugin-manager 亦可正常访问。需要注意:GitHub 上存在多个同名 dsh-plugin-manager 仓库(分属其他作者,功能侧重各有不同,如图形化启停面板、插件市场等),本文分析的仅为 PelyDeng 名下的这一个,请勿混淆。更深入的细节(如 kit 的具体 API、部署演练)我尚未逐个抓取 doc/ 下的子文档,如需要可继续补充。

最后修改:2026 年 09 月 08 日
如果觉得我的文章对你有用,请点个赞吧!