Skip to main content
Glama

WeChat Archive for DeepSeek Harness

English | 简体中文

macOS向けの、ローカルファーストでフェイルクローズ方式のWeChatアーカイブプラグインです。診断、ステータス検査、同期、検証という4つの限定された操作をDeepSeek Harnessに接続し、Agent Skillと、無人実行のためのオプションのmacOS LaunchAgentを含みます。

バージョン0.1.0は、静止状態かつチェックポイント取得済みのMac WeChatデータベーススナップショットから、検出されたすべてのmessage_N.dbシャード内のすべてのMsg_*テーブルをスキャンできます。リプレイ可能で検証可能なJSONLデルタを保存し、ローカルで利用可能な画像コンテナ、MP4ファイル、音声BLOBを、プライベートなコンテンツアドレス型オブジェクトとして保持します。

リリースステータス: 実装と合成安全テストは完了していますが、このリリースを作成する際に実際のチャット同期は実行されていません(NOT_RUN)。同期はデフォルトで無効のままであり、LaunchAgentは自動的にインストールされません。

Mac WeChat source
       |
       v
deterministic Python core ----> private state + JSONL deltas + media objects
       |                                      |
       +---- stdio MCP ---- DeepSeek Harness  +---- replay/hash verification
       |
       +---- one-shot scheduler ---- optional macOS LaunchAgent

提供される機能

種別

操作

アーカイブデータを書き込むか?

MCP

wechat_doctor

いいえ—アプリ、ソース、WAL、シークレット、権限をチェックします

MCP

wechat_status

いいえ—限定された運用メタデータを報告します

MCP

wechat_sync

はい—サーバーのオプトインとconfirm=trueの両方が必要です

MCP

wechat_verify

いいえ—メッセージ履歴を再生し、ハッシュとカバレッジを検証します

Agent Skill

wechat-archive

モデルを必要な安全ワークフローへ導きます

スケジューラー

sync followed by verify

人間がLaunchAgentをインストールした後にのみ

MCPの結果は、ステータス、件数、カバレッジ、整合性の情報を公開します。連絡先名、アカウント識別子、メッセージ本文、シークレット、プライベートなデータベースパスは公開しません。

Related MCP server: message-container

整合性とプライバシーの境界

  • ツールの引数は、アカウント、ファイルシステムパス、SQLステートメント、実行可能ファイル、シークレットを選択できません。

  • プラグインは、キーを取得したり、LLDBをアタッチしたり、WeChatの再署名や置換を行ったり、アプリを終了させたり、WALを無視したりすることは決してありません。

  • WeChatが実行中である場合、WALにトランザクションフレームが含まれているか短いヘッダーが不正な形式である場合、アプリに固定された公式署名がない場合、シークレットが無効である場合、または取得中にソースが変更された場合、同期は新しいスナップショットを公開せずに失敗します。

  • 暗号化されたすべてのデータベースは、独立して鍵導出され、HMAC検証されます。復号化されたステージングファイルはプライベートであり、SQLiteのquick_checkでチェックされ、実行後に削除されます。

  • 不変のJSONLデルタは、インデックストランザクションがコミットされる前にfsyncされます。検証は完全な履歴を再生し、過去のオブジェクトを含む登録済みのすべてのメディアオブジェクトをハッシュ化します。

  • シークレットはmacOSキーチェーンに属します。ツールのパラメータ、コマンド引数、環境変数、ログ、Gitにコミットされた設定、リリースファイルに含めるべきではありません。

SOURCE_FAITHFUL_V1の意味

画像は常に生の.datバイトを保持します。デコードされた画像バリアントは、強いファイルシグネチャまたは曖昧さのない単一バイトXOR変換によって検証された場合にのみ書き込まれます。ビデオはMP4のftypシグネチャを持つ必要があります。音声BLOBは、文字起こしや再生互換性を主張することなく保存されます。

絵文字の抽出、一般的な添付ファイル、このMacにダウンロードされていないメディア、一部のプライベートコンテナは未解決のままです。そのため、公開結果は意図的にmedia_complete=falseになります。SOURCE_FAITHFUL_V1は、ローカルで利用可能なソースバイトが保存され、検証されたことを意味します。完全にデコードされた、または再生可能なマルチモーダルエクスポートを意味するものではありません。

同様に、「complete」は検証済みの静止したMacデータベーススナップショット1つのみを表せます。削除された履歴、クラウドのみまたは電話のみの履歴、WeChatがローカルに保存したことのないコンテンツは決して含まれません。

要件

  • macOS

  • Python 3.10以降

  • Node.js 24以降

  • pnpm 11

  • uv

  • libzstd — zstd圧縮されたメッセージペイロードのデコード用。これがない場合、元の圧縮バイトはbase64として保存されたままになります。

  • 公式のWeChatインストールと、自分自身のローカルアカウントデータへのアクセス

このプロジェクトは、アーカイブすることを許可されたデータに対してのみ使用してください。チャットアーカイブには、自分のアカウントのものであっても他人のプライベート情報が含まれます。アーカイブはローカルに保ち、アクセス制御し、Gitの管理外に置いてください。

コアとMCPサーバーのインストール

このリポジトリのチェックアウトコピーから:

cd /path/to/wechat-archive
PROJECT_DIR="$(pwd -P)"
CONFIG_PATH="${HOME}/Library/Application Support/WeChatArchive/config.json"

uv venv
uv pip install -e '.[test]'
pnpm --dir mcp-server install --frozen-lockfile

mkdir -p "$(dirname "$CONFIG_PATH")"
chmod 700 "$(dirname "$CONFIG_PATH")"
cp config.example.json "$CONFIG_PATH"
chmod 600 "$CONFIG_PATH"

