dsh-toolbox
DSH 工具箱插件:股票盯盘(东方财富行情)+ 本地 txt 小说阅读器(UTF-8/GBK 自动识别、进度保存)
安装
此插件尚未提供可验证的 bundle,或兼容性检查未通过。请先阅读仓库说明。 阅读完整 README ↗
说明文档
阅读完整 README ↗dsh-toolbox
DeepSeek Harness 工具箱插件:在侧边栏提供「🧰 工具箱」入口和一个可拖拽的浮动面板,内置两个工具:
- 📈 股票盯盘 — 东方财富批量行情接口(一个请求查全部自选),红涨绿跌,展开显示今开/昨收/最高/最低/换手率/成交量/成交额,自选列表与阅读进度可管理,1/2/5 分钟自动刷新 + 手动强制刷新。
- 📖 看小说 — 输入本地 txt 路径打开(自动识别 UTF-8 / GBK 编码),按段落分页阅读、字号调节,进度自动保存,书架续读。
安装
npm install dsh-toolbox
注册到组合
在宿主组合(cordis.yml)中加入一行。这个包是双面插件:Host 半提供 toolbox Remote 服务(小说文件读取、进度持久化、行情抓取),浏览器半通过包内的 dsh.client 声明自动进入 Web 启动图:
- id: toolbox
name: dsh-toolbox
以 Web 部署为例,把这一行加进 profile 的 cordis.patch.yml 的 insert 列表(或任何后于 web-app bundle 的补丁层),然后重启 DSH:
- insert:
- id: toolbox
name: dsh-toolbox
重启后:侧边栏底部 Settings 旁出现 🧰 工具箱按钮,右上角浮动面板可直接使用。
需求
- DeepSeek Harness 部署,Host 组合中具备标准服务:
fs、typert/api-gateway(Remote 网关)、client-runtime(Web 端 slots) - Host 端 Node ≥ 18(行情抓取使用内置 fetch;小说编码识别使用内置 TextDecoder 的 gbk 支持,需完整 ICU 的 Node 构建——官方发行版均满足)
- 小说进度文件写入
/.dsh-toolbox/novel-progress.json;若部署为 read-only 沙箱,写入被拒时进度仅保留在内存中,其余功能不受影响
配置
当前版本无配置项。行情缓存固定 60 秒,失败退避 30 秒;小说文件上限 16MB。
开发
npm install # 安装依赖
npm run typecheck # tsc 类型检查
npm run build # esbuild 产出 lib/index.js(host)+ lib/client.js(browser)
npm run smoke # Host 半冒烟测试(模拟 fs + 真实行情请求)
构建脚本直接把 esbuild 作为平台二进制以 inherited stdio 调用(而非 JS API 的管道子进程),因此在 DSH 沙箱 shell 与普通机器上行为一致。
架构说明
Host 半 src/index.ts ──→ lib/index.js
ToolboxService extends TypertRemoteService("toolbox")
@Remote stockFetch / novelList / novelOpen / novelSave
· 行情:内置 fetch → 东财 ulist(缓存/退避/合并)
· 小说:ctx.fs 读取 + TextDecoder(utf-8→gbk 回退)
· 进度:内存 + ctx.fs 写入 workspaceRoot/.dsh-toolbox/novel-progress.json
Client 半 src/client.tsx ──→ lib/client.js
window.__ModuleLoader__.load({ id: "dsh-toolbox", factory })
· 手写 Typert Remote contribution(严格 codec)挂载 remote.toolbox
· slots:sidebar.footer.action(入口按钮)+ shell.overlay(浮动面板)
不依赖 DSH monorepo 的 Typert 编译步骤:Host 侧依赖 Gateway 的 SRC 运行时反射(方法参数名在打包后保留,smoke 测试断言 remoteMethods 可读),Client 侧直接手写 contribution 描述符(这正是 Typert 编译器的产物形态)。
发布
npm run prepublishOnly # 自动执行:typecheck + build
npm publish # 发布到 npm registry
发布前请在 package.json 中确认包名(如需要 scoped 名 @yourname/dsh-toolbox)与版本号。
License
MIT