JamKefu 在线客服
面向外贸与 B2B 官网的自建客服系统:网页浮窗、实时会话、多语言接待、工单与知识库、主管监控。Go 单体 + SQLite,一个可执行文件就能部署,数据在自己的服务器上。
适合谁.
外贸 / B2B 官网、独立站的运营团队
2–20 人的客服或业务团队
想自己掌控聊天记录与客户资料、不想按坐席付费的公司
需要同时接待中文、英语、俄语、越南语客户的团队
解决什么问题.
询盘散在微信、邮箱和表单里,回复慢一步,客户就去了下一家。
SaaS 客服按坐席收费,聊天记录和客户资料都在别人服务器上。
外语客户沟通成本高,靠翻译软件来回粘贴,容易漏信息。
客服交接没有记录,客户跟着人走,也看不到响应时效。
核心功能.
先看界面:官网右下角,一段脚本

图 1:嵌入演示站点的客服浮窗(本地演示环境)。访客不用注册,点开就能问。
接入只要一行:
<script src="https://your-domain.com/chat-widget.js" defer></script>
浮窗会自动读取访客来源页、设备、语言与浏览轨迹,客服接待前就能看到上下文。
访客端:一个浮窗,三种语言

图 2:同一套页面在中文、英语、俄语下的样子;右上角可手动切换语言。
- 自动识别浏览器语言,默认中文 / 英语 / 俄语 / 越南语,其他语言回退英语。
- 客服「在线 / 忙碌」显示聊天;「离开 / 离线」整页切换为留言表单,提交后返回留言编号。
- 已有会话在客服离线时保留聊天与输入框,并明确提示;消息照常保存,客服上线后补发。
- 留言支持订单号、产品名称,方便业务跟进。
客服工作台:多会话、优先级、翻译

图 3:同时接待中、英、俄三个会话;外语消息自动翻成中文,可点「查看原文」;会话可设优先级、转接或结束。
- 多会话标签页,标签上显示未读数;公共池 / 我的、按状态与标签筛选。
- 引用回复、转发、撤回(客服自己的消息 5 分钟内,主管 / 管理员不限)。
- 快捷回复支持变量:
{{visitor}}、{{agent}}、{{date}}、{{time}}、{{contactName}}。 - 知识库搜索后一键插入,插入后仍可走翻译预览。
- 敏感词三种动作:拦截、替换后发送、仅提醒主管。
客户档案、标签与工单

图 4:右侧维护客户档案(姓名、电话、公司、等级、备注)、标签与访客来源;同一面板下方还有工单与内部备注(工单列表见图 9)。
- 自定义字段:文本 / 数字 / 下拉 / 日期,可设必填、排序与启停。
- 工单:从当前会话创建,支持优先级(低 / 普通 / 高 / 紧急)与状态流转,带处理人与处理记录。
- 内部备注支持
@客服名提及,被提及的同事会收到通知,访客不可见。
主管实时监控

图 5:只读监听进行中的会话,发密语提醒负责人,或强插接管后直接回复访客。
- 监听不影响会话已读状态,适合新人带教与高峰期支援。
- 密语只发给会话负责人,内容写入内部备注。
- 强插接管会把会话转给主管,原负责人收到通知。
- 密语与接管都会写入审计日志。
管理后台

图 6:进行中会话、待接入、超时未接入、平均首响、差评数;另有按天会话量、按客服的分配与响应统计。

图 7:知识库按分类、标签、语言维护,可控制是否发布给客服。

图 8:分级 SLA、离线自动回复、翻译术语表(原文=译文)、数据保留天数与数据导出。

图 9:工单在后台统一筛选,可改状态、优先级与处理人。
技术架构与部署

图 10:Go 单体 + SQLite(WAL)+ 自建 WebSocket;前端原生 JS,通过 go:embed 打进二进制。
- 一个可执行文件 + 一个数据目录;SQLite 用纯 Go 驱动,无 CGO,交叉编译方便。
- 密码 PBKDF2-SHA256 12 万次;登录失败 5 次锁定 15 分钟;上传 10MB、扩展名白名单 + 图片签名校验。
- Cookie
HttpOnly、SameSite;退出登录、停用账号会立即作废令牌并断开实时连接。 - WebSocket 握手校验 Origin 白名单;消息前端统一用
textContent渲染。 - 每天通过
VACUUM INTO生成一致性备份,保留最近 7 份;提供/healthz、/readyz。 - Windows 桌面端(Wails):托盘未读角标、
Ctrl+Alt+J全局唤起、Toast 点击回到对应会话。
适合与边界
| 适合 | 不适合 |
|---|---|
| 外贸 / B2B 官网、独立站 | 需要电话、邮件、社媒统一排队 |
| 2–20 人客服 / 业务团队 | 上百坐席、呼叫中心级能力 |
| 想自建、数据自己掌控 | 完全不想维护服务器 |
| 中英俄越多语言接待 | 复杂机器人、自动营销流程 |
已知边界:
- 在线状态与令牌撤销记录保存在进程内,按单实例设计;多实例需要外置共享状态(如 Redis)。
- 翻译走 Edge 端点,不需要 API Key;服务器需要能访问
edge.microsoft.com,内网环境需停用出线翻译。 - 旧 .NET 版的 WPF 桌面端不能直连新服务,请使用新的 Wails 桌面端或网页工作台。
- 截图来自本地演示环境,页面中的数据为演示数据,不代表真实客户。
想了解这个工具?
直接说明你的场景与规模,我判断适不适合用。