arkcli profile
CRITICAL — 开始前 MUST 先用 Read 工具读取 ../arkcli-shared/SKILL.md,其中包含认证闸门、配置排查与命令选择顺序
CRITICAL — 一旦确定走 profile create、profile delete 或 profile project(重选 project 会重命名/重派生 platform profile),必须先复述对 config.yaml 的影响并征得用户确认;其他写操作(use / set-default / keys use / keys refresh / models refresh / rename)执行前也要复述目标 profile 名。
CRITICAL — profile 是本地身份切面管理,全域不注册 --dry-run;用 show/list 检查并通过明确确认保护写操作。
使用原则
- profile 是 0.1.16 引入的 统一身份切面,把
(type × region × project × owner_trn × api_keys)五个属性绑成一组 - profile 写操作(create / use / set-default / keys / models / delete / rename)一律走
arkcli profile <verb>;旧的arkcli config init/list/show/switch/delete已 deprecated,不要再引导用户用 - 只读排障优先
arkcli profile show或arkcli profile list,不要上来就改 - ProfileType 五种:
platform/agent-plan/agent-plan-team/coding-plan/coding-plan-team;其 text/image/video 所需的数据面、凭证与资源不同 - 用户只想临时传 API Key / Base URL / Endpoint 时,不要创建、切换或修改 profile;先读
../arkcli-shared/references/execution-context.md
适用场景
- 用户问"我有哪些 profile / 当前 profile 是哪个 / 切换 profile"
- 用户要创建新 profile(platform / agent-plan / coding-plan)
- 用户问 default 模型 / 资源是什么、想换 default
- 用户的 API Key 列表过期、新 key 还没被拉进来,需要 refresh
- 业务命令
+chat / +gen / resources list报错"profile xxx 缺 ...",转回这里排查
反唤起信号
- 用户问鉴权 / 401 / SSO 失败 → 转
../arkcli-auth/SKILL.md - 用户问 base URL / region / API Key 优先级被覆盖 → 转
../arkcli-config/SKILL.md(config 现在专门讲解析归因 + reset) - 用户问"有哪些 endpoint / 模型可用" → 转
../arkcli-resources/SKILL.md - 用户问"我要找一个模型" / "哪个模型最强" → 转
../arkcli-models/SKILL.md
切换 profile 的硬状态机
- 执行
profile use前必须先跑一次arkcli profile list --format json;只有本轮已有完整、未截断的同源列表时可复用,不凭记忆认定目标存在。 profile list的结构化 stdout 是本地 profile 的唯一事实源;列表为空就报告未配置并停止,不再搜索文件系统、读取状态目录或猜测配置文件。用户给了精确名称时只做精确匹配;名称不存在就如实说明,并只从列表真实结果提供可用 profile。不得把该名称重解释为 project / region,也不得自动project/create/rename。- 用户只给了 type、用途或模糊描述时,只用列表里的
name / type / region / project等权威字段筛选,然后严格按arkcli-shared的 0 / 1 / N 候选规则消歧;用户选定前不执行写操作。 - 目标唯一且用户意图明确后才执行
arkcli profile use <name>,随后必须跑arkcli profile show --format json验证实际 active profile。 - 只有核验结果与目标一致才声称切换成功;报告
name / type / region / project / base_url这些生效切面,不把profile use的 exit=0 当成最终证据。
切换默认资源的硬状态机
- 用户没给具体资源 ID 时,先确定 modality,再只跑一次
arkcli resources list --modality <m> --format json取得当前或--profile指定切面的完整候选。 - 候选只能来自这次真实结果,按
arkcli-shared的 0 / 1 / N 规则处理:多候选优先调用宿主的结构化选择能力,通用 Skill 不写死工具名。 - 执行前复述目标 profile、modality 和精确 ID;使用
arkcli profile set-default --modality <m> <id>的默认 inline verify。除非用户明确要求并接受跳过校验的风险,不得自行添加--skip-verify。 - 写入后必须跑
arkcli profile show --format json或arkcli resources list --modality <m> --format json核验新 default;只有结构化结果与目标 ID 一致才声称切换成功。
--profile flag 的精确语义(0.1.16 修正)
优先级: --profile flag > ARK_PROFILE env > config.yaml default_profile
> 第一个 type=platform 的 profile > "default" sentinel
关键修正(codex P0-A):在 resources list / profile keys refresh / profile set-default / profile models refresh 这些命令上,--profile 不再只是改 target 对象名,而是真的切换执行身份 —— 内部用 Factory.RebuildForProfile(name) 重建 invoker,所以 arkcli profile keys refresh --profile B 会用 B 的 token / UserID 打控制面,而不是 active=A 的身份打完再写到 B。
Agent 行为约定:
- 用户跑
--profile B之类的子命令时,不要假设它跟 active profile 等价;告诉用户"将以 B 的身份操作" - 0.1.16 final clean-slate 模型: 整 arkcli 同一时间只 active 一个 identity. 新 SSO 完成时
sso.ActivateIdentity检测 newKey vscfg.DefaultProfile.IdentityKey: 一致 (alice 重登 alice) → 不动 yaml profile /--profile B用于同 identity 内跨 type 的临时切换; 不一致 (跨 sub / 跨 tenant) → 全清 yaml/.env/identities 三层重建 (BuildFirstProfileSet 火山多 type 派生)
Agent 快速执行顺序
- 不确定当前 active profile →
arkcli profile show --format json - 不确定有哪些 profile →
arkcli profile list --format json - 用户要切默认 profile → 按上面的硬状态机先
profile list,精确定位后profile use <name>,再profile show - 用户要新建 profile:先问清楚 type(platform / agent-plan / coding-plan)→
arkcli profile create --type ... --set-default - 用户问 default 模型是什么 → plan 类用
arkcli profile models list,platform 用arkcli profile show看resources字段 - 用户要换 default 资源 → 按上面的硬状态机取真实候选、消歧、
profile set-default,再只读核验 - 用户的 default API Key 报错 / key 列表过期 →
arkcli profile keys refresh,然后arkcli profile keys list --format json看新清单 - 用户要选别的 key 作 default →
arkcli profile keys use <api-key>(必须 ∈profile.available_api_keys) - 用户要换 active project(不重登)→
arkcli profile project(无参拉真实 ListProjects 交互选;先复述「会把 platform profile 重命名/重派生到新 project,个人版 plan profile 保留」并确认)
Token 额度包 / 资源包的 profile 归属
「19 元 Token 额度包」、「Token 资源包」、「预付费 Token 抵扣包」等产品仍属于标准 platform 按量调用的计费产品,不是 Agent Plan 或 Coding Plan 订阅身份:
- 应沿用
type=platform的 profile,数据面使用 platform/api/v3。 - 价格、「额度包 / 套餐」市场名称、Token 数量都不是 ProfileType 判据;只有明确的 Agent Plan / Coding Plan 订阅或团队席位才使用对应 plan profile。
- 用户只问「它属于哪类 profile」时直接解释分类,禁止自动执行
profile create/profile use/profile set-default。 - 用户要实际使用时,先用
arkcli profile show --format json只读核对当前是否为 platform;需要修改时再按本 skill 的写操作确认契约执行。
命令一览
| 命令 | 说明 | 改动来源 |
|---|---|---|
arkcli profile list |
列出所有 profile(含 type/region/project 切面) | 替代 config list |
arkcli profile show [name] |
显示当前/指定 profile 详细信息 | 替代 config show |
arkcli profile use [name] |
切换默认 profile(无参时交互选择) | 替代 config switch |
arkcli profile create --type ... |
新建 profile(interactive 或 inline) | 替代 config init(type 改为必选) |
arkcli profile delete <name> |
删除 profile(必须 --yes 才能跳确认) |
替代 config delete |
arkcli profile rename <old> --to <new> |
重命名 profile(校验格式 + 唯一性) | 0.1.16 新增 |
arkcli profile project [<name>] |
重选 active project(无参拉真实 ListProjects 交互选,列表置顶「账号全部资源」=不传 ProjectName/account-wide);把 platform profile 重派生到新 project,个人版 plan profile 原样保留;不重登 | 0.1.17 新增 |
arkcli profile keys list |
列 default + available API Keys(masked) | 0.1.16 新增 |
arkcli profile keys use <key> |
切 default API Key(key 必须 ∈ available list) | 0.1.16 新增 |
arkcli profile keys refresh |
重拉控制面 ListApiKeys,更新 available list | 0.1.16 新增 |
arkcli profile models list |
plan 类 profile 的 PlanTier + Resources defaults | 0.1.16 新增 |
arkcli profile models refresh |
重拉 ListAgentPlanLatestModel,更新 Text.Default | 0.1.16 新增 |
arkcli profile set-default --modality <m> <id> |
设某 modality 的 default 资源 ID | 0.1.16 新增 |
ProfileType 选型速查
| type | 适用 | 数据面 base URL | 控制面 | 视觉模型 (image/video) |
|---|---|---|---|---|
platform |
火山方舟 console 的标准用法 | /api/v3 |
OpenTOP | ✓ 默认 endpoint |
agent-plan |
火山方舟 Agent Plan 订阅(个人版) | /api/plan/v3 |
OpenTOP + Plan API | ✓ AgentPlanImage/VideoModels 硬编 |
coding-plan |
火山方舟 Coding Plan 订阅(个人版) | /api/coding/v3 |
OpenTOP + CodingPlan API | text: 套餐内文本模型;image/video: 借道 platform 数据面 + 用户 +deploy 的 endpoint id (S10, commit f69be53) |
agent-plan-team |
Agent Plan 团队席位 | /api/plan/v3 |
OpenTOP + Plan API | text/image/video 都用套餐模型 + 团队席位 Key |
coding-plan-team |
Coding Plan 团队席位 | /api/coding/v3 |
OpenTOP + CodingPlan API | text 用套餐模型 + 团队席位 Key;image/video 用 platform Endpoint + 后付费 API Key |
Coding Plan 个人版的 text lane 使用后付费 API Key;Coding Plan Team 只有 text lane 使用团队席位 Key。完整矩阵见
../arkcli-shared/references/execution-context.md。
plan-tier:
- agent-plan:
small/medium/large/max - coding-plan:
lite/pro
profile create 决策树
用户提到 "Agent Plan / 我买了 plan"?
yes -> --type agent-plan (--plan-tier 由 Detect 自动识别;后端可见性问题时手动加 --plan-tier=<tier>)
no -> 用户提到 "Coding Plan / claude code 整合"?
yes -> --type coding-plan
no -> --type platform (默认场景, region+project 必填)
常见错误
set-default: <id> 不在当前 profile (... ) 可用列表→ 跑arkcli resources list --modality <m>看可用 ID,或加--skip-verify强写models refresh: profile %q type=%q (仅 agent-plan 支持)→ 不是 agent-plan profile,先profile use <agent-plan-profile>或切对--profile- S10 之后, coding-plan profile 下
profile set-default --modality image|video <ep>不再 fail-fast: verify 会借道 platform 控制面 ListEndpoints 校验 ep-id 是否存在 keys refresh: fetch api keys: NotLogin→ 控制面鉴权失败 (如登录态/STS 过期);fetcher 会用.env缓存单 key 兜底,profile.available_api_keys 仅含 1 项,恢复后再 refresh- 切账号后 keys / models refresh 行为奇怪 → 检查
arkcli auth whoami,可能 active profile 仍绑旧 identity;P0-D 之后 STS / token 都在 per-identity store,但 active profile.identity_key 是 yaml 字段,跨账号要么profile use <new>,要么走 SSO Gate 2 自动新建
deprecated 命令自然语言重定向表
| 用户提到 | 实际执行 |
|---|---|
| "config init / 新建配置 / 初始化配置 / 新建 profile" | arkcli profile create --type ... |
| "config list / 看看有几个 profile / 列出 profile" | arkcli profile list |
| "config show / 看下我的配置 / 显示 profile" | arkcli profile show |
| "config switch / 切配置 / 切换 profile / 换 profile" | arkcli profile use [name] |
| "config reset / 全清掉 / 恢复出厂设置 / 配置乱了从头来 / 清空所有配置" | 转 arkcli-config:arkcli config reset(破坏性操作,必须先确认) |
| "我 agent-plan 下面有哪些可用模型 / 有哪些模型 / 模型列表" | arkcli profile models list(plan 类 profile)或 arkcli resources list |
参考
references/arkcli-profile-create.mdreferences/arkcli-profile-keys.mdreferences/arkcli-profile-set-default.md../arkcli-shared/references/execution-context.md— 五类 Profile 的调用矩阵与临时覆盖