Files
get_wechat/plan.md

528 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ChatLab 接入公司 AgentBox 与内网平台方案
## 1. 目标
当前 ChatLab 项目是独立运行的 Windows 本地应用,主要能力包括:
- 读取 PC 微信聊天记录
- 群聊检索
- 话题分类
- 售后问题归档
- AI 总结与报告生成
- 本地知识库管理
公司已有 AgentBox 主机,主机内置:
- 7B Qwen 智能体
- 类 Dify 的平台系统
- 业务系统
- 数据库
- 工作流
- MCP 工具体系
- 内网部署能力
本方案目标是把 ChatLab 接回公司平台体系,并部署到 AgentBox 内网环境中,让员工只能在公司内网访问,同时让平台工作流和智能体能够调用 ChatLab 的售后分析能力。
## 2. 推荐方案概览
推荐采用:
**Windows 采集端 + AgentBox 业务端 + MCP 工具接入 + 平台统一鉴权**
整体形态如下:
```text
员工浏览器
-> 公司平台 / 内网网关
-> AgentBox 上的 ChatLab Web
-> AgentBox 上的 ChatLab FastAPI
-> AgentBox 上的 MCP Server
-> AgentBox 上的 Qwen 7B 模型服务
-> 公司平台业务 API / 平台数据库
-> Windows 微信采集端
-> PC 微信
-> chatlog.exe
```
不建议第一版把微信采集能力完全搬到 AgentBox 上,因为当前项目依赖 PC 微信、Windows 进程、chatlog.exe 和本地微信数据解密。AgentBox 更适合承载平台、模型、业务系统、MCP、数据库和内网 Web 服务。
## 3. 模块分工
### 3.1 Windows 采集端
Windows 采集端继续负责和微信强相关的能力:
- 登录 PC 微信
- 启动并维护 `chatlog.exe`
- 读取群聊、会话、消息、图片、语音、文件等微信数据
- 识别当前微信账号
- 将消息增量同步给 AgentBox
- 响应 AgentBox 的按需查询任务
采集端只负责取数据,不再作为主要业务入口。
### 3.2 AgentBox 业务端
AgentBox 负责承载 ChatLab 的核心业务能力:
- ChatLab 后端 FastAPI
- ChatLab Web 页面
- MCP 工具服务
- AI 总结、分类、报告生成
- 与公司平台业务 API 对接
- 与 AgentBox 上的 Qwen 7B 模型对接
- 内网访问控制
- 平台数据库写入
AgentBox 是正式的业务入口和平台集成点。
### 3.3 公司平台
公司平台负责:
- 用户登录
- 权限控制
- 菜单入口
- 工作流编排
- 智能体调用
- 业务对象管理
- 数据库存储
- 审计日志
- 报告流转与人工确认
ChatLab 不单独做完整账号体系,而是接入公司平台统一身份体系。
## 4. 部署方式
### 4.1 AgentBox 上部署的服务
AgentBox 上建议部署以下服务:
```text
chatlab-api
chatlab-web
chatlab-mcp
qwen-openai-compatible-api
```
其中:
- `chatlab-api` 是当前 `chatlog_fastAPI` 改造后的服务端版本
- `chatlab-web` 是当前 React 前端构建后的静态页面
- `chatlab-mcp` 是给公司平台或智能体调用的 MCP 工具服务
- `qwen-openai-compatible-api` 是 AgentBox 本地 Qwen 7B 的 OpenAI 兼容接口
### 4.2 内网访问方式
推荐访问地址:
```text
http://agentbox内网IP/chatlab
```
或者由公司平台菜单进入:
```text
公司平台 -> 售后智能助手 -> ChatLab
```
对外只开放内网访问,不开放公网访问。
推荐网关路径:
```text
/chatlab/ -> ChatLab Web
/chatlab/api/ -> ChatLab FastAPI
/chatlab/mcp/ -> ChatLab MCP Server
```
### 4.3 端口建议
```text
80 / 443 公司平台网关或 Nginx
8000 ChatLab FastAPI仅内网或网关访问
8001 ChatLab MCP仅平台服务访问
模型端口 只允许 AgentBox 本机访问
5030 chatlog.exe仅 Windows 采集端本机访问
```
## 5. 数据流设计
### 5.1 聊天数据采集流程
```text
PC 微信
-> chatlog.exe
-> Windows 采集端
-> AgentBox ChatLab API
-> 平台 API
-> 平台数据库
```
采集端不直接暴露给用户访问,只负责把微信数据同步给 AgentBox。
### 5.2 AI 报告生成流程
```text
用户选择群聊 / 平台工作流触发
-> ChatLab 检索聊天记录
-> 创建话题
-> 调用 AgentBox Qwen 7B
-> 生成 Markdown 报告
-> 写入公司平台业务对象
-> 人工确认 / 工作流流转
```
### 5.3 MCP 调用流程
```text
平台智能体 / 工作流
-> MCP Tool
-> ChatLab API
-> 消息检索 / 话题生成 / 报告生成
-> 平台业务数据
```
## 6. 平台数据库对接方式
推荐不让 ChatLab 直接连接平台数据库,而是通过公司平台 API 写入业务对象。
原因:
- 保留平台权限控制
- 保留审计日志
- 保留工作流触发能力
- 避免绕过平台业务规则
- 后续平台升级时耦合更低
建议平台侧提供以下业务对象。
### 6.1 售后群对象
```json
{
"external_id": "微信群ID",
"name": "群名称",
"source": "wechat",
"collector_id": "采集端ID",
"status": "active"
}
```
### 6.2 话题对象
```json
{
"external_id": "ChatLab话题ID",
"group_external_id": "微信群ID",
"title": "话题标题",
"source": "manual|ai|workflow",
"status": "pending|processing|done|failed",
"message_refs": [123, 124, 125]
}
```
### 6.3 售后报告对象
```json
{
"external_id": "报告ID",
"topic_external_id": "话题ID",
"title": "报告标题",
"content_markdown": "Markdown报告正文",
"evidence": [],
"ai_model": "qwen-7b",
"review_status": "pending|approved|rejected"
}
```
### 6.4 任务对象
```json
{
"external_id": "任务ID",
"type": "sync|summarize|topic_detect",
"status": "queued|running|success|failed",
"progress": {
"processed": 10,
"total": 100
},
"error": ""
}
```
## 7. MCP 工具设计
第一版建议提供以下 MCP 工具:
```text
chatlab_list_groups
chatlab_search_messages
chatlab_get_message_context
chatlab_create_topic
chatlab_add_topic_messages
chatlab_summarize_topic
chatlab_get_report
chatlab_search_reports
```
### 7.1 群列表工具
```text
chatlab_list_groups
```
用途:
- 获取当前可分析的微信群
- 给平台智能体或工作流选择分析对象
### 7.2 消息检索工具
```text
chatlab_search_messages
```
参数示例:
```json
{
"group_id": "微信群ID",
"keyword": "退款",
"start_date": "2026-05-01",
"end_date": "2026-05-18",
"limit": 50
}
```
用途:
- 按关键词查找聊天记录
- 支持售后问题溯源
- 支持工作流自动筛选问题片段
### 7.3 上下文获取工具
```text
chatlab_get_message_context
```
用途:
- 根据某条消息获取前后文
- 避免 AI 只看单条消息误判
### 7.4 创建话题工具
```text
chatlab_create_topic
```
用途:
- 把一组消息整理成售后话题
- 可由人工触发,也可由工作流触发
### 7.5 生成报告工具
```text
chatlab_summarize_topic
```
参数示例:
```json
{
"topic_id": "话题ID",
"write_to_platform": true
}
```
用途:
- 调用 AgentBox 上的 Qwen 7B
- 生成售后问题报告
- 写入平台业务对象
- 进入人工确认流程
## 8. AI 模型对接方案
当前项目已经使用 OpenAI-compatible 调用方式,因此 AgentBox 的 Qwen 7B 只需要提供兼容接口:
```text
POST /v1/chat/completions
```
ChatLab 后端配置为:
```text
AI_BASE_URL=http://127.0.0.1:模型服务端口/v1
AI_API_KEY=agentbox-local-key
AI_MODEL=qwen-7b
```
第一版优先支持:
- 文本聊天总结
- 售后问题提取
- 话题分类
- Markdown 报告生成
- AI 建议生成
图片、语音、视频解析可以作为第二阶段增强能力。如果 AgentBox 暂时没有视觉模型或语音模型,系统应允许跳过这些内容,并在报告中提示媒体内容需人工查看。
## 9. 权限与安全
### 9.1 访问边界
- 只允许内网访问
- 不暴露公网
- AgentBox 服务只接受公司平台网关或内网指定 IP 访问
- MCP 服务只允许平台服务账号调用
- 采集端只允许带签名的请求写入数据
### 9.2 用户鉴权
推荐使用公司平台统一登录。
平台网关向 ChatLab 注入用户身份:
```text
X-Platform-User-Id
X-Platform-User-Name
X-Platform-Roles
```
ChatLab 根据这些身份头判断用户权限。
### 9.3 角色建议
```text
普通用户:
- 查看授权群
- 查看报告
售后人员:
- 创建话题
- 生成报告
- 提交人工确认
管理员:
- 管理采集端
- 管理模型配置
- 管理平台 API 配置
- 查看同步状态
工作流服务账号:
- 调用 MCP 工具
- 写入报告和任务状态
```
### 9.4 采集端安全
采集端和 AgentBox 通信使用 HMAC 签名。
请求头建议:
```text
X-Collector-Id
X-Timestamp
X-Signature
```
签名方式:
```text
HMAC_SHA256(secret, method + path + timestamp + body_sha256)
```
AgentBox 拒绝:
- 无签名请求
- 签名错误请求
- 时间偏差超过 5 分钟的请求
- 未注册采集端请求
## 10. 数据存储策略
第一版建议:
- 平台数据库存正式业务数据
- ChatLab 本地 SQLite 只作为缓存或临时任务状态
- 微信原始数据库不上传 AgentBox
- 消息正文按业务需要同步
- 图片、语音、文件按需同步或按需代理访问
正式进入平台数据库的数据包括:
- 群信息
- 话题信息
- 关键消息引用
- AI 报告
- 任务状态
- 人工确认状态
- 审计记录
不建议直接保存所有微信原始数据,除非公司合规要求允许并且平台已有对应权限模型。
## 11. 推荐落地阶段
### 第一阶段:平台接入最小闭环
目标:
- AgentBox 能访问 ChatLab Web
- 平台能通过 MCP 调用 ChatLab
- ChatLab 能调用 Qwen 7B 生成报告
- 报告能写入平台业务对象
- 员工只能内网访问
第一阶段完成后,就可以在公司内部演示完整售后分析闭环。
### 第二阶段:采集端服务化
目标:
- Windows 采集端自动心跳
- 自动增量同步消息
- AgentBox 显示采集端在线状态
- 支持多采集端绑定
- 支持多个微信账号隔离
### 第三阶段:工作流深度融合
目标:
- 平台工作流自动发现售后问题
- 自动生成待确认报告
- 人工确认后进入业务系统
- 报告和任务进入平台审计体系
- 支持通知、派单、复盘等业务流转
### 第四阶段:多模态增强
目标:
- 图片内容识别
- 语音转文字
- 视频摘要
- 文件内容解析
- 多模态证据进入售后报告
## 12. 推荐结论
第一版不要追求把整个项目完全搬进 AgentBox。
最稳妥的路线是:
```text
微信采集继续留在 Windows
业务系统迁到 AgentBox
AI 调用切到 AgentBox Qwen
数据写入公司平台
能力通过 MCP 暴露给工作流和智能体
Web 入口通过内网平台访问
```
这样可以最大程度复用当前项目,同时快速接回公司平台体系,并且避免微信采集在 AgentBox 上不可控的问题。