Cliffford AI — 工具 & 技能包完整参考手册

2026/02/24 08:1151

最后更新:2026-02-24
文件位置:pages/api/ai-chat/index.js


一、架构总览

路由系统(Skill Router)

用户消息 → Router (gpt-5.1-codex-mini) → 分类标签 → 选择技能包 → 注入工具+提示词
配置项说明
AI_ROUTER_ENABLED1路由开关
AI_ROUTER_MODELgpt-5.1-codex-mini路由分类模型(复用 AI_BASE_URL/AI_API_KEY)

技能包分组

技能包标签包含工具估算 Token
searchsearchsearch_vehicles, get_vehicle_detail, compare_vehicles, get_vehicle_stats~800
garagegarageget_user_garage, check_user_vehicle~600
weeklyweeklyget_weekly_updates, get_weekly_recommendations~300
全量全部 8 个工具~2,200

路由标签

Router 输出以下标签(可多选):

标签含义后端示例问题
chat闲聊/角色对话/不需数据Grok 无工具"崔佛是不是疯子?"
search搜索/比较/查看载具主力模型 + search 技能包"200万内最快跑车"
garage个人车库/拥有状态主力模型 + garage 技能包"我有多少车?"
weekly本周更新/折扣/推荐主力模型 + weekly 技能包"本周有什么折扣?"

组合示例:search,garage → 同时注入 search + garage 两个技能包

路由模式

模式触发条件后端提示词
chat仅有 chat 标签GrokGROK_SYSTEM_PROMPT(角色扮演)
data有 search/garage/weekly,无 chat主力模型PROMPT_BASE + 对应技能提示词
hybridchat + 数据标签同时出现主力模型PROMPT_BASE + 技能提示词 + PROMPT_PERSONA

粘性策略

  • 上轮技能存入 Redis:router_skills:{conversationId},60 分钟过期
  • 若 Router 判定纯 chat 但上轮有数据技能 → 惯性保留为 hybrid,避免上下文断裂

二、工具详细说明

1. search_vehicles — 搜索载具

所属技能包search

用途:按条件搜索全库载具,返回符合条件的列表。

参数

