Back to home@ffsszzll

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
GitHub repo

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-DDYYYY-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 后自动清理。

安装

  1. 打开 DSH Web GUI 的一个会话。
  2. 使用 cordis_definekind: "new",idPrefix 任取 3–6 个小写字母):
    • code.hostplugin/host.js 的完整内容
    • code.clientplugin/client.js 的完整内容
  3. 使用 cordis_run 激活返回的 pluginId / packageId
  4. 在界面批准授权后,右侧边栏即出现。

常见问题

  • 刷新页面后侧边栏消失? 动态插件的 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 原子写入。

许可证

MIT