Parent: #98
问题概述 / Summary
项目已有面向外部客户端的只读 MCP Server、声明式 Skill 包和不可信候选审查,但没有 MCP Client、真正的 Plugin 包或生命周期 Hooks。需要建立统一扩展运行时,同时确保外部工具、认证和钩子不能成为第二控制平面。
优先级 / Priority
P1。在模型工具 registry 稳定后接入。
当前基线 / Current baseline
范围 / Scope
- 实现 Go-owned MCP Client:stdio 与明确批准的远程 transport、初始化/能力协商、工具/资源/Prompt 发现、schema 校验、超时/取消、重连和健康状态。
- 每个 Server 保存来源、版本/指纹、transport、目标、认证引用、声明能力、实际能力、信任状态和 Run/Workspace Scope。
- 远程 MCP 的 OAuth/credential 由凭证管理器保存;模型、Plugin、日志和前端永不获得 bearer/raw secret。
- 定义签名
plugin.v1 包,可声明 Skills、MCP server descriptors、UI metadata 与 Hooks;安装进入隔离 staging、默认禁用、人工审查后逐能力启用。
- 建立兼容/升级/回滚/撤销、publisher trust、内容 hash、固定 Git commit/HTTPS 来源和审计账本。
- 定义受限 Hooks:Pre/Post Tool、Run/Session、Compaction、Subagent、Checkpoint;输入输出有 schema、大小/时间上限、确定性和失败策略。
- Hook 只能拒绝、缩小、注释或异步记录;不得静默扩大工具参数、权限、网络、预算或替换用户决定。
- MCP tool/resource 返回值一律标记不可信,通过统一 Tool Gateway、Policy、Approval、Budget、Sandbox 和结果清洗。
非目标 / Non-goals
- 不执行 preinstall/postinstall、包管理器脚本、任意二进制或仓库内 Hook。
- 不让 Plugin 自带 credential、启动系统服务、监听公网或修改全局配置。
- 不把 MCP Server 的 capability 声明当作本地授权。
- 不自动导入 run-skill-generator 产生的候选;仍需人工审查。
- 不提供 Cyber 扩展面。
涉及目录 / Affected directories
internal/mcp/
internal/plugins/
internal/hooks/
internal/skills/
internal/toolgateway/
internal/application/
internal/credential/
internal/policy/
internal/approval/
internal/store/
internal/events/
internal/httpapi/
cmd/
web/src/
configs/
docs/
依赖 / Dependencies
- 被“模型可调用的工作区工具”阻塞,以便复用同一 registry、schema、可见性、调用账本和结果回送协议。
- 可提前完成 Plugin manifest、安装审查和 MCP 连接状态模型,但不得开放运行入口。
验收条件 / Acceptance criteria
安全边界 / Security boundaries
MCP、Plugin 和 Hook 是低信任扩展,不拥有执行权;Go 控制平面必须在每次调用时重新做最终授权。
Parent: #98
问题概述 / Summary
项目已有面向外部客户端的只读 MCP Server、声明式 Skill 包和不可信候选审查,但没有 MCP Client、真正的 Plugin 包或生命周期 Hooks。需要建立统一扩展运行时,同时确保外部工具、认证和钩子不能成为第二控制平面。
优先级 / Priority
P1。在模型工具 registry 稳定后接入。
当前基线 / Current baseline
范围 / Scope
plugin.v1包,可声明 Skills、MCP server descriptors、UI metadata 与 Hooks;安装进入隔离 staging、默认禁用、人工审查后逐能力启用。非目标 / Non-goals
涉及目录 / Affected directories
internal/mcp/internal/plugins/internal/hooks/internal/skills/internal/toolgateway/internal/application/internal/credential/internal/policy/internal/approval/internal/store/internal/events/internal/httpapi/cmd/web/src/configs/docs/依赖 / Dependencies
验收条件 / Acceptance criteria
安全边界 / Security boundaries
MCP、Plugin 和 Hook 是低信任扩展,不拥有执行权;Go 控制平面必须在每次调用时重新做最终授权。