dsh-plugin-atuowexin:微信本地聊天記錄只讀摘錄(DSH 插件)

前言

在 DeepSeek Harness(DSH)裏做帶上下文的智能體時,常見需求是引用本機微信聊天記錄:檢索某羣、某人的歷史消息,再交給模型總結或檢索。難點在於數據在 SQLCipher 加密庫裏、還有 WAL 未合併、以及多會話混在一起容易越權讀寫。手工解密、導出、再自己寫隔離層,步驟多且容易踩坑。

下面介紹的 dsh-plugin-atuowexin(維護者 jcy0chenyuan0,分類 admin-security)把「解密 → 完整摘錄 → 會話隔離 → 導出」做成 DSH 插件 + Python 引擎(標準庫爲主)+ 命令行 CLI,且聲明爲只讀:不發送消息、不注入微信進程、不調用雲端模型。SkillHub 目錄頁:jcy0chenyuan0/dsh-plugin-atuowexin;源碼與文檔:GitHub。當前包版本 v0.5.0,許可證 MIT。目錄簡介寫明 Windows only(微信本地數據路徑與密鑰提取面向 Windows 環境)。

這是什麼

一句話:DSH 側的只讀微信本地聊天摘錄插件——用你自己的密鑰解密本機庫,歸一化後按會話隔離,供 Agent 工具查詢或導出 Markdown/JSONL 等。

交付形態包括:

  • DSH bundle:通過 cordis.patch.yml 掛到 profile 的 loader 樹(package.json 中 dsh.bundle.patch 指向該文件)。
  • Python 引擎:engine/atuowexin/,CLI 入口 python -m atuowexin。
  • JS 薄橋:lib/index.js 把 DSH 工具參數轉成 python -m atuowexin --json …,避免 CLI 與插件行爲分叉。

核心功能

以下能力均來自項目 README 與 package.json 描述,可按代碼路徑對照實現。

完整摘錄

從後端(本機 chatlog、已解密 SQLite、或合成 mock)歸一化爲 SQLite,併爲每個會話生成 messages.jsonl;默認摘全部會話、不限條數,保留原始字段與媒體引用。相關代碼:engine/atuowexin/extract.py、backends/。

解密(含 WAL)

用 keymap 或單 key 把 SQLCipher 庫解成明文;自動合併 -wal 裏尚未 checkpoint 的已提交數據,並處理 SQLite 重置後的殘留幀。相關代碼:engine/atuowexin/sqlcipher.py、ingest.py。

會話隔離

三層:目錄(conversations/<slug>/)、寫入隔離(跨會話寫入拋 IsolationError)、查詢 API 不提供「查全部會話消息」的形狀。slug = 可讀名 + md5(會話 id)[:8],改名不換目錄。相關代碼:isolate.py、store.py。

工作區佈局示例:

<workdir>/
├─ atuowexin.db
├─ conversations/
│  ├─ 產品研發羣-8a066ec4/
│  │  ├─ messages.jsonl
│  │  └─ profile.json
│  └─ 林達_產品-ac325878/
└─ exports/

導出

單會話 jsonl/csv/md;export --all 可出總覽、每會話 Markdown 與合訂本,支持 --redacted 打碼。配置段 privacy 默認對手機號、身份證、銀行卡等脫敏。

環境體檢

doctor 逐項說明缺什麼、下一步做什麼(含 WAL 待合併、可選依賴)。插件工具 wechat_doctor 對應同一邏輯。

密鑰(key ensure / find)

在能解密的前提下,推薦 key ensure:先看 keymap 是否已有,缺了才從運行中的微信進程內存只讀掃描並 HMAC 校驗候選密鑰,寫入 keymap.json(默認不回顯明文)。插件工具 wechat_find_key 默認 ensure=true。

版本限制(README 實測說明):微信 ≥4.1.10 起密鑰不再常駐內存;≤4.1.9 可較穩定提取。更高版本可嘗試 --watch 抓重新登錄瞬間,或使用已有 keymap、chatlog 等後端。

安全提醒:keymap.json 相當於數據庫萬能鑰匙,不要進倉庫、雲盤或截圖傳播;項目 .gitignore 已排除 keymap*.json。

明確不做

v0.3.0 起從代碼移除(非配置開關):發送消息、UI 自動化、微信進程注入、DeepSeek/任何雲端模型調用。配置裏沒有 llm 與 send 段。

安裝與啓用

DSH 生態裏插件以 bundle 形式安裝;社區目錄在 SkillHub,與 DeepSeek / 幻方無官方從屬關係,安裝前宜自行查看源碼與 MIT 許可證。

首次準備 bundle

在插件倉庫目錄執行(README 要求):

Windows:

powershell -ExecutionPolicy Bypass -File .\install.ps1

只檢查、不自動裝依賴時:

powershell -ExecutionPolicy Bypass -File .\install.ps1 -CheckOnly

macOS/Linux(生成 patch,不含 Windows 微信鏈路):

node install.mjs

腳本會按當前目錄生成 cordis.patch.yml(已 .gitignore),不寫死盤符。

裝入 DSH profile

GUI 路徑:設置 → 插件 → 安裝 → 本地路徑。命令行等價寫法:

plugin_manager install_bundle file:<本目錄的絕對路徑>

