图 02 / PenguinHarness · SeeCode
Session 沙箱管工具执行边界
与源码架构版相同的已核验内容;点节点看完整解释,Path 看路径,◀ ▶ 逐步查看。
Sources (17)
session —
packages/server/src/services/workspace-guard.ts:4 · Workspace 是会话选定的实际宿主目录,并不被 workspace-guard 强制限定到 Project 目录。会话自己的 scratchpad 是运行产物目录;它们与应用层 Project 资源归属要分开。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/services/workspace-guard.ts#L4-L40session —
packages/server/src/sandbox/service.ts:237 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/sandbox/service.ts#L237-L250settings —
packages/server/src/services/session-service.ts:101 · 新会话继承服务器设置并保存沙箱策略快照;子 Agent 会话使用顶层会话策略。非管理员的文件/网络级别不得超过服务器 ceiling,但这不是 Project/Agent/Session 三层独立策略取交集。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/services/session-service.ts#L101-L144settings —
packages/server/src/runtime/session-manager.ts:2756 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/runtime/session-manager.ts#L2756-L2767settings —
packages/server/src/services/sandbox-ceiling.ts:11 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/services/sandbox-ceiling.ts#L11-L38tools —
packages/server/src/sandbox/service.ts:224 · exec/Hooks 的受约束 spawn 使用会话 confiner。read_file/write_file/edit_file 的文件操作通过 Session FsPort;受限时用沙箱 helper,否则用宿主进程权限。不是整个 Server 和所有插件都装进一个沙箱。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/sandbox/service.ts#L224-L268tools —
packages/core/src/environment/tools/write-file.ts:164 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/core/src/environment/tools/write-file.ts#L164-L174tools —
packages/core/src/environment/tools/read-file.ts:431 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/core/src/environment/tools/read-file.ts#L431-L440backend —
packages/server/src/sandbox/service.ts:272 · 按请求的文件、网络、mask 等能力选择已挂载且能完整实施的 backend;无匹配者拒绝执行,不静默降级。推荐映射不等于后端已安装或实际可用。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/sandbox/service.ts#L272-L289backend —
packages/server/src/sandbox/settings-status.ts:22 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/sandbox/settings-status.ts#L22-L34full —
packages/server/src/sandbox/service.ts:227 · Full access 且无额外网络/mask 限制会原样 spawn。若仍要求断网或路径 mask,则依然必须通过能实施那些维度的 backend。审批弹窗不是 OS 沙箱。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/sandbox/service.ts#L227-L233full —
packages/server/src/sandbox/settings-policy.ts:122 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/sandbox/settings-policy.ts#L122-L134write-roots —
packages/server/src/sandbox/service.ts:234 · workspace-write 给当前 Workspace、该会话 scratchpad 与默认可写 temp 写权限;改变某条命令的 cwd 不会扩大可写根。read-only 仍可能允许 temp,因此不能解释为绝对零写入。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/sandbox/service.ts#L234-L256masks —
packages/server/src/sandbox/service.ts:245 · maskPaths 限制指定路径读取/写入;网络等级另行配置。所核查 confiner 直接使用策略中给定的 maskPaths,不能画成“Project ACL 自动转换为所有其他 Project 的文件遮罩”。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/sandbox/service.ts#L245-L256masks —
plugins/sandbox-seatbelt/src/index.ts:168 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/plugins/sandbox-seatbelt/src/index.ts#L168-L172masks —
plugins/sandbox-bwrap/src/index.ts:161 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/plugins/sandbox-bwrap/src/index.ts#L161-L170scope —
版本与边界 · 上半图是用户与资源授权;下半图是 Session 的实际执行边界。两层不能混为一谈。
同 Project 成员协作共享;进入其他 Project 要另有成员资格。工具文件/网络边界再由会话沙箱实施。
沙箱是可配置的宿主执行约束,不是每个 Project 自动拥有独立容器。当前快照的干净设置可为关闭;跨 Project 的文件读取还取决于 Workspace、maskPaths、宿主权限与有效沙箱配置。
SeeCode 对比沿用上一版内容与固定提交;不是实际运行 Penguin。