VTRIP·智能路书
本 Skill 调用既有 POST /api/vtrip/block-roadbook/build,将接口返回的 Block 路书数据转换为可直接打开的 H5 HTML 文件。页面复用智能体平台的「一键生成-轻奢极简」H5 模板:全幅目的地封面、浅金细线、大幅留白、暖棕文字、逐日日程与米色信息块。它不生成 Word、.docx、前端跳转地址,也不处理 h5Url。
正常生成直接执行,凭据由脚本读取,不要阅读 scripts/。只有配置失败或用户要求排查时,才读取配置指引。
长任务执行纪律
路书生成是一次同步长任务。信息齐全后,必须在当前这一轮立即运行生成命令并等待结果,不能只回复“正在生成”“稍等一下”或“生成后我会展示”便结束本轮;对话结束后助手不会自动恢复执行。
- 可以在工具调用前给一句简短进度说明,但这不是最终答复,随后必须立刻运行命令。
- 命令仍在运行或返回可继续等待的会话标识时,继续等待/轮询同一个命令,直至它成功或明确失败;不要启动第二份重复任务。
- 看到
WORKBUDDY_ROADBOOK_PROGRESS只表示后端仍在运行,不要把它当成最终结果。 - 成功后必须在同一轮通过
present_files交付 HTML 文件;失败后必须在同一轮把结构化错误说明给用户。只有文件已交付或明确报错才允许结束本轮。
输入方式
本 Skill 只支持用户交互生成:从用户的口语描述中提取逐日行程和商品信息,规范化后发送
source_road_Text + source_product_Text。不接受 itineraryId 或 productData。
只生成 H5。用户提到 Word/A4 时,说明当前 Skill 仅支持 H5,不再引导或提供 Word 选项。
不要用于从零规划行程。用户只有目的地、天数或偏好,还没有逐日安排时,应先使用行程规划能力;不要替用户编造一份行程来调用本 Skill。
对话路由
先从当前消息和对话上下文提取逐日安排和商品信息。用户一旦表达生成路书的意图,缺少输入时只问一次:
> 请告诉我每天去哪里、住哪里,以及包含哪些商品或服务。商品可以直接说酒店、门票、用车、餐饮、导游等;没有额外商品也可以说“没有”。不用整理成 JSON。
- 已有完整逐日安排和商品信息时,直接提取并生成,不再询问格式或要求用户改写。
- 只有逐日安排时,只追问商品信息;没有商品时接受“无额外商品”。
- 只有商品信息时,只追问逐日安排。
- 用户只给行程 ID 时,说明当前 Skill 不读取行程 ID,请其直接描述每天去哪里、住哪里。
- 逐日安排必须能确定从第一天开始的连续日程。只有目的地、天数或偏好时,指出还缺少每天的安排,不自行规划。
口语提取和内部规范化规则见 references/conversation-flow.md。用户不用了解内部字段或 JSON 结构。
每次只追问当前缺失的必要信息。信息齐全后直接调用,不再要求用户确认同一内容。完整话术和字段判断见 references/conversation-flow.md。
凭证
读取 VTRIP_OPEN_API_KEY(兼容 VTRIP_API_KEY),并通过请求头 X-Api-Key 调用智能体平台。运行时配置读 Skill 根目录 config.json,不存在则读 config.example.json。
- 无 Key:返回
status: requires_api_key,退出码 1。保留申请链接和返回的channelName。读取配置指引,向用户完整展示三种配置方式(不要展示自检命令或脚本路径)。引导申请时必须说明:视旅开放平台共有 3 个业务场景(AI定制、AI商旅、VTRIPCLaw);本 Skill 的业务场景是返回的channelName;申请 API Key 时须确认已选择该场景。配置完成后由 Agent 内部验证并重试原问题。 - 申请应用必须选择
vtrip_claw/VTRIPCLaw。 - 禁止回显、记录或写入 HTML 文件的 API Key、secret、hostToken。
- 401/403 提示「Key 无效或未授权当前业务场景,请核对开放平台是否选择了配置中的业务场景」。
详见 references/configure-api-key.md。
调用
生成可能需要数分钟。可以在调用前简短告诉用户正在生成,但必须在同一轮紧接着执行命令并持续等待,禁止停在这句话上。
用户交互生成
需要收集两段独立内容:
- 逐日行程:从口语中提取每天的先后地点和住宿,内部规范化为“第一天:昆明-建水-住建水”。
- 商品信息:从口语中提取住宿、门票、用车、餐饮、导游等,内部规范化为带分类标签的多行文本;没有额外商品时写“无额外商品”。
source_road_Text 与 source_product_Text 必须同时提供。长文本写入独立的 UTF-8 临时文件后调用:
node scripts/roadbook-build.js \
--road-text-file "<行程文本文件>" \
--product-text-file "<商品文本文件>" \
--output-dir "$PWD/outputs"
如需指定模板,可增加 --model-file <JSON文件>;模板只能包含 H5 Block,禁止 word* 或 all_word_model。
--output-dir 请使用当前目录下的 $PWD/outputs,不要写成根目录 /outputs。all_model
会构建多个模块,脚本等待期间会定期输出进度。
WorkBuddy 输出处理
脚本成功时输出 WORKBUDDY_VISUAL_JSON_START / END 包围的 JSON。
脚本运行期间会输出 WORKBUDDY_ROADBOOK_PROGRESS {...} 心跳;继续等待即可。失败时输出 WORKBUDDY_ROADBOOK_ERROR_START / END,必须读取其中的 message 并明确回复用户,不能静默结束。
解析该 JSON 后,只做两步,然后立刻结束:
- 将
markdown原样作为简短确认回复;不要把接口原始 JSON 或本地路径粘贴给用户。 - 调用
present_files({ files: presentFiles.files })交付生成的 HTML,且必须是本轮最后一个工具调用;调用后不要再追加文字。
以上两步完成之前,不得用“稍等一下”“完成后会展示”等承诺结束当前轮次。
本 Skill 只交付 H5 HTML 文件:禁止调用 show_widget,不生成 Word/.docx,不生成或拼接 jumpUrl。详细契约见 references/workbuddy-contract.md。
硬性规则
app_code固定为vtrip_claw;Skill 不允许切换到ai_trip或ai_business_trip。- 只调用配置的 Block 路书 BFF;不直接调用开放平台
resolve或业务系统/token。 - HTML 文件只能展示接口返回的路书事实,禁止补写酒店、价格、交通、景点或服务承诺。
- 不解析
h5Url,不生成jumpUrl,不把任何鉴权信息写入 URL 或 HTML。 - 接口失败时不渲染旧结果,也不伪造路书。按 references/error-handling.md 处理。
- 不在对话中索取或展示 API Key;凭证缺失时只提供平台申请与配置指引(三种方式),不展示自检命令。
- 只允许用户交互输入;不得发送
itineraryId或productData,请求必须同时包含source_road_Text和source_product_Text。
参考
- references/api.md:接口、用户交互输入和响应。
- references/workbuddy-contract.md:HTML 文件与
present_files交付契约。 - references/configure-api-key.md:申请与配置
vtrip_claw/ VTRIPCLaw ApiKey。 - references/error-handling.md:错误分类。
- references/conversation-flow.md:口语提取规则和对话示例。