docs: 更新文档

This commit is contained in:
Wxw-Gu
2026-08-07 22:52:56 +08:00
parent a73af3b5ad
commit cd2c3cfaee
24 changed files with 1175 additions and 992 deletions
+67
View File
@@ -0,0 +1,67 @@
# Agent Hub:让微信机器人参与实时工作
Agent Hub 是 WechatExplorer 内置的实时微信交互入口。你先在应用中扫码登录一个微信机器人账号,之后向这个机器人发送文字;本机 Agent Hub 会接收消息、读取已经连接的微信数据,必要时调用已配置的 AI,再把结果回复给发消息的人。
它和 Reader Skill 是两条不同的路径:
- Reader Skill / Local HTTP API:外部 Agent 主动查询历史微信数据;
- Agent Hub / 微信机器人:机器人收到实时消息后处理并回复。
## 连接器和 Agent Hub 是什么关系
你不需要单独部署这些组件。扫码后,后台的微信连接器负责登录机器人、保持连接、接收微信消息和发送回复;Agent Hub 负责判断消息要做什么、查询 WechatExplorer 本地数据、调用 AI 并组织结果。可以把它理解为:连接器负责“和微信通信”,Hub 负责“处理任务”。
## 你能做什么
连接 Agent Hub 后,可以在微信中询问:
- “最近 5 条消息是谁?”
- “帮我看看最近跟某人聊了些什么。”
- “生成产品交流群今天的群聊总结图片。”
当前已实现的实时任务包括:
- 查看最近会话(数量限制为 1–20);
- 查询你和某位联系人的近期聊天;
- 用已配置的 AI 总结你和某位联系人近 7 天的聊天;
- 生成今天、昨天或近 7 天的群聊总结图片;
- 总结指定群成员在群里的近期发言;
- 对不需要读取聊天的普通文字请求返回简短 AI 回复。
任务完成后,回复会发送回触发这次请求的微信用户。群聊总结会先发送进度提示,完成后发送图片。
这些任务会在后台查询联系人、群聊和聊天记录,但当前机器人没有单独的“列出所有联系人”或“列出所有群聊”命令;需要完整浏览或按条件查询时,请使用档案页面或 Reader Skill / Local HTTP API。
## 连接步骤
1. 打开应用主导航中的“Agent”;页面标题为“Agent Hub”。
2. 确认 Hub 显示“运行中”,数据库状态为“可查询”。
3. 点击“扫码登录微信机器人”。
4. 用微信扫描二维码;如果页面显示“已扫码,等待手机确认”,在手机上确认。
5. 状态变为“在线”后,从该机器人账号发送测试问题。
可以重新扫码登录或断开连接。登录凭证失效时,需要重新扫码。
## 运行日志
Agent Hub 页面会记录系统、Agent Hub 和微信连接器日志。日志支持筛选、复制和清空,并会隐藏 Token 和二维码数据,不记录微信密码。
## 需要满足的条件
- WechatExplorer 的微信数据库已经连接,并且数据 API 可以查询;
- 依赖总结或自然语言理解的任务,需要在“设置 → AI 模型”配置可用的 AI 服务;
- WechatExplorer 和 Agent Hub 需要保持运行,机器人才能接收和回复消息。
## 安全与边界
- Hub 使用本机通信,不把数据库直接暴露到公网;
- 机器人账号和个人微信账号是不同的登录边界,请确认你连接的是正确账号;
- 机器人回复会发送给当前发消息的人;开发者 API 另有受保护的测试发送入口,使用前必须确认接收者;
- Hub 生成群聊总结时仍可能调用你配置的 AI Provider
- 当前实时自然语言入口主要处理文字消息。底层连接器可以接收图片、语音、文件和视频,但 Agent Hub 尚未为这些媒体提供同等的实时意图处理;
- 当前没有实现群发、广播、定时任务或通用自主操作微信;
- 本页面的“Agent Hub 状态”可以通过 Local HTTP API 查询,但不要把它误认为外部 Agent 的实时消息订阅接口或 MCP Server。
## 无法连接时
先检查 Hub、连接器和数据库三项状态,再查看日志。二维码过期、连接器不存在、凭证失效和数据 API 未就绪分别需要重新扫码、修复安装、重新登录或先完成微信数据库连接。
+47 -9
View File
@@ -1,12 +1,50 @@
# Local API Security
# Local HTTP API 安全
WechatExplorer 的安全模型是:本机回环地址 + 高熵 Bearer Token。
## 当前安全边界
- Token 使用密码学安全随机源生成,并由 Electron safeStorage 加密保存
- 应用升级或首次启动时自动、幂等生成;应用重启后保持不变。
- API Center 可以显示、复制或重新生成 Token。重新生成后旧 Token 立即失效。
- `/api/v1/health` 公开且不返回聊天内容、数据库路径、Token 或 Provider 信息。
- 其他 endpoint 缺少或使用错误 Token 时返回 `401 Unauthorized`
- CORS 仅允许精确的 localhost、127.0.0.1 和 ::1 HTTP Origin;无 Origin 的 curl、Node 和本地 Agent 请求正常工作。
WechatExplorer 的本地 API 默认监听 `127.0.0.1:6131`。它面向同一台电脑上的 API Center、Reader Skill、CLI 和 Agent,不是公网网关,也不是带用户账户和细粒度权限 Scope 的服务
本地 API 不应暴露到公网或不受信任网络。Bearer Token 提供本机 API 访问保护,但不是公网网关、用户账户系统或完整权限 Scope 系统。
## Bearer Token
- `/api/v1/health` 是公开健康检查;
- 其他所有端点都要求 `Authorization: Bearer <TOKEN>`
- Token 由应用生成,使用 32 个随机字节编码;
- Token 由 Electron `safeStorage` 加密保存在用户数据目录的 `local-api-token.bin`
- 文件权限设置为 `0600`
- 在“API Center”中可以显示、复制和重新生成;
- 重新生成后旧 Token 立即失效。
应用不会自动把 Token 写入 Codex、Claude Code、OpenClaw 或其他 Agent 配置。请把它放进 Agent 自己的本地 secret/environment,例如:
```bash
export WECHATEXPLORER_API_TOKEN="<TOKEN>"
```
## CORS 与 Origin
带浏览器 `Origin` 的请求只允许精确的 HTTP loopback Origin
- `http://localhost` 及其端口;
- `http://127.0.0.1` 及其端口;
- `http://[::1]` 及其端口。
不带 `Origin` 的 curl、Node、本地脚本和 Agent 请求不受浏览器 CORS 规则限制,但仍必须携带 Token(health 除外)。
## 不要做的事
- 不要把 Token 放入 URL query、日志、截图、公开 Skill 或 Git;
- 不要把服务反向代理到公网;
- 不要把“health 能访问”误认为数据端点无需授权;
- 不要把 Bearer Token 当成跨用户权限系统;当前服务没有细粒度 Scope;
- 不要在共享机器上让不可信进程继承 Token 环境变量。
## Token 不可用时
如果系统安全存储不可用,API Token 会无法生成或读取,本地 API 会安全停用。先修复系统钥匙串/凭据服务,再回到 API Center 重试。不要手动编辑 `local-api-token.bin`
## 相关文档
- [Agent 接入概览](./overview.md)
- [Reader Skill](./reader-skill.md)
- [数据、隐私与安全](../user-guide/privacy.md)
- [v2.1.9 鉴权迁移说明](./release-notes-v2.1.9.md)
+86 -8
View File
@@ -1,16 +1,94 @@
# WechatExplorer Local HTTP API
WechatExplorer v2.1.9 默认在 `127.0.0.1:6131` 提供 Local HTTP API
本文面向需要自己写集成的开发者。普通用户请先阅读[Agent 接入概览](./overview.md)
- `GET /api/v1/health` 无需鉴权。
- 其他数据和 Agent endpoint 需要 `Authorization: Bearer <TOKEN>`
- Token 从 WechatExplorer → API Center → API Token 获取。
- Token 不得放入 URL、仓库或共享配置。
## 基本信息
- 默认地址:`http://127.0.0.1:6131`
- API 前缀:`/api/v1`
- 默认只监听 loopback;不要把它当作公网服务。
- `/api/v1/health` 无需 Token;其他端点需要 `Authorization: Bearer <TOKEN>`
- 请求体使用 JSON;响应为 JSON。
## 最小请求
```bash
export WECHATEXPLORER_API_TOKEN="<YOUR_API_TOKEN>"
# 健康检查
curl http://127.0.0.1:6131/api/v1/health
# 读取数据
export WECHATEXPLORER_API_TOKEN="<从 API Center 复制的 Token>"
curl -H "Authorization: Bearer $WECHATEXPLORER_API_TOKEN" \
http://127.0.0.1:6131/api/v1/recent_chat
"http://127.0.0.1:6131/api/v1/recent_chat?limit=20"
```
完整 endpoint 与使用流程见 [Reader Skill](../skill/wechatexplorer-reader/SKILL.md),安全边界见 [API Security](./api-security.md)
不要把 Token 放入 URL、Skill 文件、仓库或命令历史可被共享的脚本中
## 端点
| 方法 | 路径 | 作用 | 参数/请求体 |
| --- | --- | --- | --- |
| GET | `/api/v1/health` | 服务与数据库健康状态 | 无 |
| GET | `/api/v1/current_time` | 本机时间、时区和 Unix 时间戳 | 无 |
| GET | `/api/v1/contact` | 联系人和群聊列表 | `filter``type=user\|group` |
| GET | `/api/v1/chatroom` | 群聊列表 | `keyword` |
| GET | `/api/v1/recent_chat` | 最近会话 | `limit`,默认 50 |
| GET | `/api/v1/chatlog` | 指定会话的聊天记录 | 必填 `talker`;可选 `time``startTime`/`endTime` |
| GET | `/api/v1/group_snapshot` | 群成员快照 | 必填 `md5` |
| GET | `/api/v1/resolve` | 将昵称、wxid 或 md5 解析为会话 | 必填 `q` |
| POST | `/api/v1/report` | 将结构化日报渲染为 HTML 与 PNG | `GroupReportExportRequest` JSON |
| GET | `/api/v1/agent/status` | Agent Hub、连接器和数据库状态 | 无 |
| POST | `/api/v1/agent/group-report` | 读取群聊并生成总结图片 | `{ "group": "群名或标识", "range": "today\|yesterday\|7days" }` |
| POST | `/api/v1/agent/send` | 通过已连接机器人测试发送文字或本地图片 | `{ "to": "接收者", "text": "...", "media_url": "..." }` |
### 这些端点与实时机器人有什么关系
- `/api/v1/agent/status` 只用于查询 Agent Hub、微信连接器和数据库状态;
- `/api/v1/agent/group-report` 由外部 Agent 或脚本主动请求生成群聊总结图片;
- `/api/v1/agent/send` 是受 Bearer Token 保护的开发者/测试发送入口,用于通过已经连接的机器人发送文字或本地图片;它不是任意群发能力,也不是实时消息订阅接口;
- 当前 API 没有对外暴露实时入站 webhook。微信消息由应用内部的 Agent Hub 和微信连接器接收、处理和回复。
## 时间查询
`chatlog``time` 支持:
- `YYYY-MM-DD`:当天;
- `YYYY-MM-DD~YYYY-MM-DD`:日期闭区间;
- `YYYY-MM-DD/HH:mm`:从该分钟开始的 60 秒;
- 也可以使用 Unix 秒级 `startTime``endTime`
时间按运行 WechatExplorer 的本机时区解析。用户说“今天”“昨天”时,先调用 `current_time`,再根据返回的 `localDate` 计算日期,避免使用 Agent 自己的时区。
## 常用工作流
### 查找并读取一个会话
```bash
BASE="http://127.0.0.1:6131/api/v1"
AUTH="Authorization: Bearer $WECHATEXPLORER_API_TOKEN"
curl -H "$AUTH" "$BASE/resolve?q=技术交流群"
curl -H "$AUTH" "$BASE/chatlog?talker=技术交流群&time=2026-08-07"
```
当标识不确定时,先用 `resolve``contact`,再调用 `chatlog`。对重要问题,先宽范围定位,再针对关键时间点读取前后文,不要只凭一次粗查回答。
### 生成群聊总结图片
优先使用 `/api/v1/agent/group-report`,因为它会读取指定群聊并按 `today``yesterday``7days` 生成总结。`/api/v1/report` 是更底层的渲染接口,要求调用方已经准备好 `report``metadata` 结构;完整 TypeScript 类型以 `src/shared/group-report.ts` 为准。
## 响应与错误
- `200`:请求成功;
- `401`:缺少、错误或已失效的 Bearer Token
- `400`:参数或 JSON 请求体无效;
- `403`:浏览器 Origin 不在允许的 loopback 列表;
- `404`:端点、会话或群聊不存在;
- `503`:数据库或 Agent Hub 尚未就绪;
- `500`:服务端处理或报告渲染失败。
成功响应会返回端点对应的 JSON 对象,例如 `chatlog` 包含 `contact``query``count``messages``contact` 返回 `count``contacts`
## 与 MCP 的关系
当前实现没有把 `6131` 暴露为 MCP Server。需要在 Agent 中使用时,请安装随应用提供的 Reader Skill,并让 Skill 通过普通 HTTP 请求调用本 API。
+47
View File
@@ -0,0 +1,47 @@
# 连接 Agent:你能用它做什么
WechatExplorer 的 Agent 能力分成“查询过去的数据”和“处理实时微信消息”两条路径。先按你想完成的任务选择,不需要先学习内部模块名称。
## 两种不同的使用方式
### 让外部 Agent 查询历史微信
连接 Reader Skill 后,你可以在本机的 Codex、Claude Code、OpenClaw 或其他 Agent 中询问自己的微信历史,例如:
- “总结今天技术交流群讨论的内容。”
- “帮我找上个月讨论过的项目地址。”
- “过去一周有没有人提到退款?”
Agent 会按需读取 WechatExplorer 提供的联系人、群聊和聊天记录;它不会直接打开微信数据库文件。
| 方式 | 适合谁 | 作用 | 是否需要外部 Agent 配置 |
| --- | --- | --- | --- |
| Reader Skill + Local HTTP API | 想在 Codex/Claude Code/OpenClaw 中查微信的人 | Agent 通过本机 HTTP 请求读取聊天 | 是,需要安装 Skill 和 Token |
| Agent Hub | 想从微信机器人账号发消息、让本机处理并回复的人 | 微信连接器把消息送到本机 Hub,Hub 调用数据和 AI | 不使用外部 Reader Skill,但需要扫码连接机器人 |
这两条路径不要混写:Reader Skill/API 是外部 Agent 主动读取历史;Agent Hub 是机器人收到实时消息后处理并回复。`127.0.0.1:6131` 是 Local HTTP API,不是 MCP Server。
## 外部 Agent 的安装路径
1. 启动 WechatExplorer 并完成微信数据库连接。
2. 打开“API Center”,确认本地 API、数据库和 Reader Skill 都显示可用。
3. 在 API Center 选择目标 AgentCodex、Claude Code、OpenClaw 或其他 Agent),点击“复制安装指令”。
4. 在 Agent 自己的本地 Skill/配置目录执行或粘贴指令。
5. 在 API Center 复制当前 Token,并在 Agent 运行环境中设置 `WECHATEXPLORER_API_TOKEN`
6. 先让 Agent 调用 health,再尝试查询联系人或最近会话。
详细说明:[Reader Skill](./reader-skill.md)、[Local HTTP API](./api.md)、[API 安全](./api-security.md)。
## Agent 能看到什么
外部 Agent 通过 API 按需读取联系人、群聊、最近会话、指定时间范围聊天和群成员快照,也可以请求生成群聊总结图片。API 本身不提供任意文件系统浏览,也不会把完整数据库自动上传到网络。
Agent 是否把读取结果再次交给云端模型,取决于 Agent 的模型配置和它如何处理工具结果。使用前请检查 Agent 自己的隐私设置。
## 什么时候用 Agent Hub
如果你希望直接在微信里问“最近 5 条消息是谁?”或“生成产品交流群今天的群聊总结图片”,打开应用主导航中的“Agent”,进入“Agent Hub”,扫码登录一个微信机器人账号。机器人收到文字后,会调用本地数据和已配置的 AI,再把结果回复给发消息的人。
当前实时入口支持最近会话、联系人近期聊天、联系人近 7 天总结、群聊总结图片、群成员发言总结和有限的普通自然语言回复。它不等于通用聊天机器人,也不提供群发、定时或任意媒体理解。
详细流程见[Agent Hub](./agent-hub.md)。
+57 -8
View File
@@ -1,11 +1,60 @@
# Reader Skill Authentication
# Reader Skill:让外部 Agent 读取微信
WechatExplorer Reader 是 Local HTTP API Skill,不是 MCP Server。
## 先理解它能做什么
1. 打开 WechatExplorer → API Center
2. 确认 API 和数据库已就绪。
3. 在 API Token 区域复制 Token。
4. 将它保存到 Agent 自己的本地环境配置:`WECHATEXPLORER_API_TOKEN=<YOUR_API_TOKEN>`
5. 安装 Reader Skill,并让所有数据请求携带 `Authorization: Bearer $WECHATEXPLORER_API_TOKEN`
Reader Skill 是一份给 Agent 的操作说明。安装后,Codex、Claude Code、OpenClaw 或其他本地 Agent 可以按需调用 WechatExplorer,读取联系人、群聊、最近会话、指定时间的聊天和群成员信息
Codex、Claude Code、OpenClaw 和其他 Agent 均使用相同的 HTTP Bearer Token 模型。WechatExplorer 不会自动把 Token 写入任何 Agent 配置
它使用的是 WechatExplorer Local HTTP API,不是 MCP Server
Reader Skill 只负责“外部 Agent 主动查询历史微信数据”。它不负责二维码登录、监听微信实时消息、接收机器人消息或管理 Agent Hub。想让机器人收到微信消息后处理并回复,请阅读[Agent Hub](./agent-hub.md)。
## 推荐安装流程
1. 启动 WechatExplorer 并完成数据库连接。
2. 打开“API Center”,确认 API 服务和数据库状态正常。
3. 在 Reader Skill 区域选择目标 Agent,点击“复制安装指令”。
4. 把指令粘贴到对应 Agent 的 Skill/配置目录;应用会根据本机路径生成适合 Codex、Claude Code、OpenClaw 或通用 Agent 的说明。
5. 在 API Center 复制 Token,在 Agent 自己的本地环境设置:
```bash
export WECHATEXPLORER_API_TOKEN="<YOUR_API_TOKEN>"
```
6. 先执行 health 检查,再读取数据端点。
WechatExplorer 不会自动把 Token 写进 Agent 配置。重新生成 Token 后,必须同步更新 Agent 环境。
## Agent 的读取顺序
当用户使用“今天”“昨天”“本周”等相对时间时:
1. 调用 `/api/v1/current_time` 获取本机时区和日期;
2. 将相对时间换算为 `chatlog` 支持的 `time` 或时间戳;
3. 调用 `/api/v1/resolve`、`contact` 或 `chatroom` 确认会话;
4. 调用 `/api/v1/chatlog` 读取目标范围;
5. 对重要结论再读取关键消息前后文,不要只凭一次粗查。
## 最小请求
```bash
curl http://127.0.0.1:6131/api/v1/health
curl -H "Authorization: Bearer $WECHATEXPLORER_API_TOKEN" \
"http://127.0.0.1:6131/api/v1/recent_chat?limit=20"
```
## 当前能力范围
Reader Skill 可以指导 Agent 使用:
- 联系人、群聊、最近会话和会话解析;
- 指定会话、日期或时间戳范围的聊天记录;
- 群成员快照;
- 结构化日报渲染和按群聊生成总结图片;
- Agent Hub 状态检查与已连接机器人发送测试。这里的发送接口是开发者/测试用途,不是实时机器人入口,也不会让 Reader Skill 自动监听微信消息。
端点、参数、错误码和鉴权细节以[Local HTTP API](./api.md)为准。Skill 文件保持短小,避免在多个文档中复制会变化的完整响应 schema。
## 隐私边界
Reader Skill 本身不会把聊天数据自动上传到其他服务器;它只是让 Agent 调用本机 API。Agent 读取结果是否继续发送给云端模型,取决于 Agent 自己的模型和工具配置。请同时阅读[数据、隐私与安全](../user-guide/privacy.md)。
+9 -8
View File
@@ -1,11 +1,12 @@
# WechatExplorer v2.1.9 API Authentication
# WechatExplorer 2.1.9Local HTTP API 鉴权迁移
v2.1.9 为 Local HTTP API 增加 Bearer Token 鉴权。这是有意的 breaking change
2.1.9 为 Local HTTP API 增加 Bearer Token 鉴权。这是一次有意的兼容性变化:除健康检查外,数据接口不再接受裸请求
- v2.1.8`GET /api/v1/contact` 可能直接返回数据。
- v2.1.9相同请求必须携带 `Authorization: Bearer <TOKEN>`,否则返回 `401`
- `GET /api/v1/health` 保持公开
- 老用户升级后会自动生成并安全保存 Token不改变原有 apiEnabled、host 或 port 设置。
- Token 可在 WechatExplorer → API Center 中显示、复制和重新生成
- 历史版本中,`GET /api/v1/contact` 等数据请求可能直接返回内容;
- 2.1.9 中,相同请求必须携带 `Authorization: Bearer <TOKEN>`,否则返回 `401`
- `GET /api/v1/health` 保持公开
- 升级后应用会生成并安全保存 Token原有 API 启用状态、监听地址和端口设置保持不变;
- Token 可在 WechatExplorer → API Center 中显示、复制和重新生成
- Reader Skill、Codex、Claude Code、OpenClaw 和其他本地 Agent 需要在自己的环境中设置 `WECHATEXPLORER_API_TOKEN`
Reader Skill 和本地 Agent 需要使用 `WECHATEXPLORER_API_TOKEN` 更新本机配置
如果旧 Agent 无法访问,请先从 API Center 复制当前 Token,再确认每个非 health 请求都带有 Bearer header。完整规则见[API 安全](./api-security.md)