33 KiB
售后开发底座二次开发与交付手册
内部资料,仅供公司开发、交付、售前技术同事使用。本文档用于帮助同事基于当前项目快速完成客户场景二次开发、打包交付和现场排错,不建议直接转发给客户。
1. 文档定位
本项目是一个面向售后、设备运维、技术支持团队的本地化开发底座,核心能力可以概括为:
微信售后数据采集 + AI 话题分析 + 知识库沉淀 + Windows 桌面化交付
典型使用场景是:客户的售后工程师长期在微信群里处理设备故障、安装调试、备件更换、参数配置、软件升级等问题。项目通过读取本机 PC 微信聊天记录,把群消息、图片、语音、文件等内容接入到本地业务系统,再调用 AI 进行话题归类、问题总结和知识文档生成,最终形成可搜索、可编辑、可持续沉淀的售后知识库。
这套底座适合用于以下客户项目:
- 设备制造企业售后知识库
- 工业现场运维问题沉淀
- 客户服务群自动归档
- 技术支持经验库
- 多客户微信群统一管理
- 企业内部故障案例库
- 针对某个行业的垂直售后 Agent
本文档面向两类同事:
- 开发同事:理解目录结构、接口边界、数据流、二次开发位置、打包方式。
- 交付同事:理解安装部署、AI 配置、客户现场验证、常见问题排查。
2. 项目总览
当前项目采用“Electron 桌面壳 + React 前端 + FastAPI 后端 + chatlog 微信数据服务”的组合架构。业务逻辑主要留在前端和 Python 后端,Electron 主要负责桌面运行、进程管理和安装包交付。
2.1 核心目录
| 模块 | 路径 | 技术栈 | 主要职责 |
|---|---|---|---|
| 桌面壳 | electron-launcher/ |
Electron | 启动窗口、启动本地服务、管理子进程、打包配置 |
| 前端页面 | chatlab-web/frontend/ |
React + Vite | 聊天记录、AI 话题分析、知识库、设置页面 |
| 业务后端 | chatlog_fastAPI/ |
Python + FastAPI | API 接口、AI 调用、SQLite 数据、定时任务、文件代理 |
| 微信数据服务 | chatlog.exe |
Windows 可执行程序 | 读取本机 PC 微信数据,提供 127.0.0.1:5030 API |
| 本地 DLL | lib/windows_x64/wx_key.dll |
Windows DLL | 配合微信数据能力 |
| 构建脚本 | scripts/build-desktop.ps1 |
PowerShell | 串联前端构建、后端打包、资源复制、安装包生成 |
| 发布目录 | release/ |
安装包输出 | 存放最终交付的 ChatLab-Setup-*.exe |
2.2 技术架构
用户打开桌面应用
|
v
Electron 主进程
|
+--> 启动 chatlog.exe
| 默认端口: 127.0.0.1:5030
|
+--> 启动 FastAPI 后端
| 开发默认端口: 8000
| 桌面打包后由 Electron 动态分配本地端口
|
+--> 等待 /health 和 chatlog 就绪
|
v
Electron 窗口加载业务页面
|
v
React 前端调用 FastAPI
|
v
FastAPI 调用 chatlog API / AI 模型 / SQLite 数据库
2.3 运行端口
| 端口 | 服务 | 说明 |
|---|---|---|
5030 |
chatlog.exe |
微信数据服务,提供聊天记录、群聊、图片、语音、文件等底层数据 |
8000 |
FastAPI | 开发环境常用后端端口,提供业务 API |
5173 |
Vite | 前端开发服务端口,仅开发环境使用 |
桌面安装包运行时,用户通常不会看到 5173,因为生产环境下前端静态资源由 FastAPI 托管。Electron 会启动后端并加载后端地址。
3. 环境要求
3.1 基础环境
| 软件 | 建议版本 | 说明 |
|---|---|---|
| Windows | Windows 10/11 64 位 | 当前项目优先面向 Windows 桌面交付 |
| PC 微信 | v4 版本 | 需要先登录 PC 微信,系统才能读取本地聊天数据 |
| Node.js | 20+ LTS | 用于前端开发和 Electron 打包 |
| Python | 3.10+ | 用于运行 FastAPI 后端 |
| Python 打包版本 | 3.12 | scripts/build-desktop.ps1 默认优先使用 py -3.12 |
3.2 首次依赖安装
后端依赖:
cd chatlog_fastAPI
python -m pip install -r requirements.txt
前端依赖:
cd chatlab-web\frontend
npm install
桌面壳依赖:
cd electron-launcher
npm install
4. 本地开发启动
开发时建议按下面顺序启动,方便定位问题。
4.1 启动前检查
- 确认 PC 微信已经登录。
- 确认当前项目根目录存在
chatlog.exe。 - 确认
lib/windows_x64/wx_key.dll存在。 - 确认 Node.js、Python 已安装并加入 PATH。
- 如果客户电脑安全软件拦截
chatlog.exe,需要先加入信任或用管理员权限运行。
4.2 启动 chatlog 微信数据服务
在项目根目录执行:
.\chatlog.exe server
服务正常后,默认监听:
http://127.0.0.1:5030
可以用以下方式检查版本:
.\chatlog.exe version
4.3 启动 FastAPI 后端
在项目根目录执行:
cd chatlog_fastAPI
python main.py
开发环境默认地址:
http://127.0.0.1:8000
健康检查地址:
http://127.0.0.1:8000/health
/health 返回中的关键字段:
| 字段 | 说明 |
|---|---|
ok |
FastAPI 是否正常 |
chatlog_ok |
FastAPI 是否能连通 chatlog.exe |
chatlog_error |
chatlog 连接失败时的错误信息 |
wxid |
当前识别到的微信账号 |
db_path |
当前使用的知识库数据库路径 |
data_dir |
当前运行数据目录 |
4.4 启动 React 前端
在项目根目录执行:
cd chatlab-web\frontend
npm run dev
开发环境默认访问:
http://localhost:5173
4.5 启动 Electron 桌面壳
如果需要调试桌面壳:
cd electron-launcher
npm run start
Electron 的关键职责:
- 打开启动页和业务窗口。
- 启动
chatlog.exe。 - 启动 FastAPI 后端。
- 向后端注入运行目录、数据目录、后端端口等环境变量。
- 关闭应用时清理子进程。
- 打包后加载内置前端静态资源。
5. 核心业务流程
5.1 微信数据读取
前端不直接访问微信数据文件,而是通过 FastAPI 访问业务接口。FastAPI 再根据场景调用 chatlog.exe 提供的 API,或通过代理接口把请求转发给 chatlog。
React 页面
-> FastAPI 业务接口
-> chatlog API
-> 本机 PC 微信数据
这样做的好处:
- 前端不需要知道 chatlog 的所有底层细节。
- 后端可以统一做数据格式清洗、分页、媒体解析和异常处理。
- 后续接入客户自己的数据源时,可以只改后端适配层。
5.2 群聊和聊天记录检索
相关接口族:
| 接口 | 用途 |
|---|---|
/api/search/chatrooms |
搜索或加载群聊列表 |
/api/search/sessions |
获取最近会话列表 |
/api/search/members |
获取某个群的成员列表 |
/api/search |
按群、时间、发送人、关键词查询聊天记录 |
前端主要封装位置:
chatlab-web/frontend/src/api/index.js
相关页面:
chatlab-web/frontend/src/pages/ChatlogPage.jsx
5.3 AI 设置
相关接口:
| 接口 | 用途 |
|---|---|
GET /api/settings |
读取当前 AI 配置 |
PUT /api/settings |
保存 AI 配置 |
配置项包括:
- AI 接口地址
- AI API Key
- 话题分析模型
- 知识总结模型
- 视觉模型
- 语音模型
相关页面:
chatlab-web/frontend/src/pages/SettingsPage.jsx
注意事项:
- 不要把 API Key 写死到前端或后端代码。
- 不要把客户真实 Key 写进
.env后再打包。 - 交付前应使用客户现场提供的模型地址和 Key。
5.4 话题分析
相关接口族:
| 接口 | 用途 |
|---|---|
/api/groups |
管理需要分析的微信群 |
/api/groups/{group_id}/init |
初始化某个群的话题分析 |
/api/groups/{group_id}/task |
查询分析任务状态 |
/api/topics |
查询或创建话题 |
/api/topics/{topic_id} |
查看、修改、删除单个话题 |
/api/topics/{topic_id}/messages |
向话题添加消息 |
/api/topics/{topic_id}/messages/{seq} |
从话题移除消息 |
/api/topics/{topic_id}/summarize |
基于话题消息生成知识文档 |
主要后端位置:
chatlog_fastAPI/routers/groups.py
chatlog_fastAPI/routers/topics.py
chatlog_fastAPI/services/topic_engine.py
chatlog_fastAPI/services/summary_engine.py
主要前端页面:
chatlab-web/frontend/src/pages/TopicsPage.jsx
二开常见需求:
- 修改话题分类提示词。
- 增加某个行业的故障类型字段。
- 针对不同客户群使用不同分析模板。
- 把“售后问题”改成“设备巡检”“工单处理”“客户投诉”等业务口径。
5.5 知识库
相关接口族:
| 接口 | 用途 |
|---|---|
GET /api/knowledge |
查询知识文档列表,支持关键词 |
GET /api/knowledge/{doc_id} |
查看单篇知识文档 |
PATCH /api/knowledge/{doc_id} |
编辑并保存知识文档 |
相关后端位置:
chatlog_fastAPI/routers/knowledge.py
chatlog_fastAPI/services/fts.py
相关前端页面:
chatlab-web/frontend/src/pages/KnowledgePage.jsx
知识库使用 SQLite FTS 做全文检索。二开时如果要新增知识字段,应同时考虑:
- 数据表是否需要新增字段。
- 搜索索引是否需要同步更新。
- 前端展示是否要增加筛选条件。
- Word 导出模板是否要同步调整。
5.6 文件、图片、语音、视频
相关接口族:
| 接口 | 用途 |
|---|---|
/api/files/{md5} |
根据文件 MD5 获取附件 |
/image/{path:path} |
图片资源代理 |
/voice/{path:path} |
语音资源代理 |
/video/{path:path} |
视频资源代理 |
/file/{path:path} |
文件资源代理 |
/data/{path:path} |
数据资源代理 |
相关后端位置:
chatlog_fastAPI/routers/files.py
chatlog_fastAPI/routers/chatlog_proxy.py
chatlog_fastAPI/services/media_resolver.py
chatlog_fastAPI/services/media_parser.py
前端消息展示组件:
chatlab-web/frontend/src/components/MessageBubble.jsx
6. 接口清单
下面是二开时最常用的接口族。新增能力时,优先复用这些接口边界,不要绕过 FastAPI 直接从前端访问底层数据。
| 接口 | 方法 | 说明 |
|---|---|---|
/health |
GET | 后端健康检查,同时检查 chatlog 连接状态 |
/api/system/refresh-account |
POST | 强制刷新当前微信账号并切换对应数据库 |
/api/system/chatlog-context |
GET/POST | 读取或写入 chatlog 运行上下文 |
/api/search |
GET | 聊天记录搜索 |
/api/search/chatrooms |
GET | 群聊列表搜索 |
/api/search/members |
GET | 群成员列表 |
/api/search/sessions |
GET | 最近会话列表 |
/api/groups |
GET/POST/PATCH/DELETE | 管理被分析的群 |
/api/topics |
GET/POST/PATCH/DELETE | 管理 AI 识别的话题 |
/api/knowledge |
GET/PATCH | 管理知识文档 |
/api/settings |
GET/PUT | 管理 AI 配置 |
/api/ai/parse |
POST | 解析单条消息中的图片、语音、文件等内容 |
/api/ai/summarize/stream |
POST | 流式生成聊天摘要 |
/api/sse/chatlog |
GET | 聊天记录 SSE 实时订阅 |
/api/files/{md5} |
GET | 获取本地附件文件 |
/api/v1/{path:path} |
多方法 | chatlog API 代理接口 |
7. 数据目录与数据库
7.1 默认数据目录
桌面应用运行时,用户数据默认存放在:
%APPDATA%/ChatLab
后端配置来源:
chatlog_fastAPI/config.py
关键环境变量:
| 变量 | 说明 |
|---|---|
CHATLAB_DATA_DIR |
指定运行数据目录 |
CHATLAB_STATIC_DIR |
指定前端静态资源目录 |
CHATLAB_BACKEND_PORT |
Electron 启动后端时注入的端口 |
7.2 微信账号数据库切换
项目会尝试识别当前登录的微信账号 wxid,并为不同账号使用不同知识库数据库:
knowledge.db
knowledge_{wxid}.db
这样做可以避免同一台电脑上多个微信账号的数据互相污染。
7.3 核心数据表
核心表在 chatlog_fastAPI/database.py 的 init_db() 中初始化:
| 表 | 用途 |
|---|---|
groups |
已添加到系统中进行分析的微信群 |
topics |
AI 或人工创建的话题 |
topic_messages |
话题和聊天消息的关联 |
knowledge_docs |
生成后的知识文档 |
knowledge_fts |
知识库全文检索索引 |
ai_tasks |
AI 分析和总结任务状态 |
app_settings |
AI 地址、模型、Key 等配置 |
8. 二次开发指南
8.1 开发原则
二开时优先遵守以下原则:
- 业务入口放前端页面,核心逻辑放 FastAPI 后端。
- 前端统一通过
src/api/index.js调用接口。 - 后端新增接口放到
chatlog_fastAPI/routers/。 - 可复用的业务逻辑放到
chatlog_fastAPI/services/。 - 数据结构变更写在
database.py:init_db()中,并兼容老客户数据。 - AI 能力优先复用现有
ai_client.py和设置页配置。 - 不要在代码中写死客户名称、API Key、证书密码、客户数据路径。
- 客户定制内容尽量集中在文案、提示词、模板、配置项,减少对底层架构的改动。
8.2 新增前端页面
适用场景:
- 给客户新增一个“工单看板”。
- 新增“设备型号分析”页面。
- 新增“客户问题统计”页面。
- 新增“知识导出”页面。
推荐步骤:
- 在
chatlab-web/frontend/src/pages/新建页面组件,例如:
chatlab-web/frontend/src/pages/WorkOrderPage.jsx
- 在
chatlab-web/frontend/src/api/index.js中封装接口:
export const getWorkOrders = (params) => api.get('/api/work-orders', { params })
- 在
chatlab-web/frontend/src/App.jsx中增加导航入口和页面渲染分支。 - 页面样式优先复用现有布局、按钮、表格、侧栏风格。
- 如果页面依赖后端新接口,先用 Mock 数据搭好界面,再接真实 API。
注意:
- 不建议在页面组件里散落大量
fetch('/api/...')。 - 已有 API 封装在
src/api/index.js,新接口也应集中管理。 - 新页面应考虑加载中、空数据、错误提示、重试按钮。
8.3 新增后端接口
适用场景:
- 给前端新增数据查询接口。
- 接入客户自己的系统数据。
- 增加新的统计分析能力。
- 增加新的导出能力。
推荐步骤:
- 在
chatlog_fastAPI/routers/新建路由文件,例如:
chatlog_fastAPI/routers/work_orders.py
- 定义
APIRouter:
from fastapi import APIRouter
router = APIRouter(prefix="/api/work-orders", tags=["work-orders"])
- 把业务逻辑放入
chatlog_fastAPI/services/,例如:
chatlog_fastAPI/services/work_order_service.py
- 在
chatlog_fastAPI/main.py注册新 router:
from routers import work_orders
app.include_router(work_orders.router)
- 在前端
src/api/index.js中封装调用。 - 在页面中接入接口并处理加载、失败、空数据状态。
注意:
- 接口路径统一使用
/api/...。 - 需要访问 chatlog 数据时,优先复用已有 chatlog client 或代理逻辑。
- 不要让前端直接访问 SQLite 文件。
8.4 新增数据表或字段
适用场景:
- 给知识文档增加“设备型号”“客户名称”“故障等级”字段。
- 增加工单表。
- 增加客户项目配置表。
- 增加统计缓存表。
推荐步骤:
- 在
chatlog_fastAPI/database.py的init_db()中增加CREATE TABLE IF NOT EXISTS。 - 如果是给老表加字段,先通过
PRAGMA table_info(...)检查字段是否存在。 - 字段不存在时执行
ALTER TABLE ... ADD COLUMN ...。 - 如果字段影响搜索,更新 FTS 写入逻辑。
- 如果字段影响前端展示,同步修改接口返回和页面展示。
兼容原则:
- 不要直接删除老字段。
- 不要直接清空老数据。
- 不要假设客户现场数据库一定是最新结构。
- 数据迁移必须可重复执行,多次启动不应报错。
8.5 新增 AI 能力
适用场景:
- 新增行业化话题分类。
- 新增设备故障根因分析。
- 新增日报、周报、月报。
- 新增图片识别、语音识别、文件摘要。
- 新增客户指定模板的知识文档生成。
推荐位置:
chatlog_fastAPI/services/ai_client.py
chatlog_fastAPI/routers/ai.py
chatlog_fastAPI/services/topic_engine.py
chatlog_fastAPI/services/summary_engine.py
chatlab-web/frontend/src/pages/SettingsPage.jsx
开发原则:
- 模型地址、模型名、API Key 从设置页或后端配置读取。
- Prompt 模板可以放在 service 层,避免散落在前端。
- 客户行业术语、设备型号、输出格式应抽象为可配置文本。
- 生成结果必须允许人工编辑,不能假设 AI 输出完全正确。
- 流式输出接口适合长文档生成,普通接口适合短文本解析。
8.6 修改知识文档模板
如果客户要求固定格式,例如“故障现象、影响范围、排查步骤、根因、解决方案、预防措施”,应优先修改总结 Prompt 和前端展示,而不是把模板逻辑写死在多个地方。
推荐字段:
1. 问题标题
2. 适用设备或系统
3. 故障现象
4. 影响范围
5. 排查过程
6. 根本原因
7. 解决方案
8. 预防建议
9. 引用消息时间范围
10. 相关附件或图片
相关位置:
chatlog_fastAPI/services/summary_engine.py
chatlab-web/frontend/src/components/ReportDocumentView.jsx
chatlab-web/frontend/src/utils/wordExport.js
8.7 客户品牌和交付包定制
常见定制项:
| 定制项 | 位置 |
|---|---|
| 应用名称 | electron-launcher/package.json、electron-launcher/electron-builder.config.cjs、electron-launcher/main.js |
| 窗口标题 | electron-launcher/main.js |
| 图标 | scripts/make-icon.cjs、electron-launcher/build/ |
| 前端页面标题 | chatlab-web/frontend/src/App.jsx 或相关页面 |
| 菜单名称 | chatlab-web/frontend/src/App.jsx |
| 安装包名称 | electron-launcher/electron-builder.config.cjs |
| 默认 AI 口径 | chatlog_fastAPI/services/ 中相关 Prompt |
定制时建议先确认:
- 客户对外显示名称。
- 安装包名称。
- 是否需要客户 Logo。
- 是否要隐藏“ChatLab”字样。
- 是否需要增加免责声明或授权说明。
9. 配置与数据安全
9.1 不允许进入安装包的内容
以下内容禁止进入 release/ 交付包:
.envknowledge*.db- 客户真实聊天记录
- 客户真实 API Key
- 代码签名证书
- 证书密码
- 私钥文件
__pycache__- 临时测试文件
构建脚本 scripts/build-desktop.ps1 已经包含敏感文件扫描逻辑,二开时不得移除或绕过。
9.2 API Key 管理
AI API Key 应通过设置页写入系统配置。对外演示、客户现场部署和正式交付时,应由客户或项目负责人提供真实 Key。
日志中不应输出完整 Key。Electron 主进程已有日志脱敏逻辑,二开新增日志时也要遵守同样原则。
9.3 客户数据管理
默认数据目录:
%APPDATA%/ChatLab
交付时应告知客户:
- 安装包升级不会自动删除本地数据。
- 如果客户要迁移电脑,需要迁移对应 AppData 数据目录。
- 如客户要求卸载时清理数据,需要单独提供清理方案。
- 严禁把客户现场数据库复制回开发机作为测试数据,除非客户明确授权并完成脱敏。
10. 桌面打包交付
10.1 一键打包
在项目根目录执行:
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1
脚本会依次完成:
- 生成或刷新 Electron 图标。
- 构建 React 前端。
- 用 PyInstaller 构建 Python 后端。
- 重置
electron-launcher/build-resources。 - 复制
chatlog.exe、lib/、前端dist/、后端dist/ChatLabBackend/、许可证文件。 - 扫描敏感文件,阻止
.env、数据库、证书、私钥、缓存进入发布资源。 - 生成
release/manifest.txt。 - 调用
electron-builder生成 Windows 安装包。 - 把安装包和 blockmap 复制到
release/。 - 如果启用签名,校验安装包签名状态。
10.2 常用跳过参数
调试时可以跳过部分步骤:
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 -SkipIcon
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 -SkipFrontend
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 -SkipBackend
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 -SkipInstaller
常见用途:
| 参数 | 用途 |
|---|---|
-SkipIcon |
图标没变时节省时间 |
-SkipFrontend |
前端已经构建过,只调试后端或安装包 |
-SkipBackend |
后端已经构建过,只调试前端或安装包 |
-SkipInstaller |
只生成资源,不生成最终安装包 |
10.3 代码签名
未签名安装包在客户电脑上可能触发 Windows SmartScreen 或安全软件提示。正式客户交付建议使用代码签名证书。
通过命令传参:
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 `
-Sign `
-CertificateFile "D:\certs\ChatLab-CodeSigning.pfx" `
-CertificatePassword "证书密码" `
-PublisherName "证书中的发布者名称" `
-ForceSign
通过环境变量:
$env:CHATLAB_PFX_FILE = "D:\certs\ChatLab-CodeSigning.pfx"
$env:CHATLAB_PFX_PASSWORD = "证书密码"
$env:CHATLAB_CERT_PUBLISHER_NAME = "证书中的发布者名称"
$env:CHATLAB_FORCE_SIGN = "1"
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1
签名相关变量:
| 变量 | 说明 |
|---|---|
CHATLAB_PFX_FILE |
PFX/P12 证书完整路径 |
CHATLAB_PFX_PASSWORD |
证书密码 |
CHATLAB_CERT_PUBLISHER_NAME |
可选,证书发布者名称 |
CHATLAB_TIMESTAMP_SERVER |
可选,默认时间戳服务器 |
CHATLAB_FORCE_SIGN |
设置为 1 时,签名失败会中断构建 |
证书安全要求:
- 证书文件必须放在项目目录外。
- 不要把证书、私钥、密码提交到项目目录。
- 不要把证书复制到
electron-launcher/build-resources。 - 不要把证书路径写入对客户可见的文档。
10.4 交付文件
最终交付目录:
release/
交付时一般只需要提供最新的:
ChatLab-Setup-*.exe
如果客户需要升级包校验或自动更新能力,再根据实际方案提供 .blockmap 等配套文件。
11. 客户项目落地流程
11.1 需求确认
二开前至少确认以下信息:
| 项目 | 需要确认的问题 |
|---|---|
| 客户场景 | 是售后、运维、客服、巡检,还是其他业务 |
| 微信群规模 | 需要分析几个群,每个群大概多少消息 |
| 数据范围 | 是否只分析指定群,是否包含个人聊天 |
| AI 部署 | 使用公网模型、客户内网模型,还是 AgentBox 本地模型 |
| 模型能力 | 是否需要图片识别、语音识别、长文总结 |
| 知识模板 | 客户希望沉淀成什么格式 |
| 权限要求 | 谁能看知识库,是否需要账号系统 |
| 隐私口径 | 是否允许读取 PC 微信数据,是否需要客户授权说明 |
| 交付方式 | 安装包、本地部署、远程协助,还是现场部署 |
| 验收标准 | 客户认为什么结果算成功 |
11.2 二开实施顺序
推荐实施顺序:
- 先跑通原始项目,确认 chatlog、FastAPI、前端、Electron 都正常。
- 修改客户可见的产品名称、页面文案、菜单名。
- 修改话题分析 Prompt 和知识文档模板。
- 根据客户需求新增页面或接口。
- 增加必要的数据表和迁移逻辑。
- 接入客户指定 AI 模型地址。
- 完成前端构建和桌面打包。
- 在测试机安装,跑完整验收流程。
- 输出安装包、部署说明、客户现场配置说明。
11.3 现场部署步骤
交付同事现场部署建议按下面顺序:
- 安装 Windows 桌面安装包。
- 登录 PC 微信。
- 启动桌面应用。
- 等待应用完成微信数据识别。
- 进入设置页配置 AI 地址、API Key、模型名称。
- 打开聊天记录页,确认群列表和消息可见。
- 进入 AI 话题分析页,添加一个目标群。
- 选择一个较小时间范围跑首次分析。
- 生成一篇知识文档。
- 进入知识库页搜索关键词。
- 重启应用,确认配置和知识库数据仍然存在。
11.4 验收清单
| 验收项 | 通过标准 |
|---|---|
| 应用能启动 | 桌面应用打开后无白屏、无异常退出 |
| 微信数据可读 | 群列表可见,聊天记录可查询 |
| chatlog 连接正常 | /health 中 chatlog_ok=true |
| AI 配置可保存 | 设置页保存后刷新仍能看到配置 |
| 话题分析可执行 | 添加群后可以生成话题列表 |
| 知识文档可生成 | 对某个话题可生成结构化知识文档 |
| 知识库可搜索 | 输入关键词能检索到相关文档 |
| 数据可持久化 | 重启后群、话题、知识库仍存在 |
| 安装包可复装 | 卸载重装或覆盖安装后应用可打开 |
| 客户口径一致 | 页面名称、文档模板、提示词符合客户项目要求 |
12. 常见问题排查
12.1 群列表为空
可能原因:
- PC 微信没有登录。
chatlog.exe没有启动。5030端口被占用或被拦截。- 微信版本不兼容。
- 安全软件拦截了
chatlog.exe或 DLL。
排查步骤:
- 确认 PC 微信已登录。
- 在项目根目录执行
.\chatlog.exe version。 - 启动
.\chatlog.exe server。 - 访问或检查
http://127.0.0.1:5030是否可用。 - 打开 FastAPI
/health,查看chatlog_ok和chatlog_error。 - 必要时用管理员身份启动应用。
12.2 AI 无响应或分析失败
可能原因:
- 设置页没有配置 API Key。
- AI 接口地址不正确。
- 模型名称不正确。
- 客户内网无法访问模型服务。
- 模型不支持当前请求格式。
- 长文本超出模型上下文限制。
排查步骤:
- 进入设置页检查 AI 接口地址。
- 检查 API Key 是否为空。
- 检查话题分析模型、知识总结模型、视觉模型、语音模型名称。
- 用较小时间范围重新测试。
- 查看后端日志中的 AI 错误信息。
- 如果是客户内网模型,确认本机能访问模型服务地址。
12.3 前端打不开或白屏
开发环境排查:
- 确认
npm run dev正常运行。 - 确认浏览器访问
http://localhost:5173。 - 确认 FastAPI 正常运行。
- 检查浏览器控制台报错。
生产安装包排查:
- 确认安装包内有前端静态资源。
- 确认
CHATLAB_STATIC_DIR指向正确资源目录。 - 确认 Electron 能启动 FastAPI。
- 查看 Electron 启动页日志。
12.4 打包失败
常见原因:
- Node.js 未安装或版本过低。
- Python 3.12 未安装。
- PyInstaller 未安装。
- 前端依赖缺失。
- 后端依赖缺失。
chatlog.exe不存在。lib/windows_x64/wx_key.dll不存在。- 敏感文件扫描发现
.env、数据库或证书文件。
排查命令:
node -v
npm -v
py -3.12 -V
.\chatlog.exe version
重新安装依赖:
cd chatlab-web\frontend
npm install
cd ..\..\chatlog_fastAPI
python -m pip install -r requirements.txt
12.5 客户电脑提示不安全
可能原因:
- 安装包未签名。
- 客户电脑安全策略严格。
- Windows SmartScreen 对未知发布者提示风险。
- 安全软件对读取微信数据的工具敏感。
处理建议:
- 正式交付使用代码签名证书。
- 给客户 IT 提供发布者、安装包哈希、部署说明。
- 必要时由客户 IT 加入白名单。
- 对外说明系统为本地读取和本地分析,不主动发送微信消息。
12.6 换微信账号后数据变化
系统会自动识别当前微信账号,并切换到对应数据库。表现为:
- A 账号生成的知识库在 A 账号数据库中。
- B 账号登录后,会切换到 B 账号数据库。
- 切回 A 账号后,A 账号数据仍可继续使用。
如需强制刷新账号:
POST /api/system/refresh-account
13. 开发交付检查清单
13.1 开发完成前
- 新增页面已接入导航。
- 新增接口已在
main.py注册。 - 前端 API 已集中封装到
src/api/index.js。 - 数据库变更已写兼容迁移。
- AI Prompt 已按客户场景调整。
- 页面空状态、加载状态、错误状态完整。
- 未写死客户 API Key。
- 未把客户数据放入项目目录。
- 未破坏原有聊天记录、话题分析、知识库功能。
13.2 打包前
chatlog.exe存在且版本检查通过。lib/windows_x64/wx_key.dll存在。- 前端
npm run build成功。 - 后端 PyInstaller 构建成功。
release/manifest.txt已生成。release/中无.env、knowledge*.db、证书、私钥。- 安装包名称、图标、产品名符合客户项目。
13.3 交付前
- 在干净测试机安装成功。
- PC 微信登录后群列表正常。
- AI 设置可保存。
- 能完成一次话题分析。
- 能生成一篇知识文档。
- 能搜索知识库。
- 应用重启后数据不丢。
- 客户部署说明已准备。
- 客户隐私和数据使用口径已确认。
14. 推荐二开场景示例
14.1 设备售后知识库
目标:
- 自动整理客户微信群中的设备故障处理过程。
- 生成标准故障案例。
- 支持按设备型号、故障现象、备件名称搜索。
重点改造:
- 修改话题分析 Prompt,让 AI 关注设备型号、故障现象、处理结论。
- 修改知识文档模板,增加“设备型号”“故障等级”“备件清单”。
- 在知识库页面增加设备型号筛选。
14.2 运维日报生成
目标:
- 每天自动总结微信群里的运维事项。
- 输出今日问题、处理中事项、已解决事项、风险提醒。
重点改造:
- 新增日报页面。
- 新增后端日报接口。
- 复用
/api/search拉取当天消息。 - 调用 AI 生成日报。
- 可选增加 Word 导出。
14.3 客服投诉归档
目标:
- 从客户服务群中识别投诉、建议、售后问题。
- 按客户、产品线、严重程度归档。
重点改造:
- 修改话题分类规则。
- 新增投诉等级字段。
- 新增统计看板。
- 知识库模板改成“投诉原因、处理过程、补偿方案、复盘建议”。
15. 重要注意事项
- 本系统依赖 PC 微信本地数据读取能力,部署前必须确认客户允许该类本地工具运行。
- 本系统默认只做读取、分析和归档,不应主动向客户微信群发送消息。
- AI 生成内容必须允许人工编辑和复核,不能直接作为最终技术结论。
- 二开时优先控制改动范围,避免同时大改前端、后端、Electron 和打包脚本。
- 客户现场问题优先看
/health、Electron 启动日志、FastAPI 日志、AI 设置页。 - 打包脚本中的敏感文件扫描是交付安全底线,不要删除。
- 如果客户需要私有化模型,应先确认模型是否兼容 OpenAI 格式接口。
- 如果客户群消息量很大,首次分析建议限制时间范围,先小批量验收。
16. 快速命令索引
项目根目录:
C:\Users\12138\Desktop\get_wechat_new\用户使用版本\大铁\get_wechat_me
检查 chatlog 版本:
.\chatlog.exe version
安装后端依赖:
cd chatlog_fastAPI
python -m pip install -r requirements.txt
启动后端:
cd chatlog_fastAPI
python main.py
安装前端依赖:
cd chatlab-web\frontend
npm install
启动前端:
cd chatlab-web\frontend
npm run dev
构建前端:
cd chatlab-web\frontend
npm run build
启动桌面壳:
cd electron-launcher
npm run start
一键打包:
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1
只构建资源不生成安装包:
powershell -ExecutionPolicy Bypass -File .\scripts\build-desktop.ps1 -SkipInstaller
17. 给同事的建议
拿到这个项目后,不建议一开始就改打包脚本或 Electron 主进程。更稳妥的顺序是:
- 先完整跑通原项目。
- 再改前端文案和页面。
- 再改后端 Prompt 和接口。
- 再做数据库兼容变更。
- 最后做品牌、图标、安装包名称和签名。
如果客户需求只是“换一个行业场景”,大多数情况下优先改 Prompt、知识文档模板、页面文案和少量字段即可,不需要重构整体架构。