数据截至 (上游 commit e2d772072efa)
差异沙箱与 CLI 工作流(人审边界)
30 秒导读: Plandex 里 AI 写的代码不会直接落进你的项目。它先被攒在计划自己的 结果里(一个"累积 diff 沙箱"),你在客户端
diff里审、reject里挑掉不要的、apply时才真正写进磁盘;apply还能顺手跑命令、失败自动 debug;不满意再rewind时间旅行退回去。 这 一章讲的就是这条 plan → 沙箱 → 人 review → apply → rewind 的安全闭环。
本章属于 Plandex 讲解的一部分。diff 是怎么被服务端算出来的见 02-build-apply、 服务端怎么规划见 01-tell-loop;这里只讲改动进了沙箱之后,客户端如何审阅、 应用与回滚。全景与阅读顺序见 index。
1. 这是什么(零基础也能懂)
1.1 一句话定义
Plandex 的"差异沙箱"是指:AI 生成的所有文件改动,先被保存在这个计划(plan)自己的状态里,
和你真实的工作区文件完全隔离。只有你显式执行 plandex apply,这些改动才会被写进项目。
官方 README 把它叫做 "cumulative diff review sandbox"(累积式 diff 审阅沙箱),原话是:
"A cumulative diff review sandbox keeps AI-generated changes separate from your project files until they are ready to go."(
README.md:83)
1.2 解决什么问题 / 给谁用
设想你在终端里让 AI 帮你改一个大项目,横跨十几个文件。你最怕两件事:
- AI 改错却已经污染了你的工作区 —— 想退回去,却分不清哪些是它改的、哪些是你自己改的。
- 改动不可控地边生成边落盘 —— 一半对一半错,现场一片狼藉。
沙箱就是为了消掉这两个恐惧:AI 边聊边改,改动只在计划里累积;你的 git 工作区在你点头之前 一个字节都不动。给谁用?任何想让 AI 大规模改代码、又想保留"人在最后一道闸"的工程师。
1.3 用起来什么样
一次典型的人审闭环,命令行长这样:
pdx tell "把用户表加一个 email 字段并更新相关代码" # AI 规划+生成改动 → 进沙箱
pdx diff # 审:看沙箱里累积的 diff
pdx reject src/experimental.go # 挑掉不想要的那个文件的改动
pdx apply # 拍板:把剩下的改动写进项目(可跑命令、可自动提交)
pdx rewind 1 # 后悔了:时间旅行退回上一步
1.4 一句话直觉/类比
把它想成 Git 的暂存区(staging area),但更强。 普通暂存区只是"待提交";Plandex 沙箱是 "待落盘 + 可累积 + 可整段时间旅行"的暂存区——AI 往里堆改动,你在闸门口逐个放行或退回。
本节到此不碰代码。记住一句话:沙箱 = 改动的隔离缓冲区,apply 是唯一的落盘闸门。