Skip to content

Commit a1c6cd2

Browse files
CodeCasterXclaude
andcommitted
docs(docker): 沙箱 README 补充 AI 工具多轮对话会话管理用法
为 Claude Code、Codex、OpenCode、Gemini CLI 四个工具补充命令行 多轮对话(会话管理)示例:预指定/提取 session ID、恢复会话、 分叉会话、查看历史会话等,并在对比表中新增会话管理相关行。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent a6e78b5 commit a1c6cd2

File tree

1 file changed

+83
-6
lines changed

1 file changed

+83
-6
lines changed

docker/sandbox/README.md

Lines changed: 83 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ docker stop fit-dev-feat-xxx
144144

145145
## 命令行模式(非交互式)
146146

147-
除了打开 TUI 界面,每个 AI 工具都支持直接在命令行传入 prompt 并获取输出,适合脚本自动化、快速提问和管道组合。
147+
除了打开 TUI 界面,每个 AI 工具都支持直接在命令行传入 prompt 并获取输出,适合脚本自动化、快速提问和管道组合。每个工具还支持会话管理,可以在命令行实现多轮对话。
148148

149149
### Claude Code
150150

@@ -164,11 +164,28 @@ claude -p --model opus "设计一个缓存方案"
164164
# 限制轮次和预算
165165
claude -p --max-turns 3 --max-budget-usd 1.00 "重构数据库模块"
166166

167-
# 继续上一次对话
168-
claude -c -p "为刚才的修改补充单元测试"
169-
170167
# 跳过所有权限确认(CI/脚本场景)
171168
claude -p --dangerously-skip-permissions "运行所有测试并汇报结果"
169+
170+
# ── 多轮对话(会话管理)──
171+
172+
# 预先生成 session ID,从第 1 轮起就使用(推荐)
173+
SID=$(uuidgen)
174+
175+
# 第 1 轮:指定 session ID 开启对话
176+
claude -p --session-id "$SID" "分析认证模块的架构"
177+
178+
# 第 2 轮:恢复同一个会话继续对话
179+
claude -p --resume "$SID" "重构登录函数"
180+
181+
# 第 3 轮:继续同一个会话
182+
claude -p --resume "$SID" "为重构后的代码补充单元测试"
183+
184+
# 快捷方式:继续当前目录下最近一次对话(无需 session ID)
185+
claude -p -c "为刚才的修改补充单元测试"
186+
187+
# 从已有会话分叉出新会话(不影响原会话)
188+
claude -p --resume "$SID" --fork-session "尝试另一种实现方案"
172189
```
173190

174191
### Codex
@@ -191,6 +208,22 @@ codex exec --full-auto "给所有 API 路由添加错误处理"
191208

192209
# 将最终结果写入文件
193210
codex exec -o result.txt "分析项目依赖关系"
211+
212+
# ── 多轮对话(会话管理)──
213+
# Codex 不支持预指定 thread ID,需从首轮 JSON 输出获取
214+
215+
# 第 1 轮:启动会话,通过 JSON 事件流获取 thread_id
216+
TID=$(codex exec --json "分析数据库模块" 2>/dev/null \
217+
| jq -r 'select(.type=="thread.started") | .thread_id')
218+
219+
# 第 2 轮:通过 thread_id 恢复会话(注意 resume 是 exec 的子命令)
220+
codex exec resume "$TID" "添加连接池"
221+
222+
# 第 3 轮:继续同一个会话
223+
codex exec resume "$TID" "补充单元测试"
224+
225+
# 快捷方式:恢复最近一次会话
226+
codex exec resume --last "继续上次的任务"
194227
```
195228

196229
### OpenCode
@@ -211,8 +244,27 @@ opencode run --format json "列出所有 API 端点"
211244
# 附加文件到 prompt
212245
opencode run --file src/auth.ts "审查这个文件的安全性"
213246

214-
# 继续上一次对话
215-
opencode run --continue "为刚才的修改补充单元测试"
247+
# ── 多轮对话(会话管理)──
248+
# OpenCode 不支持预指定 session ID,需从首轮 JSON 输出获取
249+
250+
# 第 1 轮:启动会话,通过 JSON 输出获取 sessionID
251+
SID=$(opencode run --format json "设计认证模块" | jq -r '.sessionID')
252+
253+
# 第 2 轮:通过 session ID 恢复会话
254+
opencode run -s "$SID" "添加 JWT 校验"
255+
256+
# 第 3 轮:继续同一个会话
257+
opencode run -s "$SID" "补充单元测试"
258+
259+
# 快捷方式:继续最近一次对话(无需 session ID)
260+
opencode run -c "为刚才的修改补充单元测试"
261+
262+
# 查看历史会话列表
263+
opencode session list
264+
opencode session list -n 10 # 只显示最近 10 个
265+
266+
# 从已有会话分叉
267+
opencode run -s "$SID" --fork "尝试另一种实现方案"
216268
```
217269

218270
### Gemini CLI
@@ -235,8 +287,28 @@ gemini -p --yolo "运行测试并汇报结果"
235287

236288
# 将项目所有文件纳入上下文
237289
gemini -p --all-files "分析这个项目的架构"
290+
291+
# ── 多轮对话(会话管理)──
292+
# Gemini CLI 不支持预指定 session ID,需从首轮 JSON 输出中提取。
293+
294+
# 第 1 轮:启动会话,通过 JSON 输出获取 session_id
295+
SID=$(gemini --output-format json -p "分析项目的整体架构" | jq -r '.session_id')
296+
297+
# 第 2 轮:通过 session_id 恢复会话
298+
gemini --resume "$SID" "针对刚才的分析,重构认证模块"
299+
300+
# 第 3 轮:继续同一个会话
301+
gemini --resume "$SID" "补充单元测试"
302+
303+
# 快捷方式:恢复最近一次会话(--resume 不带参数,仅适合非并发场景)
304+
gemini --resume "继续上次的对话"
305+
306+
# 查看当前项目所有会话
307+
gemini --list-sessions
238308
```
239309

310+
> **注意**:Gemini CLI 的会话按项目(工作目录)隔离,切换目录后 `--list-sessions` 显示的是不同项目的会话。`-s``--sandbox` 的缩写(安全沙箱),不是会话管理,会话管理使用 `-r` / `--resume`
311+
240312
### 快速对比
241313

242314
| 功能 | Claude Code | Codex | OpenCode | Gemini CLI |
@@ -246,6 +318,11 @@ gemini -p --all-files "分析这个项目的架构"
246318
| JSON 输出 | `--output-format json` | `--json` | `--format json` | `--output-format json` |
247319
| 指定模型 | `--model opus` | `-m o4-mini` | `-m provider/model` | `-m gemini-2.5-flash` |
248320
| 跳过确认 | `--dangerously-skip-permissions` | `--full-auto` || `--yolo` |
321+
| 预指定会话 ID | `--session-id <UUID>` ||||
322+
| 恢复指定会话 | `--resume <ID>` | `exec resume <ID>` | `-s <ID>` | `--resume <ID>` |
323+
| 继续最近会话 | `-c` | `exec resume --last` | `-c` | `--resume`(无参数) |
324+
| 查看会话列表 ||| `session list` | `--list-sessions` |
325+
| 分叉会话 | `--fork-session` || `--fork` ||
249326

250327
## 沙箱管理
251328

0 commit comments

Comments
 (0)