资讯动态

给 Agent 开工作区:OverlayFS 隔离到哪里,补丁怎样安全合回

发布时间:2026/10/25 6:02:56 来源:尧图企业网站定制
两个 Agent 同时修改同一个仓库问题不只是“最后谁覆盖谁”。一方可能读到另一方只写了一半的生成文件也可能把尚未审核的依赖变更带进自己的测试。给每个 Agent 一个路径只能改变命名不能自动建立隔离边界。Linux 的 OverlayFS 把只读下层和可写上层合成一个视图修改可能触发 copy-up删除还需要 whiteout、opaque directory 等语义。不能把上层目录当成普通新增文件集合直接复制回基线。内核文档隔离视图与合并权限是两件事我会固定基线提交让每个工作区有自己的 upper、work、merged。子进程、网络、凭证和宿主机权限仍要由执行环境另外限制。OverlayFS 不负责把恶意程序变成安全程序也不负责决定哪个 Agent 可以批准另一个 Agent 的补丁。合回时先把差异变成补丁再核对补丁所依赖的基线。如果主线文件在期间已经变化不能直接覆盖。即使两个补丁都能应用也需要重新测试组合结果修改函数接口与修改调用方测试各自单独通过并不代表合起来正确。一个不需要挂载权限的冲突例子下面用字符串字典表示文件内容用基线摘要做最小的乐观并发检查。它只表达“先确认读取版本再提交变更”的规则不实现文件系统挂载、重命名或目录删除。图里的两个上层分别产生补丁只有经过审查的补丁才进入合并步骤。图中 A 通过审核后构造新基线 v2B 被拒绝后停止原基线 v1 保持只读。审批是代码之外的流程例子只核对基线并应用给定补丁不提供权限审批。例子先完成全部基线核对再构造新的结果字典因此冲突不会造成部分写入。真实落盘仍需要临时文件、原子替换、失败恢复以及目录级语义不能把字典操作称为磁盘事务。import hashlib def digest(text): return hashlib.sha256(text.encode()).hexdigest() def plan_patch(base, edited): patch [] for name in sorted(set(base) | set(edited)): if base.get(name) edited.get(name): continue patch.append((name, digest(base[name]) if name in base else None, edited.get(name))) return patch def apply_patch(current, patch): for name, expected, content in patch: actual digest(current[name]) if name in current else None if actual ! expected: raise ValueError(baseline conflict: name) result dict(current) for name, expected, content in patch: if content is None: result.pop(name, None) else: result[name] content return result base {app.py: version1, obsolete.txt: old} edited {app.py: version2, new.txt: new} patch plan_patch(base, edited) merged apply_patch(base, patch) assert merged edited changed_main {**base, app.py: version3} try: apply_patch(changed_main, patch) except ValueError: pass else: raise AssertionError(conflict was ignored) assert changed_main[app.py] version3 print(add/change/delete planned; stale baseline rejected)例子跑通以后还要验证什么这段代码已在本地 macOS、CPython 3.9.6 下运行实际输出为add/change/delete planned; stale baseline rejected。它验证的是例子中的数据约束与分支不包含线上服务的吞吐或延迟测量。没有执行 mount、umount、rmtree也没有验证 OverlayFS 的延迟或磁盘节省。真实方案必须在实际内核与文件系统上验证 whiteout、符号链接、opaque directory、进程退出和未关闭文件路径边界与权限检查也不能由本文的简化补丁格式替代。延伸阅读Overlay Filesystem合并视图、copy-up 与删除语义的官方依据。Python 10 月 21 日安全发行说明环境镜像还要记录依赖与证书链更新隔离目录不能替代运行时维护。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