会话管理
本页面介绍 MANYOYO 的会话管理机制,包括会话创建、恢复、持久化和最佳实践。
提示:运行配置统一写在
~/.manyoyo/manyoyo.json的runs.<name>,envFile使用绝对路径,env使用对象(map)。
什么是会话
在 MANYOYO 中,会话(Session) 指的是:
- 一个运行的容器实例
- 容器内 AI 智能体的工作状态
- 智能体的对话历史和上下文
会话生命周期
创建 → 运行 → 暂停/退出 → 恢复 → 删除
↓ ↓ ↓ ↓ ↓
容器 AI工作 容器保留 继续工作 清理创建会话
自动命名会话
bash
# 自动生成容器名(基于时间戳)
manyoyo run -y c
# 生成名称如:my-0204-1430
# 查看容器名
manyoyo ps命名规则:my-{月日}-{时分}
- 例如:
my-0204-1430表示 2月4日 14:30 创建
命名会话
bash
# 创建命名会话(推荐)
manyoyo run -n my-project -y c
# 优势:
# - 容易记忆
# - 便于管理多个项目
# - 配置文件可以固定名称使用配置文件创建会话
bash
# 方式 1:运行配置(推荐)
cat > ~/.manyoyo/manyoyo.json << 'EOF'
{
"runs": {
"project-a": {
"containerName": "my-project-a",
"envFile": ["/abs/path/anthropic_claudecode.env"],
"yolo": "c"
}
}
}
EOF
manyoyo run -r project-a
# 方式 2:带项目路径的运行配置
cat > ~/.manyoyo/manyoyo.json << 'EOF'
{
"runs": {
"project-b": {
"containerName": "my-myproject",
"hostPath": "/abs/path/myproject",
"containerPath": "/abs/path/myproject",
"envFile": ["/abs/path/anthropic_claudecode.env"],
"yolo": "c"
}
}
}
EOF
manyoyo run -r project-b会话恢复
退出提示
当你退出容器会话后,系统会提示:
容器退出,请选择操作:
y - 保持容器在后台运行(默认)
n - 删除容器
1 - 使用首次命令重新进入
r - 恢复首次命令会话(仅 Agent 命令可用)
x - 执行新命令
i - 进入交互式 shell选项说明
y - 保持运行(推荐)
bash
# 选择 'y' 后,容器在后台运行
# 稍后可以恢复会话
# 恢复 Claude Code 会话
manyoyo run -n my-project -- -c
# 恢复 Codex 会话
manyoyo run -n my-project -- resume --last
# 恢复 Gemini 会话
manyoyo run -n my-project -- -r适用场景:
- 临时离开,稍后继续工作
- 需要保留 AI 对话历史
- 测试未完成,需要继续
n - 删除容器
bash
# 选择 'n' 后,容器被删除
# 所有数据和历史丢失适用场景:
- 一次性测试
- 不需要保留历史
- 想要释放资源
1 - 重新进入
bash
# 选择 '1' 后,使用启动时的命令重新进入
# 例如,如果启动时是 'manyoyo run -y c'
# 则重新运行 'claude --dangerously-skip-permissions'适用场景:
- AI 意外退出
- 需要重启 AI 工具
- 清空当前会话但保留容器
r - 恢复首次命令会话
bash
# 选择 'r' 后,在首次命令后自动追加 Agent 恢复参数
# 例如:
# Claude -> -r
# Codex -> resume适用场景:
- 首次命令就是 Agent CLI
- 希望快速走恢复流程而不是手动输入
x - 执行新命令
bash
# 选择 'x' 后,可以执行任意命令
# 提示输入命令
# 例如:
x
请输入要执行的命令: npm test适用场景:
- 需要运行测试
- 检查 AI 做的修改
- 执行自定义脚本
i - 进入 shell
bash
# 选择 'i' 后,进入 /bin/bash
# 可以:
$ ls -la # 查看文件
$ git status # 检查代码
$ npm test # 运行测试
$ claude --version # 检查工具版本适用场景:
- 需要手动检查
- 调试问题
- 运行多个命令
智能体特定的恢复命令
不同 AI CLI 工具有不同的恢复方式:
Claude Code
bash
# 恢复最后会话
manyoyo run -n my-session -- -c
manyoyo run -n my-session -- --continue
# 查看可用会话
manyoyo run -n my-session -x "claude --list-sessions"Codex
bash
# 恢复最后会话
manyoyo run -n my-session -- resume --last
# 恢复特定会话
manyoyo run -n my-session -- resume <session-id>
# 列出所有会话
manyoyo run -n my-session -- listGemini
bash
# 恢复会话
manyoyo run -n my-session -- -r
manyoyo run -n my-session -- --resume
# 清除会话历史
manyoyo run -n my-session -- --clearOpenCode
bash
# 恢复会话
manyoyo run -n my-session -- -c
manyoyo run -n my-session -- --continue会话持久化
容器持久化
容器状态由 Docker/Podman 管理:
bash
# 查看所有会话(包括停止的)
manyoyo ps
docker ps -a | grep my
# 容器状态
docker ps -a --format "table {{.Names}}\t{{.Status}}"数据持久化
1. 工作目录挂载
bash
# 默认挂载当前目录
manyoyo run -y c # 当前目录自动挂载
# 指定工作目录
manyoyo run --hp /path/to/project -y c
# 代码修改会保存在宿主机2. 额外数据挂载
bash
# 挂载数据目录
manyoyo run -v "/data:/workspace/data" -y c
# 挂载配置文件
manyoyo run -v "~/.gitconfig:/root/.gitconfig:ro" -y c3. 使用 volumes(推荐)
bash
# 创建持久化卷
docker volume create myproject-data
# 挂载卷
manyoyo run -v "myproject-data:/workspace/data" -y c
# 数据在容器删除后仍然保留AI 对话历史持久化
不同 AI 工具的历史存储位置:
Claude Code
bash
# 历史存储在容器内
# 位置:~/.claude/sessions/
# 挂载会话目录(可选)
manyoyo run -v "~/.claude:/root/.claude" -y cCodex
bash
# 历史存储在容器内
# 位置:~/.codex/sessions/
# 挂载会话目录
manyoyo run -v "~/.codex:/root/.codex" -y c多会话管理
并行会话
bash
# 项目 A
manyoyo run -n project-a --hp ~/projects/a -y c
# 项目 B
manyoyo run -n project-b --hp ~/projects/b -y c
# 项目 C
manyoyo run -n project-c --hp ~/projects/c -y c
# 查看所有会话
manyoyo ps会话切换
bash
# 在项目 A 中工作
manyoyo run -n project-a -- -c
# 切换到项目 B
manyoyo run -n project-b -- -c
# 切换到项目 C
manyoyo run -n project-c -- -c会话隔离
每个会话完全独立:
- 独立的文件系统
- 独立的环境变量
- 独立的 AI 对话历史
- 独立的进程空间
会话清理
手动清理
bash
# 删除单个会话
manyoyo rm my-session
manyoyo rm my-session
# 或使用 Docker 命令
docker rm -f my-session自动清理
bash
# 一次性会话(退出后自动删除)
manyoyo run -n temp --rm-on-exit -y c
# 适用场景:
# - 临时测试
# - 快速验证
# - 不需要保留历史批量清理
bash
# 清理所有停止的 MANYOYO 容器
docker ps -a | grep my | grep Exited | awk '{print $1}' | xargs docker rm
# 清理所有 MANYOYO 容器(危险!)
docker ps -a | grep my | awk '{print $1}' | xargs docker rm -f会话监控
查看会话状态
bash
# 列出所有 MANYOYO 会话
manyoyo ps
# 详细状态
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
# 资源使用情况
docker stats $(docker ps -q --filter "name=my")查看会话日志
bash
# 查看容器日志
docker logs my-session
# 实时日志
docker logs -f my-session
# 最后 100 行
docker logs --tail 100 my-session进入运行中的会话
bash
# 进入 shell 检查
manyoyo run -n my-session -x /bin/bash
# 查看进程
$ ps aux
# 查看文件
$ ls -la
# 查看环境变量
$ env | grep ANTHROPIC最佳实践
1. 命名规范
bash
# 按项目命名
my-webapp
my-api
my-mobile
# 按功能命名
my-dev
my-test
my-debug
# 按时间命名(自动)
my-0204-14302. 配置文件管理
bash
# 为每个项目创建配置
~/.manyoyo/manyoyo.json
└── runs
├── webapp
├── api
├── mobile
└── debug
# 快速启动
manyoyo run -r webapp
manyoyo run -r api
manyoyo run -r mobile3. 数据备份
bash
# 导出容器配置
docker inspect my-session > my-session.json
# 备份挂载的数据
tar -czf backup.tar.gz ~/projects/myproject
# 备份 AI 历史(可选)
docker cp my-session:/root/.claude ./claude-backup4. 定期清理
bash
# 每周清理脚本
cat > ~/cleanup-manyoyo.sh << 'EOF'
#!/bin/bash
# 清理超过 7 天的停止容器
docker ps -a --filter "name=my" --filter "status=exited" \
--format "{{.ID}} {{.CreatedAt}}" | \
awk '{if ($2 < systime() - 604800) print $1}' | \
xargs -r docker rm
# 清理悬空镜像
docker image prune -f
EOF
chmod +x ~/cleanup-manyoyo.sh5. 会话模板
bash
# 创建会话模板
cat > ~/.manyoyo/manyoyo.json << 'EOF'
{
"runs": {
"template": {
"containerName": "my-template",
"envFile": ["/abs/path/base.env", "/abs/path/secrets.env"],
"volumes": [
"~/.ssh:/root/.ssh:ro",
"~/.gitconfig:/root/.gitconfig:ro"
],
"env": {
"TZ": "Asia/Shanghai"
}
}
}
}
EOF
# 基于模板创建新会话
manyoyo run -r template
# 复制 runs.template 为 runs.newproject 并修改 containerName高级技巧
会话快照
bash
# 提交容器为镜像(保存当前状态)
docker commit my-session my-session:snapshot-$(date +%Y%m%d)
# 从快照创建新会话
docker run -it my-session:snapshot-20240204会话导出/导入
bash
# 导出会话
docker export my-session > my-session.tar
# 导入到其他机器
cat my-session.tar | docker import - my-session:imported会话共享
bash
# 多人协作(同一容器)
# 人员 A 创建会话
manyoyo run -n shared-session -y c
# 人员 B 进入相同会话
manyoyo run -n shared-session -x /bin/bash
# 注意:不推荐多人同时使用 AI故障排查
会话无法恢复
问题:提示容器不存在
解决方案:
bash
# 检查容器是否存在
manyoyo ps
docker ps -a | grep my-session
# 如果不存在,创建新会话
manyoyo run -n my-session -y cAI 历史丢失
问题:恢复会话后,AI 不记得之前的对话
解决方案:
bash
# 检查容器是否是新创建的
docker ps -a --format "{{.Names}}\t{{.CreatedAt}}"
# 挂载会话目录(下次创建时)
manyoyo run -v "~/.claude:/root/.claude" -n my-session -y c容器无法启动
问题:会话启动失败
解决方案:
bash
# 查看容器日志
docker logs my-session
# 删除并重新创建
manyoyo rm my-session
manyoyo run -n my-session -y c与 Skills Marketplace 集成
如果安装了 Skills Marketplace,可以获得更强大的会话管理功能:
bash
# 列出所有会话(包括云端)
claude --list-sessions
# 恢复云端会话
claude --resume-session <session-id>
# 同步会话到云端
claude --sync-sessions