config.example.jsonをスキーマとして、プライベート設定を編集します。source.rootとarchive.rootはどちらも絶対パスであり、正規化された別々のパスでなければなりません。アーカイブルートはソースツリーの内側にあってはなりません。本番設定ではKeychainプロバイダーを使用する必要があります。fileプロバイダーは、既存のユーザー所有のmode-0600の通常ファイルからの移行専用に存在します。シンボリックリンクは拒否されます。

キーの取得とアプリケーションの修復は、意図的にこのプラグインの範囲外です。シェル履歴にキーを残したり、エージェントにWeChatを変更させたりするのではなく、docs/BOOTSTRAP.mdの監督下の境界に従ってください。

まず読み取り専用の事前チェックを実行します:

.venv/bin/wechat-archive --config "$CONFIG_PATH" doctor

このコマンドは、wechat-archive.command/v1 JSONオブジェクトを1つだけstdoutに書き出します。個別に確認された同期を許可するのはREADYのみです。状態モデルについてはArchitecture and integrityを参照してください。

DeepSeek Harnessへのインストール

インストーラーは、--installが指定されない限りドライランです:

python3 scripts/install_dsh.py
python3 scripts/install_dsh.py --install

このインストーラーは、Harnessプロファイル内の1つのマークされたブロックと、このチェックアウトへの1つの~/.dsh/skills/wechat-archiveシンボリックリンクのみを管理します。DeepSeek Harnessのソースチェックアウトを変更したり、無関係なスキルを上書きしたりすることはありません。実際のプロファイル編集の前に、mode-0600のバックアップを1つ作成します。

Harnessは以下の名前を公開します:

  • mcp__wechat__wechat_doctor

  • mcp__wechat__wechat_status

  • mcp__wechat__wechat_sync

  • mcp__wechat__wechat_verify

バンドルされている安全なオーバーレイはWECHAT_ARCHIVE_ALLOW_SYNC=0を設定します。したがって、インストールによって有効になるのは読み取り専用の診断とステータス検査であり、同期ではありません。すべての実機ゲートを通過した後、オペレーターはサーバーのオプトインを明示的に1に設定し、MCPプロセスを再起動し、それでもconfirm=trueを指定してwechat_syncを呼び出す必要があります。

削除もデフォルトではドライランです:

python3 scripts/uninstall_dsh.py
python3 scripts/uninstall_dsh.py --uninstall

オプションの定期同期

スケジュールされた取得は、決定論的コアを直接呼び出します。ブラウザのタブ、言語モデル、実行中のHarness会話には依存しません。次のコマンドは、毎日03:15のLaunchAgentをレンダリングして検査するだけです。インストールは行いません:

REVIEW_DIR="${TMPDIR:-/tmp}/wechat-archive-review"
REVIEW_PLIST="${REVIEW_DIR}/local.wechat-archive.sync.plist"
mkdir -p "$REVIEW_DIR"

python3 scripts/render_launchagent.py \
  --project-root "$PROJECT_DIR" \
  --python "$PROJECT_DIR/.venv/bin/python" \
  --config "$CONFIG_PATH" \
  --hour 3 --minute 15 \
  --sync-timeout-seconds 1800 \
  --verify-timeout-seconds 7200 \
  --output "$REVIEW_PLIST"
plutil -lint "$REVIEW_PLIST"
python3 scripts/install_launchagent.py --plist "$REVIEW_PLIST"

最後のコマンドも依然としてドライランです。ジョブをインストールしてブートストラップするのは、次の明示的な操作のみです:

python3 scripts/install_launchagent.py --plist "$REVIEW_PLIST" --install

doctorがREADYを報告し、手動で確認されたsyncとそれに続くverifyが成功するまで、インストールしないでください。各スケジュール実行は、最初に同期を実行し、次に完全な検証を実行します。WeChatがアクティブであるか、WALが空でない場合、実行は安全に終了し、次のスケジュール時刻に再試行される場合があります。

同期と完全な検証には、それぞれ別の上限付きタイムアウトがあります。デフォルトは30分と2時間で、最大8時間まで設定できます。完全な検証はすべての過去のメディアオブジェクトを読み取るため、アーカイブのサイズに基づいてタイムアウトを選択してください。

検証とリリースチェック

リポジトリのすべてのテストは合成フィクスチャを使用します。実際のチャットデータを代わりに使用しないでください。

.venv/bin/python -m pytest -q
pnpm --dir mcp-server test
python3 scripts/check_manifest.py --scan-content
python3 scripts/build_release.py \
  --output "${TMPDIR:-/tmp}/wechat-archive-0.1.0.tar.gz"

プロセスの正常終了は、実際のアーカイブの十分な証拠にはなりません。受理条件は、期待されるソースカバレッジを伴って、SYNCEDまたはNO_CHANGEの直後にVERIFIEDが続くことです。完全な受理ゲートを参照してください。

ライセンスとサードパーティ成果物

プロジェクトコードはMIT Licenseの下で公開されています。監査済みまたは参照されたアップストリームプロジェクトとそのライセンスは、THIRD_PARTY_NOTICES.mdに記載されています。実際のチャット、データベース、キー、メディア、ログ、ローカル設定、過去の引き継ぎアーカイブは、リリースの一部になることは決してありません。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to access and search local messages and contacts across multiple platforms (iMessage, Discord, Gmail, Slack) via a local-first datastore, ensuring data never leaves the Mac.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI clients to read and search macOS Messages history through a read-only MCP interface.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to search and retrieve from your local macOS iMessage history using hybrid retrieval with context expansion, all processed locally without sending data off-device.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents on macOS to securely read and search the local Messages database, catch up on missed messages via a persistent inbox, and send texts or files to allowlisted chats, with optional voice note transcription and text-to-speech.
    10
    26 npm
    MIT