园区服务百事通 · 机器人开发与运维工作流
一、这是什么
把"横琴粤澳合作中医药科技产业园「园区服务百事通」微信小程序 + 网页版"聊天机器人的完整开发/运维经验沉淀为可复用工作流。核心价值:让机器人在不靠固定话术的前提下,像真人一样回答园区问题,且口径绝对可控(园区定位、体验馆、角色等强制规则),并能在双端稳健交付与回退。
> 本 Skill 的"域事实/强制口径"以 references/04-强制口径规则库.md 为唯一权威源;双端代码与用户长期记忆均为其派生同步(见第六节"单一事实源原则")。
二、何时加载本 Skill
- 用户要"改机器人知识 / 加知识库素材 / 调整人设或口径"
- 用户反馈"机器人某类回答错了" → 需按强制口径修复
- 用户要求"重新生成 / 发布小程序""双端同步""生成网页链接"
- 用户要做"版本回退"
- 任何涉及园区定位、中医药文化体验馆、企业服务部角色等口径的修改
三、第一性原理(Why — 所有决策以此为准)
机器人系统的本质目标只有一个:在正确的品牌口径下,快速、稳定、有人味地回答园区问题。一切工程决策服务于此:
- 知识必须注入 SYSTEM_PROMPT 且优先级最高——否则模型会编造或套旧资料。
- 回答必须快且不被截断——首字 ≤5s(流式),长回答允许跑完(硬上限 25s)。
- 已显示的真实回答绝不能被兜底话术覆盖——这是用户信任崩塌的第一主因。
- 双端(小程序 + 网页)口径必须一致——同一份 knowledge.js / SYSTEM_PROMPT。
- 一切强制口径必须可回退——版本化(CHANGELOG + versions/ 快照)。
四、架构与技术栈(要点)
- 微信小程序原生(
park-services/):app.json/pages/*/utils/cloud.js(SDK 封装)/utils/bot.js(人设+链接+兜底)/utils/knowledge.js(知识库)/pages/chat(对话页,流式渲染)。 - 网页版(
park-services-web/):Nodeserver.js(LLM 服务 + SYSTEM_PROMPT)+ 前端index.html/css//js/。 - 模型接入:WorkBuddy 云服务免密钥 SDK
@tencent-ai/workbuddy-cloud-sdk;小程序端createMiniProgramWorkBuddyCloud(走mp-api.app.workbuddy.host网关自动放行),网页/Node 端createWorkBuddyCloud;调用cloud.llm.chat.completions.create({ model, messages, stream: true })。 - 可用模型:
hunyuan-chat(主,与元宝同源)、glm-5.3-flash(兜底)。豆包 / 通义千问 / 元宝按名不可用——用户若点名这些,用hunyuan-chat满足"像直接跟大模型聊"的体感,并说明名称差异。 - 部署顺序铁律:网页先部署、小程序后部署,避免单预览槽位覆盖
.genie卡片。
> 详细 SDK 用法、模型清单、端点、发布密钥见 references/01-架构与技术栈.md。
五、关键文件地图(落位表 — 改一处必须双端同步)
| 内容 | 小程序端 | 网页端 |
|---|---|---|
| 系统提示词 / 人设 / 强制规则 | utils/cloud.js 的 SYSTEM_PROMPT |
server.js 的 SYSTEM_PROMPT |
| 知识库 | utils/knowledge.js |
knowledge.js(整文件复制同步) |
| 角色 / 链接 / 兜底话术 | utils/bot.js |
js/bot.js |
| 场景 → 对话页映射 | pages/chat/chat.js 的 SCENES |
js/config.js 的 SESSIONS |
| 服务中心 / 外链 URL | config.js / service-center.js / bot.js 的 PUSH_LINKS |
js/config.js / server.js 的 LINKS / js/bot.js |
六、单一事实源原则(防漂移)
强制口径(园区定位三层、体验馆、角色)的"规则文本"只写一份在 references/04-强制口径规则库.md。改完后:
1. 同步进双端 SYSTEM_PROMPT(加【xxx·强制作答】指令);
2. 同步进双端 knowledge.js(必要时加"重要更正"条目作为对抗模型改写的双保险);
3. 同步进用户级长期记忆 MEMORY.md(跨会话不丢)。
严禁在双端各写各的、或只改代码不改 Skill/记忆,否则必然漂移。
七、标准工作流(SOP)
完整命令与脚本见 references/02-工作流SOP与部署命令.md,摘要如下:
- 定位:用 Python 全文检索目标字样(本工程 Grep 工具偶发
\\nul报错,优先用 Python),确认双端所有出现位置,含.js/.wxml/.json/.html/.css。 - 修改:改
utils/cloud.js/server.js(提示词)与utils/knowledge.js;网页版knowledge.js直接整文件复制同步。 - 校验:对每个改过的
.js跑node --check。 - 部署:先网页
workbuddy_sites_deploy(目录park-services-web)→ 后小程序(目录park-services);小程序最后一步由用户在预览面板点「分享」发布(体验版无需 AppID)。 - 留痕:追加
.workbuddy/memory/YYYY-MM-DD.md日志;版本号 +1,写CHANGELOG.md与本版versions/vX.Y.Z/快照。
八、成功经验(做对的)
- 知识库注入 SYSTEM_PROMPT 且优先级最高:模型严格按素材作答,不再编造或套旧资料。
- 流式逐字 + 首字5s / 长答跑完(硬上限25s):兼顾"快"与"不被截断"。
- 兜底不覆盖已显示回答:记录 streamed 文本,失败时只保留原回答 + 场景链接,信任不崩塌。
- 双端同源:
knowledge.js整文件复制同步、SYSTEM_PROMPT双端一致,避免口径漂移。 - 部署顺序(网页先、小程序后):避免预览槽位覆盖
.genie。 - 强制口径双保险:
【强制作答结构】指令 + 知识库重要更正条目,对抗模型改写。 - 用户级 MEMORY.md 沉淀长期规则:跨会话不漂移。
九、失败教训(踩过的坑)
- 5s 硬超时整体抛异常 → 长答被截断并回退僵硬模板(已改为"首字5s + 长答跑完")。
- 兜底无条件覆盖已显示回答 → 用户看到"回答完又跳变成固定话术"(已修)。
- 伪 pptx 实为 UTF-8 文本:
python直接 decode 读取,勿当 zip 解。 - 小程序无 Buffer:曾引
Buffer.from做 btoa/atob 导致模块加载崩溃(已删)。 - 网页
doSend有 2s 人为延迟拖慢回复(已改 350ms)。 - 外链旧域名:
mtc-park.com/Service.html须统一为gmtcmpark.com/Service_Centre.html(全文检索清零)。 - 错误知识被模型照说:"中医药科技创意博物馆(规划/建设中)"——必须以官网为准并加"重要更正"防护栏。
- Grep 工具在本工程偶发
\\nul报错:改用 Python 检索更稳。 - subscription-gate hook 30s 超时曾阻断提交 → 用户让"继续执行"即可恢复。
十、版本与回退
- 版本号记录在
SKILL.mdfrontmatterversion:与CHANGELOG.md。 - 每次发版:在
versions/下新建vX.Y.Z/,固化当版SYSTEM_PROMPT强制规则片段与knowledge.js关键条目(文本快照),便于回退时直接复制回填。 - 回退步骤:① 读取目标版本的
versions/vX.Y.Z/rollback_snapshot.md;② 将其中规则文本分别回填双端SYSTEM_PROMPT与knowledge.js;③node --check;④ 按 SOP 重新部署(网页先、小程序后)。 - 建议给工程目录初始化
git以获得真正的版本控制(本 Skill 的快照为轻量替代方案)。
十一、对抗性审查与完善建议(Skill 已据此补充,仍列缺口)
经"第一性原理 + 对抗性审查",发现并已在 Skill 中标注以下缺口:
- 小程序外链业务域名限制(真实缺口):
Museum.html/Service_Centre.html在小程序里走/pages/webview,体验版因微信业务域名未配置会降级为"复制链接",用户点不开。→ 完善:在references/01标注"外链仅在网页版 / 已配置业务域名的小程序可用";长期需在微信公众平台配置业务域名,或将必达外链改为应用内原生页承载。 - 版本回退缺乏真正 VCS:目前靠 memory + 文本快照。→ 完善:本 Skill 建立
versions/+CHANGELOG;并建议工程加 git。 - 知识时效风险:体验馆"2025年盛大开业"、各时间节点会随时间陈旧。→ 完善:
references/04关键事实标注"最后核验日期",定期复核官网。 - 单一事实源漂移风险:强制口径散在 双端 SYSTEM_PROMPT + knowledge.js + 用户 MEMORY.md + 本 Skill。→ 完善:明确
references/04为唯一权威源,其余均为派生同步(见第六节)。 - 模型降级链路未实测:
glm-5.3-flash兜底是否真能接管、超时是否真触发仅代码层保证。→ 完善:上线后做一次 hunyuan 不可用时的兜底演练。 - 兜底话术(localReply)风格不符角色:完全断网时仍可能吐出通用模板,不含错误域事实但口吻偏离"企业服务部员工"。→ 完善:可让 localReply 也带简短致歉与角色口吻。
- 流式部分输出若本身有误会被保留:前半句错的回答会被保留。→ 目前可接受(优于覆盖);如需更强可加"低置信度提示"。
> 以上 1、3、4 为上线后最该优先处理的项;其余为稳健性增强。