跳转到内容

命令系统

命令系统 让用户通过 /command 语法快速触发特定功能。输入 / 开头的文本,前端自动识别命令名和参数,分发到对应的处理逻辑——就像终端命令行一样高效。

命令根据实现方式分为以下几种处理模式:

处理方式说明示例
前端直接处理前端 switch case 匹配命令名,执行本地逻辑或发送 RPC 到后端/compact:前端发送 RPC 调用后端压缩接口
特殊前缀处理前端识别命令前缀,生成特殊消息(isMeta: true)传递给 AI/goal:生成目标设定消息,AI 据此理解任务目标
自定义命令宿主应用通过 API 注册自定义命令,前端匹配后调用注册的处理函数宿主注册的任意自定义命令

解析规则:

  • / 后第一个单词为命令名
  • 剩余部分为参数(原始字符串传递)
  • 命令名匹配优先级:精确匹配 > 别名匹配

命令来自两个渠道:系统内置命令(/compact、/export、/goal、/persona)和宿主应用通过 API 注册的自定义命令。


暴露已有的自动压缩功能,允许用户主动触发上下文压缩,释放 token 空间。

参数必填说明
自定义指令否覆盖默认压缩 prompt 的自定义摘要指令
关键规则说明
异步执行压缩走队列,不阻塞当前对话
完成通知压缩完成后通过 Live 频道推送通知
防重复压缩中禁止重复触发
结果反馈压缩完成后返回 {Success: true},通过 Live 频道推送通知

将当前会话的对话记录导出为独立的 HTML 文件,用于离线阅读、归档或分享。纯前端实现,无需服务端参与。

弹出对话框提供以下配置项:

选项类型默认值说明
消息数量上限滑块200导出最近 N 条消息。步进 100,最大值 2000。设为超过当前消息数则导出全部
包含工具调用是 / 否否是否包含 toolcall_input 和 toolcall_output 类型的消息
包含推理过程是 / 否否是否包含 thinking 类型的消息

生成的 HTML 文件包含:

内容说明
会话元信息标题、创建时间、消息数、Token 统计(输入/输出/缓存读取/缓存写入/总花费)
用户消息展开显示,Markdown 渲染 + 代码高亮
助手回复展开显示,Markdown 渲染 + 代码高亮
工具调用折叠显示(可选),展开后可查看参数和结果
推理过程折叠显示(可选),展开后可查看 AI 思考过程

文件名格式:rtc-{会话标题}-{YYYY-MM-DD}.html

  • 非法文件名字符自动替换为连字符
  • 标题截断至 50 个字符
  • 空格替换为连字符
规则说明
排除流式消息自动过滤 streaming: true 的不完整消息
空会话检查当前会话没有消息时提示错误
按内容过滤根据用户选项过滤工具调用和推理消息
按数量截断超出上限时保留最近 N 条消息

💡 设计原则:导出是完全离线的纯前端操作——HTML 文件内嵌所有样式,无需联网即可查看。Markdown 渲染使用 marked + highlight.js + DOMPurify,与组件内部的消息渲染管线保持一致。


切换 AI 在当前会话中扮演的角色/人设。输入角色名称后,AI 会采用该角色的词汇、优先级和典型推理模式,直到会话结束或被新命令覆盖。

/persona <角色名称>
参数必填说明
角色名称是角色描述,如 senior-backend-engineer、产品经理、security-expert。输入 default 恢复默认行为

/persona 是一个 会话级 命令——触发后在整个会话期间持续生效。后端通过两个阶段实现角色保持:

阶段说明
触发提示首次执行时,注入系统消息激活角色
保持提示后续轮次注入提醒,确保 AI 保持角色
关键规则说明
会话级生效角色仅在当前会话有效,关闭会话后失效
可覆盖输入新的 /persona 命令即可切换角色
可恢复使用 /persona default 恢复默认行为

用户用自然语言描述需要循环执行的任务,Agent 理解意图后创建定时循环任务,按固定间隔自动执行。

/loop <任务描述>
参数必填说明
任务描述是自然语言描述的循环任务,如 每 5 分钟检查一次部署状态

/loop 通过 LLM 内置工具 createLoop 创建定时循环任务。任务创建后,系统按固定间隔自动触发新的 Turn 执行任务描述中的操作,直到用户取消。

相关工具说明
createLoop创建定时循环任务
cancelLoop取消循环任务
completeLoop将循环任务标记为已完成
listLoops列出当前会话的所有循环任务
pauseLoop暂停循环任务
resumeLoop恢复暂停的循环任务

用户设定一个完成条件,AI 持续工作直到条件满足。AI 在执行过程中自行判断目标是否达成,通过 completeGoal 工具声明目标已达成,或通过 cancelGoal 取消目标。

/goal 采用特殊前缀处理模式:用户输入 /goal <条件> 后,前端将其作为普通消息发送,后端通过命令注册表(GoalWorkflow)检测前缀并注入系统提示,引导 AI 进入目标设定流程。

与 /compact 等前端直接处理的命令不同,/goal 不会立即执行操作——它触发的是一个多轮对话工作流:

对比/compact/goal
处理方式前端直接发送 RPC特殊前缀 → 系统提示注入
执行时机即时执行AI 理解后引导多轮交互
用户确认不需要需要用户确认目标条件

AI 在执行过程中持续评估目标完成度。当 AI 认为目标已达成时,调用 completeGoal 工具声明完成;当 AI 认为目标无法完成或需要取消时,调用 cancelGoal 工具。

组件职责
AI执行工作并自行判断目标是否达成,通过 completeGoal/cancelGoal 工具声明状态变化

Goal 是独立于 Session 的实体,有自己的生命周期:

状态说明
Active目标激活中,AI 持续工作
CompletedAI 调用 completeGoal 声明条件达成
Cancelled用户手动取消
Exhausted超过最大轮次上限(默认 50 轮)
元素说明
状态栏显示当前目标条件摘要
Overlay 面板显示已执行轮次、累计 token、运行时长
完成通知目标达成时弹出通知
命令说明
/goal显示当前目标
/goal <condition>设定目标
/goal clear清除目标
关键规则说明
单一目标单次会话只能有一个活跃目标
会话内有效目标仅在当前会话有效
安全上限最大轮次上限(默认 50 轮),防止失控

命令执行后通过 Toast 向用户提供反馈。

命令反馈:

场景反馈方式
命令执行成功Toast 通知 ✅
命令执行失败Toast 错误提示 ❌
  • Skill 系统 — 了解宿主如何注册自定义函数扩展 AI 能力
  • LLM 内置工具 — 了解 AI 在对话中可调用的内置工具
  • RTC 协议 — 了解命令背后的远程工具调用机制
  • 会话管理 — 了解命令在会话中的上下文