- 个内部服务
- 9
- 行 Python 代码
- ~175K
- 种语言,共用一个知识库
- 9
- 个白名单助手工具
- 10
- 每次 AI 回答的成本(标价)
- US$0.004
- 的代码属于 AI 层
- ≈3%
客户
从客户退货,到货退客户
Atravesar Services 是一家加拿大电子产品维修、翻新与逆向物流公司,办公室位于列治文山,维修中心与仓库位于万锦,并通过快递服务全加拿大。公司为制造商与零售商提供 B2B 托管维修与退货方案,也提供直接面向消费者的邮寄维修;同时是 Narwal(云鲸)在加拿大的独家授权售后服务商,并支持 ECOVACS(科沃斯)与 Segway/Ninebot。
团队每天回答同样的问题:我的包裹在哪里?错误代码 E12 是什么意思?在魁北克含税要多少?我的工单开始维修了吗?这些答案全都已经存在——在某份文档、某个数据库,或某家承运商的 API 里。需求很明确:让软件安全地、全天候、用客户的语言回答这些问题。
-
列治文山办公室 · 万锦维修中心与仓库 · 通过快递服务全加拿大
-
Narwal(云鲸)加拿大独家授权售后服务商 · 支持 ECOVACS(科沃斯)与 Segway/Ninebot
-
扫地机器人 · 电动滑板车 · 智能手机 · 平板 · 笔记本电脑 · 游戏机 · 小家电
-
EN简体繁體日本語한국어Tiếng ViệtESITFR
设计原则
AI 负责阅读、理解与对话。软件负责决策、记录与付款。
整个架构画出一条明确的界线。AI 助手层位于日常工作流程之上,只能通过窄而具名、有日志的门——工具与 API——接触业务系统。底层则是具备身份验证、授权与审计记录的普通软件,负责决定价格、记录工单与转移资金。
-
AI 助手层
阅读、理解、查询、回答——用对方的语言,全天候服务。
-
窄而具名、有日志的门
订单、支付、仓储、运输、追踪与客服,只能通过带 JSON schema 的白名单工具访问。模型从不碰数据库。
-
安全与管控
身份验证(你是谁?)、授权(你可以看什么、做什么?)与审计记录(发生了什么——有日志、可审计)。
原本就在运转这家公司的系统
九个服务、约 17.5 万行 Python
网站只是看得见的部分。在它背后,SolvoSync 设计并运维着支撑整家公司的平台——仓储与 RMA 管理、多承运商运输、支付与税额、身份、设备检查与制造商系统集成。AI 层约占整个代码库的 3%;其余的一切,都是它所继承的纪律。
-
7.7K LOC
www · 公开网站
9 种语言 · 服务页面与指南 · 保外(OOW)在线表单 · 聊天机器人组件 · 管理端知识上传 · llms.txt
-
59.5K LOC
Flow · WMS / RMA
收货 · 库存 · 零件 · RMA · 发货单 · 托盘 · ECOVACS ESB · Mammotion FS Cloud · LSS · 31 个测试文件
-
50.6K LOC
Fulfill · 运输
UPS · Canpar · Canada Post · Purolator(ShipEngine)· Freightcom · 运费、面单、取件、舱单、追踪 · EDI 210 账单审计
-
5.2K LOC
Payment · 支付与税额
Stripe Checkout + webhooks · 按邮编计算加拿大税额(GST/HST/PST/QST)· 发票存至 S3 · 每周报表
-
2.6K LOC
SSO · 身份
账号 · OAuth2 client-credentials · 角色 ADMIN、CUSTOMER、DEALER、RECEIVER、REPAIR、TECH、SHIPPER · 供应商范围
-
35.4K LOC
Track · 数字系统
早期的库存/RMA 系统 · React + TypeScript 前端
-
10.0K LOC
Maintain · 设备检查
检查表、照片、签名、定时报表
-
2.8K LOC
Mammotion · 制造商脚本
FS Cloud 送修、备件、RMA 与待发货导出
-
0.6K LOC
盘点
扫描 AVS 标签 ↔ EAN、标记缺失机台、导出 Excel
- AWS EC2 (Ubuntu)
- RDS MySQL
- S3
- Redis
- nginx + gunicorn
- Flask
- React + TypeScript
- Qdrant
- Gemini API
- Stripe
- Google Places
LOC = Python 行数,不含虚拟环境、migration 与第三方包(2026 年 10 月统计)。
AI 助手层
Gemini + RAG + MCP:AI 助手接在哪里
AVS 助手部署于 www.atravesar.ca,受会话令牌与速率限制保护。它以 Gemini Flash 搭配函数调用运行(每个回答最多四轮工具调用),从 Qdrant 向量数据库检索知识,并通过 MCP 与函数端点查询运输、税额与身份——每个端点都有自己的验证、限制与日志。
-
1
知识助手(RAG)
员工在管理页面上传 PDF、Markdown 或纯文本。文档被分段(每段约 1,000 字符、重叠 150 字符),以 gemini-embedding-001 嵌入为 768 维向量并存储在 Qdrant。每个问题按余弦相似度检索前五个段落,模型据此回答并注明来源。英文文档就能回答九种语言的问题。
-
2
工具型助手(函数调用与 MCP)
工具 = 名称 + 说明 + JSON schema。模型选择工具与参数,我们的代码以 OAuth2 服务令牌执行,模型再解释结果。货件 MCP 服务器采用 MCP over Streamable HTTP(JSON-RPC 2.0),因此同一个集成今天服务网站聊天机器人,明天服务桌面 AI 客户端中的员工助手,之后再服务持有限定密钥的合作伙伴代理。
-
3
流程自动化(没有模型)
支付确认 → 创建面单 → 创建工单 → 发送邮件。价格、税额、编号与阶段流转的规则都写在确定性、有测试的代码里——资金与记录在这里流动。
实际部署的工具目录
设计规则 #1:模型从不碰数据库——它只能请求工具。
| 工具 | 运行位置 | 功能 | 防护栏 |
|---|---|---|---|
| search_knowledge_base | www → Qdrant | 语义搜索,返回前五个段落并附来源与标题。 | 只读;要求模型注明来源、绝不编造。 |
| share_oow_webform | www | 以用户的语言返回保外表单的网址。 | 模型不得在聊天中收集表单字段。 |
| list_provincial_tax_rates calculate_tax |
Payment | 按省份或邮编计算 GST/HST/PST/QST;区分商品与服务。 | 确定性的 Decimal 运算;模型从不计算税额。 |
| rate_shipment track_shipment |
Shipment MCP (fulfillapi) | 承运商运费;以 UPS 1Z/Canpar D/Canada Post PIN 或客户参考编号追踪。 | OAuth2 服务令牌;只读。 |
| email_waybill validate_address |
Shipment MCP (fulfillapi) | 将面单重新发送到档案中的地址;以 Google 验证地址。 | 只发给该货件的联系人;仅限加拿大/美国。 |
| get_account_info get_account_access |
SSO MCP | 账号资料,以及用户可查看哪些供应商的数据。 | 服务器端令牌;限定供应商范围。 |
| clear_chat_history | www | 清除此浏览器的对话。 | 仅限本会话。 |
限制:每个回答最多 4 轮工具调用 · 每个工具结果 ≤ 12,000 字符 · 每次搜索 5 个段落 · 没有任何工具写入数据库 · 没有任何工具转移资金。
一个流程,端到端
保外(OOW)维修旅程
AI 在开头与结尾——负责对话。中间是普通、可测试的软件。由小团队在公司既有的系统上建成。
-
客户问助手:“我的 Narwal 过保了——可以修吗?”share_oow_webform 工具以客户的语言返回表单链接;聊天中不收集任何个人信息。
-
四步在线表单收集设备、问题与地址(经 Google Places 验证),可选择自行送件或寄件。
-
报价由代码计算:$40 检测费、由支付服务按邮编计算的税额,以及最低的实时快递运费(并行查询各承运商)加上固定加成。
-
以 Stripe Checkout 支付检测费与运费;PDF 发票(15 天付款条件)通过邮件发送。
-
经验证的 webhook 创建工单 AVSOOW{YYMMDD}####,并在 Flow 中打开为“Receiving”阶段;以最便宜的承运商创建寄件面单,连同二维码发给客户。
-
收到设备并检测后发出维修报价,通过第二笔 Stripe 付款完成,工单进入“Repair”阶段。
-
修好的设备寄回,追踪号通过邮件发送——全程由助手通过货件 MCP 回答“我的货件在哪里?”。
大部分价值来自平凡的自动化
我们刻意不用 AI 的地方
- 定价与税额
- 支付服务中的 Decimal 运算、银行家舍入法,以及按邮编前缀应用的各省规则。
- 承运商选择
- 规则:邮政信箱 → Canada Post;特定制造商 → Canpar;UPS 达到速率限制 → 备用;其余取最低实时运费。
- 工单与阶段
- Flow 中的唯一编号与阶段状态机(Receiving → Repair → ……),由 31 个测试文件覆盖。
- 账单审计
- 每晚解析 EDI 210 账单(UPS、Canpar)并与报价比对,自动生成多收报告。
- 支付与身份
- Stripe Checkout 搭配经验证的 webhooks,发票与收据存至 S3;SSO 含角色、服务间 OAuth2 client-credentials 与员工 MFA。
- 定时任务与制造商系统集成
- 每个工作日追踪两次、每周发送预警邮件、每天导入制造商工单三次;ECOVACS SEEBURGER ESB、Mammotion FS Cloud 与 LSS——靠契约,不靠对话。
经验法则:如果输出必须完全正确、可重复,而且要能向会计师或律师解释——那就是代码的事。AI 在旁边负责解释与引导。
底层的安全与管控
身份验证、授权、审计记录
身份验证——你是谁?
- 员工与合作伙伴使用 SSO;运输系统登录需 MFA。
- 服务之间使用 OAuth2 client-credentials 令牌(Fulfill、Payment、SSO)。
- 聊天机器人会话:绑定 IP 与浏览器的 HttpOnly JWT,30 分钟有效;同源检查与 Redis 黑名单防滥用。
授权——你可以看什么、做什么?
- 角色 ADMIN、CUSTOMER、DEALER、RECEIVER、REPAIR、TECH、SHIPPER;合作伙伴只能看到自家的数据。
- 模型不持有任何凭证——只有白名单上的工具。
- 工具皆为只读,例外只有:把面单发给该货件自己的联系人;清除自己的聊天记录。
审计记录——发生了什么?
- 每一轮对话都记录:会话、问题、回答、使用的工具、模型版本;可导出 CSV。
- Stripe webhooks 经验证;支付事件与发票均存储于 S3。
- 每晚以 EDI 210 对账承运商账单与报价;每周自动报表。
这些都不是 AI 专属的。这是你本来就该有的纪律——AI 层只是直接继承。
成果
它带来了什么
-
客户能以九种语言、全天候获得关于保修、错误代码、税额、货件与维修流程的答案,并附上来源。
-
保外收件从第一个问题一路跑到已付款的工单,员工不必再手动录入报价、面单或邮件。
-
同一个 MCP 集成今天服务网站助手,也已准备好服务员工与合作伙伴的助手——不需要第二套集成。
-
每次回答的成本以美分计:按标价约 US$0.004,每月 10,000 个回答约 US$45。
-
每一轮对话都记录使用的工具与模型版本——质量靠阅读日志与修正文档提升,而不是重新训练。
诚实的工程:我们预先规划的故障模式——以及实际发生了什么
- 幻觉
- 以检索到的段落为依据、事实一律强制查询、温度 0.4、转交邮件。实际发生:早期营业时间与地址的回答来自通用知识——以强制查询规则修正。
- 提示词注入
- 政策式提示词与受 schema 约束的工具;没有敏感功能可解锁——没有电话名单,也没有支付工具。实际发生:有人尝试;因为能力范围窄,拒绝都守得住。
- 服务中断
- 工具错误以数据形式返回,机器人继续依知识库回答;并行查询各承运商并有规则式备用方案。实际发生:承运商 API 达到速率限制 → 切换备用承运商。
- 模型漂移
- 浮动的模型别名会在你不知不觉中改变语气、长度与工具使用。每一轮都记录模型版本,并在每次变动时重跑一组真实问题的回归测试集。
如果能回到一年前,我们会告诉自己的事
九个工程教训
-
01
从收件箱里已有的问题开始——而不是从技术开始。
-
02
工具优先于提示词:当模型需要“知道”动态信息时,加一个工具,而不是加一段文字。
-
03
让知识库保持平凡:就用员工本来就在维护的 PDF 与 Markdown。
-
04
锁定模型、记录版本——浮动别名会在你不知不觉中改变行为。
-
05
优雅降级:工具错误就是数据;依赖服务宕机时机器人仍要能运行。
-
06
所有东西都设上限——轮数、字符、token、速率。无上限的消耗是一张真实的账单。
-
07
资金放在 Stripe 与表单后面,绝不放在聊天窗口后面。
-
08
采用标准:MCP + OAuth2 让集成能被我们还没做出来的客户端重复使用。
-
09
先做管理页面:上传文档、阅读日志——质量就是从这里来的。
免费附赠第十条:把系统提示词当政策来写——版本化、审阅、像代码一样测试。
现场发表
NATEA 多伦多 · AI 在中小企业的用武之地
- 60 分钟 · 演讲与现场演示 · 线上
讲者:Nelson Lai — SolvoSync · Atravesar Services 首席技术官
2026 年 10 月 21 日(线上)的 60 分钟演讲与现场演示,实地看一家零售企业如何在 atravesar.ca 上运营,以及 AI 真正派上用场的地方:2026 年加拿大统计局关于中小企业 AI 采用的数据、三种模式——知识、工具、自动化——两场生产环境演示、加拿大的安全与隐私检查清单,以及四周入门计划。
19% 的加拿大企业使用 AI,25% 计划使用,40% 认为与自己无关。真正的关联,就在你的收件箱里。
关于这个项目,大家常问的问题
如何防止助手编造答案?
事实只来自检索到的段落或工具,绝不来自模型的记忆:系统提示词强制地址、营业时间与政策一律查询知识库,温度设为 0.4,工具无法回答时助手会转交邮件。早期关于营业时间的回答来自通用知识;强制查询规则修正了这个问题。
一次 AI 回答要花多少钱?
按 2026 年 10 月标价,一次回答(约 12,000 个输入 token 加 300 个输出 token)约 US$0.004,因此每月 10,000 个回答约 US$45。真正的成本是工程与内容维护,而不是 token。
我的公司能复用这套做法或 MCP 服务器吗?
可以。工具层建立在开放标准上——MCP over Streamable HTTP 搭配 OAuth2 client-credentials——因此同一组服务器可以服务任何助手。SolvoSync 为其他中小企业打造同样的模式:从收件箱里已有的问题开始,四周内上线一个渠道,先衡量再宣称。
个人信息如何处理?
个人信息远离聊天窗口。助手把用户引导到带同意条款、验证与 Stripe 的表单;机密只留在服务器端;会话是绑定 IP 与浏览器的 HttpOnly 令牌;每一轮对话都连同模型版本记录。设计遵循 PIPEDA 与魁北克第 25 号法案的原则:模型不做决定——代码与人才做。