mirror of
https://github.com/feigeCode/navop.git
synced 2026-11-06 16:07:51 +00:00
按 docs/extension-resource-plugins/plugin-ai-tools.md 设计稿实现四个里程碑:
M0 契约层(extension-runtime)
- contributes.tools 清单声明:ToolContrib/ToolRisk/ToolAnnotations
- 安装期校验 tools_validation:id 唯一合法、backend 必须在 shellApp.backends、
连接型必须有非 terminal 连接且 runtime 匹配、inputSchema 受限子集、
超时/结果上限范围;错误路径统一 /contributes/tools/<id>/<field>
- 注册链 register_tools + catalog 索引 RegisteredToolContribution
M1 执行器(universal-plugins extension_tools)
- ExtensionTool 实现 agent_runtime::Tool:参数校验(受限 schema、未知字段丢弃、
≤64KB)→ 连接型资源校验(kind=extension:{ext}:{contribution})→ provider
租约 RAII → open/invoke/close → ResultRef 解码截断;11 个 EXT_* 错误码
- navop_app agent_runtime_tool_registry 按 tool_exposure.agent.extensions 追加
- 设置加 extensions 开关(默认关)+ disabled_extension_tools 按扩展禁用
M2 插件 AI 侧栏
- NshTab 右侧 PluginAiPanel:每 tab 一个 DefaultAgentChatPanel sidebar 实例,
默认收起、浮钮打开、宽 320–560 可拖
- 系统指令注入扩展标题/路由/连接/工具列表/页面上下文(带防注入标注)
- 页面 ABI 三通道:navop.ai.context(post 覆盖式 ≤2KB)/ open / ask
M3 外部 MCP
- ExtensionToolHandler 实现 tool_runtime::ToolHandler,连接型工具自动补
connection 参数(id 或名称)
- McpToolset::Extensions(默认关)+ shell_domain 注册工厂
- 设置页 MCP/Agent 两处加「扩展工具」开关(三语文案)
验证:extension-runtime 227 / one-core settings 148 / universal-plugins(nsh-host)
58 / mcp_host 12 / shell_domain 42 / navop_app 601 测试全绿;RUSTFLAGS="-D
warnings" 全 crate --all-targets check 零告警。