

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 外壳执行
<a name="runtime-shell-execution"></a>

Amazon Bedrock R AgentCore untime 允许您在正在运行的代理会话中运行 shell 命令。根据您的用例，有两种模式可用：

One-shot 命令执行-`InvokeAgentRuntimeCommand`   
运行单个命令，流式 stdout/stderr 传输 HTTP/2并返回退出代码。每个命令都会启动一个没有持久状态的新的 shell 进程。最适合自动化管道、 CI/CD 门禁和确定性操作。

交互式外壳（终端）-`InvokeAgentRuntimeCommandShell`   
打开 WebSocket 具有完整外壳状态（环境变量、工作目录、历史记录）的永久终端会话。支持通过`shellId`以下方式重新连接。最适合调试、环境检查和终端用户界面。

 **功能对比 ** 


| 功能 | One-shot (`InvokeAgentRuntimeCommand`) | 互动 (`InvokeAgentRuntimeCommandShell`) | 
| --- | --- | --- | 
| 协议 | HTTP/2 （请求-响应流） | WebSocket （持续连接） | 
| 壳牌状态 | 无状态 — 每个命令都会启动一个新的进程 | 持久 — 环境、工作目录和历史记录贯穿命令 | 
| 输出格式 | 结构化事件（`contentStart`，`contentDelta`，`contentStop`带退出代码） | 二进制帧（原始终端 I/O — 支持颜色、光标控制、全屏应用程序） | 
| 重新连接 | 不是 — 每个呼叫都是独立的 | 是的，通过 `shellId`  | 
| Duration | 可配置的超时（1—3,600 秒） | 最多 1 小时（重新连接`shellId`以继续） | 

 **选择正确的模式 ** 


| 在... 时使用一次性执行 | 在... 时使用交互式外壳 | 
| --- | --- | 
| 该操作有一个已知的命令 (`npm test`,`git push`) | 你需要在多个命令中保持持久的 shell 状态 | 
| 你想要使用结构化退出代码进行确定性执行 | 你想以交互方式探索环境 | 
| 你正在自动执行 CI/CD 管道步骤或验证门 | 你正在构建终端用户界面（Claude Code、Amazon Kiro、OpenAI Codex） | 
| 每个命令都是独立的，没有共享状态 | 长时间运行的工作需要重新连接支持 | 
| 你是在代理启动之前启动环境 | 你正在调试或检查正在运行的代理 | 

**Topics**
+ [在 AgentCore 运行时会话中执行 shell 命令](runtime-execute-command.md)
+ [交互式外壳（终端）](runtime-get-started-command-shell.md)