fix(extension): 修复 MCP Host 资源与协议边界
This commit is contained in:
@@ -146,6 +146,7 @@ MCP Tool:
|
||||
|
||||
- 远端名称必须能转换为合法且稳定的项目 Tool ID;
|
||||
- `inputSchema` 必须是有效的 object JSON Schema;
|
||||
- `additionalProperties`、`patternProperties` 等动态字段先由完整 JSON Schema 校验,Pydantic 参数载体不会再次误拒绝合法字段;
|
||||
- `_meta.notesagent/permission` 必须属于项目已知权限;
|
||||
- Tool 权限必须同时出现在 Plugin Manifest 中;
|
||||
- Agent 仍通过 Tool Registry 执行参数校验、Permission、超时和 Trace;
|
||||
@@ -165,9 +166,10 @@ MCP Tool:
|
||||
- 不把 Provider API Key、`APP_DB_PATH`、Vault 路径和其他宿主环境变量传入子进程;
|
||||
- stderr 与 JSON-RPC stdout 分离,stderr 不进入 API 和 Agent Trace;
|
||||
- stdout 只能发送合法 MCP JSON-RPC;
|
||||
- 单条协议消息上限 2 MiB;
|
||||
- stdout 在读取完整行前即应用有界读取,单条协议消息上限 2 MiB;stderr 也按固定大小分块读取;
|
||||
- 单次 Tool Result 上限 256 KiB;
|
||||
- MCP Tool 不绕过 Permission Manager 和 Agent Tool Timeout。
|
||||
- 调用被 Agent 取消时,同时通知 Server 并唤醒本地 pending Queue,阻塞线程不会继续占用线程池直至远端超时。
|
||||
|
||||
当前尚未提供容器、受限系统账户、seccomp、Windows AppContainer 或 macOS Sandbox,因此 Plugin 进程仍具有当前操作系统用户授予的一般文件访问能力。正式社区插件分发前必须继续增加包签名、来源验证和平台级沙箱;不得把当前进程隔离描述为完全安全执行任意不可信代码。
|
||||
|
||||
@@ -201,7 +203,7 @@ unhealthy
|
||||
error
|
||||
```
|
||||
|
||||
Restart 返回 `202 OperationResponse`。接口返回前已完成本地 Host 重启和 Tool 重新发现;`message` 中给出最终 Host 状态。
|
||||
Restart 返回 `202 OperationResponse`。接口返回前已完成本地 Host 重启和 Tool 重新发现;`message` 中给出最终 Host 状态。Restart 只用于运行中或异常 Host;用户主动停用、尚未启用或等待授权的 Plugin 返回 `409 PLUGIN_HOST_UNAVAILABLE`,必须通过 Enable 明确启动。
|
||||
|
||||
## 8. 离线 Fixture
|
||||
|
||||
@@ -220,7 +222,7 @@ backend/extensions/fixtures/mcp-echo
|
||||
- `mcp-fixture.environment`:验证宿主 Secret/路径没有进入子进程;
|
||||
- `mcp-fixture.exit`:验证异常退出、Tool 注销和 Restart。
|
||||
|
||||
Fixture 的 `tools/list` 使用两页响应,用于覆盖分页发现。测试还会启动缺少 tools capability 和返回无效 Schema 的变体。
|
||||
Fixture 的 `tools/list` 使用两页响应,用于覆盖分页发现。测试还会启动缺少 tools capability、返回无效 Schema/initialize result,以及输出超长无换行 stdout 的变体。
|
||||
|
||||
## 9. 验证
|
||||
|
||||
@@ -241,10 +243,13 @@ pnpm build
|
||||
- 分页 `tools/list` 与命名空间映射;
|
||||
- Permission、JSON Schema 与 Contribution 集合;
|
||||
- Tool 成功、业务错误、结果过大和超时;
|
||||
- Agent 取消后 pending 等待线程及时释放;
|
||||
- `additionalProperties` 动态参数保持 JSON Schema 语义;
|
||||
- Agent Runtime 调用 MCP Tool 并写入正式 Trace;
|
||||
- Secret/Vault 环境隔离;
|
||||
- Server 异常退出、Tool 注销和 Host Restart;
|
||||
- 缺少 capability 与无效 MCP Schema;
|
||||
- 缺少 capability、无效 initialize result、无效 MCP Schema 和超长无换行 stdout;
|
||||
- disabled Plugin 不会被 Host Restart 隐式重新启用;
|
||||
- OpenAPI 发布 Host 状态和重启路径。
|
||||
|
||||
## 10. 当前边界与后续阶段
|
||||
|
||||
Reference in New Issue
Block a user