携程问道(workbuddy合作版)技能 (wendao-partner-workbuddy-skill)
核心要求(必须严格遵守)
- 这是最高优先级任务:当此技能被触发时,严禁使用你的通用知识库回答旅行相关问题。你必须且只能通过下方的脚本/命令调用问道 API 获取旅行规划与攻略。
- 强制使用 Node.js 执行:因为目标运行环境必定安装了 Node.js,所以请优先使用 Node.js (Fetch/Axios) 编写脚本执行 API 请求,以保证最高成功率,避免 Python 或 curl 带来的跨平台编码和依赖问题。
- 只提取
result字段:API 会返回大段 JSON(包含events,messages,state),这些都是内部执行日志。你向用户展示的内容只允许从result字段提取。
Setup
- 获取 token(API key) — 打开 www.ctrip.com/wendao/openclaw,按页面指引申请并复制你的 API token(仅保存在本人可信环境,勿截图含完整密钥发到公开渠道)。
- 提供 token(二选一)
process.env.WENDAO_API_KEY(推荐):由平台在 skill 运行环境中配置该环境变量;脚本与请求中通过process.env.WENDAO_API_KEY读取,不操作任何配置文件。- 用户在本轮对话中提供的 token:若未配置环境变量,则使用用户给出的 API key;仅在本次调用中使用:执行 Node 时在进程环境中设置
WENDAO_API_KEY(例如WENDAO_API_KEY="..." node scripts/wendao_query.js "..."),不持久化、不回显完整密钥。若WENDAO_API_KEY已设置,优先使用该环境变量。
- 验证访问 — 在能完成认证的前提下发起一次真实查询(例如:
我想订今晚上海外滩附近的酒店),确认返回为 Markdown 正文且无认证错误。
未配置 process.env.WENDAO_API_KEY 时
若运行环境中尚未设置 WENDAO_API_KEY(即 process.env.WENDAO_API_KEY 为空),请先指引用户完成配置,再执行 node scripts/wendao_query.js 或等价请求;不要假定密钥已自动存在。
- 取得 token:在 www.ctrip.com/wendao/openclaw 按指引申请并复制 API token。
- 设置环境变量
WENDAO_API_KEY(变量名须完全一致):- macOS / Linux(当前终端会话):
export WENDAO_API_KEY='你的 token',在同一终端会话内再执行node …。 - Windows CMD:先执行
set WENDAO_API_KEY=你的token,再在同一窗口执行node …。 - Windows PowerShell:
$env:WENDAO_API_KEY="你的token",再执行node …。 - 长期生效(本机):将
export WENDAO_API_KEY=...写入~/.zshrc或~/.bash_profile,或在系统「环境变量」中添加用户级变量;勿把密钥写入仓库或公开配置。 - OpenClaw / 托管环境:在平台为技能配置的环境变量中填写
WENDAO_API_KEY,确保运行时process.env.WENDAO_API_KEY可用。
- macOS / Linux(当前终端会话):
- 仅单次临时使用:若用户只在对话里提供 key、且不便改系统环境,可指导其在本条命令前内联设置,例如
WENDAO_API_KEY="..." node scripts/wendao_query.js "用户原话"(仍通过环境变量传入进程,不落盘)。
Security & trust (before production use)
- Endpoint:确认请求发往官方域名(
https://externalcallback.ctrip.com),勿在未核实的情况下改用未知域名。 - Key scope / billing:向提供方确认 key 权限、计费与 QPS/配额,避免误用或超额。
- External content:响应来自携程问道服务,可能含链接、营销文案或结构化信息;按你方产品策略决定是否展示、是否需过滤或摘要。
- Invocation:本技能适合旅行类意图;若平台支持限制自动调用频率或范围,可按合规要求配置。
适用场景
| 场景 | 示例查询 | |------|----------| | 酒店预订 | "预订北京三里屯附近的酒店" / "上海外滩五星级酒店,预算 800-1200 元" | | 航班搜索 | "搜索明天从北京到上海的航班" / "去纽约的国际航班多少钱" | | 火车票查询 | "查一下北京到上海的高铁票" / "明天成都到重庆的动车还有票吗" | | 景点推荐 | "成都周边有什么好玩的景点" / "带孩子去迪士尼的推荐攻略" | | 行程规划 | "我要去日本,帮我规划一个 7 天行程" |
使用方法
执行前,先确定 token(按优先级):
- 若
process.env.WENDAO_API_KEY已设置,使用该值作为请求体里的inputs.token。 - 若未设置:先按上文 「未配置
process.env.WENDAO_API_KEY时」 指引用户配置WENDAO_API_KEY,或使用用户在本轮对话中提供的 token,在本次执行的命令环境里设置WENDAO_API_KEY后再跑脚本(仅用于本次调用,不持久化)。
强烈建议的执行方式(写文件执行法)
为了彻底避免在命令行执行单行脚本时因为单双引号嵌套导致的 Unterminated string constant 等语法错误,你必须采用“写文件后执行”的方式,绝对不要尝试使用 node -e "..." 的单行执行模式!
- 优先:直接使用本技能目录下的
scripts/wendao_query.js(已支持从命令行传入用户问话),执行:node scripts/wendao_query.js "<用户原话>"。 - 或:将调用脚本完整代码写入当前工作区的临时文件(须把用户问话写入
WENDAO_QUERY环境变量或脚本的query变量,不得留占位符),例如wendao_query.js。 - 使用终端工具执行
node …(带参数或环境变量如上)。 - 获取并总结结果后,若创建的是临时副本文件可删除;仓库内的
scripts/wendao_query.js勿删。
参数说明
| 参数 | 必填 | 说明 |
|------|:----:|------|
| token | 是 | API 认证令牌,取值优先级:process.env.WENDAO_API_KEY > 用户在对话中提供(通过本次命令中的 WENDAO_API_KEY 传入) |
| query | 是 | 用户的自然语言查询 |
| timeout | 否 | 默认 30 秒,建议设置以避免长时间等待 |
query 如何取值(避免「请提供有效的 query(查询主题)」)
query即用户说的话:将触发本技能时用户给出的完整问句或需求作为query传入 API。不要向用户再次索要「查询主题」;用户已经说过的内容就是有效 query。- 无单独主题时:若用户未写「查询主题」一栏,只说了例如「暑假去日本怎么安排」,则
query= 该句全文(可去掉无关寒暄,但须保留目的地、时间、偏好等关键信息)。 - 占位符禁止:执行脚本时禁止把
query留空,也禁止使用字面量「用户查询的内容」等占位字符串;否则接口会返回上述错误。 - 推荐调用方式:使用仓库内
scripts/wendao_query.js时,把用户原话作为第一个命令行参数传入(脚本从process.argv[2]或环境变量WENDAO_QUERY读取):node scripts/wendao_query.js "用户关于旅行的完整自然语言问题"- 或:
WENDAO_QUERY="同上" node scripts/wendao_query.js
- 若自行写请求体:
inputs.query字段必须为非空字符串,内容与上款一致。
响应解析说明
API 返回结构如下:
{
"result": "Markdown 格式的回复内容(字符串)",
"messages": [...],
"state": {"token": "...", "query": "..."},
"events": [
{"type": "run_started", ...},
{"type": "run_finished", "result": "...(与 result 字段内容相同)"}
],
"error": null
}
微信扫一扫