自定义工具
自定义工具
自定义工具以工作区特有的操作扩展 Agent,并通过与钩子相同的受约束 API 运行。
声明工具
创建 +<lower_snake_case>.ts 于 src/capabilities/tools/ 。文件名即工具名,文件导出一个 defineAgentTool:
// src/capabilities/tools/+product_lookup.ts
import { defineAgentTool } from '@norbital-ai/bolt/authoring';
import { Effect, Schema } from 'effect';
export default defineAgentTool({
description: 'Returns one product by id, with its current stock level.',
input: Schema.Struct({ productId: Schema.String }),
run: (api, { productId }) =>
Effect.gen(function* () {
const product = yield* api.db.query.products.findFirst({
where: { id: { eq: productId } }
});
return product ?? null;
})
});
受约束,而非特权
自定义工具不是后门——它以 与钩子相同的受约束 API 运行:策略、钩子与审计适用于它所做的一切。
保留名称
内置工具名归平台所有——与这些名称相同的编写工具永远不会运行,因为平台调用优先按名称匹配。参见 内置工具 。