图 01 / PenguinHarness · SeeCode
同 Project 共享,跨 Project 另授权
与源码架构版相同的已核验内容;点节点看完整解释,Path 看路径,◀ ▶ 逐步查看。
Sources (14)
people —
packages/server/src/services/project-access.ts:26 · 用户是授权主体,不等于 Project 或一个独立虚拟机。同一个用户可以拥有/加入多个 Project。图中人物和项目名为教学示例。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/services/project-access.ts#L26-L31people —
packages/docs/content/web-app.zh.md:147 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/docs/content/web-app.zh.md#L147-L157login —
packages/server/src/auth/middleware.ts:67 · 先验证请求身份;认证失败返回 401。图中只说明认证启用的 Server/Web 多用户路径,不猜测认证关闭时的入口行为。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/auth/middleware.ts#L67-L95acl —
packages/server/src/services/project-access.ts:26 · 只按目标 Project 的 owner/member 判定访问资格。可以加入其他 Project,但不能凭另一个 Project 的资格越过去。管理员也不自动绕过此成员检查。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/services/project-access.ts#L26-L44acl —
packages/docs/content/web-app.zh.md:177 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/docs/content/web-app.zh.md#L177-L186denied —
packages/server/src/services/project-access.ts:34 · 统一访问检查把不存在与无资格合并为 404 project_not_found;已入项目的 member 做 owner-only 操作则为 403 owner_required。这是应用层检查,不是宿主文件系统的天然隔离。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/services/project-access.ts#L34-L62project-a —
packages/docs/content/web-app.zh.md:147 · 两人是同一 Project 的协作成员,共用这一 Project 的 Agents、Sessions 与评估资源;不是每人各自一份私人 Agent。项目级敏感配置还区分 owner/member。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/docs/content/web-app.zh.md#L147-L186project-b —
packages/server/src/services/project-access.ts:26 · Project B 是另一协作与授权容器。A 的成员不自动获得 B 的资格;一个用户被加入 B 后才可正常进入。Project 数据路径分开,并不单凭路径就构成物理安全隔离。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/services/project-access.ts#L26-L44project-b —
packages/core/src/state/paths.ts:18 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/core/src/state/paths.ts#L18-L45resources —
packages/server/src/services/session-service.ts:489 · Session 列表按 projectId/agentId 取记录,不按创建者用户筛选,所以同 Project 资源模型是协作共享。此处不是对所有 API 字段、凭据或文件读取权限的穷举。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/services/session-service.ts#L489-L508resources —
packages/docs/content/web-app.zh.md:147 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/docs/content/web-app.zh.md#L147-L186config —
packages/docs/content/web-app.zh.md:177 · Project 管理自己的成员、模型与相关资源。普通 member 能创建 Agent/对话及进行许多内容操作,但不等于取得所有模型密钥或 owner-only 设置权限。
固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/docs/content/web-app.zh.md#L177-L186config —
packages/server/src/services/project-service.ts:323 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/server/src/services/project-service.ts#L323-L344scope —
版本与边界 · 上半图是用户与资源授权;下半图是 Session 的实际执行边界。两层不能混为一谈。
同 Project 成员协作共享;进入其他 Project 要另有成员资格。工具文件/网络边界再由会话沙箱实施。
沙箱是可配置的宿主执行约束,不是每个 Project 自动拥有独立容器。当前快照的干净设置可为关闭;跨 Project 的文件读取还取决于 Workspace、maskPaths、宿主权限与有效沙箱配置。
SeeCode 对比沿用上一版内容与固定提交;不是实际运行 Penguin。