完善 DirectProject 客户端扩展导入方案
新增客户端 Skill 与 MCP 扩展导入技术方案。 记录独立扩展拆分、统一原生命名、默认启用和 Plugin 边界。 同步文档总览、文档地图和长期决策记录。
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
## AI 游戏创作与 Agent Runtime
|
||||
|
||||
- [AI 游戏创作智能体 App 实施计划](./technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md):当前 DirectProject、受控语义工具、UI workflow、资源和运行时合同。
|
||||
- [DirectProject 客户端 Skill 与 MCP 扩展导入方案](./technical/【技术方案】DirectProject客户端Skill与MCP扩展导入方案-2026-08-31.md):客户端扩展导入、按独立 Skill/MCP 拆分、命名、启用和启动时注入边界。
|
||||
- [项目开发工作台 PRD](./prd/【AI游戏创作】项目开发工作台PRD-2026-07-20.md):当前工作台页面和验收边界。
|
||||
- [立项策划 Agent(Fast GDD)](<./technical/【技术方案】立项策划Agent(Fast GDD)-2026-08-10.md>):当前策划入口、审批和恢复合同。
|
||||
- [GameAgent 资源自由画板与快速编辑](./technical/【技术方案】GameAgent资源自由画板与快速编辑-2026-08-20.md)
|
||||
|
||||
@@ -15,6 +15,17 @@
|
||||
- 关联文档:相关 PRD、技术文档、提交或 Issue
|
||||
```
|
||||
|
||||
## 2026-08-31 DirectProject 客户端扩展按独立 Skill/MCP 导入
|
||||
|
||||
- 背景:DirectProject 需要使用用户在 AGC 客户端导入的市面原生 Skill、MCP 和 Plugin 内容,但第三方内容不应直接安装到运行时 Codex,也不应要求用户转换为 AGC 自定义格式。
|
||||
- 决策:客户端提供一个全局“扩展”入口,统一接受文件、目录、zip 和标准 Plugin;目录、zip、Plugin 只是导入来源,发现出的每个 Skill 和每个 MCP Server 分别成为独立扩展项,分别列表、重命名、启用、禁用和删除。已识别项导入后默认启用,下次 DirectProject Codex 启动时按原生 Skill root 和 MCP 配置注入。
|
||||
- 命名:客户端列表名称与 Codex 运行时名称使用同一个原生标识,不维护 display/runtime 两套名称;重复或同名项保留为新的独立项并自动追加 `-2`、`-3`。Skill 重命名只修改客户端运行时副本中的有效名称,原始导入内容不修改。
|
||||
- Plugin 边界:Plugin 只作为导入容器提取 Skill/MCP;当前 DirectProject 关闭的 hooks、apps、remote plugin 和完整 Plugin Runtime 不接入。单个可执行文件或脚本不提供手动指定为 MCP 入口的功能。
|
||||
- 信任边界:不审核第三方 Skill 文案、脚本、二进制、MCP tool 或网络行为;导入阶段不执行内容。客户端只做标准结构识别、必要配置解析和 zip staging 路径边界处理,且不向第三方扩展注入 AGC 凭据或内部路径。
|
||||
- 影响范围:AGC 客户端扩展设置 UI、客户端本地扩展存储、DirectProject Codex app-server 启动准备和 pool fingerprint;不新增 HTTP 服务、SpacetimeDB schema、公开 API 或独立 Plugin Runtime。
|
||||
- 验证方式:分三阶段验收:先验证导入拆分和完整列表,再验证 Skill 运行时发现和重命名,最后验证 MCP 配置合并、Plugin 提取和失败隔离;只增加对应的定向测试、`npm run check:encoding` 和 `git diff --check`。
|
||||
- 关联文档:`docs/technical/【技术方案】DirectProject客户端Skill与MCP扩展导入方案-2026-08-31.md`、`apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx`、`apps/ai-game-creator-shell/src-tauri/src/agent/codex_app_server.rs`。
|
||||
|
||||
## 2026-08-30 批准 GDD 直接进入做游戏链路
|
||||
|
||||
- 背景:立项策划 GDD 批准后需要给用户一个进入做游戏的自然出口,产品决策改为点击按钮后直接开始建造。
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 文档地图与阅读索引
|
||||
|
||||
更新时间:`2026-08-25`
|
||||
更新时间:`2026-08-31`
|
||||
|
||||
## 阅读顺序
|
||||
|
||||
@@ -22,11 +22,12 @@
|
||||
AI 游戏创作 / DirectProject / UI workflow:
|
||||
|
||||
1. `docs/technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md`
|
||||
2. `docs/prd/【AI游戏创作】项目开发工作台PRD-2026-07-20.md`
|
||||
3. `docs/technical/【技术方案】立项策划Agent(Fast GDD)-2026-08-10.md`
|
||||
4. `docs/technical/【技术方案】GameAgent资源自由画板与快速编辑-2026-08-20.md`
|
||||
5. `docs/【技术方案】UI工作流资源桥接与Runtime执行-2026-08-24.md`
|
||||
6. UI 编辑器、宿主壳和当前测试专题文档
|
||||
2. `docs/technical/【技术方案】DirectProject客户端Skill与MCP扩展导入方案-2026-08-31.md`
|
||||
3. `docs/prd/【AI游戏创作】项目开发工作台PRD-2026-07-20.md`
|
||||
4. `docs/technical/【技术方案】立项策划Agent(Fast GDD)-2026-08-10.md`
|
||||
5. `docs/technical/【技术方案】GameAgent资源自由画板与快速编辑-2026-08-20.md`
|
||||
6. `docs/【技术方案】UI工作流资源桥接与Runtime执行-2026-08-24.md`
|
||||
7. UI 编辑器、宿主壳和当前测试专题文档
|
||||
|
||||
图片画布 / 媒体生成:
|
||||
|
||||
|
||||
@@ -0,0 +1,474 @@
|
||||
# DirectProject 客户端 Skill 与 MCP 扩展导入方案
|
||||
|
||||
更新时间:`2026-08-31`
|
||||
|
||||
## 1. 文档定位
|
||||
|
||||
本方案是 DirectProject 客户端第三方 Skill、MCP 和 Plugin 导入能力的当前实现依据。它描述客户端侧的导入、拆分、命名、启用和 DirectProject 启动注入边界,不改变 AGC 内置 Skill Pack、`agc_tools` MCP、项目文件工具和现有 Runtime 权威。
|
||||
|
||||
本方案只覆盖客户端安装和下一次 Codex 启动时接入。第三方扩展不是安装到全局运行时 Codex,也不要求用户把市面上的扩展重新打包为 AGC 自定义格式。
|
||||
|
||||
## 2. 一句话交付结果
|
||||
|
||||
客户端提供一个全局“扩展”入口,直接接受文件、目录、zip 和标准 Plugin;导入后把其中发现的每个 Skill 和每个 MCP Server 拆成独立扩展项,用户可以分别重命名、启用、禁用和删除;DirectProject 启动 Codex 时只注入已启用的独立项。
|
||||
|
||||
## 3. 已确定的产品边界
|
||||
|
||||
### 3.1 客户端安装、运行时注入
|
||||
|
||||
- 扩展内容保存在 AGC 客户端的扩展仓库。
|
||||
- 不把扩展永久安装到用户的全局 `CODEX_HOME`。
|
||||
- DirectProject 创建或复用 app-server 时,读取客户端当前已启用的扩展并生成本次运行的临时 Skill root 与 MCP 配置。
|
||||
- 导入、启用、禁用和重命名不热更新正在运行的 Codex;变更从下一次 DirectProject 启动生效。
|
||||
- 扩展默认对客户端内所有 DirectProject 生效,不做项目级启用映射。
|
||||
|
||||
### 3.2 用户信任和最小处理
|
||||
|
||||
用户自行负责第三方扩展的信任判断。客户端不审核 Skill 文案、脚本、二进制、MCP tool description、网络域名或扩展行为。
|
||||
|
||||
客户端只做导入流程正常运行所需的最小结构处理:
|
||||
|
||||
- 识别标准 Skill、MCP 和 Plugin 结构;
|
||||
- 读取必要的 TOML/JSON 配置;
|
||||
- 生成运行时名称和临时配置;
|
||||
- 解压时防止路径穿越到 staging 目录外。
|
||||
|
||||
导入阶段不执行脚本、不启动 MCP、不调用第三方网络服务。
|
||||
|
||||
即使不审核第三方行为,也不得向第三方扩展注入 AGC provider key、Codex 登录态、Cookie、bridge token、内部服务令牌或客户端内部路径。
|
||||
|
||||
### 3.3 明确不支持
|
||||
|
||||
- 单个 `.exe`、`.py`、`.js` 或其它可执行文件/脚本由用户手动指定为 MCP 入口;
|
||||
- 根据 README 或文件后缀猜测如何启动普通程序;
|
||||
- 完整 Codex Plugin Runtime;
|
||||
- Plugin hooks、apps、remote plugin 和依赖这些能力的运行时行为;
|
||||
- 自定义扩展 manifest、审核清单或自定义安装包格式;
|
||||
- Skill/MCP 行为安全扫描、脚本沙箱和网络白名单;
|
||||
- 项目级扩展配置;
|
||||
- 热更新、后台扩展服务、在线市场、版本历史、回滚和自动升级。
|
||||
|
||||
## 4. 导入与拆分模型
|
||||
|
||||
目录、zip 和 Plugin 是“导入来源”,不是管理对象。一个来源中识别出的每个 Skill 和每个 MCP Server 都独立成为客户端扩展项。
|
||||
|
||||
```text
|
||||
导入来源
|
||||
↓
|
||||
保存原始内容
|
||||
↓
|
||||
发现标准结构
|
||||
↓
|
||||
拆成独立 Skill/MCP 扩展项
|
||||
↓
|
||||
分别列表显示、命名、启用和删除
|
||||
```
|
||||
|
||||
### 4.1 Skill 发现
|
||||
|
||||
以下内容分别导入为独立 Skill:
|
||||
|
||||
- 根目录的 `SKILL.md`;
|
||||
- 标准 Skill root 中的每个 `*/SKILL.md`;
|
||||
- Plugin 中包含的标准 Skill 目录。
|
||||
|
||||
例如:
|
||||
|
||||
```text
|
||||
my-package/
|
||||
└── skills/
|
||||
├── art-skill/SKILL.md
|
||||
└── code-skill/SKILL.md
|
||||
```
|
||||
|
||||
导入结果是两个独立项:
|
||||
|
||||
```text
|
||||
art-skill
|
||||
code-skill
|
||||
```
|
||||
|
||||
### 4.2 MCP 发现
|
||||
|
||||
以下配置中的每个 Server 分别导入为独立 MCP 项:
|
||||
|
||||
- Codex 原生 `config.toml` 的 `[mcp_servers.<name>]`;
|
||||
- 兼容的 `.mcp.json` 顶层 `mcpServers.<name>`;
|
||||
- 标准 Plugin 中能够解析出的 MCP 配置。
|
||||
|
||||
例如一个配置包含:
|
||||
|
||||
```toml
|
||||
[mcp_servers.search]
|
||||
command = "..."
|
||||
|
||||
[mcp_servers.filesystem]
|
||||
command = "..."
|
||||
```
|
||||
|
||||
导入结果是两个独立项:
|
||||
|
||||
```text
|
||||
search
|
||||
filesystem
|
||||
```
|
||||
|
||||
`.mcp.json` 只作为兼容输入读取,不作为新的 AGC 配置格式;只支持能直接转换为 MCP Server 连接描述的字段,不为各客户端的私有扩展建立独立系统。
|
||||
|
||||
### 4.3 Plugin 处理
|
||||
|
||||
存在 `.codex-plugin/plugin.json` 时,将目录或 zip 识别为标准 Plugin 导入来源。
|
||||
|
||||
本期只提取其中可识别的 Skill 和 MCP,并分别创建独立扩展项:
|
||||
|
||||
```text
|
||||
Plugin
|
||||
├── Skill A → 独立 Skill 项
|
||||
├── Skill B → 独立 Skill 项
|
||||
└── MCP C → 独立 MCP 项
|
||||
```
|
||||
|
||||
Plugin 自身不生成父级列表项,也不提供 Plugin 级开关。hooks、apps、remote plugin 以及依赖完整 Plugin Runtime 的内容忽略;如果没有任何可支持的 Skill/MCP,则来源保留为未知内容。
|
||||
|
||||
### 4.4 未知输入
|
||||
|
||||
- 单个无关文件或二进制:保存为一个 `unknown` 项,不执行。
|
||||
- 完全无法发现标准内容的目录或 zip:保存一个 `unknown` 项。
|
||||
- 含有已识别 Skill/MCP 的来源中其它普通文件:不把每个普通文件都变成独立项,但保留原始来源用于溯源。
|
||||
|
||||
未知项可以展示和删除,但没有有效的启动入口。
|
||||
|
||||
## 5. 命名规则
|
||||
|
||||
### 5.1 一个名称同时用于 UI 和 Codex
|
||||
|
||||
每个独立 Skill/MCP 项使用一个有效名称:
|
||||
|
||||
```text
|
||||
name 当前名称,前端和 Codex 运行时使用
|
||||
original_name 原始名称,用于溯源,不随用户改名变化
|
||||
```
|
||||
|
||||
不维护 `display_name` 和 `runtime_name` 两套可见名称。
|
||||
|
||||
用户把 Skill 从 `art-skill` 改为 `pixel-art-skill` 后:
|
||||
|
||||
- 前端列表显示 `pixel-art-skill`;
|
||||
- Codex 的 Skill 列表也使用 `pixel-art-skill`;
|
||||
- 客户端只在运行时副本中修改 Skill 的有效名称;
|
||||
- 原始 `SKILL.md` 不修改。
|
||||
|
||||
MCP 重命名同理:客户端列表名称和运行时生成配置中的 Server key 使用同一个名称,原始 TOML/JSON 不修改。
|
||||
|
||||
### 5.2 自动重命名
|
||||
|
||||
每次重复导入都保留为新的独立项,不覆盖旧项、不去重。
|
||||
|
||||
名称冲突统一使用原生标识形式追加后缀:
|
||||
|
||||
```text
|
||||
art-skill
|
||||
art-skill-2
|
||||
art-skill-3
|
||||
```
|
||||
|
||||
不使用 `art-skill (2)` 这一类仅适用于 UI 的第二套名称。
|
||||
|
||||
同一类型内名称需要唯一:
|
||||
|
||||
- Skill 与 Skill 之间避免重复;
|
||||
- MCP 与 MCP 之间避免重复;
|
||||
- Skill 和 MCP 可以同名,因为属于不同的运行时命名空间。
|
||||
|
||||
如果名称相同但内容不同,视为名称冲突;如果内容指纹相同,视为重复导入。两种情况都保留新项并使用同一套后缀分配逻辑。
|
||||
|
||||
提示合并为一次普通通知,例如:
|
||||
|
||||
```text
|
||||
检测到重复或同名扩展,已自动命名为“art-skill-2”。
|
||||
```
|
||||
|
||||
内容指纹只用于识别重复导入,不用于安全审核。
|
||||
|
||||
### 5.3 手动重命名
|
||||
|
||||
前端允许用户直接编辑独立扩展项的 `name`:
|
||||
|
||||
- 名称不能为空;
|
||||
- 使用对应 Skill/MCP 的原生标识格式;
|
||||
- 保存时检查同类型名称冲突;
|
||||
- 冲突时自动分配 `-2`、`-3` 后缀并提示用户。
|
||||
|
||||
Skill 的手动重命名必须反映到 Codex 运行时名称。客户端保留原始内容,在临时运行副本中修改标准名称字段,不修改用户导入的源文件。
|
||||
|
||||
目录或 Plugin 中的多个 Skill 已经在导入时拆成独立项,因此用户可以分别重命名每个 Skill,不存在“重命名整个多 Skill 包”的操作。
|
||||
|
||||
## 6. 客户端存储
|
||||
|
||||
扩展仓库使用客户端本地存储和内部元数据,不对用户要求任何自定义包结构。
|
||||
|
||||
```text
|
||||
ImportedSource
|
||||
├── id
|
||||
├── original_name
|
||||
├── storage_path
|
||||
└── fingerprint
|
||||
|
||||
ExtensionItem
|
||||
├── id
|
||||
├── source_id
|
||||
├── type: skill | mcp | unknown
|
||||
├── name
|
||||
├── original_name
|
||||
├── source_relative_path
|
||||
├── enabled
|
||||
├── fingerprint
|
||||
└── last_error
|
||||
```
|
||||
|
||||
`source_id` 只用于来源溯源和清理,不形成可操作的父级扩展项,也不产生父子级联启用状态。
|
||||
|
||||
对于目录或 zip:
|
||||
|
||||
- 原始来源保存一次;
|
||||
- 每个发现的 Skill/MCP 保存独立元数据;
|
||||
- 删除某个子项不影响其它子项;
|
||||
- 原始来源不因删除一个子项而立即删除。
|
||||
|
||||
重复导入同一来源时创建新的来源和新的子项,名称按规则追加后缀。
|
||||
|
||||
## 7. 前端设计
|
||||
|
||||
### 7.1 入口
|
||||
|
||||
复用现有 [RuntimeConfigDialog.tsx](../../apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx) 的设置弹窗,在设置导航中增加“扩展”分区。
|
||||
|
||||
不在项目聊天区新增入口,不按项目创建扩展页面。
|
||||
|
||||
### 7.2 页面
|
||||
|
||||
页面只包含:
|
||||
|
||||
- “导入扩展”按钮;
|
||||
- 独立扩展项列表;
|
||||
- 每项的名称、类型、来源摘要和当前状态;
|
||||
- 启用/禁用开关;
|
||||
- 重命名操作;
|
||||
- 删除操作;
|
||||
- 必要时的一行启动错误。
|
||||
|
||||
一个目录、zip 或 Plugin 中的多个内容直接平铺显示,不显示父级包和父级开关:
|
||||
|
||||
```text
|
||||
art-skill
|
||||
Skill · 来自 my-plugin.zip 已启用
|
||||
|
||||
code-skill
|
||||
Skill · 来自 my-plugin.zip 已禁用
|
||||
|
||||
search
|
||||
MCP · 来自 my-plugin.zip 启动失败
|
||||
```
|
||||
|
||||
完整列表包括:
|
||||
|
||||
- 已启用;
|
||||
- 已禁用;
|
||||
- 未识别;
|
||||
- 当前不可用;
|
||||
- 启动失败。
|
||||
|
||||
“完整列表”指所有用户导入的独立扩展项,不指 zip 内每个普通文件或每个 MCP tool。
|
||||
|
||||
### 7.3 导入后的默认状态
|
||||
|
||||
已识别的 Skill/MCP 导入后默认启用,下一次 DirectProject 启动时加载。
|
||||
|
||||
未识别内容保留在列表中,但没有有效启动能力。
|
||||
|
||||
导入和状态变化不需要和 Agent 模型配置共用“保存”按钮,扩展操作可以单项即时保存。
|
||||
|
||||
## 8. DirectProject 运行时接入
|
||||
|
||||
### 8.1 Skill
|
||||
|
||||
启动准备阶段:
|
||||
|
||||
```text
|
||||
读取 enabled=true 的 Skill 项
|
||||
↓
|
||||
创建本次运行的临时 Skill root
|
||||
↓
|
||||
为重命名 Skill 生成运行时副本
|
||||
↓
|
||||
调用 skills/extraRoots/set
|
||||
↓
|
||||
调用 skills/list 复核
|
||||
```
|
||||
|
||||
每个独立 Skill 的启用状态单独生效。Skill 内容中的脚本、二进制和引用资源不做行为扫描。
|
||||
|
||||
### 8.2 MCP
|
||||
|
||||
启动准备阶段:
|
||||
|
||||
```text
|
||||
读取 enabled=true 的 MCP 项
|
||||
↓
|
||||
为每个项生成 mcp_servers 配置
|
||||
↓
|
||||
处理同类型 Server key 冲突
|
||||
↓
|
||||
与 AGC 内置 agc_tools 合并
|
||||
↓
|
||||
启动 Codex
|
||||
```
|
||||
|
||||
每个 MCP Server 独立启用和禁用。相对路径按来源目录解析,原始 command、args、cwd、env 或 URL 按原生配置保留。
|
||||
|
||||
`agc_tools` 为 AGC 内部保留名称,第三方扩展不得覆盖。第三方 MCP 的工具调用继续继承 DirectProject 当前既有运行策略;本功能不新增逐工具审核系统。
|
||||
|
||||
### 8.3 失败处理
|
||||
|
||||
第三方扩展的解析或启动失败时:
|
||||
|
||||
- 记录对应独立项的 `last_error`;
|
||||
- 列表显示“启动失败”或“当前不可用”;
|
||||
- 尽量跳过失败项,保留 AGC 内置 Skill 和 `agc_tools`;
|
||||
- 不自动重试、不启动后台修复服务、不删除原始内容。
|
||||
|
||||
扩展集合的 fingerprint 纳入现有 DirectProject app-server pool key,扩展集合变化后不复用不匹配的旧运行实例。
|
||||
|
||||
## 9. 客户端接口
|
||||
|
||||
Skill 和 MCP 共用客户端扩展接口:
|
||||
|
||||
```text
|
||||
list_client_extensions()
|
||||
import_client_extension(path)
|
||||
set_client_extension_enabled(id, enabled)
|
||||
rename_client_extension(id, name)
|
||||
remove_client_extension(id)
|
||||
```
|
||||
|
||||
不新增按类型分开的安装接口。导入接口返回拆分后的多个独立项:
|
||||
|
||||
```text
|
||||
{
|
||||
imported: [
|
||||
{ id, type: "skill", name: "art-skill" },
|
||||
{ id, type: "skill", name: "code-skill" },
|
||||
{ id, type: "mcp", name: "search" }
|
||||
],
|
||||
unknown: false
|
||||
}
|
||||
```
|
||||
|
||||
前端不直接处理 Skill root 路径、MCP command 或 zip staging 路径;这些属于客户端后端和 DirectProject 启动适配层。
|
||||
|
||||
## 10. 分阶段实施与验收
|
||||
|
||||
不采用一次性大改动。按垂直闭环分三阶段,每阶段完成后验收再进入下一阶段。
|
||||
|
||||
### 阶段 0:冻结契约和样例
|
||||
|
||||
确认:
|
||||
|
||||
- 导入来源与独立扩展项的关系;
|
||||
- 名称统一使用原生标识;
|
||||
- 重复导入自动追加后缀;
|
||||
- 已识别内容默认启用;
|
||||
- Plugin 只作为导入容器;
|
||||
- 单个可执行文件/脚本不作为 MCP 入口;
|
||||
- 客户端全局生效。
|
||||
|
||||
准备最小样例并确认每个样例的预期拆分结果。
|
||||
|
||||
### 阶段 1:客户端导入和列表
|
||||
|
||||
完成:
|
||||
|
||||
- 客户端存储;
|
||||
- 文件、目录、zip 导入;
|
||||
- Skill/MCP/Plugin 结构发现;
|
||||
- 多内容拆分为独立项;
|
||||
- 未知项保留;
|
||||
- 默认启用;
|
||||
- 原生名称自动追加后缀;
|
||||
- 手动重命名;
|
||||
- 独立启用、禁用、删除;
|
||||
- 设置弹窗中的完整列表。
|
||||
|
||||
验收:
|
||||
|
||||
- 一个来源包含多个 Skill/MCP 时,列表出现多个独立项;
|
||||
- 相同来源重复导入时不覆盖旧项;
|
||||
- 同名和重复内容均自动使用 `-2`、`-3`;
|
||||
- 单个二进制不会被启动;
|
||||
- 原始来源内容未被改写。
|
||||
|
||||
### 阶段 2:Skill 运行时闭环
|
||||
|
||||
完成:
|
||||
|
||||
- 读取客户端已启用 Skill;
|
||||
- 临时 Skill root 生成;
|
||||
- Skill 重命名同步到运行时副本;
|
||||
- `skills/extraRoots/set` 和 `skills/list` 接入;
|
||||
- 扩展 fingerprint 纳入 app-server pool key。
|
||||
|
||||
验收:
|
||||
|
||||
- 多个 Skill 可以独立发现;
|
||||
- 重命名后的 Skill 在 `skills/list` 中使用新名称;
|
||||
- 单独禁用一个 Skill 不影响其它 Skill;
|
||||
- 当前 Codex 不热更新;
|
||||
- AGC 内置 Skill 不受影响。
|
||||
|
||||
### 阶段 3:MCP 和 Plugin 部分闭环
|
||||
|
||||
完成:
|
||||
|
||||
- `config.toml` 每个 Server 独立导入;
|
||||
- `.mcp.json` 每个 Server 独立导入;
|
||||
- Plugin 中 Skill/MCP 独立导入;
|
||||
- MCP Server 重名自动追加原生后缀;
|
||||
- MCP 运行时配置合并;
|
||||
- 单项错误记录和内置能力保留。
|
||||
|
||||
验收:
|
||||
|
||||
- 一个 MCP 配置包含多个 Server 时,列表出现多个独立项;
|
||||
- 每个 MCP 可以单独启用、禁用和重命名;
|
||||
- 重名 Server 能生成稳定的唯一 key;
|
||||
- Plugin 不会开启 hooks、apps 或完整 Plugin Runtime;
|
||||
- 单个可执行文件/脚本仍不会自动作为 MCP 入口。
|
||||
|
||||
## 11. 最小验证范围
|
||||
|
||||
只增加和本功能直接相关的定向验证:
|
||||
|
||||
- 多 Skill/MCP 来源拆分;
|
||||
- 原生名称自动重命名和手动重命名;
|
||||
- 重复导入保留多个独立项;
|
||||
- Skill 运行时名称复核;
|
||||
- MCP Server key 冲突;
|
||||
- 未知文件不执行;
|
||||
- zip 解压路径边界。
|
||||
|
||||
不新增完整第三方扩展行为测试、安全扫描框架、在线测试服务或大规模 E2E 基础设施。
|
||||
|
||||
## 12. 非目标和后续议题
|
||||
|
||||
以下内容不属于本方案的交付判据:
|
||||
|
||||
- 完整 Codex Plugin Runtime;
|
||||
- Plugin hooks/apps/remote plugin;
|
||||
- 单文件 MCP 入口配置;
|
||||
- 项目级扩展开关;
|
||||
- MCP 工具逐项权限管理;
|
||||
- OAuth/密钥管理中心;
|
||||
- 在线市场和自动更新;
|
||||
- 第三方扩展安全评级和行为沙箱。
|
||||
|
||||
后续如果要支持这些能力,必须另立技术方案,不在本方案中预留复杂抽象或隐藏开关。
|
||||
Reference in New Issue
Block a user