核心用法
persistent-code-terminal 是一个专为 AI 编程设计的 tmux 会话管理框架,解决传统终端在 AI 辅助编码中的状态丢失问题。核心遵循 start → send → read → decide 四步模型:
1. start.sh:创建或附加到 <project-name>-code-session 会话
2. send.sh:发送单条命令,支持 --timeout、--phase 等参数,自动追加 __PCT_EXIT_CODE__N 哨兵标记
3. read.sh:解析哨兵,更新 .pct-state.json 状态文件
4. status/summary.sh:快速获取执行状态与最近 120 行输出摘要
Codex 优先工作流通过 codex-exec.sh 实现,封装 codex exec --full-auto --sandbox workspace-write,支持指令级自然语言驱动。
智能路由系统
- 自动触发:
autoCodeRouting配置启用后,通过persistent-code-terminal-route.sh进行意图识别(code/fix/test/build/commit/push 等) - 多项目支持:单条消息可按
;或换行分割多项目任务,串行执行 - 快捷指令:消息以
codex开头时,自动路由至 codex-exec 流程
显著优点
- 会话持久化:detach/reattach 不丢输出,长时任务(dev server、watch mode)持续运行
- 移动端/SSH 友好:解决网络中断导致的状态丢失
- 结构化输出:
--json模式便于程序解析,.pct-state.json提供机器可读状态 - 安全过滤:内置 git 仓库检测、动作动词白名单、
不要执行,只分析绕过机制 - 依赖兜底:
doctor.sh自动诊断 tmux/codex 缺失问题
潜在局限
- tmux 强依赖:目标系统必须预装 tmux,Windows 原生环境需 WSL
- Codex CLI 生态绑定:最优体验需 OpenAI Codex CLI,其他 CLI 工具需自定义封装
- 沙箱限制:
--sandbox workspace-write虽提升安全,但可能限制某些系统级操作 - 串行执行瓶颈:多项目任务按序执行,无内置并行调度
- 状态文件污染:
.pct-state.json位于项目目录,可能误提交(建议加入.gitignore)
适用人群
- 远程服务器 / 云开发环境开发者
- 移动端 SSH 场景下的 AI 辅助编程用户
- 需要长时间保持开发服务(热重载、测试 watcher)运行的团队
- 追求「自然语言 → 代码变更 → 提交推送」全自动链路的技术早期采用者
常规风险
| 风险类型 | 说明 | 缓解措施 |
|---------|------|---------|
| 强制推送 | 默认禁止 `git push --force`,但用户显式指令可绕过 | 代码审查策略兜底 |
| 密钥泄露 | 终端输出可能捕获环境变量或凭据 | 敏感操作前检查 `env` 输出,使用 secret 管理工具 |
| 分支污染 | 直接推 main/master 需显式确认 | 团队级分支保护规则 |
| 无限循环 | `--max-retries 3` 限制自动重试,但复杂指令仍可能逻辑死循环 | 人工介入检查点 |
| tmux 会话堆积 | `list.sh` 可查看,但无自动清理机制 | 定期手动清理或 CI 策略补充 |