前言¶
DeepSeek Harness (DSH) 的 Web 界面在处理多任务切换时,侧边栏管理或快速访问常用工具可能不够直观。dsh-bookmarks-dock 插件通过在界面左侧增加一个可展开的工具栏解决了这一问题。该插件不改变原有布局结构,展开时通过内容右移来容纳书签列,避免遮挡主视图内容。
核心功能¶
左侧书签工具栏
固定悬浮「★」按钮,收起态不占位。点击展开 52px 宽的书签列,用于展示常用网址。
内容右移不遮挡
展开时给 DSH 三栏外壳增加 margin-left,中栏随框架 ResizeObserver 自动收窄,无横向滚动条,不会盖住原有内容。
真实 favicon 自动解析
Host 端(Node 进程)抓取站点首页 HTML,按浏览器真实加载顺序提取图标并转 base64,结果缓存于 localStorage。
书签持久化
书签数据存储于浏览器 localStorage,支持跨刷新和重启保留。
增删便捷
底部「+」添加网址(名称可选、自动补全 https://);悬停书签显示「×」删除。
预置常用站点
首次使用预置百度、GitHub、知乎,用户可删除后自定义使用。
安装与启用¶
环境要求:Node 18+,已安装 @deepseek-ai/dsh。
安装命令如下:
dsh plugin --profile web add ./dsh-bookmarks-dock
安装后重启 web 服务使客户端插件表生效:
dsh web --port 3080
典型用法¶
- 启动
dsh web后,界面最左侧会出现一个悬浮「★」按钮。 - 点击 ★ 展开书签列,页面内容自动右移、不被遮挡。
- 点击书签图标 → 新标签页打开对应网址。
- 底部「+」添加网址;悬停书签点击「×」删除。
- 点击「«」或点空白处收起,布局还原。
实现说明¶
双半插件
Host 半通过 webServer.register({ kind: "prefix", path: "/dsh-bookmarks-dock" }) 暴露 favicon 解析路由,用 Node 全局 fetch + Buffer 抓取并按 magic bytes 校验后 base64 编码。
客户端注入
Client buffer 以 window.__ModuleLoader__.load({ id, factory }) 格式加载,require("react") 走平台 seed 表;通过 ctx.slots.inject("shell.overlay", ...) 挂载 UI。
持久化机制
客户端插件以 dsh.client 声明,经 cordis.patch.yml 的 insert 常驻加载(重启不丢失);区别于进程内 cordis_define 动态插件。
适用场景¶
本插件适合需要在 DSH 界面中快速切换常用开发工具或参考站的开发者。插件以当前 dsh 进程权限运行,安装前建议检查源码与许可证。
总结¶
dsh-bookmarks-dock 通过简洁的悬浮交互和自动布局调整,为 DSH 用户提供了实用的左侧书签管理方案。项目地址:https://github.com/songying2024/dsh-bookmarks-dock