外观
05 · 跑起来与安全边界
前四章分别搞定了解密、读库、MCP、Skill。这一章把它们接上 NoCannoBB 的模型推理, 端到端跑起来,并把必须守住的边界收个尾。
一、配置 NoCannoBB 作为模型后端
NoCannoBB 提供 OpenAI / Anthropic 兼容的推理接口。Skill 的「摘要、归纳、路由」这些 智力活,都由它背后的模型完成。你需要两样东西:base_url 和 api_key。
以常见客户端为例(按你实际用的客户端填):
- OpenAI 兼容:
OPENAI_BASE_URL=https://<你的 NoCannoBB 网关>/v1 OPENAI_API_KEY=<你的 key> - Anthropic 兼容:
ANTHROPIC_BASE_URL=https://<你的 NoCannoBB 网关> ANTHROPIC_API_KEY=<你的 key>
模型选择跟着客户端走即可。到这一步,「Skill 的大脑」就接好了。
二、端到端启动顺序
1) 微信登录运行
2) (一次性)导出明文库:
cd course/wechat-ai-assistant/code
python -m wechat_win.main_win --out C:\temp\wx_plain
3) 配置 MCP,指向明文库:WECHAT_PLAIN_DIR=C:\temp\wx_plain
4) 安装 Skill:skill/wechat-local/ → 客户端 skills 目录
5) 配置 NoCannoBB:base_url + api_key
6) 打开客户端对话:
"帮我总结下我和张三最近的对话"
"微信里搜一下提到'报销'的消息"流程串起来就是:
你的话 → Skill 判断用哪个工具 → MCP 只读查明文库 → 结果回给模型
→ NoCannoBB 推理做摘要 → 人话回给你三、自检清单
- [ ]
python wechat_win/selftest_crypto.py→SELFTEST PASS - [ ]
python -m wechat_win.main_win能打印出消息表数 / 联系人数 - [ ]
python -m mcp dev wechat_mcp/server.py里四个工具可见、list_contacts有数据 - [ ] 客户端能列出
wechat-local的工具 - [ ] 问一句「我的联系人里有谁」能拿到脱敏结果
- [ ] 问一句「搜下提到 X 的消息」能返回命中
四、安全边界(这套设计的重点)
这套链路从架构上把风险关进了笼子,落地时请守住:
数据来源
- 仅用于你自己设备、你自己账号的数据。上下文一旦暗示是他人账号/设备,停止。
密钥
- 密钥只在第 1 章取一次、用来解密。推荐用来源 A(先导出明文库),让 MCP 层完全不碰 密钥;必须用来源 B 时,密钥只经环境变量传入,永不打印、不写日志、不进返回值。
- 别把
--dump-key的输出贴进聊天、issue、截图。
能力面
- MCP 只暴露 4 个只读工具;绝不加
execute_sql/dump_key/export_all。 - 读库层只读打开(
mode=ro)、参数化查询、标识符白名单——三条都别拆。
明文库与临时文件
- 明文库(
C:\temp\wx_plain或临时文件)等同于你的全部聊天记录,不要上传、不要进 版本库、不要发给任何外部服务。用完删掉;MCP 的临时库已在退出时自动清理。 - 演示 / 分享结果时开
SANITIZE=1打码 wxid。
分发
- 方法参考公开项目
LifeArchiveProject/WeChatDataAnalysis(无 LICENSE),本工具按算法 事实 clean-room 独立实现。对外分发前请自行确认代码来源与再分发权限。
五、常见问题
- 换了微信版本后取不到密钥:DLL 汇编特征可能变,用
--internal-key手动传,或 调dll_scan_win.py的匹配间距(第 1 章故障排查)。 - MCP 报"未配置消息库":
WECHAT_PLAIN_DIR指向的目录里没有message_0.db, 或来源 B 的WECHAT_ENC_MSG_DB+WECHAT_MSG_KEY没配全。 - 搜索慢:
search_messages是在多张表上拉近消息后做 Python 层子串匹配;数据量大时 调小每表拉取量或先用read_chat_history缩小到具体会话。 - macOS:解密/读库一致,密钥用 lldb 捕获,见
code/wechat_mac/README-mac.md。
你学到了什么
不只是「会用一个 Skill」,而是完整走了一遍:
- 自己写
.py连接并解密数据库(SQLCipher-4 内核 + 进程内存取密钥); - 把只读查询封装成干净的函数(防注入三纪律);
- 用 MCP 把这些函数暴露成受控工具;
- 用 Skill 把自然语言路由到工具、编排多步、约束边界;
- 接上 NoCannoBB 的推理,得到一个真正好用的本地微信 AI 助手。
这套「Python 干活 → MCP 暴露 → Skill 编排 → NoCannoBB 推理」的模式,换个数据源 (浏览器历史、笔记、本地文件……)就能复制到别的场景。
上一章:04 · NoCannoBB Skill | 返回:课程首页