命令

A3S Code 主要是 SDK 驱动。CLI 和 UI 通常把命令映射到 session API,而不是依赖 一个庞大的公开命令协议。

本页说明会话命令注册表。9.0.0 终端客户端自行处理的命令见 A3S Code TUI。

这些 surface 刻意不同:

Surface所有者用途
内置会话命令运行时/help、/compact、/cost、/model、/clear、/history、/tools、/mcp,在每个会话中通过 session.send 可用。
宿主命令注册表宿主应用用 session.registerCommand(...) 注册、再通过 session.send("/name args") 触发的产品自定义命令。
a3s-code-tui 命令终端客户端/help、/model、/clear、/exit、/quit,整行为单个词元时由 TUI 自行处理;其他行会发送给会话。

SDK command 会在 LLM 看到输入之前执行。handler 接收原始参数字符串和 session 元数据,并返回展示文本。命令适合薄薄的控制面动作;workflow、工具、验证和持久化 应直接使用普通 SDK 方法。

推荐映射

用户动作Session API
发送 promptsession.send(prompt)
流式 promptsession.stream(prompt)
调整活动 runsession.steer(text)
停止活动 runsession.interrupt()
回答待处理的确认session.confirmToolUse(toolId, approved)
临时问题创建单独的 session;在同一 session 上传入显式 history 仍会记录到其事实日志。
直接工具session.tool(name, args)
历史session.history()
保存session.save()
恢复agent.resumeSession(id, options)
工具列表session.toolNames() / session.toolDefinitions()
验证session.verifyCommands(subject, commands)
回放 run 状态session.runs() / session.runEvents(runId)
检查或取消 current runsession.currentRun() / session.cancelRun(runId)

构建斜杠命令

如果产品提供 slash command,请让它们薄薄地映射到这些 API。注册 handler、列出 可用命令,并通过 session.send() 触发:

TypeScript
session.registerCommand(
'docs_status',
'Return docs command status',
(args, ctx) => {
return `status args=${args}; session=${ctx.sessionId}; workspace=${ctx.workspace}`;
},
);
console.log(session.listCommands());
const result = await session.send('/docs_status check');
console.log(result.text);

command handler 不应隐藏长时间运行的工作。如果一个命令需要运行工具、验证输出、 fan out 到 subagent 或调度周期性自动化,让 handler 返回简短确认,再由明确的宿主 代码执行这些工作。这样取消、审计和权限边界仍然可见。