Skip to content

04. 内置命令 ​

翻译说明: 本页与英文源规格一一对应。代码、协议字段和标识符保持原文;如翻译与英文源事实有歧义,以英文版本为准。

1. 目标 ​

定义无需插件即可使用的六条第一方命令。它们也会出现在输入框的 / 菜单中。

快捷键:Cmd/Ctrl + Shift + P(D014)

2. 命令 ID 约定 ​

text
builtin.<domain>.<action>

3. 核心内置目录 ​

内置 registry 有意只包含以下六条命令。插件命令会动态扩展可搜索的命令列表; 应用导航、项目管理、设置、插件管理和诊断不属于内置命令契约。

id标题关键词类别风险行为
builtin.session.new新建任务new、chat、taskSession低复用当前分组最新空会话,否则立即露出空首页并创建持久空会话,然后聚焦输入框
builtin.agent.compact压缩对话上下文compact、context、tokensSession低为当前空闲会话创建模型上下文检查点
builtin.mode.agent切换到 Agentmode、agentSession低将空闲会话模式设为 Agent
builtin.mode.plan切换到 Planmode、plan、planningSession低将空闲会话模式设为 Plan
builtin.mode.goal切换到 Goalmode、goal、objective、autonomousSession低将空闲会话模式设为 Goal
builtin.session.fast切换 Fast 模式fast、speed、priority、service tierSession中切换会话的 OpenAI 优先服务档位(ADR 0334)

4. 可见性与执行规则 ​

  • 六个 ID 构成完整的第一方 registry。移除的 ID 不会出现在命令面板结果中, 也不再有渲染器 dispatch case;插件命令仍可独立发现。
  • New Task 使用当前项目或临时分组。若该组最新会话为空则选中复用;否则 在第一帧露出空首页并创建持久空会话。同一分组内该操作是幂等的。
  • Compact Conversation Context 在当前会话空闲时可用;活动回合或检查点期间 继续遵循既有的忙碌与压缩契约。
  • 模式命令使用与 Composer Agent/Plan/Goal 芯片相同的活动会话配置路径,立即更新 空闲会话。没有活动会话时,它们更新下一个会话使用的持久化默认值;正在运行的会话 或待审批会话不会被修改。
  • Toggle Fast mode 通过同一条配置路径翻转会话持久化的 fastMode(ADR 0334)。 没有活动会话时,它记录在新任务草稿上,创建出的会话会带上该开关。所选模型必须在 「设置 → 模型 → 高级」中允许 Fast 模式,且走 Responses 协议(Codex 订阅或 OpenAI Responses);否则无论开启还是关闭,都只弹出警告指向该设置,不保存任何状态。未配置 模型上残留的开关在启动时不生效。远程会话拒绝该命令。风险为中, 因为优先档位会更快消耗订阅额度,或按更高的 token 单价计费。
  • SubmitPlan 和 SubmitGoal 是模型工具,不是命令面板命令。没有 Chat 模式或 request-changes 别名。
  • 原有的应用、项目、设置、插件和日志操作(仍适用时)通过各自的专用界面提供, 但不属于命令面板或输入框的内置命名空间。

5. 执行结果 ​

命令返回:

ts
type CommandExecutionResult =
  | { ok: true; navigation?: string; message?: string }
  | { ok: false; error: AppError }

6. 验收 ​

  1. 内置 registry 恰好包含六个唯一且带前缀的 ID。
  2. 命令面板搜索可匹配每条命令的标题和关键词。
  3. 模式切换命令立即更新空闲会话模式;Plan、Goal 和 Agent 使用同一个 pi Agent。
  4. Compact 在空闲时可用,在活动回合/检查点期间返回 AGENT_BUSY。
  5. 被移除的 ID 以及遗留的 newChat、openProject、openSettings dispatch 别名, 不会出现在 registry 或渲染器 switch 中。

7. Composer 斜杠别名(D123、ADR 0024、ADR 0106) ​

内置命令通过短别名显示在输入框 / 菜单中。别名定义在同时提供命令面板搜索的 同一 registry(electron/main/builtin-commands.ts)中;执行复用渲染器 switch。

别名命令面板 ID
/newbuiltin.session.new
/compactbuiltin.agent.compact
/agent-modebuiltin.mode.agent
/plan-modebuiltin.mode.plan
/goal-modebuiltin.mode.goal
/fastbuiltin.session.fast

别名与模板和插件命令名称共享一个命名空间;冲突时优先使用内置别名,其次是项目模板、 用户模板和插件命令。选择别名会插入 /alias ;单独发送 /new、/compact 或 /fast 时, 会在本地执行,不会创建空提示。Agent/Plan/Goal 别名支持附带提示词: /agent-mode <prompt>、/plan-mode <prompt> 或 /goal-mode <prompt> 会切换空闲会话 (或下一个会话默认值),并通过正常提示路径发送 <prompt>。不带正文的模式别名仍然 只执行本地切换。提示正文仍是可见的用户回合;dispatch 失败不会清除输入框草稿。 旧的内置别名不再解析,除非由其他命令来源提供,否则会作为普通未知斜杠文本处理。

命令完成时,只清除提交时的草稿,且前提是该草稿此后没有被编辑。之后发生的任何编辑都必须保留, 即使文字或附件后来又恢复成与提交时完全相同的内容;用户在完成前切换会话也一样。未编辑的命令草稿 仍会在成功后清空;执行失败时保留草稿。

8. 输入框中的 Skill 项 ​

当前激活的内置、插件和用户 Skill 也会显示在输入框的 / 菜单中。它们使用精确的 Skill ID 作为斜杠名称,显示 Skill 名称和描述,并单独归入 技能 分组,排在扩展 命令之后。该分组始终位于最后;Skill 命令使用 skill:<id> 前缀,发送时仍解析回原始 Skill ID。同名的未加前缀命令或模板继续保留原名称。

选择 Skill 会插入 /skill:<skill-id> 。发送 /skill:<skill-id>(可附带提示正文)时,输入的命令 会以可见的消息芯片保留,同时要求模型先用经过校验的 ID 调用现有的 Skill 工具,再 回答请求。只有当前项目已激活的 Skill 会被列出或接受,因此项目范围和插件激活状态 仍会在发送时强制校验。如果 Skill 已不再激活,文本会按普通未知斜杠提示处理。

9. 顿号打开斜杠菜单(D405) ​

中文输入法会用顿号「、」(U+3001)代替 ASCII 的 /,否则用户必须在书写中途切换 输入法才能唤出菜单。当输入框为空时,第 1 个字符提交的「、」会在触发检测之前被改写 为 /,随后按上文相同的插入、过滤与发送行为打开普通斜杠菜单。

只有空草稿的第 1 个字符会被改写。出现在草稿其他位置的「、」属于普通标点,始终不会 被改动;该别名对 @ 文件菜单没有影响。

本地优先 · 模型可替换 · 插件可扩展。 AIUO.NET