图 01 / PenguinHarness · SeeCode

同 Project 共享,跨 Project 另授权

与源码架构版相同的已核验内容;点节点看完整解释,Path 看路径,◀ ▶ 逐步查看。

与源码架构版相同的已核验内容;点节点看完整解释,Path 看路径,◀ ▶ 逐步查看。PROJECT A 协作资源身份校验是成员另判成员非成员共享角色分权用户账号同一个人可加入多个 Project登录认证Bearer / CookieProject 授权owner / member拒绝访问非成员 404;owner-only 另判Project A林老师 owner · 周同学 memberProject B需另有 B 的成员资格共享资源Agents / Sessions / Benchmark项目设置owner 管敏感项图例外部输入组成模块Focal权限与策略其他范围状态与资源主要路径关联关系
用户不等于 Project。同 Project 成员共享 Agent、对话和评估资源;进入 B 要另有 B 的成员资格,管理员也不自动绕过。成员可做许多内容操作,但不等于所有凭据可见;这是应用层授权,不是文件系统天然硬隔离。

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-L31
people — 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-L157
login — 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-L95
acl — 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-L44
acl — 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-L186
denied — 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-L62
project-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-L186
project-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-L44
project-b — packages/core/src/state/paths.ts:18 · 固定源码:https://github.com/Prism-Shadow/penguin-harness/blob/7e97d50b6f6aa48d635aacb681fa43511e3e57bc/packages/core/src/state/paths.ts#L18-L45
resources — 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-L508
resources — 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-L186
config — 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-L186
config — 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-L344
scope — 版本与边界 · 上半图是用户与资源授权;下半图是 Session 的实际执行边界。两层不能混为一谈。 同 Project 成员协作共享;进入其他 Project 要另有成员资格。工具文件/网络边界再由会话沙箱实施。 沙箱是可配置的宿主执行约束,不是每个 Project 自动拥有独立容器。当前快照的干净设置可为关闭;跨 Project 的文件读取还取决于 Workspace、maskPaths、宿主权限与有效沙箱配置。 SeeCode 对比沿用上一版内容与固定提交;不是实际运行 Penguin。