让 Pi 新建任务直接使用项目技能 - #2482
Conversation
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
|
| Filename | Overview |
|---|---|
| apps/desktop/src/main/maker-host/pi-project-skill-admission-resolver.ts | 新增 Desktop 项目身份解析、containment 扫描、双次稳定性复核及不可变 skills-only admission snapshot。 |
| apps/desktop/src/main/maker-host/index.ts | 将 Desktop resolver 注入 Pi agent,保持 admission authority 由 host 持有。 |
| apps/desktop/src/main/maker-host/pi-host.ts | 扩展 Pi agent 构造选项并透传项目 trust resolver。 |
| packages/maker-core/src/agents/pi/project-resource-assembly.ts | 新增批准校验、完整目录指纹、抗竞态复制、隔离 staging 和运行时 provenance reconciliation。 |
| packages/maker-core/src/agents/pi/project-trust.ts | 新增 canonical project identity、approval scope 和 skills eligibility 的纯函数边界。 |
| packages/maker-core/src/agents/pi/index.ts | Pi 启动固定关闭隐式 project trust/extensions,仅显式装载 Cindy extensions 和已 staging 的 skills。 |
| packages/maker-core/src/agents/pi/cindy-subagent-source.ts | 子代理启动同样固定禁用隐式 approval/extensions,仅回装 Cindy 权限桥。 |
| packages/maker-core/src/types/pi-project-trust.ts | 定义 host-owned 项目身份、approval、发现证据及启动决策契约。 |
| packages/maker-core/src/types/pi-runtime-capabilities.ts | 扩展运行时能力清单以报告项目资源 admission、加载数量和诊断原因。 |
Sequence Diagram
sequenceDiagram
participant Host as Desktop Host
participant Resolver as Admission Resolver
participant Assembly as maker-core Assembly
participant Stage as Session configHome
participant Pi as Pi Runtime
Host->>Resolver: resolve identity + scan skills
Resolver->>Resolver: re-resolve identity + rescan
alt identity/evidence changed or remote
Resolver-->>Host: null (fail closed)
else stable and contained
Resolver-->>Host: immutable approval snapshot
Host->>Assembly: validate approval and containment
Assembly->>Stage: fingerprint and materialize skill trees
Assembly->>Stage: verify copied contents and publish atomically
alt any validation or copy failure
Assembly-->>Host: no launch skill paths
else staging succeeds
Host->>Pi: "--no-approve --no-extensions --skill <staged path>"
Pi-->>Host: get_commands runtime manifest
Host->>Assembly: reconcile exact temporary/local provenance
end
end
Reviews (1): Last reviewed commit: "fix(pi): auto-admit contained project sk..." | Re-trigger Greptile
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 53dbb91435
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
Signed-off-by: nana <823073145@qq.com>
当前状态
修复代码已推送到本 Draft PR,当前 head 为
ea210f6f。本 PR 尚未合并,用户当前安装的版本尚未获得此修复;仍需等待 CI、评审以及前置 #2295 的处理。Refs #1991
Fixes #2403
Refs #2465
Depends on #2295
这次改了什么
摘要
修复 Electron 新建本地 Pi 项目任务时,项目 Skill 虽然能被发现、却无法在首条消息中真正执行的问题。
本 PR 保留 #2295 的 skills-only 安全装配:不启用 Pi
--approve,不读取项目 settings,不安装 packages,不执行 extensions。满足 containment 与 runtime provenance 校验的项目 Skill 会自动准入,不再要求用户经过确认窗或修改审批权限。在此基础上,本轮补齐了用户实际操作链路:
demo后,输入框、排队消息与历史气泡都保持现有/demoSkill 胶囊,不再显示为普通文本/skill:demo。/skill:demo只在 Main 构造最终 Agent 输入时投影;落库正文、auto-title 和 Ghost 拦截层均保留用户看到的 alias。变更类型
fix缺陷修复范围
--approve、项目 packages/extensions/settings 的启用。UI 变化
有交互变化但无新视觉组件:命令面板中符合条件的项目 Skill 从不可选变为可选;选中后复用现有 Skill 胶囊,输入框、排队行和历史气泡显示同一个
/name。沿用现有行样式、键盘导航、焦点与 Light/Dark token。docs/design-rules/DESIGN.md§4 Select & Dropdown、§10 双模式状态覆盖、§14.2 Focus Management、§14.3 Keyboard & IME。怎么验证的
自动验证
NODE_OPTIONS=--no-experimental-webstorage pnpm test:unit:最终 head 全部适用 workspace 通过;runner 383 passed / 1 skipped,Desktop、Mobile、Maker Core 等均通过。pnpm --filter desktop run --if-present typecheck:通过。pnpm check:i18n-glossary:通过。pnpm check:dco:通过,13 个普通提交均 signed-off,6 个 merge commit 按规则豁免。git diff --check origin/main...HEAD:通过。origin/main@4f274001,无合并冲突。手工验证
本轮未把“测试代码通过”表述成“已上线”。真实用户体验仍需在 PR 合并并由包含该提交的 Desktop 构建中验收。
未执行的验证
风险
风险分类
影响与回滚
--approve,不扩大工具审批权限,不启用项目 package、extension 或 settings;全局 Skill 行为保持。提交前检查