Skip to content

Releases: KERBALMans/dsh-plugin-studio

v1.0.1 — AI 讲解与工具输出修复

Choose a tag to compare

@KERBALMans KERBALMans released this 30 Oct 15:40

插件工坊 1.0.1

修掉三个 AI 功能上的缺陷,都是用户直接撞得到的。

修复

  • 单行「AI 讲解」讲错行数 —— 点 1 行实际讲了 8 行,耗时约 11 秒,还把 8 条讲解写进缓存。原因是字符串 key 被当成数组发出去,服务端 Array.isArray 为 false 后退化成「全部未讲解的行」。
  • 三个 Agent 工具返回非法输出 —— output.render 返回的是完整 ToolResult 形状而不是 ContentBlock[],宿主以 INVALID_TOOL_OUTPUT 拒绝,studio_list / studio_explain / studio_remove 从未可用。
  • token 统计恒为 0 —— 读错了 usage chunk 的字段路径。

改进

  • 模型漏答会补问:24 行只回来 23 行时不再静默丢一条。
  • /explain 对非数组 keys 返回 400,而不是静默讲解全部积压。
  • 界面显示 AI 统计(模型名、读了几条、回来几条、token 用量),部分成功时明说缺几条。

安装

plugin_manager action: install_bundle
                target: github:KERBALMans/dsh-plugin-studio#v1.0.1

或下载下方 dsh-plugin-studio-1.0.1.tgz 后从本地安装。

node scripts/all.mjs --offline 10/10 通过。

v1.0.0 — 插件工坊首个正式版

Choose a tag to compare

@KERBALMans KERBALMans released this 30 Oct 06:09

插件工坊 v1.0.0

一个设置页,管好 DeepSeek Harness 里的全部插件和全部技能。

这是 dsh-modpack(插件整合包)的正式继任者。整合包解决"把配置带走",工坊解决"平时怎么管"。

插件工坊界面


这版解决了什么

装到十几个插件以后,Harness 的设置页会变成一长串平铺列表。你想删掉几个不用的,但——

  • 看不出哪个是干什么的:名字叫 dsh-plugin-rea,描述一句英文,删了怕坏;
  • 不敢删:不知道删了会不会影响正在用的东西;
  • 不知道哪个真的没用:"我好像三个月没碰它了"是感觉,不是证据;
  • 插件和技能是两套地方:管了插件还得另外管技能。

工坊把这四件事合到一个页面:分类 → 看懂 → 看使用记录 → 批量删。


六个功能

1. 三级自动分类,不留"无法判断"

插件按 大类 → 能力域 → 插件本身 三级排列。分类器不是靠关键词硬猜,而是收集证据:

证据来源 举例
包名与描述 dsh-plugin-wallpaper-engine → 界面
代码里注册了什么 settings.section → 界面;tools.register → 工具
依赖了哪个宿主服务 依赖 llm → 模型;依赖 skills → 技能
实际调用了什么 theme.overrideTokens → 主题
文件与目录结构 有 client.js → 有前端

每一行都能展开看判定依据——具体是哪条规则命中的。置信度低的时候会标出来,不会假装确定。

关键点:每个插件都有分类。 分类器有一条兜底规则:所有证据都不匹配时,按名字和依赖归到最接近的域,而不是丢进"未分类"。实测 31 个插件、8 个技能,other 组恒为 0。

2. 复选框批量删除 + 重启提示

每个插件前面有复选框,可以单选也可以多选。二级分类标题右边还有「全选本组」。

勾选后底部浮出操作栏,点删除弹确认框,明确列出哪几个会被删。

如果某个包删除后需要重启才能完全卸载,会额外提示原因:

  • 「这个包没有热重载,改完得重启才能换掉正在跑的代码」
  • 「改的是宿主侧模块,只有重启才重新加载」

保护措施:官方底座、只读包、来源不明的包不可删,复选框是灰的,鼠标悬停显示原因。

3. AI 大白话分析

点「讲解」,AI 会结合代码实际做了什么 + 作者写的简介 + GitHub 上的项目说明,给出三段话:

  • 它帮你做什么 —— "会在设置里加一个页面,让你给对话窗口换动态壁纸"
  • 删了会怎样 —— "删掉之后壁纸变回纯色,不影响聊天"
  • 依据是什么 —— "代码里注册了 settings.section,并且调用了 theme.overrideTokens"

不用看懂代码,看完就知道该不该留。

4. 最后使用时间

每行显示这个插件最后一次被真正使用是什么时候。

