arkcli models
CRITICAL — 开始前 MUST 先用 Read 工具读取 ../arkcli-shared/SKILL.md,其中包含认证闸门、配置排查与命令选择顺序
CRITICAL — 若模型查询服务于 Endpoint 创建,必须先完成 owning Skill 交接:普通创建先用 Read 读取 ../arkcli-deploy/SKILL.md;显式 raw CRUD / CI / 无守卫创建先用 Read 读取 ../arkcli-infer-endpoint/SKILL.md。未读取 owning Skill 前,禁止执行认证检查、模型查询或任何其他命令。
CRITICAL — 所有 models 命令在执行之前,务必先用 Read 工具读取其对应的 reference 文档,禁止直接盲目调用命令。
第 -1 步(硬闸门):先锁定最终任务的 owning Skill
- 先判断用户最终要做的是“查询模型”,还是把模型用于上游任务;不能因为用户提到
models search就把模型查询当成最终任务。 - 最终目标是 Endpoint 创建时,本 skill 只能作为只读助手,不能成为 owning Skill:普通创建读取并保留
arkcli-deploy;显式 raw CRUD / CI / 无守卫创建读取并保留arkcli-infer-endpoint。 - owning Skill 的查询次数、结果上限、停止点和写入边界高于本 skill 的通用流程。完成交接后按 owning Skill 执行;只有纯模型查询才继续本 skill 的第 0 步和通用命令选择。
使用原则
- 模型相关需求优先使用
arkcli models ... - 这些命令虽然是标准 CLI 类型,但实现入口仍然来自
shortcuts/models/ - 只有产品命令无法覆盖时,才回退到
../arkcli-api-explorer/SKILL.md - 本 skill 不是默认兜底入口;用户明确问模型查询、模型资产盘点、模型详情时才作为主路由。若是在为上游
+chat/+gen/ Endpoint 创建挑模型,先加载并保留对应上游 skill,本 skill 只提供只读查询。普通 Endpoint 创建的 owning skill 是arkcli-deploy;显式 raw CRUD / CI / 无守卫的 Endpoint 创建意图必须切换到arkcli-infer-endpoint,并在查询候选前先加载它 - 语音模型边界:TTS / ASR / 播客 / 音色 / 实时语音交互等语音模型在 arkcli 中只支持广场检索与选型说明;
models search能搜到不代表可+deploy、可+code-example、可查usage或可查pricing。除非用户另问官方文档,不要主动给控制台 / OpenAPI / SDK 等非 arkcli 接入步骤或链接。
适用场景
- 用户要搜索、筛选、对比方舟模型
- 用户要查看模型详情、版本、上下文、模态或 lifecycle 状态
- 用户要统计或列出"我的模型"、"自定义模型"、"最近创建的模型"
- 仅 Volc:用户要比较 TTFT/TPOT、首 Token 延迟、持续输出延迟、性能排行、延迟趋势或不同输入长度下的性能
- 上游
+chat/+gen/+deploy需要先确定可用模型名 - 用户问语音模型是否存在、有哪些语音模型、TTS/ASR 模型在广场叫什么:只回答广场可搜事实和当前 arkcli 不支持后续场景能力的边界
反唤起信号
- 用户只是要直接对话、生成图片/视频或部署 Endpoint:先转对应 skill;缺模型名时可调用本 skill 查询,但不能替代原任务的主路由。Endpoint 普通创建转
arkcli-deploy;只有用户显式指定 raw CRUD / CI / 无守卫创建时转arkcli-infer-endpoint - 用户明确要求调用原始 Action、列出 OpenAPI 或构造底层 params:转
arkcli-api-explorer - 用户问自己的 Endpoint 为什么慢:转
arkcli-doctor;公共榜单不能用于 Endpoint 诊断 - 用户是鉴权、profile、region、base URL 排障:转
arkcli-auth或arkcli-config - 不要把
arkcli models当默认入口;非模型问题不要先查模型
业务定位
- 本 skill 是其他业务链路的依赖 skill,不是终点 skill
- 它通常服务于三类上游目标:
- 给
+chat/+gen找正确模型 - 给
+deploy确认可部署模型 - 给业务排障确认模型详情和版本
- 给
- 除非用户明确就是在做模型查询,否则查完模型后应回到原始任务
- 例外:语音模型查询本身就是终点。查到
doubao-seed-tts-*、doubao-seed-asr-*、seedasr-*、播客、音色设计、实时语音交互等广场语音模型后,停在"可搜到但 arkcli 不支持调用/部署/示例/用量/费用"说明,不继续交给+deploy/+code-example/usage/pricing/onboard,也不主动补非 arkcli 接入路径。
快速决策
精确模型的 API capability 排障
用户已给出完整模型 ID,并要求核对 Responses API 等某个 API capability 时,这是「单模型事实核对」,不是候选搜索:
- 必须用
arkcli models get <model-id> --format json,读取完整api_support。 - 禁止用
models search代替;search 是候选发现和重排视图,不是精确模型 API 支持度的最终事实源。 - 在
api_support数组中按name/key/path定位目标 API,只按该项supported下结论;项缺失时报告元数据不足。 - 如果实际错误是 access 问题,查询后回到原 owning Skill(如
arkcli-chat)解释「模型声明支持」与「当前 Endpoint / 账号可访问」是两层事实;不用真实调用反复试错。
第 0 步(硬闸门):先读场景表,再选命令
这是任何"按意图找模型"需求的第一动作,先于 search / list / resources 的命令选择。MUST 先用 Read 打开 references/arkcli-models-scenario-table.md 判定意图是否命中某个场景标签,然后才决定跑什么命令。 这张人工策展的 场景标签 → 推荐模型 表是意图排序的最高权重信号,压过下方一切命名启发式 / modality / capability 过滤。
易被截胡的反例(必读)——下面这些"闻起来像硬指标"的意图,本质是场景标签,必须先查场景表,不要本能地跳到 --capability / --modality 降级线:
| 用户这么说 | ❌ 别直接 | ✅ 第 0 步命中的场景标签 → 推荐 |
|---|---|---|
| "复杂推理 / 多步骤 / 效果最强的模型" | search --capability thinking |
复杂推理 / Agent 任务 → doubao-seed-2-0-pro |
| "做图片生成用哪个模型" | resources list --modality image 就收手 |
图片生成 → doubao-seedream-5-0 |
| "做视频 / 角色扮演 / 字段抽取" | search --modality ... |
视频生成 / 角色扮演 / 信息抽取 → 查表 |
命中后按表里 JOIN 协议执行:取推荐模型族名词干 → arkcli models search <族名词干> 回左表校验事实 → 置顶推荐 + 补 2–3 备选。表里的版本/full-id 只是起点,命中以 search 实时返回为准(实测表 id 会陈旧)。
只有这两种情况才跳过场景表、降级到下方 search + 命名启发式:
- 用户给了明确的数值/能力硬约束("200K 上下文"、"必须支持 functioncall"),且场景表没有对应标签;
- 用户点名第三方 / 开源 / 历史模型(qwen、glm、Seedream 4.5…)——不强行替换。
注意区分:"复杂推理"是场景标签(查表 → pro),不等于用户给了
thinking硬指标。前者走第 0 步,后者才走降级线。
层级边界(重要,别串台):场景表是"模型广场选型层",回答"这个意图在广场上选哪个模型",数据源永远是 models search(catalog)。 它给的是 catalog 推荐模型名(如生图 → doubao-seedream-5-0)。
- "当前 profile 能不能调用、确切可调用 id 是什么"是下游可用性层的事,由
resources list→models get→+gen/+chat负责(arkcli-gen 已实装),不在本表职责内。 - 因此:用户是纯选型问题("查/选哪个模型")→ 只走
models search,不要跑去查resources list把"选型"做成"查可用资源"。只有用户真的要生成 / 调用时,才下沉到 resources list 解析本 profile 的真实 id。
这是意图排序线专属。枚举 / 盘点 / 统计是另一条线,走 list,不挂场景表重排。
命令选择
- 用户只知道模糊模型名 / 想按意图找("最强生视频"、"200K 上下文 LLM"、"支持 thinking 的模型"):用
search—— 它做关键词模糊 + modality/context/capability 结构化过滤 - 需要按 modality / 分页参数枚举、或精确名匹配:用
list - 用户问"我的模型"、"自定义模型"、"最近创建了多少"、"列出来"、"统计数量":这是模型资产盘点,不是找候选模型;先读
references/arkcli-models-list.md,用arkcli models list --page-all拉取后做客户端过滤,不要跳到 Raw API Explorer - 仅 Volc:性能排行、趋势或输入长度对比时,先读
references/arkcli-models-performance.md,再使用models performance rank、trend或input-length - 已经有明确模型 ID:用
get - 只是为
+chat/+gen/ Endpoint 创建找模型:先保留原任务的 owning skill,再只执行一次有界models search <keyword> --size 10 --format json(无关键词时省略<keyword>),从同一次结果形成精简选择列表后立即回原任务;不要改用list --page-all,也不要逐候选循环models get - 用户主动要开通某个基础模型("先把 doubao-seed-1-6-flash 开通好"、"我想试用 fast-infer 子服务"、"先预览开通请求"):用
activate,先读references/arkcli-models-activate.md;如果用户只是要 deploy / 创建端点,由 deploy / infer-create 自行触发隐式开通即可,不要先单独 activate
Agent 快速执行顺序
- 先确认是否已登录;不确定时先看
arkcli auth status - 用户描述带意图(modality / 数值容量 / capability / 缓存类别)时,用
arkcli models search+ 对应 flag(--modality、--min-context-window、--capability、--cache-type...);缓存能力必须看cache_types,不要使用旧capabilities.caching - 用户只知道模糊名称时,仍用
arkcli models search <keyword>(默认返回全部命中,无分页) - 需要按 modality 全量枚举或翻页统计时,用
arkcli models list - 用户问"最近 N 天创建的自定义模型/我的模型"时,用
arkcli models list --page-all --sort-by CreateTime --sort-order Desc --format json,再在本地按create_time、model_type/customization_type/source_type等字段过滤;不要因为没有时间过滤 flag 就改探arkcli api --list - 已有明确模型 ID,需要详情时,用
arkcli models get - 用户明确要开通模型(主动激活,不是为了立刻 deploy)时,用
arkcli models activate <name> [--sub-services ...];CI 场景加--yes,本地请求预览用--dry-run,但不得称为服务端校验 - 查到 / 激活完模型后,回到发起它的上游链路:
+chat/+gen/+deploy
典型业务链路
0. 为数据面命令补全完整模型 ID(必做前置)
+chat / +gen 的 --model 必须是 <name>-<primary_version> 完整形式(或 Endpoint ID ep-xxx)。直接传族名会触发 InvalidEndpointOrModel.NotFound 404。
primary_version 格式不固定,不要用正则自行判断"看起来像完整 ID"。实际观察到的格式分布(~152 个模型中约半数非 6 位):
| 格式 | 样例 full ID | 常见家族 |
|---|---|---|
YYMMDD(6 位日期) |
doubao-seed-1-6-251015 |
doubao 系 |
YYYYMMDD(8 位日期) |
qwen3-14b-20250429、glm-4-6-20250930 |
qwen / glm 开源 |
| 限定前缀 + 日期 | doubao-seed-2-0-code-preview-260215、doubao-seed-1-6-nano-unfiltered-250928 |
灰度 / 变体 |
| 纯路由字符串 | kimi-k2-6-modelhub、open-source-models-default |
外部接入 |
| 短数字 | qwen3-235b-a22b-instruct-2507 |
qwen 部分 |
| 空串 | doubao-seed-tts-2-0(full ID 就等于族名) |
TTS / ASR 部分 |
两条获取路径,按效率递减:
- 路径 A(高效,复用已有结果):刚执行过
arkcli models search <keyword>或arkcli models list时,返回 JSON 每个 item 自带primary_version字段,Agent 直接读取并拼接<name>-<primary_version>,无需额外调用。search还会同步返回context_window/input_modalities/output_modalities/capabilities/cache_types等结构化字段(来自 ArkModels enrich),下游可以直接基于此判断模型是否合适,省去再调get的成本。 - 路径 B(单独查询):只知道裸名时,
arkcli models get <name> --transform 'primary_version'直接返回版本号
注意:--transform 输出带 JSON 双引号(如 "251228"),shell 拼接前必须 tr -d '"' 剥掉:
VER=$(arkcli models get doubao-seed-1-8 --transform 'primary_version' | tr -d '"')
# VER=251228 -> full ID: doubao-seed-1-8-251228
# VER=""(空串模型)-> 直接用族名: doubao-seed-tts-2-0
if [ -n "$VER" ]; then
MODEL="doubao-seed-1-8-$VER"
else
MODEL="doubao-seed-1-8"
fi
arkcli +chat --model "$MODEL" "你好"
1. 为试用找模型
models search [--modality / --capability ...] -> +chat / +gen
2. 为正式接入找模型
models search [--min-context-window / --capability ...] -> +deploy
3. 按硬指标筛选
# 找最新最强的 200K+ 文本模型,含 thinking 能力
arkcli models search --modality text --min-context-window 200000 --capability thinking --strict-filter
# 找视频生成模型
arkcli models search --modality video --strict-filter
# 找多模态 LLM
arkcli models search --multimodal --output-modality text --strict-filter
--strict-filter 强烈建议带上:默认行为是"缺数据保留"(避免误杀),加 strict 后只返回 100% 满足条件的模型。
常见降级
- 认证失败:转
../arkcli-auth/SKILL.md - profile / region 看起来不对:转
../arkcli-config/SKILL.md - 业务上只是为了给
+chat、+gen、+deploy找模型名,应优先完成"查模型后回到原任务",不要停留在 models 本身
命令一览
| 命令 | 说明 |
|---|---|
arkcli models search [keyword] [filters] |
Agent 首选:全量召回 + ArkModels enrich + modality/context/capability/cache type 结构化过滤 + 重排;返回字段含 context_window / input_modalities / output_modalities / capabilities / cache_types |
arkcli models list |
按 modality 全量枚举、翻页统计、模型资产盘点;轻量,不含 enrich |
arkcli models get <id> [version] |
单个模型完整详情(聚合多 API,最重也最全) |
arkcli models performance {rank,trend,input-length} |
仅 Volc:公共模型性能排名、趋势与输入长度对比 |
命名约定的 tier 启发式(降级兜底:仅在场景表未命中时启用)
优先级口诀:场景表命中(★★★) > 命名启发式(★★,本节) > update_time。 先走「快速决策 第 0 步」的场景表;只有场景表没覆盖该意图、或用户点名第三方/开源/历史模型时,才用本节的命名启发式排序。
search 加 filter 之后通常还会剩多个候选,命名里有规律的 tier 信号可以帮 agent 做最后一步排序。这是启发式,不是硬规则:硬指标(context_window / capabilities / modality)永远优先于命名。
代次(major version)— 优先级最高
2-x > 1-8 > 1-6 > 1-5 > ...
代次跳跃通常强于 tier。例:doubao-seed-2-0-mini 在多数任务上强于 doubao-seed-1-6-pro,因为基座模型代次差距大于尺寸档差距。
tier(同代内的尺寸档)
pro ≥ 无后缀 > lite > flash > mini > nano
pro:旗舰,最大尺寸 / 最强能力- 无后缀(如
doubao-seed-1-8):主力档,通常 ≈ pro lite:成本/性能均衡flash:速度优化mini/nano:低延迟、高并发、最低成本
specialty 后缀(不参与 tier 比较,按用途选)
-code → 编程优化(Doubao-Seed-Code 等)
-thinking → 思考能力强化(更长 reasoning)
-vision → 视觉理解强化
-character → 角色扮演 / 长旁白
-translation → 翻译专用
-tts / -voice → 语音合成
-asr → 语音识别
specialty 模型在它的领域内通常强于同代通用 pro,但跨任务时不可移植。
primary_version 比较的注意事项
- 同一 family 内:日期越新越好(
260215 > 251228 > 251015) - 不同 family 之间:不可数值比较。
qwen3-14b-20250429(8 位)和doubao-seed-1-6-251015(6 位)数值上前者大,但和"哪个强"无关 - 比较"哪个更新"统一用
update_time字段(ISO 8601,可字典序比较),不要去 parseprimary_version
决策口诀
filter (硬指标,必须满足)
↓
代次 (2-x > 1-x,跨代差距通常 > 同代 tier 差距)
↓
tier (pro > 无后缀 > lite > flash > mini > nano)
↓
update_time (同代同 tier 时,新者优先)
排序已经在 search 命令里实装
不用 agent 再做客户端 reorder —— arkcli models search 按"先 family 分组、后组内细排"的两阶段排序:
1. bucket — keyword 可见性 (name 命中 > desc 命中 > 兜底 > hidden)
↓
2. 跨 family: 按 family 的"代表分"排(family 成员中的 max ctx → max update_time → family 名)
↓ → 同 family 的所有成员保持在一起
3. 同 family 内部: gen DESC → tier DESC → ctx DESC → update_time DESC → name ASC
关键设计:
- family 分组先于细排。doubao-seed 家族(max ctx=262144)整体排在 doubao-seed-character(max ctx=131072)和所有 ctx=null 家族之前。这避免了"同家族的 1-6-vision 比 1-8 还靠前"这种违反传递性的奇怪结果。
- 同 family 内 gen 优先于 ctx。新版本即使 ArkModels 元数据还没补齐(
context_window=null),也会浮在已有 ctx 数据的旧版本之前。例:glm-5-1(gen=501, ctx=null)排在glm-4-6(gen=406, ctx=262144)之前;kimi-k2-6(gen=600, ctx=null)排在kimi-k2-5(gen=500, ctx=262144)之前。 - 代次优先于 tier。同 family
doubao-seed-2-0-mini(gen=200, tier=50)排在doubao-seed-1-8(gen=108, tier=80)之前 —— 跨代差距通常大于同代 tier 差距。 - 跨 family 不比 gen/tier。pro/lite/mini 是 family 内部命名,跨 family 没有可比性 —— 由 family 代表分(max ctx + max time)决定家族先后。
被打了 体验隐藏 / 推理隐藏 / 广场隐藏 任一标签的旧模型自动沉底(不会被 list/search 屏蔽,但永远在结果末尾)。
说明:
体验隐藏/推理隐藏/广场隐藏是火山方舟模型平台customized_tags中的旧版页面隐藏标签,与本 CLI 命令无关,arkcli 仅读取它们用于排序。
模型生命周期:Shutdown / Retiring / Published
ArkModels 给每个模型打 lifecycle_status,三种值,Search 处理方式不同:
| status | 含义 | search 默认行为 |
|---|---|---|
Published |
正常服务 | ✓ 显示 |
Retiring |
正在下线(仍可调用,不建议新接入) | ✓ 显示,agent 应口头告诉用户 "X 正在下线,建议换 Y" |
Shutdown |
已下线(调用必失败) | ❌ 默认过滤掉(加 --include-deprecated 才回来) |
另外,display_name 含 废弃 / 下线 / 已下架 / deprecated 关键词的模型也按 Shutdown 处理(兜底,因为有些遗留模型不在 ArkModels 元数据里,靠人工标记)。
Agent 行为约定:
- 不需要做"过滤掉 Shutdown"的客户端逻辑 —— search 默认已经做了
- 看到
lifecycle_status="Retiring"的模型时,主动提醒用户它正在下线,并尝试在同 family 里找一个更新版本(用search+ 正确 keyword 即可)
❌ 反模式(agent 必读)
下面这些行为是错的 —— 命令选错会让 agent 拿不到 enrich 数据(context_window / modalities / capabilities)、得不到 hidden 沉底 / 加权重排,进而给出错误推荐。
- ❌ 不要用
list找模型 —— 找模型(任何"哪个模型/找一个 X 模型"意图)一律走search。list不做关键词模糊、不做加权重排、不返回 enrich 字段。 - ❌ 不要用
list --modality video选生视频模型 —— 用arkcli models search --modality video --strict-filter,它结合 ArkModels 的output_modalities和task_types兜底,召回更准且能进一步组合--min-context-window/--capability过滤。 - ❌ 不要用
list --modality text选 LLM —— 同上,用search --modality text --strict-filter。list --modality text只看 foundation_model_tag.filter_domains 一层信号,会漏掉很多模型。 - ❌ 不要先
list再get来验证 context_window 等参数 ——search已经在结果里直接返回context_window/max_input_tokens/max_completion_tokens,省掉一次get调用。 - ❌ 不要为了"看 5 条最热门"而
search不传 keyword —— 现在不传 keyword 是返回全量 152 条按 UpdateTime 降序,不再是策展热门。需要少量结果用--size 5。 - ❌ 不要把
lifecycle_status="Retiring"的模型推荐给用户做新接入 —— 这些虽然还能调,但 vendor 已经标记下线倒计时。看到 Retiring 候选时主动提示并搜更新版本。 - ❌ 不要在
search上做客户端二次过滤来弥补 list 的不足 —— 直接用search自带的--modality/--min-context-window/--capabilityflag。 - ❌ 不要为单个 model 信息直接
get而不试search——search <name>一次返回所有候选 + enrich;只有需要计费/限流/详细能力描述时才用get。 - ❌ 不要因为
models list没有服务端时间过滤 flag 就去arkcli api --list探 Raw API —— 先models list --page-all --format json,再用本地 JSON 处理按create_time过滤。 - ❌ 不要告诉用户"CLI 没有此能力,请去控制台",除非已经确认
arkcli models list --help当前版本确实没有可枚举输出,且本地 JSON 过滤也无法完成用户要的统计。
合法的 list 唯一用途:
- ✓ 按
--modality做全量穷举/审计(不是为了"找最强") - ✓ 需要
total_count这种统计 - ✓
--name foo精确匹配(agent 几乎用不到,因为 search 也能命中) - ✓ 盘点"我的/自定义/最近创建"这类资产清单:用
--page-all全量拉取,再按字段和时间窗口做客户端过滤
参考
- arkcli-chat -- 查到模型后进入对话 / 推理链路
- arkcli-gen -- 查到图片/视频模型后进入生成链路
- arkcli-deploy -- 查到模型后进入 Endpoint 部署链路
references/arkcli-models-list.mdreferences/arkcli-models-get.mdreferences/arkcli-models-search.mdreferences/arkcli-models-scenario-table.md-- 场景化推荐表(意图排序最高权重)+ JOIN 验证协议references/arkcli-models-activate.md