参数类型必填说明
classstring载具类型(如:跑车、SUV、直升机)
manufacturerstring制造商名称(如:佩嘉西、绝品)
max_pricenumber最高价格
min_pricenumber最低价格
has_haoboolean是否支持阿浩改装
has_imaniboolean是否支持伊玛尼科技
has_missile_protectionboolean是否有导弹干扰
has_limited_liveryboolean是否有限定涂装
is_removedbooleantrue=只查下架车, false=只查在售(默认在售)
keywordstring关键词搜索(车名或现实原型,用英文
sort_bystring排序字段:price/top_speed/lap_time/acceleration
sort_orderstringasc(升序)或 desc(降序,默认)
limitnumber返回数量(默认 10,最大 20)
check_ownedboolean同时返回用户是否已拥有(需登录)

返回格式

[
  { "id": 123, "n": "T20", "p": 2200000, "tp": 1650000, "spd": 231.25, "lap": "1:01.2", "owned": true }
]

返回字段id=ID, n=中文名, p=价格, tp=贸易价, spd=极速, lap=圈速, owned=是否拥有


2. get_vehicle_detail — 载具详情(支持批量)

所属技能包search

用途:获取单个或多个载具的完整详细信息。

参数(四选一):

参数类型说明
vehicle_idnumber单个载具 ID
vehicle_idsnumber[]批量 ID(最多 10 个)
vehicle_namestring单个载具名称(中/英)
vehicle_namesstring[]批量名称(最多 10 个)

返回格式(单个):

{
  "id": 123, "n": "T20", "name_en": "T20",
  "class": "超级跑车", "manufacturer": "佩嘉西",
  "p": 2200000, "tp": 1650000,
  "spd": 231.25, "lap": "1:01.2",
  "stats": { "speed": 8.5, "acc": 8.0, "brake": 3.0, "handle": 7.0 },
  "hao": false, "imani": false, "missile": false,
  "based_on": "McLaren P1"
}

批量返回:{ vs: [...], c: 数量 }


3. compare_vehicles — 比较多车性能

所属技能包search

用途:对比多个载具的性能数据。

参数(二选一):

参数类型说明
vehicle_idsnumber[]要比较的 ID 列表
vehicle_namesstring[]要比较的名称列表

返回格式

[
  {
    "id": 123, "name": "T20", "class": "超级跑车",
    "price": 2200000, "top_speed": 231.25, "lap_time": "1:01.2",
    "stats": { "speed": 8.5, "acceleration": 8.0, "braking": 3.0, "handling": 7.0 },
    "features": ["阿浩"]
  }
]

4. get_vehicle_stats — 载具统计

所属技能包search

用途:获取载具库的统计信息。

参数

参数类型可选值说明
stat_typestringtotal / by_class / by_manufacturer / special_features统计类型

返回示例

  • total{ total_vehicles: 835 }
  • by_class{ by_class: [{ class_name: "超级跑车", count: 60 }, ...] }
  • by_manufacturer{ by_manufacturer: [{ manufacturer: "佩嘉西", count: 35 }, ...] }(前 15)
  • special_features{ hao_upgrade: 45, imani_tech: 30, drift_tune: 20, missile_protection: 15 }

5. get_user_garage — 用户车库查询

所属技能包garage

用途:查询当前用户的车库信息。功能非常丰富,通过 info_type 参数选择不同模式。

参数

参数类型必填说明
info_typestring查询模式(见下表)
garage_idnumber车库配置 ID(仅 garage_vehicles 用)
garage_namestring车库名称模糊匹配(仅 garage_vehicles 用)
filterobject筛选条件(仅 filter_vehiclesmissing_vehicles 用)

info_type 模式详解

info_type用途返回数据
summary车库总览统计总车数、总车库数、总价值、改装统计、Top5 类型/制造商
garages车库列表所有车库名称、地址、容量、已停车辆数
garage_vehicles指定车库车辆需提供 garage_idgarage_name,返回该车库所有车辆
filter_vehicles筛选用户已拥有的车按 filter 条件筛选(最多 30 条)
missing_vehicles用户未拥有的车按 filter 条件筛选在售但用户没有的车(最多 20 条)
missing_removed用户未拥有的下架车查询用户不拥有的已下架车辆(最多 50 条)

filter 支持的字段

字段类型说明适用 info_type
vehicle_namestring按车名模糊匹配filter_vehicles
vehicle_namesstring[]批量按车名筛选filter_vehicles, missing_vehicles
manufacturerstring制造商名称filter_vehicles, missing_vehicles
classstring载具类别(如"跑车")filter_vehicles, missing_vehicles
is_removedboolean是否已下架filter_vehicles
user_modifiedboolean是否已改装filter_vehicles
has_hao_upgradeboolean是否支持阿浩改装filter_vehicles, missing_vehicles
has_imani_upgradeboolean是否支持伊玛尼科技filter_vehicles, missing_vehicles
user_hao_statusboolean用户是否已改装阿浩filter_vehicles
user_imani_statusboolean用户是否已改装伊玛尼filter_vehicles
user_drift_statusboolean用户是否已改装漂移filter_vehicles
user_missile_statusboolean用户是否已改装导弹干扰filter_vehicles
has_limited_liveryboolean车辆有稀有涂装可选filter_vehicles
user_has_limited_liveryboolean用户已选用稀有涂装filter_vehicles
max_pricenumber最高价格missing_vehicles
min_pricenumber最低价格missing_vehicles
count_onlyboolean只返回数量不返回列表filter_vehicles

常用调用示例

推荐我没有的便宜肌肉车
→ get_user_garage(info_type="missing_vehicles", filter={class:"肌肉车", max_price:500000})

我有多少辆跑车
→ get_user_garage(info_type="filter_vehicles", filter={class:"跑车", count_only:true})

我有哪些下架车
→ get_user_garage(info_type="filter_vehicles", filter={is_removed:true})

哪些车没改装过
→ get_user_garage(info_type="filter_vehicles", filter={user_modified:false})

给我推荐200万以下我没有的车
→ get_user_garage(info_type="missing_vehicles", filter={max_price:2000000})

返回字段编码

状态码 s 的值:

  • 0 = 无特殊状态
  • 1 = 阿浩改装
  • 2 = 伊玛尼改装
  • 3 = 漂移调教
  • 4 = 导弹干扰
  • 5 = 限定涂装
  • 6 = 下架车辆

多个状态逗号分隔,如 1,2 = 阿浩+伊玛尼


6. check_user_vehicle — 检查用户是否拥有某车

所属技能包garage

用途:快速检查用户是否拥有一辆特定车辆,返回拥有状态和所在车库。

参数(二选一):

参数类型说明
vehicle_namestring车辆名称(中/英,支持"制造商 车名"格式)
vehicle_modelstring车辆 model 名称

返回格式

未拥有:

{ "owned": false, "msg": "用户未拥有该车辆" }

拥有:

{
  "owned": true, "id": 123, "c": 2, "n": "T20",
  "locs": [
    { "g": "花园银行塔 奢车库", "s": "1,2" },
    { "g": "霍伊克1号公路 办公室车位", "s": "0" }
  ]
}

7. get_weekly_updates — 本周更新内容

所属技能包weekly

用途:获取本周 GTA Online 的更新信息,包括:

  • 赌场展台、车友会奖品、豪华汽车展厅、西米恩车店
  • 本周折扣、奖励活动
  • 武器厢型车、时间挑战
  • 每日/每周任务、废车场通缉载具

参数:无

返回格式

{
  "week_id": "2026-W09",
  "date": "2026-02-20",
  "sections": [
    { "title": "赌场展台", "items": [{ "name": "T20", "id": 123 }] },
    { "title": "本周折扣", "items": [{ "category": "超级跑车", "discount": "30%" }] },
    { "title": "时间挑战", "items": [{ "type": "常规时间挑战", "name": "机场", "target": "1:48.3" }] }
  ]
}

数据来源:Redis 缓存 weekly_updates:summary → fallback 到 /api/weekly-updates API


8. get_weekly_recommendations — 本周推荐未拥有车辆

所属技能包weekly

用途:从本周更新中的所有车辆中,筛选出用户未拥有的,作为购买推荐。优先使用此工具回答"本周有什么值得买的"类问题。

参数:无

返回格式

{
  "owned_count": 3,
  "total_count": 8,
  "missing": [
    {
      "id": 123, "n": "T20", "p": 2200000,
      "source": "豪华汽车展厅",
      "free": false,
      "discount": "30%",
      "discountPrice": 1540000,
      "removed": false,
      "hao": false, "imani": false, "missile": false
    }
  ]
}

来源(source)可能的值:

  • 赌场展台(免费)
  • 车友会奖品(免费,需完成挑战)
  • 豪华汽车展厅
  • 西米恩车店
  • 好麦坞俱乐部

三、系统提示词结构

模块化组成

模块变量名大小注入条件
基础规则PROMPT_BASE~500 chars所有带工具的请求
搜索说明PROMPT_SKILL_SEARCH~350 charsskills 含 search
车库说明PROMPT_SKILL_GARAGE~450 charsskills 含 garage
周更说明PROMPT_SKILL_WEEKLY~250 charsskills 含 weekly
角色人格PROMPT_PERSONA~120 charshybrid 模式
Grok 角色GROK_SYSTEM_PROMPT~600 charschat 模式
全量(兼容)SYSTEM_PROMPT~1,550 charsRouter 关闭时

关键规则

  1. 【最重要】只能推荐工具返回的车辆,绝对禁止编造
  2. 链接格式:[车名](/vehicles/ID),n 和 id 必须来自工具返回的 vs 数据
  3. 禁止向用户暴露工具名/函数名/API/JSON/SQL 等内部细节
  4. keyword 用英文,回复用中文
  5. 效率:争取 1 轮工具调用完成,最多 3 轮

四、返回数据字段缩写对照

缩写全称说明
nname车辆中文名
pprice价格
tptrade_price贸易价
spdspeed极速(测试值)
laplap_time圈速
ggarage车库名/位置
gidgarage_id车库配置 ID
ccount数量
sstatus状态码
vsvehicles车辆列表
ttotal总数
ntnote提示信息(如"仅显示前20辆")

五、工具返回数据限制

工具最大返回条数
search_vehicles20 条
get_vehicle_detail(批量)10 条
compare_vehicles不限(按输入)
get_vehicle_stats15 条(by_manufacturer)
get_user_garage — filter_vehicles30 条
get_user_garage — missing_vehicles20 条
get_user_garage — missing_removed50 条
check_user_vehicle不限
get_weekly_updates15 条(折扣)
get_weekly_recommendations不限

六、前端模式与后端对应

前端选项aiMode 值后端行为
Cliffford Autoauto调用 Router → 自动分发
Cliffford Xchat强制 Grok,无工具
Cliffford DBdata强制主力模型 + 全量工具
Cliffford TRtest测试模型
51 浏览1 评论

评论 (1)

请登录后发表评论

登录
暂无评论,快来抢沙发吧~