# 支持范围与安全边界 目标是事故减损:用户已给予高权限,让 Agent 在无人值守时持续工作,插件在能观察的操作前尽量留住可恢复副本。正常路径不新增确认,不把所有脚本、安装或构建封禁。 ## 实际机制 - DSH `tools/pre-execute` 完成命令分析与旧字节快照;`tools.guard` 同步核验同次执行和参数的凭据。两者同步注册,存储初始化在检查时等待。 - 原生 write/edit 以及明确 str_replace_editor 目标会检查路径、父级 junction/symlink、硬链接和 64 MiB 上限。新文件无旧版本可存。 - 原生 pwsh 的已识别写入调用使用 PowerShell AST **只解析**文本;按 session cwd / shell workdir 解析字面量、有限简单变量及目录目标。不会执行表达式来猜路径。 - 常见不可逆删除、破坏性 Git/镜像/截断等命令被拒绝。分类是有限模式与语法分析,不是所有命令的语义证明。插件不自动把删除改写为移动。 - 快照对象 SHA-256 校验;默认独占创建恢复文件;原地恢复先保留当前快照和唯一 before-restore 文件。 - 回收事务保留内容树哈希、manifest 修订与索引;冲突保留两边,中断恢复可根据实际位置续接。Windows 进程锁在进程退出后释放。 - 原生恢复工具仅在当前 policy 明确为 danger-full-access 时修改文件;受限或缺失 policy 时拒绝。普通 DSH 文件 observation、审批和 sandbox 继续由宿主管理。 ## 不可以依赖的情况 | 情况 | 边界 | |---|---| | 任意脚本、npm lifecycle、子进程内部 | 不能看到其中所有文件写入/删除;允许安装与运行脚本不代表已为其输出做快照 | | PTC | 经过 registry 的原生工具走相同检查;直接 fs API、任意代码内部不在覆盖内 | | 持久 shell、交互 stdin | 跨调用 cwd、变量和后续输入不由插件持续追踪;首版使用新进程 pwsh | | MCP、浏览器、Office、数据库、远程操作 | 不提供其状态备份或事务恢复;命令命中模式的拒绝不等于支持这些系统 | | 大文件、链接、动态目标 | 识别出的超大覆盖、歧义路径、链接会拒绝;未知工具中的同类写入可能不可见 | | UNC / 网络盘 / 非本地文件系统 | 不支持;可识别 UNC 修改直接拒绝。映射网络盘未验收,不应使用 | | 插件未加载、被卸载、工具重命名、宿主 API 变化 | 无法用一个未运行的 guard 保护操作。必须在每个实际入口检查并运行 canary | | 其他插件直接写磁盘,或在 guard 后改动/替换执行实现 | 不提供宿主内存或进程强制隔离;monotonic guard 仅保护已测试的分发阶段 | | 并发外部写入、同权限恶意程序 | 有有限变化检测,无强制排他;不是抵抗同权限对手的边界 | | 断电、磁盘丢失、所有满盘状态 | 不保证事务原子性或灾难恢复;仍需要独立备份 | | ACL、ADS、时间戳等完整元数据 | 文件快照保证所校验的字节,不是完整文件系统镜像;回收哈希不覆盖全部 ACL/ADS | 文件和快照未加密。同机其他高权限进程仍可读写。存储根初始化会检查标记、链接并设置私有 DACL;缓存后的 ACL 被外部改动、异常管理员策略和同权限竞态不属于强制保护。 拒绝已识别的危险操作和保存可恢复版本,不能推导为“任何误删都能恢复”。永久删除若绕过观察范围且没有其他备份,本插件无法凭空找回。 ## 数据保留 无 purge、定时清理、总容量上限或后台守护。`doctor` 显示可用空间,用户仍应关注盘容量。不要手工分开删除 manifest、索引或内容对象;首版不提供保留策略自动化。卸载保留全部库、审计和任务目录。移动或备份恢复库应保留原路径结构及索引,并验证还原后能读取;首版不承诺跨机器迁移。