dsh-sidebar-tools
A dynamic Cordis plugin developed for the DeepSeek Harness Web GUI
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 20, 2026
- Updated
- Aug 20, 2026
Introduction
DSH 右侧工具箱边栏(天气 · 待办· 备忘· 日历)
一个为 DeepSeek Harness Web GUI 编写的动态 Cordis 插件:在页面右缘添加可折叠的工具边栏,包含四个按钮 —— 🌤️ 天气、✅ 待办、🔵❓ 备忘 、📅 日历。
动态 Cordis 插件:通过
cordis_define/cordis_run在当前会话中定义并激活,不修改任何部署配置文件,停止或卸载时自动清理所有副作用。
功能
| 按钮 | 功能 | 数据来源 |
|---|---|---|
| 🌤️ 天气 | 当前温度 / 体感 / 湿度 / 风速 + 未来 5 天预报;支持输入城市(留空自动定位) | Host 端获取 wttr.in(免密钥),Client 经 host.call('weather.get') 读取 |
| ✅ 待办 | 添加(可选优先级 高/中/低 与截止日期+时间)、勾选完成、删除;按「未完成 → 优先级 → 创建时间」排序,逾期未完成标红 | Host 端持久化到工作区文件 <workspaceRoot>\dsh-sidebar-todos.json(RPC:todo.list/add/toggle/remove),重启 / 更新自动恢复 |
| 🔵❓ 备忘 | 打开并编辑保存文本文件(UTF-8,≤512KB);路径可配置,支持绝对路径或相对工作区 | Host 端 fs 服务读写(RPC:file.read / file.save / viewer.config / viewer.savePath);路径持久化到 <workspaceRoot>\dsh-sidebar-settings.json |
| 📅 日历 | 月历网格(周一开头)、翻月、今天高亮、点击选日 | 纯 Client 渲染 |
截图

架构
- 挂载点:
shell.overlay插槽(框架级浮层,纯增量list插槽,不替换任何出厂 UI),侧边栏固定停靠页面右缘垂直居中。 - Host 半段(
plugin/host.js):weather.get:双通道获取天气 —— 优先ctx.web.fetch(若部署注册了 fetch provider),否则回退ctx.subprocess调用系统自带curl.exe请求https://wttr.in/<city>?format=j1,解析当前天气与 5 天预报。todo.list / todo.add / todo.toggle / todo.remove:待办事项的增删改;启动时通过fs服务从<workspaceRoot>\dsh-sidebar-todos.json自动加载,每次变更原子写入,fs不可用时降级为纯内存。每条含优先级(high/medium/low)与可选截止时间(YYYY-MM-DD或YYYY-MM-DDTHH:MM),旧数据自动迁移为默认「中」优先级。
- Client 半段(
plugin/client.js):- 注册
shell.overlay列表插槽(id: 'dsh-tools-sidebar')。 - 三个面板组件:天气、待办、日历(全部使用
React.createElement,无 JSX)。 - 完全自包含配色:本地
--dsx-*变量 +body[data-ds-dark-theme]深色硬覆盖,不依赖主题变量的解析结果,深 / 浅色模式均保证可读。
- 注册
设计要点
- 网络:Host 沙箱禁用了全局
fetch/require/process,所有网络与进程操作都通过 cordis 服务(web/subprocess)完成,无任何外部依赖。 - 数据安全:所有 Host → Client 的 RPC 返回值均为纯 JSON;数值字段经安全转换(缺失返回
null,杜绝NaN/undefined破坏序列化)。 - 生命周期:插槽注册、样式、RPC handler 全部归入插件 Fiber,
cordis_stop/cordis_undefine后自动清理。
安装
- 打开 DSH Web GUI 的一个会话。
- 使用
cordis_define(kind: "new",idPrefix 任取 3–6 个小写字母):code.host←plugin/host.js的完整内容code.client←plugin/client.js的完整内容
- 使用
cordis_run激活返回的pluginId/packageId。 - 在界面批准授权后,右侧边栏即出现。
常见问题
- 刷新页面后侧边栏消失? 动态插件的 Client 半段绑定在浏览器页面连接上,页面刷新后需要重新激活一次(对会话内的 Agent 说「重新加载插件」即可,或重新执行一次
cordis_run)。Host 半段在进程内保持运行。 - 侧边栏不可见但插件显示 running? 同上 —— 先重新激活;若仍不可见,检查是否在连接该会话的那个页面/标签页中查看。
已知限制
- 待办持久化文件:保存在工作区根目录
dsh-sidebar-todos.json(UTF-8 JSON 数组)。删除该文件即清空待办;文件损坏时插件会从空列表重新开始。 - 天气网络:数据来自 wttr.in;要求本机可用
curl.exe(Windows 10+ 自带,位于System32)或部署已注册 web fetch provider。
版本历史
- v1 (
pkg-1):初始版本。 - v2 (
pkg-2):天气通道修复 —— 部署未注册 web fetch provider,增加subprocess+curl.exe回退通道。 - v3 (
pkg-3):修复预报天气代码解析 —— wttr.in 每日条目无顶层weatherCode,改从hourly(正午优先)提取;数值字段安全转换。 - v4 (
pkg-4):修复按钮白底白字 —— 完全自包含配色 + 深色硬覆盖,按钮文字加大加粗,新增 ⓘ 诊断按钮。 - v5 (
pkg-5):移除 ⓘ 诊断按钮,干净发布版。 - v6 (
pkg-6):待办持久化 —— 通过fs服务读写工作区dsh-sidebar-todos.json,重启 / 更新不丢。 - v7 (
pkg-8):待办优先级与截止日期 —— 高/中/低优先级胶囊、日期选择器、逾期标红、智能排序;持久化格式升级并兼容旧数据。 - v8 (
pkg-9):截止日期升级为「日期+时间」——datetime-local选择器,逾期按当前时刻判断,仅日期数据兼容。 - v9 (
pkg-10):Windows 日历同步(已回滚移除)。 - v10 (
pkg-12):新增「查查」文件查看器 —— 打开指定文本文件并显示内容,路径可配置并持久化到dsh-sidebar-settings.json。 - v11–v14:查查图标迭代 —— ❓ → 人像+问号 SVG → 蓝色人像 + 红色问号 → 人像放大。
- v15 (
pkg-6):查查升级为文本编辑器 —— 内容可编辑,新增「保存」按钮与保存状态提示,Host 新增file.save原子写入。