Initial upload for secondary development
This commit is contained in:
527
plan.md
Normal file
527
plan.md
Normal file
@@ -0,0 +1,527 @@
|
||||
# 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 上不可控的问题。
|
||||
Reference in New Issue
Block a user