背景
目前 agent.zod.ts 仅支持(简陋的)tools 引用,tool 本身不是可声明元数据。行业如 Salesforce Copilot, ServiceNow, Microsoft Copilot Studio 已采用"Agent-Topic-Tool"三级架构,并将 Tool 作为一等元数据,参数 schema 结构化,支持 UI/权限管控/自动发现。
目标
- Tool 升级为一等元数据类型(可持久化/查询/overlay)。
- Agent.tools 与 ToolSchema 解耦,引用关系由字符串建立,参数 schema 可自动发现与校验。
- 引入 Topic/Skill 协议作为 Agent-Tool 的"能力分组"中间层。
- Agent 协议整体瘦身聚焦为"配置包",移除或冻结 YAGNI 字段。
- 元数据链路实现对标 Salesforce、MS Copilot 的最佳实践。
具体内容
1. Tool 元数据协议定义(src/ai/tool.zod.ts)
- 字段:name, label, description, category, parameters(JSON Schema), outputSchema(optional), objectName, requiresConfirmation, permissions, active, builtIn。
- 配套 defineTool() 工厂。
2. 增加 Tool 类型为元数据(MetadataTypeSchema/Registry)
- filePatterns: ['/*.tool.ts', '/*.tool.yml'] ,domain: 'ai'。
- 保证可用 metadataService 注册/查询/list。
3. Topic/Skill 协议定义(src/ai/topic.zod.ts)
- 字段:name, label, scope, goal, instructions, tools(引用 tool 名), triggerPhrases, triggerConditions, active。
- 配套 defineTopic() 工厂。
4. Agent 协议精简与重构
- topics 字段,引用 topic 名。(无 topic 时可直接 tools)。
- tools/knowledge/guardrails 保留;planning/memory/lifecycle/structuredOutput/tenantId 减少为可选/冻结。
- 工厂方法支持 run-time 校验与类型推导。
5. Tool handler 注册标准化
- Tool handler 运行时注册,支持 handler/type/owner package 绑定。
- Tool handler 必须校验参数符合 tool 参数 schema,否则抛错。
6. 引用与校验链路统一
- Agent → Topics → Tools → Handler 全链路基于 string name 串联和 UI/IDE 自动补全。
- 元数据修改自动刷新 ToolRegistry 结构(支持自动 reload)。
7. 文档与示例同步
- 在 examples/app-crm 组织符合 Topic-Tool-Agent 协议的定义方式。
预期成效
- Agent/Tool 元数据"物理分离",开发体验和 LLM function calling 大幅提升。
- 平台功能结构与 Salesforce/ServiceNow/MS 对齐,便于迁移/集成/理解。
- Tool 全域唯一/可复用/可注册/可授权。
【参考】
背景
目前 agent.zod.ts 仅支持(简陋的)tools 引用,tool 本身不是可声明元数据。行业如 Salesforce Copilot, ServiceNow, Microsoft Copilot Studio 已采用"Agent-Topic-Tool"三级架构,并将 Tool 作为一等元数据,参数 schema 结构化,支持 UI/权限管控/自动发现。
目标
具体内容
1. Tool 元数据协议定义(src/ai/tool.zod.ts)
2. 增加 Tool 类型为元数据(MetadataTypeSchema/Registry)
3. Topic/Skill 协议定义(src/ai/topic.zod.ts)
4. Agent 协议精简与重构
5. Tool handler 注册标准化
6. 引用与校验链路统一
7. 文档与示例同步
预期成效
【参考】