这里有个容易做错的地方:"被提到"不等于"被使用"。你在对话里说"这个插件不错",不代表它工作了。如果混在一起,讨论插件的时候所有插件都会显示"刚刚使用",这一列就废了。

所以工坊区分两种显示:

显示 含义
最后使用:2 小时前(工具调用) 真的用过 —— 会话日志里有工具调用命中它注册的工具
最后使用:— + 灰字 5 天前提到过 只是被提到 —— 名字在对话里出现过,但没有实际调用

配合「90 天未用」筛选,长期不用的插件一目了然。

5. 技能管理页(和插件页功能对等)

技能 tab 有和插件 tab 完全一样的能力:三级分类、搜索、筛选、批量删除、打包、AI 讲解、最后使用时间。

内置的 8 个技能会被分成「文档处理技能」(office 系列 7 个)和「开发与诊断技能」(1 个),而不是挤在一个组里。

6. 重命名 + 重新设计的界面

从 dsh-modpack(插件整合包)改名为 dsh-plugin-studio(插件工坊),因为它的职责从"打包"扩展到了"管理"。

界面完全重做,跟着客户端的设计语言走:

  • 只用客户端声明的 13 个主题 token,自动跟随深色/浅色主题
  • 三级缩进用 padding-left 而不是位移,视觉层次清楚
  • 工具栏、筛选 chips、底部操作栏,符合现代列表管理器的习惯

安装

从 GitHub 安装(推荐)

plugin_manager action: install_bundle
                target: github:KERBALMans/dsh-plugin-studio

装特定版本:

plugin_manager action: install_bundle
                target: github:KERBALMans/dsh-plugin-studio#v1.0.0

从本页附件安装

下载下面的 dsh-plugin-studio-1.0.0.tgz,然后:

plugin_manager action: install_bundle
                target: E:\下载路径\dsh-plugin-studio-1.0.0.tgz

安装完成后打开 设置 → 插件工坊(在「插件」下面、「智能体预设」上面)。

装完看不到? 重启一次客户端。运行中的 Host 会缓存已加载的 ES 模块,plugin_manager 报告 application: "applied" 只说明依赖装好了,不说明新代码已经在跑。


兼容性

客户端版本 状态 说明
0.2.1-rc.3 ✅ 完整支持 全部功能可用
0.2.1-rc.2 ✅ 支持 无 inspect/skills 服务时,AI 分析改用文件扫描,技能页改用目录扫描
0.2.1-rc.1 ✅ 支持 无 removeBundle 时,删除按钮会说明原因而不是静默失败
未来版本 ✅ 设计上向前兼容 多出来的新方法会被忽略,不会误认;必需方法消失时回落到读 profile 文件

怎么做到跨版本不崩的:能力探测不看版本号,而是检查方法是否存在(typeof svc.removeBundle === 'function')。版本号会撒谎(rc.2 打了补丁可能比 rc.3 功能多),方法在不在不会。

降级时不是"功能消失",而是"换一条路":

  • 没有 pluginManager.inspect() → 直接读 profile 的 package.json 和 node_modules
  • 没有 skills 服务 → 扫描 ~/.dsh/skills 和 ~/.dsh/agents/skills 目录
  • 没有 llm 服务 → 讲解按钮显示"当前没有可用的模型",不卡住

验证情况

发布前跑了 9 个测试套件,全部通过:

套件 测什么
smoke 核心函数不崩、分类结果自洽、最后使用时间规则
analyse 三级树结构、每个插件都有分类、无 other
routes 每个 HTTP 路由的返回结构
actions 删除、打包、分类写入的副作用与回滚
ai 提示词构造、模型返回解析、非法项丢弃
style 只用合法主题 token、无硬编码颜色、无危险 DOM 操作
render 用真实数据把面板渲染成 HTML,检查结构和类名
measure 在真实浏览器里量布局:缩进逐级成立、无横向溢出、token 有值
compat 5 种服务契约(rc.1 / rc.2 / rc.3 / 未来新增 / 未来重命名)下都能工作

其中 compat 专门测跨版本:给插件喂一套"缺方法的服务",确认它降级而不是崩溃。


数据存在哪

内容 位置
分类结果 ~/.dsh/storages/dsh-plugin-studio/categories.json
AI 讲解缓存 ~/.dsh/storages/dsh-plugin-studio/explanations.json
整合包 ~/.dsh/storages/dsh-plugin-studio/packs/

删掉这些文件不会影响插件本身,只会丢掉分类和缓存。


许可

MIT