dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness plugin: a Settings-resident WeChat daily report. Reads local WeChat 4.x databases read-only, ranks the day's chats, and separates what needs you from what to ignore.
一个装进 DeepSeek Harness 设置页的微信日报插件:每天结束前,把本机微信里发生的事整理成一份日报,
分成 需要处理、值得一看、可以忽略 三段;同时在对话里给 agent 一个 wechat_daily_report 工具。
只读微信本地数据库,不发消息、不改数据。解密、排序、渲染全部在本机完成;模型那一步是可选的开关。
设置 → 微信日报
─────────────────────────────────────────────
微信日报
每天结束前,把微信里发生的事整理成一份日报。
[已绑定微信数据库 · 1] [今天 · 2026-10-20] [下次自动生成 · 21:30] [立即生成日报]
# 微信日报 · 2026-10-19 周一
> 今天共 186 条消息,来自 23 个会话;3 件事可能要你处理。
**导师叫你去办公室,还有人问能不能上课,两件都等你回应**
## 需要处理
1. **王老师** — 问开题报告什么时候给他,说周一要拿去评审
- 为什么重要:有明确截止时间,且导师在等
- 你要做:周日晚前把初稿发邮件给王老师
…
~/.dsh/storages/dsh-wechat-daily/reports/,随时可删。前置:macOS(微信 4.x 桌面版)、Node ≥ 23.4(需要内置 node:sqlite)、已装 DeepSeek Harness。
git clone https://github.com/zengpu987-ctrl/dsh-wechat-daily.git
然后在 DSH 里安装这个目录:
plugin_manager action=install_bundle target=/absolute/path/to/dsh-wechat-daily
装好后 设置 → 微信日报 会出现一页。首次打开会显示「尚未绑定微信数据库」——下面这步只做一次。
微信 4.x 的消息库是 WCDB / SQLCipher 4,密钥不在任何磁盘文件里明文保存,只在打开数据库的瞬间经过
CCKeyDerivationPBKDF。所以要取一次密钥,之后每天只读数据库。
流程(脚本在 tools/keycapture/,原理见 docs/key-capture.md):
/Applications/WeChat.app 到临时目录,只对副本做 ad-hoc 重签——原版一个字节都不动。sqlite3_key / CCKeyDerivationPBKDF / PKCS5_PBKDF2_HMAC
上记录参数并自动继续。产物是 ~/.dsh/storages/dsh-wechat-daily/keys.json(权限 600),只放主密钥与派生缓存。
这个文件不要提交、不要上传、不要放进同步盘。
微信换密钥(重装、重新登录、大版本改动方案)后需要重新捕获。多个微信账号各有主密钥,需分别捕获。
设置页里可以改:是否每天自动生成、生成时间、是否让模型写摘要、我的昵称(用于识别点名)、关注关键词。
值存在 ~/.dsh/storages/dsh-wechat-daily/config.json。
agent 工具:
| action | 作用 |
|---|---|
status | 密钥是否已绑定、今天是否已生成、下次生成时间 |
generate | 立即生成(可带 date: YYYY-MM-DD) |
latest | 读出现成的日报正文 |
-wal 做快照,再逐页解密到缓存;WAL 帧只在 SQLite 校验链完整时才应用,
合并结果过 quick_check,不通过就退回主库镜像——宁可少最后几条,也不返回损坏数据。node:sqlite 只读查询 Msg_<md5(username)> 表,按 Name2Id 还原发言人,按 contact 还原会话名,
按 WCDB_CT_message_content 判断 zstd 压缩并解压。| 文件 | 职责 |
|---|---|
lib/sqlcipher.mjs | SQLCipher 4 只读解密、HMAC 校验、WAL 帧合并 |
lib/wechat.mjs | 账号发现、快照、表结构与消息解析 |
lib/digest.mjs | 会话排序、提示词、模型 JSON 解析 |
lib/report.mjs | 编排、渲染、落盘 |
index.js | HTTP 路由、定时、agent 工具 |
client.js | 设置页(React,无构建步骤) |
tools/keycapture/ | lldb / 内存扫描取密钥脚本 |
docs/example-report.md | 虚构的日报样例(不含任何真实聊天) |
node --test "test/*.test.mjs"
test/sqlcipher.test.mjs 会按 WCDB 的真实页格式自行加密一份数据库(含 WAL 帧与校验链),
再验证解密、HMAC、WAL 合并与「尾部被写坏时不污染页面」;test/digest.test.mjs 覆盖排序、
点名识别、JSON 容错与长度预算。不需要微信、不需要密钥。
[图片] 之类的占位。hasKey: false)。keys.json、真实 wxid、聊天截图或完整日报。MIT © 2026 Zeng pu