| 名称 | arkcli-chat |
| 版本 | 1.2.4 |
| 描述 | “arkcli +chat:通过数据面 Responses API 实现快速对话与推理,支持多模态、流式、多轮、临时 API Key / Base URL / Endpoint 执行以及无副作用的 dry-run。当用户给出 Endpoint 但未说明工作流时,先用 resources resolve 识别候选项;当已经出现 Responses API capability/access 错误时,以只读方式用 models get 核对精确模型的 api_support,不重试真实调用。对于有明确产出形态的多模态理解任务,改用 arkcli-understand。” metadata: requires: bins: [“arkcli”] cliHelp: “arkcli +chat --help” |
arkcli +chat
关键 — 开始前必须先使用 Read 工具读取 ../arkcli-shared/SKILL.md,其中包含认证前置检查、配置排查与命令选择顺序
关键 — +chat 在执行之前,务必先用 Read 工具读取 references/arkcli-chat.md,禁止在未读取该文档的情况下直接盲目调用命令。
关键 — 针对一次用户请求,只发起一次真实的 +chat 调用。如果首次响应不完整、严格 JSON 无效或不符合内容要求,必须保留并报告该次失败,不得自动重试,也不得用第二次响应替换;如果本地提取、保存或校验失败,只能修复本地交付内容。只有当用户明确要求进行新一轮调用或重新生成时,才再次调用。
核心概念
- 当
--model缺省时,CLI 会自动回退到当前 active profile 的resources.text.default;如果用户显式传入不同的值,则按../arkcli-shared/references/profile-defaults.md给出漂移提示。 +chat是数据面 Responses API(POST /responses)的高层封装:一次请求即返回助手文本。- 支持多模态:使用
--input @photo.jpg将本地文件随请求上传,模型可看图、看视频、听音频后回答。图片(.jpg/.png/.webp/...)、视频(.mp4/.mov/...)、音频(.mp3/.wav/.m4a/...)、通用文件按扩展名自动分流。 - 支持流式:在
--stream模式下逐段输出,先输出推理(thinking),再输出正式回答(response)。 - 支持进度提示:非流式调用在 5s 后开始向 stderr 输出
arkcli +chat: still running… elapsed Xs心跳行(每 10s 一次),避免长时间调用看不到任何输出;在脚本场景中可用--no-progress关闭该提示。stdout 不受影响。 - 支持系统指令(system instructions):
--instructions "..."用于注入系统级指令。 - 支持采样调节:
--temperature/--top-p/--max-output-tokens。 - 支持思考强度:
--reasoning-effort minimal|low|medium|high(仅在支持 reasoning 的模型上生效)。 - 支持多轮接续:
--store持久化本次响应,下一次用--previous-response-id <id>接续。 - 支持 Tools:
--tools web_search(简单语法糖)或--tools-file tools.json(function 等完整形态),配合--tool-choice auto|required|none与--max-tool-calls。详见references/tools.md。 - 支持应答管理命令:
arkcli chat get/delete/list-input-items <response-id>可针对通过--store存储过的 response 执行查询、删除等操作,详见references/chat-meta.md。 - 支持缓存与思考:
--caching enabled|disabled(配合--cache-prefix)控制服务端 prompt 缓存;--thinking auto|enabled|disabled控制思考阶段;--expire-at <epoch_sec>为存储的 response 设置过期时间。详见references/caching-thinking.md。 - 支持流式事件:
--stream --include-events输出原始 SDK 事件 NDJSON(每行一个 JSON),供 autotest / agent 程序化消费。详见references/stream-events.md。 - 支持可验证的严格 JSON:
--text-format json_schema --text-schema <file> --text-strict不仅把约束传给服务端,还会在客户端确认响应是否完整、是否为直接 JSON 且符合 Schema;如果不符合,则以非零状态退出。严格流式模式会先缓冲,校验成功后才输出,避免输出不完整的 JSON。详见references/text-format.md。 - 输出 schema(务必先看):
+chat的返回是 arkcli 扁平 schema({id, model, content, reasoning_content, usage, ...}),不是 Responses API 原生的output[].content[].text嵌套结构;助手文本直接用.content取。--format不会切换 shape。详见references/arkcli-chat.md的「返回值」段。 - 当用户临时提供
--api-key/--base-url/ Endpoint 时,必须读取../arkcli-shared/references/execution-context.md。不要根据 Key 文本来猜测套餐类型,也不要把临时值写入 profile。 --dry-run只在本地构造preview.v1请求摘要和不含 secret 的执行上下文;不会读取在线元数据、刷新凭证、调用 Responses API、产生 token 用量或存储 response。在线依赖必须列为unresolved。
快速决策
采用 +chat 的判断条件(三条全部满足):
- 用户带图、视频或音频,但意图是开放对话、问答、推理、感想或评论(非固定产出形态)
- 不能映射到
arkcli-understand12 个子技能之一 - 或者用户需要
--store/--previous-response-id多轮接续
改用 arkcli-understand 的判断条件(满足任意一条即转):
- 用户要「转写/语音转文字/语音识别/ASR」→ understand
- 用户要「字幕/打轴/SRT」→ understand
- 用户要「多人对话/标说话人/会议转写」→ understand
- 用户要「OCR/识别文字/识别图片文字/发票金额」→ understand
- 用户要「框出来/标框/bbox/视觉定位」→ understand
- 用户要「PDF 字段提取/文档提取/抽字段/合同提取」→ understand
- 用户要「视频总结/分段/章节总结」→ understand
- 用户要「视频问答/视频内容提问」→ understand
一句话:有 @file 且有明确产出形态 → understand;带图聊天、追问、开放感想 → chat。
- 用户要生成图片或视频(非对话):改用
../arkcli-gen/SKILL.md。
Agent 快速执行顺序
首先把用户要求记录成可验收项:回答任务、指定模型/Profile、输入文件、输出格式、流式/多轮、明确的参数值与交付文件。如果只是预览请求,可以直接走本地 --dry-run,不要先联网查询认证或资源。
- 用户只给
ep-...且任务不明确 →arkcli resources resolve <ep-id> --format json;只有在开放问答或追问场景下才选择+chat。 - 用户提供了临时 Key/Base URL/Endpoint → 按共享 execution-context 组合规则决定参数,不要先切换 profile。
- 不确定认证状态且没有完整的 stateless 上下文时,先看
arkcli auth status;未登录或没有 API Key 时,改用../arkcli-auth/SKILL.md。 - 不确定模型名时,先改用
../arkcli-models/SKILL.md。 - 使用本次资源确认的调用 ID,不要强制改成版本化名称。用户未指定模型时,保留当前 text default 或省略
--model;合法套餐别名(如ark-code-latest)不追加版本。用resources list --modality text核对 default、invocable、required_overrides与凭证类型;可见不等于可调用。能力查询的规范 Name/Version 与计费调用 ID 要分开,EP 始终保持 EP。只有未解析的模型族名才进一步查询,不要根据字符串猜测版本。 - 需要流式输出时加
--stream;需要多模态时加--input @<file>(可多次)。 - 查模型实际支持的键、值和输入模态;不要把参数全集当成所有模型的能力。用户明确的 temperature、token 上限、thinking、store=false 等不得省略或换值;未指定时使用兼容默认,不额外开启联网、存储或工具执行。
- 发起真实请求前先确定交付路径;要求保存时按 reference 的单次捕获流程,让调用 stdout 直接进入临时响应文件。用首次真实返回验收:普通结果取
.content,严格 JSON 检查完整性/Schema;多轮必须引用真实上轮 ID 并保持相同调用上下文。流式保留 NDJSON,确认成功终态后提取正式正文,不能把推理文本或 Agent 自己的回答充当模型产出。保存文件必须与该次正文逐字一致;任何本地失败都不得触发第二次模型请求。
认证准入只陈述已验证的事实:本地登录、Key 清单状态为 Active 或资源可见,都不能单独证明当前数据面请求可用。如果实际调用报 401,核对当前 lane 凭证;对于 403/access 错误,按下文以只读方式核对能力和权限;对于 429,要区分限流与 quota exhausted。可以提醒可用候选,但不自动轮转 Key、切换 Profile 或收费路径,也不修改默认。stored response 不存在或过期时,要准确报告,不能悄悄去掉 previous-response-id 重新对话后声称上下文接续成功。
常见降级
- 模型名不确定:先执行
models search。 - endpoint ID 要用
+chat:直接传--model ep-xxx(endpoint 本身已决定模态,无需额外 flag)。 - Endpoint + 显式 API Key、未提供 Base URL:CLI 会读取 Endpoint region 后派生 Base URL;如果无法取得权威 region,再要求用户补充
--base-url。 - 鉴权失败:改用
../arkcli-auth/SKILL.md。
如何只读核对 Responses API capability 与 access 错误
当用户已经给出 model does not have access to responses api 这类错误时,本轮要做的是排障,而不是「再试一次」:
- 如果已知精确、完整的版本化模型 ID,只执行
arkcli models get <model-id> --format json;禁止用models search的候选摘要代替单模型详情。 - 在
api_support数组中按name/key/path定位 Responses 项,以该项的supported作为模型声明事实;不要从模型名、lifecycle、tool 列表或其他 capability 反推。 - 如果
supported=true,但实际调用报 access 错误:说明「模型声明支持,但当前 Endpoint 或账号访问路径不可用」;如果用户还给了 Endpoint ID,可以再以只读方式执行resources resolve/infer endpoint get核对绑定与状态。 - 只有
supported=false才能说模型目录声明不支持;如果 Responses 项缺失,则说明元数据不足,不做猜测。
全程禁止再次执行 +chat、自动 models activate、切换 profile 或修改默认资源。
命令一览
| 命令 | 说明 |
|---|---|
arkcli +chat --model <id> "<prompt>" |
最简用法:纯文本对话 |
arkcli +chat --model <id> --stream "<prompt>" |
流式输出(thinking + response 两段) |
arkcli +chat --model <id> --instructions "你是简洁助手" "<prompt>" |
系统级指令 |
arkcli +chat --model <id> --temperature 0.2 --max-output-tokens 256 "<prompt>" |
采样调节 |
arkcli +chat --model <id> --reasoning-effort high "<prompt>" |
提高思考强度 |
arkcli +chat --model <id> --input @file.jpg "<prompt>" |
多模态(本地文件,支持图/视/音) |
arkcli +chat --model <id> --input @a.jpg --input @b.jpg "<prompt>" |
多文件 |
arkcli +chat --model <id> --store "<prompt>" 拿到 id 后再 --previous-response-id <id> "<下一句>" |
持久化 + 多轮接续 |
arkcli +chat --model <id> --tools web_search --tool-choice auto "<prompt>" |
Tools:联网检索 |
arkcli +chat --model <id> --tools-file tools.json --tool-choice required "<prompt>" |
Tools:自定义 function |
arkcli chat get <response-id> |
取回 store 过的 response(含 function_calls) |
arkcli chat list-input-items <response-id> --order desc --limit 5 |
列出输入项(多轮历史) |
arkcli chat delete <response-id> |
删除 store 过的 response |
arkcli +chat --model <id> --caching enabled --store "<prompt>" |
启用 prompt cache + 持久化 |
arkcli +chat --model <id> --thinking disabled --max-output-tokens 100 "<prompt>" |
关思考压短输出 |
arkcli +chat --model <id> --text-format json_object "<prompt>" |
强制模型出合法 JSON |
arkcli +chat --model <id> --text-format json_schema --text-schema schema.json --text-strict "<prompt>" |
用 JSON Schema 强约束 shape |
arkcli +chat --model <id> --stream --include-events "<prompt>" |
流式 NDJSON(每行一个 SDK 事件 JSON) |
arkcli +chat --model <id> --dry-run "<prompt>" |
无副作用预演;不调用 Responses API |
详细文档
+chat的所有参数、返回值、错误码、多模态文件自动上传机制等见references/arkcli-chat.md。+chat的 Tools 能力(--tools / --tools-file / --tool-choice / --max-tool-calls,含 function 与 web_search)见references/tools.md。chat get / chat delete / chat list-input-items三个应答管理命令见references/chat-meta.md。这些命令操作的 response 必须是+chat --store过的。+chat的--caching / --cache-prefix / --thinking / --expire-at用法、回显字段与 autotest 对应见references/caching-thinking.md。+chat的--text-format / --text-schema / --text-schema-name / --text-strict用法见references/text-format.md。+chat的--stream --include-eventsNDJSON 流式事件输出见references/stream-events.md。