做法朴素但有效:复制一份、在副本里跑、用哈希对比原目录。「我看了一眼没变」不算证据,哈希才算。
第一步:先记下原目录的指纹
cd /path/to/project && find . -type f -not -path './.git/*' -exec sha256sum {} + | sort > /tmp/before.txt
wc -l /tmp/before.txt把行数记下来。行数就是文件数,后面要对比。
第二步:复制并换工作区
cp -r /path/to/project /tmp/project-trial cd /tmp/project-trial
在副本目录里启动会话。工作区设成副本时,workspace-write 模式允许写入的范围就是副本——这是它保护原目录的机制,不是靠模型自觉。
第三步:跑配方
用一条明确会写文件的:
在这个目录生成一份 FILES.md,列出所有 .md 文件及其第一行,不要改动任何已有文件。
第四步:验指纹
cd /path/to/project && find . -type f -not -path './.git/*' -exec sha256sum {} + | sort > /tmp/after.txt
diff /tmp/before.txt /tmp/after.txt && echo '原目录未被改动'没有输出加那句echo,才算证明。有diff输出,就是它真的动了原目录——这时候问题不是「模型不听话」,而是工作区设置错了。
第五步:看副本里到底写了什么
cd /tmp/project-trial && git status --short 2>/dev/null || find . -newer /tmp/before.txt -type f | head -20
副本里有git就用git,没有就按修改时间找。这一步产出的是「它动了哪些文件」的清单,比一句「已完成」有用得多。
跑完记得删副本。副本目录不在你的备份策略里,留着只会占空间。