用途与结果
最快了解这个项目
为什么需要它
微信里的工作事实常分散在文字、引用回复、图片、语音和文件之间。只复制几句文字会丢掉“回复的是谁、附件属于哪条消息、当前窗口是不是完整历史”;同时有主号和副号时,按名字随便选一个账号还可能拿错来源。这个项目先把账号、对象、时间范围和原件关系钉牢,再让 AI 处理少量真正相关的内容。
举个实际例子
我可以问:“项目群里对方最后确认的交付时间是什么?顺便告诉我那句‘可以’到底在回复哪条。”工具会先确认是主号还是副号里的哪个群,再只读取够回答问题的一小段聊天;最后把时间、说话人、原回复和能否打开的语音一起交回来,找不到唯一对象或附件打不开就明说,不拿相邻文件猜。
最后我会得到什么
问一次聊天问题时,得到账号、对象、时间、说话人、原回复和可用附件所在的小段上下文;明确归档时,得到这个联系人或群的本机可见历史、后来变化和缺口。文件做出来、附件能打开、导出能独立验真与微信远端历史完整是不同结果;中断先检查原归档,不扩成全账号重扫。
可直接使用
一次问题只交回这个账号和对象实际读到的小段,不冒充全历史。具名归档即使没有新消息,也会先检查已保存文件确实仍完整。
需要确认
账号或对象重名、回复超出窗口、附件打不开或来源正在变化时说明候选与缺口,只扩大真正影响答案的范围。
当前不可用
账号身份、本机聊天来源或已有导出无法核对时停下受影响读取,保留旧包和恢复位置;不猜另一个账号或覆盖不同内容。
从哪里开始
说出微信主号或副号、联系人或群及要弄清的问题;最近变化先查看候选会话,长期保存才对一个具名对象执行归档。
需要准备什么
- 微信账号和要看的联系人或群
- 记得的时间、原话或回复线索(如有)
- 要一次阅读还是长期归档的选择
从开始到拿到结果
- 1先锁定账号与对象
同名对象不能靠猜;需要补最近变化先列候选,再选一个会话读必要前后文。
- 2把对话关系读完整
本机只读快照还原消息顺序、发送者、原回复和可打开媒体,未知身份与附件缺口一起交回。
- 3按用途决定是否保存
一次问题只返回小上下文;明确长期保存才维护这个联系人或群的全文与增量档案。
- 4中断按原记录恢复
核对原事务和已有归档;后来可用的媒体可定向补,不把一个对象的缺口变成全账号重扫。
从这些需求了解功能
从一个实际问题看它怎样处理、交回什么;当前能做到哪一步和仍有哪些限制,也写在对应说明中。
项目指标与相关入口查看规模、覆盖范围和关联能力
当前项目指标
- 9月14日完成态归档
- 4 个
- 9月14日已保存消息
- 7934 条
- 9月14日物化媒体
- 12 个 PNG · 语音未见
- 独立验真
- 历史 3/3 · 本轮未重跑
从微信问题到可核对结果 · 6 步
先确认是哪一个账号和对象,再读够回答问题的聊天
普通提问只读一段必要上下文;明确要长期保存才给一个具名联系人或群建档。文字、回复、媒体和朋友圈都只说明本机实际可见范围。
- 问题范围锁定这次要问的人和事
点名主号或副号、联系人或群,以及记得的时间或原话;普通问题不先保存整个账号。
- 账号身份同名时先分清
只有唯一对象才继续;朋友圈始终要明确账号,不靠昵称或头像猜。
- 本机读取从稳定的本机副本看聊天
先确认资料能可靠读取,不改动微信自己的数据库;来源边读边变化就停下。
- 还原关系把原回复和附件放回消息旁边
保留谁发的、回复哪一句、图片或语音属于哪条;打不开的文件照样说明缺口。
- 按用途交付回答一次,或更新一个具名档案
一次问题只给小窗口;长期保存才交出当前电脑可见的对象历史,之后只合并真正变化。
- 验真与继续文件和缺口都核对
已有导出能离线确认有无被换掉;中断或媒体后来可用时只处理这一个归档。
本人决定
账号、对象与保存范围- 点名要看哪个账号、联系人或群
- 选择只回答一次、长期归档或做明确保全
- 必要时选择是否看媒体、扩大窗口或重新核对旧历史
项目负责
真实关系与可恢复结果- 核对账号身份并只读本机可见聊天
- 保留消息顺序、发送者、回复和附件关系
- 交出能独立核对的归档和实际缺口
不越过的范围
不猜也不代操作微信- 不自动登录、切号、点赞或补远端历史
- 不默认同步整个账号或建立中央人物库
- 不按昵称、文件名或 AI 猜测给消息和附件定身份
它负责
- 只读一个明确联系人或群的相关聊天,并说明这次真正覆盖的时间。
- 区分主号和副号;同名或多处匹配时列出候选,不自作主张选一边。
- 按原顺序保留谁说的、群成员、回复目标和每个附件属于哪条消息。
- 图片、语音、视频和文件能打开才给实际内容;打不开也保留消息关系与缺口。
- 明确要求长期保存时,只给一个具名对象建立本机可见历史,并在之后合并变化。
- 按明确账号读取当前电脑已缓存的朋友圈,不当成远端全部历史。
- 为重要聊天做可核对的保全包,并能在不重读微信的情况下检查已有导出。
- 账号、来源、附件或归档状态有问题时说明失败位置与继续办法。
它不负责
- 不修改微信自己的数据库,也不自动登录、切号、联网补旧消息或点赞评论。
- 不默认保存整个账号,也不建立后台同步、第二份聊天数据库或中央人物画像。
- 昵称、头像、群名或附件文件名不能代替账号、消息与媒体身份。
- 这次窗口里没看到本人发言,不等于从未发言;电脑没缓存朋友圈,也不等于对方没发布。
- 打不开的附件、未知类型或通话状态不伪装成普通文字和语音文件。
- 公开网页不展示真实聊天、朋友圈、联系人、媒体或解密材料。
- 语音能读取不等于已经转成文字;需要转写时交给 ChineseASR。
- 代码、环境检查和合成测试不证明这次已成功读取真实会话。
- 已知中断可以按原记录恢复;不能声称所有崩溃都能自动续,也不把档案写回微信。
产品思想与设计核心
先点名对象,再读聊天
一次只看一个账号里的一个联系人或群;重名时先分清,不靠看起来最像决定。
小问题先用小窗口
问一次事实只读够回答的一段;长期保存一个对象要本人明确提出,不做默认全账号同步。
聊天关系比摘要重要
谁说的、回复哪句、附件在哪条消息上,都可能改变意思;先还原这些关系,再交给 AI 判断。
本机看见多少就说多少
电脑聊天与朋友圈缓存不是微信远端全部历史,未命中只说明这次实际范围。
再次执行只合并实际变化
同一具名归档可更新,不常驻后台;来源没变也会检查已导出文件是否仍完整。
缺口跟结果一起交
附件打不开、回复缺失或说话人未定都会列出,不为了漂亮摘要静默丢掉。
附件必须真能打开
先证明文件属于这条消息,再看真实格式和内容;动画、缩略图与原件不同,不能拿邻近文件顶替。
归档可在离开微信后核对
文本、附件和清单要互相对应;只有文件存在,不代表这些材料没有变化或缺失。
注意力留给当前问题
AI 默认读少量相关消息,旧事实沿命中位置补上下文,不把整段历史塞给一次问答。
失败先保留原归档
账号不符、来源变化或文件状态冲突时不覆盖已保存内容,按真实原因重试、重核或补缓存。
包做出来不等于内容齐全
可打开的文件之外,仍可能缺语音、图片或引用;交付先说明实际覆盖,再谈是否完整。
项目怎样演化到现在
把几句聊天还原成可理解的上下文
明确账号、对象、时间和回复关系,文字与媒体关联保留;需要完整具名历史时才沿那个对象归档,不默认扫描全账号。
阶段依据
- 2026-08-30 · 旧私有库仅保留公开前历史;当前读取、具名归档、媒体和恢复由公开实现承接。
7f9488f—7da69ae
没有新消息也要确认旧材料仍完整
无变化返回前核对归档记录与媒体,读取成功、媒体可用和历史覆盖分别给证据,不拿一个空窗口推断全局结论。
阶段依据
- 2026-09-01 · 无变化返回前仍核对已保存归档,媒体缺口与崩溃续作边界分开。
4883536
长消息、缺媒体和中断都能继续处理
长文本按同一版本分段,导出明确部分完成;已知中断与后来补齐的本地媒体有定向恢复入口,不用重跑全账号或覆盖外来修改。
阶段依据
- 2026-09-18 · 长消息、缺媒体和中断都能继续处理
53b7c0b
完整项目状态与证据边界
已确认事实
- 2026-09-14只读登记导出根的4份manifest(清单)/state/last-run:合计7934条消息,4份最近回执success且manifest(清单)绑定一致,最新清单修改时间2026-09-10T09:31:53Z。4份均有缺口,unavailableMediaCount合计2329,未标名群成员消息合计1925,unknownSenderCount为0。文件元数据共12个PNG,未见原始语音或派生WAV;未读消息、联系人或媒体内容,也未新跑verify-export。9月1日6032条、3个语音+3个派生及3/3验真的历史证据不改写为本次结果。
- WeChatDirect v0.2.1,PUBLIC(公开) main 53b7c0b1b460a26a4b04db8d5f0d2278f97dbc36。已安装入口为E:\Projects\Tools\WeChatDirect\.venv\Scripts\wechat-direct.exe;本轮只读源码与已登记入口,不把安装、环境检查或包存在当成真实会话已经读取。
- doctor --environment-only不读取账号设置,分别检查文字、图片/WXGF、语音和实际执行身份;主路线Python3.14,语音通过Python3.11、pilk与FFmpeg/ffprobe。环境可用不是账号资料可读,9月14日两个账号槽位的旧体检保留原日期。
- 一次只解析一个明确联系人或群的有界窗口;最多扫描 500 条、返回 80 条,保留消息方向、群成员标签、回复目标、媒体关系、实际时间范围与可见历史缺口。
- changes按明确起止时间,从primary、secondary或both的当前SessionTable读取会话候选,不读正文、不复制库。两个账号分列,保留隐藏会话、时间未知项及扫描后继续变化的项,不以条数截断;完整只针对当前会话表,不证明已消失会话或旧消息修订都已检测。
- context --self-only先按原生发送者筛出本人及归属未定的消息,再解码正文;游标继续固定同一筛选。适合先找自己在大群说过什么,但不等于已读全群;需要别人的前后回应时,再用普通context --around补读。
- sync-contact 首次保存该对象当前设备可见的完整本地历史;之后同一命令用来源指纹、增量游标和默认 1 天重叠窗口合并变化,不建立全账号同步或后台任务。
- context 用 continuation 固定账号身份、聊天、时间上界和搜索条件;not_found_in_page 只说本页未命中,读尽范围才能报告窗口未命中,无法解析的正文保持 indeterminate_content_gaps。around 先取离锚点最近的消息,再按时间排序。
- context 只读本机;显式 export-context / media-open 可使用该条表情消息已有的原生 CDN,核对 MD5、大小与图片解码。--local-only 可禁止网络;归档与保全不自动补取远端表情,不搜索或拼造地址。
- 发送者只按消息所在分片的Name2Id与账号原生身份承诺解释,含@openim非文字消息;长serverId/nativeId以字符串返回。转账、红包、位置分享和系统模板按原生结构投影;撤回只表示发生撤回,不恢复正文。“拍一拍”归为system(系统事件),不计成本人撰写的发言或校准样本。
- 图片、表情、语音、视频和文件都保留每次出现的位置与原消息关系;图片按原生 MD5 / hardlink.db 定位并解码,表情可保留动画,视频和文件仅交付本机原生索引能精确定位的字节。找到路径、可物化与实际可读分别表示。
- export-context与preserve可保留选定窗口完整文本和可用媒体;packageCreated及exit0只证明包生成,必须另看status、delivery、引用媒体/失败WAV和hasMore。partial仍可使用与验真;verify-export不补齐源内容、不把缺失附件说成完整。
- 2026-09-09核对3faf4d2:28个跟踪文件、7个非测试Python模块、14个tests/*.py与10个公开命令,包含changes及export-context。来源投影与上下文43项/6子测试通过,耗时0.85秒;changes另2项通过,耗时0.49秒;9月7日137项/32子测试仍为原全套证据。主CLI(命令行工具)用Python3.14,语音派生默认Python3.11+pilk。
- 日常默认只给 AI 最近最多 80 条、128 KiB 的 ai-context.md;更早事实只搜索 context.md 或 messages.jsonl 的命中附近,不把整份档案反复塞入模型。
- 项目直接读取本机数据库快照,不依赖 WeFlow、HTTP helper、第二数据库、服务、队列、daemon、watcher 或计划任务。
当前缺口
- 本次网页快照没有读取任何真实微信聊天、朋友圈正文或媒体,也没有运行一个具名联系人的现场 E2E(端到端验证);源码、Doctor 和合成回归不能证明当前某段真实历史完整可读。
- 当前设备可见的本地数据库和朋友圈缓存不是微信远端全历史;旧消息、已清缓存媒体或未缓存朋友圈目标可能真实存在但本轮不可见。
- 图片、表情、视频和文件只有原生索引、内容身份及实际解码通过才交付;WXGF 复杂分区或透明度关系无法证明时保留缺口,不把首帧冒充完整动图。WeChatDirect 的语音 WAV 派生与 ChineseASR 的转写仍分开。
- 新导出替换有同级.wechat-transaction与recover-export检查/rollback/complete;两个目录重命名仍有崩溃窗口,不是全文件系统原子事务。未知旧.sync.lock、外来文件或身份冲突不能直接删除;已提交事务不回滚成旧版,硬断电和真实客户端恢复仍另验。
来源与公开边界
源码位于 PUBLIC(公开)仓库 wlyaaaaa/WeChatDirect。页面公开产品设计、命令、数据结构、实现、测试、失败和当前无正文环境体检;不读取或展示真实聊天正文、朋友圈正文、联系人身份、媒体原件、数据库位置、解密材料、账号承诺值、导出目录或凭据。
当前关键技术事实
- 当前归档聚合
- 2026-09-14只读登记导出根的4份manifest(清单)/state/last-run:合计7934条消息,4份最近回执success且manifest(清单)绑定一致,最新清单修改时间2026-09-10T09:31:53Z。4份均有缺口,unavailableMediaCount合计2329,未标名群成员消息合计1925,unknownSenderCount为0。文件元数据共12个PNG,未见原始语音或派生WAV;未读消息、联系人或媒体内容,也未新跑verify-export。9月1日6032条、3个语音+3个派生及3/3验真的历史证据不改写为本次结果。
- 当前环境体检
- doctor --environment-only不读取账号设置,分别检查文字、图片/WXGF、语音和实际执行身份;主路线Python3.14,语音通过Python3.11、pilk与FFmpeg/ffprobe。环境可用不是账号资料可读,9月14日两个账号槽位的旧体检保留原日期。
- 聊天读取边界
- 一次只解析一个明确联系人或群的有界窗口;最多扫描 500 条、返回 80 条,保留消息方向、群成员标签、回复目标、媒体关系、实际时间范围与可见历史缺口。
- 先发现值得阅读的变化
- changes按明确起止时间,从primary、secondary或both的当前SessionTable读取会话候选,不读正文、不复制库。两个账号分列,保留隐藏会话、时间未知项及扫描后继续变化的项,不以条数截断;完整只针对当前会话表,不证明已消失会话或旧消息修订都已检测。
- 只看本人参与
- context --self-only先按原生发送者筛出本人及归属未定的消息,再解码正文;游标继续固定同一筛选。适合先找自己在大群说过什么,但不等于已读全群;需要别人的前后回应时,再用普通context --around补读。
- 具名自动增量
- sync-contact 首次保存该对象当前设备可见的完整本地历史;之后同一命令用来源指纹、增量游标和默认 1 天重叠窗口合并变化,不建立全账号同步或后台任务。
- 分页与零命中
- context 用 continuation 固定账号身份、聊天、时间上界和搜索条件;not_found_in_page 只说本页未命中,读尽范围才能报告窗口未命中,无法解析的正文保持 indeterminate_content_gaps。around 先取离锚点最近的消息,再按时间排序。
- 有限网络物化
- context 只读本机;显式 export-context / media-open 可使用该条表情消息已有的原生 CDN,核对 MD5、大小与图片解码。--local-only 可禁止网络;归档与保全不自动补取远端表情,不搜索或拼造地址。
- 发送方向与消息含义
- 发送者只按消息所在分片的Name2Id与账号原生身份承诺解释,含@openim非文字消息;长serverId/nativeId以字符串返回。转账、红包、位置分享和系统模板按原生结构投影;撤回只表示发生撤回,不恢复正文。“拍一拍”归为system(系统事件),不计成本人撰写的发言或校准样本。
- 回复与媒体
- 图片、表情、语音、视频和文件都保留每次出现的位置与原消息关系;图片按原生 MD5 / hardlink.db 定位并解码,表情可保留动画,视频和文件仅交付本机原生索引能精确定位的字节。找到路径、可物化与实际可读分别表示。
- 输出与验真
- export-context与preserve可保留选定窗口完整文本和可用媒体;packageCreated及exit0只证明包生成,必须另看status、delivery、引用媒体/失败WAV和hasMore。partial仍可使用与验真;verify-export不补齐源内容、不把缺失附件说成完整。
完整执行流程
- 1先发现变化,再选定本次要读什么
要补最近变化时,changes只列当前会话候选及时间缺口;选定对象后再读context。想先看自己在大群说过什么,可筛本人参与,再围绕命中补对方回应。只有明确要长期保存一个联系人或群,才走sync-contact。
- 2解析唯一账号和对象
聊天的 auto 会在两个隔离槽位中寻找唯一匹配;朋友圈始终要求明确 primary 或 secondary。多匹配或不匹配直接返回。
- 3准备稳定的只读快照
直接读取本机配置中的加密来源,复制并解密到临时目录、合并数据库写入日志,再做完整性检查和只读查询;源持续变化就停止。
- 4还原消息与媒体语义
解析正文、发送者、群成员、引用目标和媒体关系;控制载荷、未知类型和不可打开项目都保留为明确缺口。
- 5生成小上下文或档案
一次问题返回有界结构结果;归档同时生成给 AI 的小窗口、人类完整档案、结构记录、当前可打开语音、增量状态与完整性清单。
- 6再次执行只合并变化
来源未变时不重新扫描源库消息,但仍核对已导出全文、结构记录、清单和状态绑定;变化时按排序游标或默认 1 天时间重叠抓取。当前可打开的媒体按内容哈希复用,出现位置不被去重抹掉。
- 7完整性清单先于增量状态
先在候选目录准备并验证替换结果,保存同级事务记录,再执行目录替换;两次重命名不称全局原子。清单与状态一致后才成为新续作点,异常先检查recover-export而不是删除锁。
- 8需要时验真、重核或补缓存
已有导出可以独立重算哈希和数量;旧历史或媒体缺口显式执行全量重核;朋友圈未缓存时只提示在同一账号手动打开目标后重试。
本页用到的名词
需要核对专业含义时,可以在这里查看它在 WeChatDirect 项目中的具体用法。
- Bounded context(有界上下文)
- 只读取明确账号、对象、时间和数量范围内的消息;结果同时说明实际扫描和返回范围。
- Account identity commitment(账号身份承诺)
- 账号原生身份的 SHA-256 承诺;用于确认本次来源仍是同一账号,不在回执里暴露真实身份。
- Sender role(发送者角色)
- 消息来自本人、对方、群成员、系统还是仍未知;窗口内没看到本人消息不等于全历史没有。
- Quote target(回复目标)
- 一条引用或回复实际指向的原消息;目标不在窗口时会精确回查,仍找不到就保留缺口。
- Locator(媒体定位凭据)
- 由同一账号、同一消息结果生成的精确媒体定位;不能跨账号使用,也不能靠目录扫描替代。
- Source fingerprint(来源指纹)
- 只根据相关数据库文件的大小、时间和目录组合形成的变更指纹;用于快速判断一个对象是否可能有变化,不读取正文。
- Incremental cursor(增量游标)
- 记录已处理消息的 sortSeq 与时间位置;单来源可用排序游标,多来源退回有界时间重叠。
- Full reconcile(全量重核)
- 用户明确要求时重新扫描该对象全部本地历史,用于旧历史变化、游标重置、无时间记录或后来可用的媒体。
- Current local Moments cache(当前本机朋友圈缓存)
- 这台电脑此刻保留的朋友圈条目,不是远端主页,也不承诺历史完整。
- Manifest(导出清单)
- 绑定账号、对象、范围、记录数量、文件路径、字节数、哈希、来源指纹和已知缺口的自验真说明。
- Preservation bundle(保全包)
- 用户明确要求时生成的自包含聊天窗口、回复关系、账号/时间/原生身份、哈希和可用媒体集合。
- Replayable increment(可重放增量)
- 相同对象、账号和输出目录再次显式执行会从最后一个完整 state 合并变化;首次硬崩溃无 state 半成品并不会自动修复。
系统里实际有什么
下面是当前产品组件,不是概念分类。每一项都对应真实文件、入口或验证链。
把聊天问题、单对象归档、朋友圈和保全请求路由到正确命令。
普通问题先读最小窗口;归档权限只覆盖用户点名的一个联系人或群,语音转写转交 ChineseASR。
提供有界聊天、长字段分段、具名归档、便携阅读包、环境检查、媒体定向修复与离线验真。
CLI(命令行工具)按字节和消息范围限制输出,message-part沿原哈希/偏移续读;写出保留候选、前像和同级事务,recover-export检查后明确选择完成或回滚,不把包生成和来源完整混同。
直接读取 WeChat 本机加密 SQLite 与缓存,并恢复消息、联系人、群成员、朋友圈和媒体关系。
DPAPI只在本机打开配置,临时解密SQLite并验证WAL校验和,仅合并已提交前缀;query_only查询,不向源库checkpoint(续作检查点)或修改WAL。来源改变拒绝拼接不同版本。
把精确绑定的 WeChat SILK 语音派生为 WAV。
独立 Python 3.11 + pilk 路径;原始 SILK 不被替换,WAV 记录 derivedFromSha256。
保存 primary / secondary 两个隔离槽位的本机来源入口与身份承诺。
不保存微信密钥明文;真实文件留在本机并限制 ACL,示例只提供占位结构。
保存一个对象的可搜索全档、AI 小上下文、结构记录、当前可打开媒体、清单、状态和运行回执。
messages.jsonl 是合并事实层;context.md 面向人;ai-context.md 最多 80 条和 128 KiB;当前可打开的语音按 SHA-256 去重复用,其他媒体保留关系与缺口。
保存一个明确账号当前本机可见的朋友圈缓存快照。
重复刷新会加入、更新或删除与当前缓存不再一致的条目;状态始终写明 current_local_cache_only。
只保存公开版本形成前的历史与迁移依据;该 PRIVATE(私有) 仓库已经归档。
它不生产当前读取、具名归档、增量或恢复行为,也不再是现役消费者或独立项目卡。现在这些能力只由 PUBLIC(公开) WeChatDirect 负责。
验证来源读取、CLI(命令行工具)、公开 Doctor/验真、增量、回复、媒体、账号隔离和恢复边界。
14个测试模块;9月7日全套137项/32子测试,9月9日定向45项/6子测试;它们使用合成数据,不包含真实聊天正文。
6 层证据分别证明什么
能证明:当前正式源码包含context、message-part、export-context、具名同步、repair-media、recover-export、环境Doctor、临时会话检查与verify-export;机制存在不替代真实账号读取。
不能证明:当前某个真实联系人、群、朋友圈或媒体现在可读。
能证明:普通问题、单对象归档、朋友圈、媒体与明确保全的自然语言路线和禁止项已说明。
不能证明:文档本身不能替代代码行为或现场结果。
能证明:合成数据下的身份冲突、回复、媒体、缓存、增量、原子提交、快速路径完整性、来源漂移和导出验真回归通过。
不能证明:真实微信版本、真实本机数据库结构、当前私有正文或媒体完整性。
能证明:环境检查分别说明文字/图片/WXGF/语音及实际解释器身份;本次未读取账号设置或重测所有真实媒体。
不能证明:Doctor 不打开数据库,也不证明账号身份承诺、聊天正文或现场导出成功。
能证明:PUBLIC(公开) main=3faf4d2,2026-09-09默认分支、远端、工作树和发布身份回读一致。
不能证明:Git 同步不能证明当前 WeChat 客户端、缓存或个人内容状态。
能证明:只有用户点名对象后的真实 context / sync / media / verify 回执,才能证明该次本地可见范围和输出。
不能证明:一个对象成功不能证明全账号或微信远端全历史完整。
维护入口
wechat-direct changes --account both --since "<起始时间>" --until "<固定截止时间>"发现变化候选:只读当前会话表并按账号分列候选;不读取正文、不承诺所有历史修订均被检测。
wechat-direct context --account primary --contact "<群>" --self-only本人参与筛选:先按原生身份读取本人及归属未定项,仍保留分页和引用;对方回应需普通around上下文补读。
wechat-direct context --account auto --contact "<联系人或群>"聊天上下文:读取一个有界窗口并返回发送者、回复、媒体、实际范围和缺口。
wechat-direct sync-contact --account primary --contact "<联系人或群>"具名增量归档:首次保存完整本地历史,之后同一命令可重放增量。
wechat-direct sync-contact --account primary --contact "<对象>" --full-reconcile补充重核入口:这是 sync-contact 的显式补充模式:旧历史变化、游标重置、无时间记录或历史语音后来可用时重新核对该对象。
wechat-direct moments --account primary --contact "<联系人>"朋友圈缓存:读取明确账号当前本机缓存,不访问远端主页。
wechat-direct sync-moments --account primary --self朋友圈快照:建立或刷新明确账号当前本机可见的朋友圈缓存快照;被缓存淘汰的条目会从刷新结果移除。
wechat-direct export-context --account primary --contact "<对象>" --output "<新目录>" [--local-only] [--html]跨项目阅读包:交付同一有序消息页、媒体和引用;可用 continuation 继续同一查询,HTML 不参与默认 AI 阅读依赖。
wechat-direct media-open --account primary --locator "<media-locator>" --output "<文件>" --local-only精确消息媒体:只物化该消息原生定位的媒体,目标必须不存在;报告实际格式、质量、local/remote(远端仓库)、字节与哈希。
wechat-direct preserve --account primary --contact "<对象>" --lookback-days 1 --output "<目录>"明确保全:生成一个自包含聊天窗口、回复关系、媒体和哈希清单。
py -3.14 wechat_cli.py doctor无正文环境体检:检查平台、Python、依赖、配置入口和语音解码器,不打开聊天数据库或输出路径。
wechat-direct verify-export --output "<导出目录>"导出验真:不打开源数据库,重算 v1 联系人或朋友圈导出的清单、状态、文件和媒体关系。
py -3.14 -m pytest -q开发回归:这是源码验证入口,不是产品命令;运行当前合成回归;本页保留2026-09-09定向45项与6个子测试通过证据,不读取真实微信数据。
wechat-direct doctor --environment-only; wechat-direct temp-status --root <本任务临时根>无账号环境检查与临时会话检查:先排除环境依赖问题,不读账号;临时清理另需精确非活动会话及--clean,不跨任务清扫。
wechat-direct recover-export --output <明确归档>; wechat-direct repair-media --account <账号> --contact <对象> --output <同一归档>具名导出恢复与本地媒体补全:前者默认只检查,明确complete/rollback才改变;后者只尝试本地媒体,不重扫历史或调用CDN。
快照怎样更新
2026-09-14只读刷新归档规模与Doctor(环境体检):2个账号配置有效、依赖和语音解码器可用。9月9日changes候选发现、本人参与筛选、群内精确引用、原生系统事件及45项/6子测试仍保留原日期;本轮未打开聊天数据库、读取私人正文或执行归档同步。
