dsh-weread-gather:在 DSH 侧栏管理微信读书书架与笔记

前言

微信读书里的书架、划线和想法长期留在官方客户端里,想本地检索、按年回顾,或导出成带 front-matter 的 Markdown 给别的工具用,往往要另写脚本或手工复制。DeepSeek Harness(DSH)支持通过插件扩展 Web 侧栏与宿主能力;dsh-weread-gather 在宿主侧用只读 Agent 网关拉取你自己的账号数据,落到本机目录,并在侧栏提供「数字书房」界面,不写回微读、不做上报。

下面介绍插件定位、安装配置、主要功能与数据落点,便于在 DSH >= 0.2.2-rc.1 上自行启用与核对隐私边界。

这是什么

  • 名称:dsh-weread-gather(侧栏显示「数字书房」)
  • 维护者:fountainhead-gq
  • 当前版本(package.json):1.1.4,许可证 MIT
  • 定位:把微信读书账号数据同步到本地 $DSH_HOME/weread-gather/,在 DSH 侧栏里浏览、搜索、按年总览,并支持 Markdown 导出与一键备份/恢复
  • 目录页:https://www.skillhub.cn/plugins/fountainhead-gq/dsh-weread-gather
  • 源码:https://github.com/fountainhead-gq/dsh-weread-gather

插件为纯 JS、无构建步骤;API Key 与全部 JSON 数据由宿主持有,页面通过同源接口只读访问。

核心功能

侧栏与界面

  • 侧栏入口「数字书房」(sidebar.panellist,order 26),主面板同 key 打开
  • 书架:10 个大类(文学/其他/艺术/科技/成长心理/历史/生活/社科/经管理财/哲学宗教),每行 10 本(窄屏降为 8/6/4);支持书名/作者/分类搜索、按最后阅读年份筛选、多种排序
  • 总览:右上角切换年份后,KPI、月度分布、表盘与置顶年度阅读热力图联动;累计阅读时段分布不随年份变化(接口仅提供 all-time)
  • 笔记 / 想法:分页列表与瀑布流,可筛选、搜索、单条复制,点卡片可进书籍详情
  • 书籍详情:展示元信息与该书全部划线、想法,支持一键在微读打开、「导出这本书」生成整本 Markdown
  • 全局搜索:顶栏同时搜书名、作者、分类、划线与想法正文,结果按书籍/划线/想法分类展示
  • 配色通过重映射 --dsw-alias-* 跟随宿主亮/暗主题

同步与数据

数据来自微信读书 Agent 网关 https://i.weread.qq.com/api/agent/gateway,全部只读(书架、书籍元信息、划线、想法、阅读统计等)。热力图与年度视图按需拉取月度/年度阅读秒数,结果缓存在 heat.json(已过年份永久缓存,当年约 30 分钟过期)。

同步为增量:依据 sync-state.json 比对每本书的 lastNoteTime / noteCount / reviewCount,未变化的书不重拉划线;默认单次最多细读 60 本(maxBooks),可在设置中「强制全量重建」或调大上限。资料中实测:约 779 本书库首次全量约 8.4 秒,无变化时同步约 2~3 秒。

导出与备份

  • 划线/想法可勾选后「导出所选」,或按书/按搜索结果导出;导出面板可控制是否包含原文、想法、书籍信息、章节、星级、微读链接,支持预览前 30 行、复制、下载或保存到导出目录(默认 $DSH_HOME/weread-gather/exports/)
  • Markdown 含 YAML front-matter(title、bookId、exportId、contentHash 等),块引用仅用于原文,想法单独标记
  • 设置中支持下载备份包、两步确认导入(导入前自动另存当前数据)、清空数据

HTTP 接口(同源)

前缀 /dsh-weread/api,例如 GET /state(配置掩码与同步进度)、GET /data、GET /heat?year=、POST /sync({ "full": true } 可强制全量)、POST /export、GET|POST /backup 与 /restore 等。空 selector 调用导出会报错,不会默认导出全部。

安装与启用

要求 DSH >= 0.2.2-rc.1(Web 端)。安装后需重启 DSH,侧栏出现「数字书房」。

# 从 npm 安装
dsh plugin --profile <你的 profile> add dsh-weread-gather

# 或从 GitHub 安装
dsh plugin --profile <你的 profile> add github:fountainhead-gq/dsh-weread-gather

也可将 Release 的 .tgz 拖入设置页,或链接本地源码目录:

dsh plugin --profile <profile> add link:D:/path/to/dsh-weread-gather

首次打开需配置 微信读书 Agent 网关 API Key(wrk- 开头):

  1. 优先在 DSH 应用进程环境变量中设置 WEREAD_API_KEY,则无需手填
  2. 否则在「书房 → 设置」粘贴,写入本机 config.json
  3. Key 仅在宿主侧使用;GET /state 返回掩码后的 Key,不进入页面逻辑

典型用法

  1. 安装并重启后打开「数字书房」,完成 API Key 配置。
  2. 触发同步(界面或 POST /dsh-weread/api/sync);进度可在页顶进度条或 /state 查看。
  3. 在总览切换年份查看热力图与 KPI;在书架按分类或年份筛选。
  4. 在笔记/想法中搜索后勾选条目,使用「导出所选」生成 Markdown;或在书籍详情使用「导出这本书」。
  5. 迁机或换环境前在设置中「下载备份」,新环境导入前确认两步提示(会自动备份当前数据)。

书架大类由微读叶子分类按「-」前前缀折叠,映射表在仓库 index.js 的 CATEGORY_GROUPS,加载时派生,改分组无需重新同步。

适用场景与注意

适合:已在用 DSH Web 端、希望把微信读书阅读数据留在本机、需要检索/年度回顾/Markdown 进自有笔记链路的用户。

权限与信任:插件以当前 DSH 进程权限运行,会读本机 config.json 中的 API Key 并向微读网关发起请求;安装前请查看 仓库源码 与 MIT 许可证,自行判断是否符合使用条款。该项目非微信读书官方出品。

已知限制(摘自 README):

  • 「其他」类多为微读无法提供分类的导入文档/PDF,难以自动归类
  • 默认仅对最近有笔记的若干本书(默认 60)做细读同步,其余记在 pending,需强制全量或增大 maxBooks
  • 删除 sync-state.json 不丢 data.json,但下次同步会按全量流程走一遍
  • 阅读时段图仅展示累计 all-time,不随年份切换

数据目录结构如下,卸载插件后删除该目录即可清空本地书房数据:

$DSH_HOME/weread-gather/
  config.json   # apiKey、maxBooks、notesPerBook、metaLimit、exportDir
  data.json     # 书架、划线、想法、阅读统计
  meta.json     # 书籍元信息缓存
  heat.json     # 逐年热力图与年度聚合
  sync-state.json
  exports/
  backups/

结尾

dsh-weread-gather 把微信读书账号的只读同步、侧栏浏览与 Markdown/备份能力收进 DSH 一个插件里,数据默认只落在 $DSH_HOME/weread-gather/。社区目录可查 SkillHub 条目,问题与更新以 GitHub 仓库 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye