跳转至

终端交互命令

echo-agent cli 默认使用保留原生 scrollback 的 inline 界面, echo-agent cli --tui 使用全屏 Textual 界面。两种界面共用下列命令及 WebSocket 协议行为;命令名不区分大小写。

本地命令

本地命令在客户端执行,不需要服务端连接。

命令 说明 快捷键
/help 显示所有可用命令
/clear 清空当前显示,不删除服务端会话或审计缓冲
/copy [all] 复制最近回复;all 复制整段对话
/details 查看或调整思考、工具和运行状态的显示程度
/save 将当前会话导出为 Markdown / text / JSON
/theme 查看或切换 UI 主题(dark/light)
/reconnect 重新连接 WebSocket(断线后使用)
/status 查询服务端持久化的回合执行状态
/quit 退出客户端 Ctrl+D

/help

/help

显示所有本地命令和服务端命令。inline 界面在输入 / 时也会显示候选补全。

/clear

/clear

清空当前界面的消息显示。不会影响服务端会话历史。

/copy

/copy [all]
参数 类型 默认 说明
all literal 复制当前 CLI 运行期的整段对话

不带参数时复制最近一条 Agent 回复。优先使用系统剪贴板工具, 远程终端可回退到 OSC 52;不可用时会明确报错。

/details

/details
/details <思考|工具|状态> <展开|折叠|精简|隐藏>

无参数时显示三个分区的当前状态。默认为“思考=折叠、工具=折叠、 状态=隐藏”:工具开始时立即显示操作,结束时在下一行显示结果摘要;并行结果会 带上操作对象,避免对应关系含糊。需要更安静的输出时可将工具改为“精简”,此时 成功的只读调用会隐藏,但任何失败始终可见。设置只影响之后到达的过程信息, 不影响最终回答或 JSON 审计导出。

inline 界面的输入框下方保留一行自适应会话状态:宽终端显示连接与会话、模型、 上下文占用、整轮耗时、累计费用和记忆数;中等宽度保留模型与上下文百分比, 以及记忆数,极窄终端只保留连接和计时,不会折行挤压输入区。默认模型与上下文上限在 首次进入时 从配置预填,实际路由完成后 再以服务端统计更新。spinner 负责说明“现在正在做什么”,并与输入框、底栏由同一终端 渲染器更新;底栏只显示计时和控制提示, 避免相邻两行重复;回合结束会区分完成、出错、中断和断连。审批或澄清等待计入整轮 耗时,/clear 会一并清除上一轮摘要,/theme 会同步切换正文与底栏配色。

/save

/save [--format md|txt|json] [path]
参数 类型 默认 说明
path string <workspace>/transcripts/echo-<timestamp>.<ext> 导出文件路径
  • md(默认):当前屏幕中的用户消息与 Agent 回复。
  • txt:同样的纯文本对话。
  • json:本次 CLI 运行期的完整审计事件,包括被 /details 隐藏的工具/认知帧与 /status 终态;/clear 不会删除这份审计缓冲。凭据字段、Bearer token、URL 密钥参数和命令行密钥 flag 会脱敏。

/theme

/theme [name]

可选主题值:

说明
dark 深色主题
light 浅色主题
不带参数时显示当前主题。不支持的值会显示用法而不会静默忽略。

/reconnect

/reconnect

在断线后手动重建 WebSocket,沿用原会话键,并从持久化回合账本补显断线期间 完成的最终回复。断线期间普通消息不会被静默丢弃,客户端会要求先重连。

/status

/status [event_id]

不带 ID 时查询当前会话最新的主回合;带 ID 时精确查询某一回合。结果来自网关持久化账本,不依赖客户端是否在线,可区分“正在执行”、“等待审批/补充信息”、“已完成”、“输出截断而未完成”、“失败”和“已中断”。重连后会自动查询一次。

/quit

/quit

退出客户端。Ctrl+D 直接退出;Ctrl+C 优先拒绝待审批操作或停止正在运行的 回合,空闲时需在 2 秒内再按一次才退出。


服务端命令

服务端命令通过 WebSocket 发送到 Echo Agent 后端执行。需要活跃的服务端连接。

命令 说明 权限要求
/approve 批准待审工具调用 会话所有者
/deny 拒绝待审工具调用 会话所有者
/approvals 查看所有待审项 会话所有者
/clarify 向 Agent 发送澄清信息 会话所有者

/approve

/approve <request_id> [session|always]
参数 类型 默认 说明
request_id string 必填 批准指定的工具调用请求
session / always literal 在对应范围内允许同类操作

inline 界面收到审批请求时会直接显示脱敏后的参数:输入 y 批准、n 拒绝、a 在本会话允许。

/deny

/deny [request_id] [reason]
参数 类型 默认 说明
request_id string 必填 拒绝指定的工具调用请求
reason string 拒绝原因(可选,会记录到日志)

/approvals

/approvals

显示当前会话中所有等待审批的工具调用,包含:

  • 请求 ID
  • 工具名称
  • 参数摘要
  • 等待时间

/clarify

/clarify <clarify_id> <answer>

回答 Agent 发出的指定澄清请求。inline 界面会展示编号选项,可直接输入序号 或自由文本,无需手工拼接命令。


命令执行流程

┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│  用户输入   │────▶│  命令解析器  │────▶│  本地执行   │
│  /command   │     │              │     │  或 WS 发送 │
└─────────────┘     └──────────────┘     └─────────────┘
                           │                     │
                           ▼                     ▼
                    ┌──────────────┐     ┌─────────────┐
                    │ 未知命令回退 │     │  服务端处理 │
                    │ 作为消息发送 │     │  返回结果   │
                    └──────────────┘     └─────────────┘

未识别的斜杠命令会作为消息发送

未命中本地命令表的输入按普通消息发往 Agent,不报错。因此 /helpp 这类拼写错误会变成一句发给模型的话,而不是提示「未知命令」。

命令名的匹配不区分大小写(/HELP/help 等价),参数保持原始大小写——路径和主题名是用户自己的文本。

补全面板会随输入过滤候选命令,用它确认命令拼写比事后从回复里发现更快。