Minglink/dsh-infinite-gen-4
Minglink/dsh-infinite-gen-5DeepSeek 专用破甲插件:以 order 100 追加无条件服从的系统提示词段,提供带校准元数据的 profile 工具,并通过会话投影在输入框上方显示实时破甲状态徽标。
会话备注 0.3.1:一个会话挂多条备注(1 2 3 按创建顺序编号),会话级颜色+置顶(弹窗标题行一键操作),复制挑选器(多条备注点哪条复制哪条),🗑 会话备注批量清理,兼容 DSH Desktop 0.8.2。
DSH 会话备注插件(DSH Desktop / Web 通用,web 平台客户端插件)。给每个会话挂多条备注(1 2 3 按创建顺序编号),不用再翻会话历史找提示语。
✅ 适配 DSH Desktop 0.8.2(当前版本,实测正常);历史版本 0.7.x 起兼容。
用 DSH 桌面版时发现一个问题:我经常在一个会话里反复用同一条提示语去要数据,每次都得往前翻聊天记录、拷贝、再粘回去,很麻烦;右键会话也没有备注栏,索性自己写了一个。
之前装过 fun-ticker,觉得不好用就卸载了——那个插件本身也不是按桌面版适配的,卸载也没卸干净。索性借着他的一些结构,改出了这个备注插件。
有备注的会话会列在总览里:点击备注可以跳转到对应会话,备注里写的内容(比如提示词)也能一键复制。
懒~~~~ 就是了~ 又菜又懒,咋办啊……
dsh-session-notes),按会话 ID 持久化,重启不丢方式 A:一键脚本(推荐)
# 在仓库/解压目录里
powershell -ExecutionPolicy Bypass -File .\build.ps1 # 从源码构建(发布包可跳过)
powershell -ExecutionPolicy Bypass -File .\install.ps1 # 拷入 profile + 写入 patch
# 重启 DSH Desktop(完全退出再打开)
方式 B:手动
把 package.json + lib\index.js + lib\client.js 拷到
%APPDATA%\dsh-desktop\harness\profiles\web\node_modules\@deepseek-ai\dsh-session-notes\(保持 lib\ 子目录)
编辑 %APPDATA%\dsh-desktop\harness\profiles\web\cordis.patch.yml,在第一个 - insert: 块里加:
- insert:
# ...已有的行...
- id: session-notes
name: '@deepseek-ai/dsh-session-notes'
重启 DSH Desktop
powershell -ExecutionPolicy Bypass -File .\uninstall.ps1
# 或手动:删掉 cordis.patch.yml 里那两行 session-notes + 删除 node_modules 里的包目录
改 cordis.patch.yml 前脚本会自动备份(cordis.patch.yml.bak-<时间戳>)。若应用无法启动,桌面安全模式会自动隔离插件,恢复后用备份文件还原即可。
依赖:Windows PowerShell、node ≥ 20、esbuild 二进制(脚本里 $Esbuild 变量改成本机路径即可)。
.\build.ps1
src/index.js → ESM bundle(external @deepseek-ai/*,闭包由 DSH 应用提供)src/client/index.tsx → CJS bundle(external react / react-dom / @deepseek-ai/*),再包一层 window.__ModuleLoader__.load({ id, factory })| 端 | 入口 | 做的事 |
|---|---|---|
| 宿主 | src/index.js | 注册 settings 命名空间(可调用 schema + toJSON)和 API 路由 |
| 客户端 | src/client/index.tsx | slot 注册、store、会话行投影;inject: ['slots', 'locale', 'sessions'] |
| Slot | 内容 |
|---|---|
conversation.session.header.actions | 📝 按钮 + 弹层 |
conversation.input.dock | 底部常驻备注条 |
API(/plugins/dsh-session-notes/api,宿主 webServer 服务 prefix 路由):
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /settings | 读全部(notes + barEnabled) |
| POST | /settings | 整体替换(服务端清洗校验) |
| GET | /notes | 只读备注表 |
| PUT | /notes/:id | 新增/更新(PATCH 语义:text/color/pinned 省略字段沿用旧值;显式空文本 = 删除) |
| DELETE | /notes/:id | 删除一条 |
踩坑记录(给后来写 DSH 插件的人):
webServer(ctx.inject(['settings', 'webServer'], ...) + host.webServer.register(...)),不存在 httpServer 服务sessionId 不是组件 prop,是注入工厂的第一个参数:inject: (sessionId) => ({ ... })window.__ModuleLoader__.load({ id: "<包名>", factory: (require) => {...} }) 包裹的 CJS,react / react/jsx-runtime 由 loader 的 require 提供resolve 会执行 schema(merged))且带 .toJSON()(describe() 会用)src/index.js 宿主入口:settings + API 路由
src/client/index.tsx 客户端入口:slot 注册、store、会话投影
src/client/ui.tsx 弹层 + 底部条 UI
src/client/store.ts 自包含 observable store + useSyncExternalStore hook
src/client/api.ts 同源 fetch 封装
src/client/clipboard.ts 复制(clipboard API + execCommand 兜底)
src/client/locales.ts zh/en 词典
src/client/styles.ts 样式注入(dsw CSS 变量,适配深浅色)
build.ps1 构建 + 冒烟
install.ps1 一键安装到桌面 profile
uninstall.ps1 一键卸载
test/smoke.mjs 冒烟测试(宿主 + 客户端)
test/host-drive.mjs 宿主路由直驱复测
MIT