dsh-plugins
其他 活跃维护

dsh-plugins

pengyonglei/dsh-plugins

收录各类实用、创意大模型功能扩展插件,覆盖提示词优化、工具调用、场景适配等方向,开发者可快速接入使用,也支持自定义开发插件并提交贡献。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
TypeScript
主要语言
Apache-2.0
开源协议
990 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:pengyonglei/dsh-plugins
git clone https://github.com/pengyonglei/dsh-plugins.git
git clone git@github.com:pengyonglei/dsh-plugins.git
README.md master

dsh-plugins — dsh 外部插件工作区

本工作区汇集为 dsh(DeepSeek Harness)开发的外部插件(out-of-tree bundles)。每个插件是一个独立目录(独立的 npm 包),可单独构建、打包、分发、安装到任意 dsh profile。

  • 工作区根 pnpm install 统一为所有插件建立可解析的依赖树(link: 装进 profile 后,Node 按插件真实路径解析其 @deepseek-ai/* 导入,插件必须自带依赖)
  • 安装到 profile:pnpm dsh plugin --profile <name> add <插件路径>
  • 各插件的完整文档见其目录下的 README.md;本文件只做目录与速览

插件一览

插件 目录 版本 一句话作用
dsh-balance-view dsh-balance-view/ 0.1.0 DeepSeek 账户余额查看器:独立查看页 + GUI 悬浮徽章(双半侧 bundle)
dsh-vision dsh-vision/ 0.1.0 为纯文本模型透明补充视觉能力:后台图片转换 + vision 工具 + 视觉端点设置页(双半侧 bundle)
dsh-model-capability-enhancement dsh-model-capability-enhancement/ 0.1.0 在「设置」新增模型能力分区:为 llm-pi-ai 自定义路由开放 input(输入模态)/ reasoning(默认推理等级)/ reasoningEfforts(强度→线上取值映射)(双半侧 bundle)

新增插件时:在 pnpm-workspace.yaml 的 packages 里登记目录,然后在上表追加一行、补一个下面的详解小节。


dsh-balance-view — DeepSeek 余额查看器

在 dsh GUI 里随时查看 DeepSeek 账户余额,两个入口共享同一套浅色 UI:

  • 独立查看器页面 GET /balance-monitor/ — 自包含静态页(余额 JSON + 状态 + 更新时间,30s 轮询)
  • GUI 悬浮徽章 — 左下角蓝色渐变胶囊(带鲸鱼图标),实时显示余额;点击弹出内嵌面板,按住可随意拖动,右上角 ✕ 关闭;60s 轮询
  • 密钥不进浏览器 — 余额请求只在 Host 半侧发起(credentials 服务 → 环境变量回退),浏览器只拿结果 JSON

功能细节

  • 卡片展示总额(蓝色高亮)+ 下方 11px 小字明细:赠金余额(琥珀色)/ 充值余额(绿色)——数据来自 API 的 granted_balance / topped_up_balance(即当前未过期的赠金与充值)
  • 浅色系主题(浅灰背景 + 白卡片),状态文字跟随可用性着色(绿/灰/红)
  • 徽章可自由拖动(Pointer Events,带边界约束,拖动不会误触发点击)
  • 独立页跟随 src/viewer/style.css 主题变量,GUI 面板回落到组件内嵌浅色变量

架构要点

双半侧 + 单一 UI 源 + 三构建产物:

src/index.ts        → lib/index.mjs       Host 半侧(Node):路由 + 余额请求
src/client/index.ts → lib/client.js       Client 半侧(浏览器):shell.overlay 徽章
src/viewer/         → lib/page/viewer.js  独立页(IIFE,react 内联)
                     + index.html/style.css(构建时复制)

查看器 UI 只在 src/viewer/Viewer.tsx 实现一次,独立页与徽章面板共用(无 iframe)。

安装 / 卸载

# 先在工作区根安装依赖 + 构建
pnpm install
pnpm --dir dsh-balance-view build

# 加载到 profile(link: 开发模式,改代码免重装)
pnpm dsh plugin --profile web add ./dsh-balance-view
pnpm dsh web                       # 打开 http://127.0.0.1:3080/balance-monitor/

# 卸载
pnpm dsh plugin --profile web remove dsh-balance-view

配置(默认值)

键 默认值 说明
apiKeyEnv DEEPSEEK_API_KEY 密钥来源的环境变量名(兼作 credentials 凭据名)
baseUrl https://api.deepseek.com 余额 API 基址,端点 {baseUrl}/user/balance
timeoutMs 10000 单次请求超时(毫秒)
routePrefix /balance-view 页面/API 路由前缀(本插件 cordis.patch.yml 默认 /balance-monitor,徽章硬编码同前缀)

分发

pnpm --dir dsh-balance-view pack      # tarball(发给别人 / 内部)
# 或发布 npm:先移除 package.json 的 "private": true,再 pnpm publish

完整文档:dsh-balance-view/README.md


dsh-vision — 纯文本 DeepSeek 路由的多模态桥

为纯文本模型透明补齐“看图”能力,双半侧 bundle(Host 中间层/工具 + 浏览器设置页):

  • 保持原路由 — 不注册 (dsh-vision) provider、不改默认模型;用户继续选择原 provider/model
  • 自动判断 — 原模型支持图片就原样直传;纯文本模型才在后台调用独立视觉端点并替换图片块(含嵌套 tool-result)
  • 完整图片准入 — Web 上传与 read_image 都可使用,会话日志仍保存原始图片,只有发往纯文本模型的请求副本被转换
  • 前端设置页 — 设置 → 视觉 配置 OpenAI 兼容端点、模型、上下文大小、输出 token、超时和 API Key;除只写密钥外均保存后回显,并支持使用当前草稿测试连接

安装 / 使用

pnpm install && pnpm --filter dsh-vision build
pnpm dsh plugin --profile web add ./dsh-vision
# 设置 → 视觉:填写端点、模型和预算,单独保存 API Key,然后测试连接
# 会话继续使用原模型;上传图片时插件会自动决定直传还是后台转换

验证

pnpm --filter dsh-vision verify   # 离线验证:转换、透明中间层、端点、配置与密钥路由
node dsh-vision/scripts/smoke.mjs   # 打包产物冒烟(host 加载 + client bundle 包裹)

完整文档:dsh-vision/README.md


dsh-model-capability-enhancement — 模型能力配置(llm-pi-ai 自定义提供方)

在 dsh「设置」对话框新增「模型能力」分区,为 llm-pi-ai 自定义提供方(settings.yaml 里手写声明的路由,如 ollma-local)开放三组配置文件已支持但「模型」页未开放的字段(双半侧 bundle):

字段 位置 说明
input 每个模型 声明该模型接受的输入模态:['text'] / ['text','image'](视觉模型)。未设置时回退目录基线或提供方默认
reasoning 提供方 默认推理等级(off / minimal / low / medium / high / xhigh / max),请求未显式指定强度时使用
reasoningEfforts 每个模型 推理强度 → 线上取值映射:false = 非推理模型;字典 = 每个启用等级对应的网关 wire 字符串(off 可为 null,至少启用一个非 off 等级)
  • 页面只展示手写声明的自定义路由(declared === true),pi-ai 内置目录路由与官方 DeepSeek 路由不在本页
  • 未改动字段传 KEEP、用户复位传 REVERT(删除 key);写入先过 settings validator 与 expectedRevision 冲突防护,失败不落盘

效果展示

模型能力增强配置页面

安装 / 使用

pnpm install
pnpm --filter dsh-model-capability-enhancement build
pnpm dsh plugin --profile web add ./dsh-model-capability-enhancement
# 设置 → 模型能力增强:选提供方、改输入模态/推理等级与强度映射,应用后经 toast 反馈

或临时挂载(--patch,name 需为绝对路径 file:// URL):

pnpm dsh web --patch file:///D:/workspace/lemy/dsh-plugins/dsh-model-capability-enhancement/cordis.patch.yml

架构要点

双半侧 + 一对 JSON 路由:

src/index.ts + src/routes.ts → lib/index.mjs   Host 半侧:GET view(读视图 + writable/revision)+ POST apply(settings.mutate,llm-pi-ai 命名空间)
src/client/                 → lib/client.js    Client 半侧:注册 settings 分区(id `model-capability`,order 20)
  • Ant Design v6(CSS-in-JS 按需注入):JS 侧用 antd 官方按需子路径导入(antd/es/xxx),rolldown tree-shake 只打包实际用到的组件(bundle ≈ 315 KB gzip)
  • ConfigProvider 经注入的 colorScheme 观察器跟随 dsh 亮/暗主题;应用更改/校验失败经 App.useApp() 的 message 弹 toast(成功绿色 / 冲突 warning / 拒绝 error)
  • UI 交互:提供方卡片默认收起(标题行显示模型数量),点击展开;下拉列表现选中项以 CheckOutlined 对勾标记;分区顶部「刷新」按钮全局刷新所有提供方的最新模型配置列表

写入落点(llm-pi-ai 设置节):

  • 提供方默认等级:llm-pi-ai.providers.<id>.reasoning
  • 列表模型的默认输入(仅当路由已有 models 列表时可用):llm-pi-ai.providers.<id>.defaultInput
  • 已声明路由的模型能力:llm-pi-ai.providers.<id>.models[i].{input, reasoningEfforts}

验证

pnpm --filter dsh-model-capability-enhancement verify   # 离线验证:view/apply 分支、KEEP/REVERT 语义与 validator 准入(仅 mock seam,不写真实 settings)

完整文档:dsh-model-capability-enhancement/README.md


公共约定

  • src/ 源码区 / lib/ 产物区:lib/ 由 pnpm run build(tsdown)生成,已 gitignore,可随时删除重建,但勿手改(包入口直接指向它)
  • 依赖与 dsh 主机同版锁定(@deepseek-ai/*、schemastery、cordis 等),保证 link:/tarball 安装后在目标机器可解析
  • bundle 声明:package.json 的 dsh.bundle(配置层 patch)、dsh.client(浏览器半侧注入)与 exports 是插件被 dsh 识别/加载的依据
  • 类型检查:npx tsc --noEmit -p <插件目录>(tsconfig 已开 allowImportingTsExtensions,ESM 相对导入带扩展名是 tsdown 的要求,非报错)