WeChat Archive for DeepSeek Harness
English | 简体中文
macOS용 로컬 우선(local-first), 실패 시 차단(fail-closed) WeChat 아카이브 플러그인입니다. 진단, 상태 확인, 동기화, 검증이라는 네 가지 제한된 작업을 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제공 기능
Surface | Operation | Writes archive data? |
MCP |
| 아니요—앱, 소스, WAL, 비밀값, 권한을 확인합니다 |
MCP |
| 아니요—제한된 운영 메타데이터를 보고합니다 |
MCP |
| 예—서버 옵트인과 |
MCP |
| 아니요—메시지 기록을 재생하고 해시와 적용 범위를 검증합니다 |
Agent Skill |
| 모델이 필수 안전 워크플로를 따르도록 안내합니다 |
Scheduler |
| 사람이 LaunchAgent를 설치한 후에만 가능합니다 |
MCP 결과는 상태, 개수, 적용 범위, 무결성 정보를 노출합니다. 연락처 이름, 계정 식별자, 메시지 본문, 비밀값, 개인 데이터베이스 경로는 노출하지 않습니다.
Related MCP server: WeChat MCP Server
무결성 및 개인정보 보호 경계
도구 인자로 계정, 파일시스템 경로, SQL 문, 실행 파일, 비밀값을 선택할 수 없습니다.
플러그인은 절대 키를 캡처하지 않으며, LLDB를 부착하지 않고, WeChat을 재서명하거나 교체하지 않으며, 앱을 종료하지 않으며, WAL을 무시하지 않습니다.
동기화는 WeChat이 실행 중이거나, WAL에 트랜잭션 프레임이 있거나 짧은 헤더가 잘못된 형식이거나, 앱에 고정된 공식 서명이 없거나, 비밀값이 유효하지 않거나, 수집 중 소스가 변경되면 새 스냅샷을 발행하지 않고 실패합니다.
모든 암호화된 데이터베이스는 각각 독립적으로 키를 유도하고 HMAC로 검증합니다. 복호화된 스테이징 파일은 비공개로 유지되며, SQLite
quick_check로 검사한 후 실행이 끝나면 제거합니다.불변 JSONL 델타는 인덱스 트랜잭션이 커밋되기 전에 fsync됩니다. 검증은 전체 기록을 재생하고, 과거 객체를 포함한 모든 등록된 미디어 객체를 해시합니다.
비밀값은 macOS Keychain에 있어야 합니다. 도구 매개변수, 명령 인자, 환경 변수, 로그, Git에 커밋된 구성, 릴리스 파일에는 절대 포함되어서는 안 됩니다.
SOURCE_FAITHFUL_V1의 의미
이미지는 항상 원본 .dat 바이트를 유지합니다. 디코딩된 이미지 변형은 강력한 파일 서명 또는 하나의 모호하지 않은 단일 바이트 XOR 변환이 검증할 때만 기록됩니다. 비디오는 MP4 ftyp 서명을 포함해야 합니다. 음성 BLOB은 전사 또는 재생 호환성을 주장하지 않고 보존됩니다.
이모지 추출, 일반 첨부 파일, 이 Mac에 다운로드되지 않은 미디어, 일부 비공개 컨테이너는 아직 해결되지 않았습니다. 따라서 공개 결과는 의도적으로 media_complete=false입니다. SOURCE_FAITHFUL_V1은 로컬에서 사용 가능한 소스 바이트가 보존되고 검증되었음을 의미하며, 완전히 디코딩되거나 재생 가능한 멀티모달 내보내기를 의미하는 것은 아닙니다.
마찬가지로 "완전"이라는 말은 검증된 정지 상태의 Mac 데이터베이스 스냅샷 하나만 가리킬 수 있습니다. 삭제된 기록, 클라우드 전용 또는 휴대폰 전용 기록, WeChat이 로컬에 저장한 적 없는 콘텐츠는 절대 포함되지 않습니다.
요구 사항
macOS
Python 3.10 이상
Node.js 24 이상
pnpm 11
uvzstd 압축 메시지 페이로드 디코딩용
libzstd; 없으면 원본 압축 바이트가 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 객체를 stdout에 씁니다. READY 상태에서만 별도로 확인된 동기화가 허용됩니다. 상태 모델은 아키텍처 및 무결성을 참조하세요.
DeepSeek Harness에 설치
설치 프로그램은 --install이 없으면 건식 실행(dry-run)입니다:
python3 scripts/install_dsh.py
python3 scripts/install_dsh.py --install이 설치 프로그램은 Harness 프로필의 표시된 블록 하나와 이 체크아웃으로 연결되는 ~/.dsh/skills/wechat-archive 심볼릭 링크 하나만 관리합니다. DeepSeek Harness 소스 체크아웃을 수정하지 않으며 관련 없는 Skill을 덮어쓰지 않습니다. 실제 프로필 편집 전에 mode-0600 백업을 하나 생성합니다.
Harness는 다음 이름을 노출합니다:
mcp__wechat__wechat_doctormcp__wechat__wechat_statusmcp__wechat__wechat_syncmcp__wechat__wechat_verify
번들로 제공되는 안전 오버레이는 WECHAT_ARCHIVE_ALLOW_SYNC=0으로 설정합니다. 따라서 설치는 동기화가 아닌 읽기 전용 진단 및 상태 확인만 활성화합니다. 모든 실제 머신 게이트를 통과한 후, 운영자는 서버 옵트인을 명시적으로 1로 설정하고 MCP 프로세스를 재시작한 다음에도 wechat_sync를 confirm=true로 호출해야 합니다.
제거 역시 기본적으로 건식 실행입니다:
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" --installdoctor가 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 라이선스로 배포됩니다. 감사되거나 참조된 업스트림 프로젝트와 해당 라이선스는 THIRD_PARTY_NOTICES.md에 나열되어 있습니다. 실제 채팅, 데이터베이스, 키, 미디어, 로그, 로컬 구성, 과거 핸드오프 아카이브는 릴리스에 절대 포함되지 않습니다.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides read-only access to local Beeper message history on macOS, enabling users to search conversations, read messages, and list recent chats through natural language queries. Supports both SQLite and IndexedDB storage formats with privacy-focused local-only operation.1
- AlicenseAqualityFmaintenanceEnables Claude Code to read encrypted WeChat chat history from local database, search messages, view sessions and contacts.418Do What The F*ck You Want To Public
- AlicenseNot gradedqualityCmaintenanceEnables 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
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to read, search, and send iMessages, manage contacts, and access attachments on macOS.16MIT
Related MCP Connectors
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Permission boundary receipts for ChatGPT agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/BENZEMA216/wechat-archive-harness'
If you have feedback or need assistance with the MCP directory API, please join our Discord server