Decision 里的动作(标准化工具调用)分发给 ToolRegistry,由它查找并执行对应的可调用对象。
@tool 装饰器
使用 @tool 把任意可调用对象标记成 QitOS 工具。这个装饰器只会附加元数据,不会改变函数行为,测试里依旧可以像普通函数一样直接调用。
@tool 参数
ToolPermission
ToolPermission 描述工具允许做什么。Engine 可以在预检阶段利用这些信息检查环境能力。
False。
ToolRegistry
ToolRegistry 是 Engine 分发动作时查询的注册表。通常在 AgentModule 构造函数里创建并传入。
注册单个工具
用registry.register() 注册一个可调用对象或 BaseTool 实例:
用 include 扫描模块或对象
registry.include(obj) 会扫描 obj 上所有公开且可调用的属性,并注册其中带有 @tool 元数据的成员:
注册工具集
工具集(toolset)指的是任何拥有tools() 方法、并返回可调用对象或 BaseTool 列表的对象。使用 register_toolset() 注册它:
toolset_name.tool_name。你也可以显式指定命名空间:
BaseTool 与 FunctionTool
如果工具需要维护共享状态或生命周期逻辑,可以直接继承 BaseTool:
register() 传入普通可调用对象时,QitOS 内部会自动把它包装成 FunctionTool。大多数情况下你无需显式实例化它。
对于实际编码智能体,通常优先使用
CodingToolSet 或 qitos.kit.toolset 中的预设构建器,而不是手工把文件、Shell、Web 工具逐个注册。把注册表传给 AgentModule
把准备好的ToolRegistry 传入 AgentModule.__init__():
agent.tool_registry 并据此创建 ActionExecutor。你也可以调用 registry.get_tool_descriptions() 得到格式化工具说明,用于插入系统提示词:
