跳到正文
MyDSH我的 DSH 实战笔记
English
独立维护,非DeepSeek官方;与mydsh.dev等其他MyDSH站点无关联。

首页/模型、权限与安全/工作区隔离与备份

在副本目录跑配方,确认原目录一个字节没变

配方会改文件,但你不能拿正在用的项目试。或者你说不清它到底动了哪些文件。

已核验版本与环境核验日期2026-11-14
宿主版本
0.1.2-alpha.5
依赖
workspace-write沙箱模式
核验日期
2026-11-14

可复制指令

find . -type f -not -path './.git/*' -exec sha256sum {} + | sort > /tmp/before.txt

做法朴素但有效:复制一份、在副本里跑、用哈希对比原目录。「我看了一眼没变」不算证据,哈希才算。

第一步:先记下原目录的指纹

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,没有就按修改时间找。这一步产出的是「它动了哪些文件」的清单,比一句「已完成」有用得多。

跑完记得删副本。副本目录不在你的备份策略里,留着只会占空间。

怎么算跑通

照着逐条对,全过才算完成。有一条没过,先解决它再往下。

  • before/after两份指纹diff无输出
  • 副本里确实出现了新产物
  • 能列出它动了哪些文件

会失败在哪

现象 / 原因 / 怎么办,按实际踩到的顺序写。

现象原因怎么办
diff有输出,原目录被改了会话的工作区设成了原目录,不是副本重启会话并把工作区指到副本;先按备份恢复原目录
副本里也没有产物沙箱是read-only,或指令没让它真的写确认模式是workspace-write,检查指令是否明确要求生成文件

来源

标「已核验」的,来自本站实跑;标「公开资料整理」的,逐条附出处。