裝完後在 list_bundles 或插件頁可見 dsh-plugin-atuowexin,可整體啓用/停用;卸載用 GUI 移除或:

plugin_manager remove_bundle dsh-plugin-atuowexin

說明:pnpm 會把包複製到 <profile>/node_modules/dsh-plugin-atuowexin,patch 裏引擎與 lib/index.js 指向工作區絕對路徑,改插件或引擎代碼重啓 DSH 即生效;僅當修改 cordis.patch.yml 掛載參數時需重新 install_bundle。

依賴與環境(Windows 默認自動安裝)

install.ps1 默認靜默安裝缺失項;插件加載時還會在後臺跑 bootstrap.ps1 -AutoInstall -Quiet(6 小時內不重複)。可設 patch config.autoInstall: false 或環境變量 DSH_BOOTSTRAP=0 關閉。

  • Python:優先 DSH 自帶運行時,否則 README 示例用 winget install Python.Python.3.12 --scope user。
  • 微信:winget install --id Tencent.WeChat.Universal -e(4.x);需手動登錄,插件只讀已登錄賬號本地數據。

配置文件:%USERPROFILE%\.atuowexin\config.json(config init 生成模板)。環境變量包括 ATUOWEXIN_WORKDIR、ATUOWEXIN_BACKEND 等。

DSH 工具清單(只讀)

README 列出 6 個 DSH 工具:

工具 作用
wechat_doctor 環境體檢
wechat_sync 完整摘錄(默認增量);參數含 full、conversation[]、since、limit
wechat_conversations 列出會話;query、kind、limit
wechat_messages 讀單會話消息;conversation 必填,since/until/keyword/limit/offset、redacted
wechat_export 導出 jsonl/csv/md;conversation、out、formats、redacted
wechat_find_key 密鑰 ensure/find;root、out、watch、seconds、sqlcipher_version

智能體側應優先用 wechat_conversations 拿會話 id,再用 wechat_messages 限定在單會話內查詢,與引擎的隔離設計一致。

典型用法

命令行:30 秒鏈路(PowerShell)

先定位 Python(優先 DSH 運行時),設置 PYTHONPATH 指向倉庫內 engine:

$py = Get-ChildItem "$env:USERPROFILE\.dsh\dsh-runtimes\*\dependencies\python\python.exe" -ErrorAction SilentlyContinue |
      Sort-Object FullName -Descending | Select-Object -First 1 -ExpandProperty FullName
if (-not $py) { $py = (Get-Command python -ErrorAction Stop).Source }
$env:PYTHONUTF8 = "1"
$env:PYTHONPATH = (Join-Path (Get-Location) "engine")

& $py -m atuowexin deps install
& $py -m atuowexin doctor

無微信時用 mock 驗證:

& $py -m atuowexin --backend mock sync
& $py -m atuowexin --backend mock conversations
& $py -m atuowexin --backend mock messages --conversation wxid_linda2024 --limit 5

接真實數據(解密含 WAL → 校驗 → 寫配置 → 全量摘錄):

& $py -m atuowexin ingest --src "<...>\db_storage" --keymap <keymap.json 路徑>

導出全套 Markdown:

& $py -m atuowexin export --all --out "<導出目錄>"

密鑰命令

python -m atuowexin key ensure --root "<...>\db_storage"
python -m atuowexin key ensure --root "<...>\db_storage" --check-only
python -m atuowexin key find --root "<...>\db_storage"
python -m atuowexin key find --root "<...>\db_storage" --watch --seconds 120

CLI 子命令一覽

doctor / config / decrypt / ingest / sync / conversations / messages / export / watch / workspaces / deps / key ensure | find

backend 爲 auto 時優先級:chatlog → 已解密庫 → 合成數據(README 會說明選用原因)。

適用場景與注意

適合誰

  • 在 DSH 裏做 admin-security 類、需要只讀引用本機微信歷史的 Agent 或工作流。
  • 需要會話級隔離,避免一次查詢把全部聊天混進上下文。
  • 希望同一套邏輯在 CLI 與 DSH 工具間一致(JSON 橋接)。

務必注意

  1. 權限:插件以當前 DSH 進程權限運行;讀進程內存、讀微信數據目錄都需要本機授權,安裝前應閱讀源碼與 MIT 許可證,僅在可信環境使用。
  2. 平臺:微信本地摘錄與密鑰流程面向 Windows;非 Windows 主要用於 bundle 安裝腳本與 mock 鏈路自測。
  3. 隱私:導出默認脫敏,但聊天內容本身敏感;工作目錄、keymap.json、導出目錄應本地保管。
  4. 微信版本:高版本密鑰不常駐內存時,需按 README 的 --watch、降級提取一次、chatlog 或已有 keymap 等替代路徑規劃。
  5. 只讀邊界:不要期望發消息、控 UI 或雲端模型集成;這些不在 v0.5.0 設計內。

結尾

dsh-plugin-atuowexin 把微信本地庫的解密、全量摘錄、會話隔離和導出收成 DSH 可調用的只讀工具鏈,並用 Python CLI 保持行爲單一來源。若要安裝或看維護說明,可打開 SkillHub 目錄頁 與 GitHub 倉庫 README。

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

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

小夜