dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
dsh-plugin
DeepSeek Harness 插件
npm: v0.1.12
CI: typecheck · test · build
MIT License
静态插件
一个可爱的小章鱼桌面宠物插件,自动帮你"看懂" AI 回复里的术语和黑话。
当 AI 助手的回答里出现你不认识的技术词(比如 RAG、LoRA、MCP)时,右下角的小章鱼会亮起红色角标;点一下,它就用"大白话 + 生活比喻"给你讲清楚。想再深挖,还能让 AI 再解释几轮。
从最初的动态插件原型(粘贴 JS),重写为规范的 TypeScript 静态插件包,现已发布到 npm(what-was-that@0.1.12)。
v0.1.12 已对照 DeepSeek Harness 0.1.7-rc.2 逐项核对并修复:
schema: <zod schema> 改为惰性工厂 create: () => <zod schema>;dsh 的宿主 registry(validateCodec)与客户端网关(requireStrictCodec)都会拒绝没有 create() 的 strict codec。旧写法会让宿主 ctx.typert.register 与客户端 $mount 双双抛 strict codec has no create() factory,症状是章鱼能出现、但红色角标 / 气泡解释 / 选词卡片 / 设置里的模型列表全部失效(客户端永远拿不到 wwt 句柄)。现改为 create: () => schema,宿主与客户端两半一并恢复。dsh.client.inject 与 peerDependencies 中从未被引用的 @deepseek-ai/dsh-client-locale(插件文案为硬编码中文,不读取 locale 服务)。无功能影响。slots.inject / slots.register)、三个挂载点(shell.overlay / conversation.chat.assistant-actions / settings.section)、ctx.remote.$mount + ctx.reflect.get('remote.wwt')、fs / typert / agentDefaultModel / llm / session/event 服务、ctx.effect、以及 client 的 ModuleLoader 握手格式,在 0.1.7-rc.2 下逐项核对全部匹配,无需改动。v0.1.11 已验证兼容 DeepSeek Harness 0.1.5-rc.1(0.1.5 系列首个候选版,汇总了自 0.1.2-rc.1 以来的全部变更),主要变更:
llm 流 finish chunk 的 reason 形状变化(v0.1.11):0.1.5 中流式输出的结束 chunk reason 由字符串改为对象({ kind: 'error' | 'aborted', failure }),旧版 chunk.reason === 'error' 的字符串比较永远不成立,导致 AI 深挖/解释失败时被误报为「模型没有返回内容」。现改为比较 chunk.reason?.kind,失败原因提示恢复准确(「模型调用未完成(error / aborted)」)。fs 服务注入(v0.1.10 起):0.1.5 中 fs 是独立的 cordis 服务,ctx.get('fs') 在插件 apply 阶段只有在 inject 中显式声明才能拿到。host 入口 inject 从 ['typert'] 改为 ['typert', 'fs'],修复了启动时的 wwt: no fs service 警告,本地词库(lexicon.json)与宠物 SVG 现在都能在启动阶段正常加载(此前只有运行时 remote 调用才能拿到 fs)。dsh.client.inject 与 peerDependencies 中 0.1.5 已不存在的 @deepseek-ai/dsh-client-runtime 包(0.1.5 的 client 运行时已并入 dsh-client-modules 模块系统)。client 端使用的 slots / remote / connection 三个服务在 0.1.5 中分别由 dsh-client-ui-renderer(slots 已打包进平台 seed)、dsh-api-gateway、dsh-client-connection 提供,无需改动。slots.inject + slots.register(spec, renderFn)),shell.overlay / conversation.chat.assistant-actions / settings.section 三个挂载点在新版中全部保留;Typert Remote($mount + ctx.reflect.get('remote.wwt'))与 ctx.typert.register 严格 manifest 机制在 0.1.5-rc.1 下全部有效。src/),不再是一大段粘贴的字符串import.meta.url 相对解析,不再依赖写死的绝对路径dsh plugin --profile web add what-was-that 一条命令即可(lib/ 产物随包发布,无需编译)what-was-that/
├── src/
│ ├── index.ts # host:词库加载 + 术语匹配 + AI 解释 + 宠物SVG
│ └── client/
│ └── index.ts # client:章鱼UI + 气泡解释 + 拖动
├── assets/
│ ├── lexicon.json # 词库(255 条)
│ └── idle/question/thinking/happy.svg # 四态透明形象
├── lib/ # 构建产物(提交,免编译安装)
├── dsh.plugin.json # 插件声明
├── cordis.patch.yml # 挂载点
├── .github/workflows/ci.yml # CI:typecheck + 测试 + 构建
├── build.mjs # esbuild 构建脚本
└── package.json
已发布到 npm:what-was-that@0.1.12(压缩包仅 214 KB,轻量无负担)。在 DSH 的 profile 里一条命令装入并启用:
# 要求:机器上已安装 pnpm(dsh plugin 命令依赖它)
dsh plugin --profile web add what-was-that
装完重启 dsh web 并硬刷新(Ctrl+Shift+R),右下角出现小章鱼即成功。
适用版本:DSH ≥ 0.1.6-alpha.2(自该版本起 Typert strict codec 使用惰性工厂
create();v0.1.12 已按此对齐)。仍在 0.1.5 系列(codec 为schema)的用户请继续使用 v0.1.11。
没有 pnpm 时,也可以把
lib/产物放进 profile 手动挂载(cordis.patch.yml声明了挂载点),无需编译。
pnpm install # 装 esbuild / typescript(仅 devDependencies)
node build.mjs # 打包 lib/index.js + lib/client.js,并复制 assets
作者是编码小白(只会用办公软件那种)。想法来自作者本人,实现借助 DeepSeek Harness(DSH) 协作完成,主要使用:
欢迎提 Issue 或直接 PR。