跳到主要内容

@agentskit/templates

用于生成 AgentsKit 扩展的创作工具包:经过校验的 ToolDefinition / SkillDefinition / AdapterFactory 对象,以及磁盘脚手架(package.json、tsup、测试、README)。仅依赖 @agentskit/core

何时使用

  • 自定义工具技能适配器作为独立包发布。
  • 需要内部插件间一致的蓝图(tsup、vitest、TypeScript)。
  • 在注册到 runtime 或应用市场前需要运行时校验

安装

npm install @agentskit/templates @agentskit/core

公开 API

导出作用
createToolTemplate(config)构建带默认值与校验的 ToolDefinition
createSkillTemplate(config)构建带默认值与校验的 SkillDefinition
createAdapterTemplate(config)构建 AdapterFactory + 显示 name
scaffold(config)写入完整包目录(异步)
validateToolTemplate / validateSkillTemplate / validateAdapterTemplate断言定义格式正确

createToolTemplate

ToolTemplateConfig 在部分工具上扩展,必填 name,可选 descriptionschemaexecutetagscategoryrequiresConfirmationinitdisposebase 合并。

import { createToolTemplate } from '@agentskit/templates'

export const rollDice = createToolTemplate({
name: 'roll_dice',
description: 'Roll an N-sided die once.',
schema: {
type: 'object',
properties: { sides: { type: 'number', minimum: 2 } },
required: ['sides'],
},
async execute(args) {
const sides = Number(args.sides)
return String(1 + Math.floor(Math.random() * sides))
},
})

若缺少 namedescriptionschemaexecute,校验会抛出(LLM 调用工具需要 schema + description)。

createSkillTemplate

需要 namedescriptionsystemPrompt。可选:examplestoolsdelegatestemperatureonActivatebase

import { createSkillTemplate } from '@agentskit/templates'

export const researcher = createSkillTemplate({
name: 'researcher',
description: 'Gather facts before writing.',
systemPrompt: 'You are a careful researcher. Cite sources when possible.',
tools: ['web_search'],
})

createAdapterTemplate

需要 name 与匹配 AdapterFactory['createSource']createSource

import { createAdapterTemplate } from '@agentskit/templates'

export const myAdapter = createAdapterTemplate({
name: 'my-llm',
createSource: (request) => {
// return StreamSource compatible with @agentskit/core
throw new Error('Implement streaming to your backend')
},
})

scaffold

join(dir, name) 创建目录,包含:

  • package.jsontsconfig.jsontsup.config.ts
  • src/index.ts(桩实现)
  • tests/index.test.ts
  • README.md
import { scaffold } from '@agentskit/templates'
import { join } from 'node:path'

const files = await scaffold({
type: 'tool',
name: 'my-company-search',
dir: join(process.cwd(), 'packages'),
description: 'Internal web search tool',
})
console.log('Created:', files)

ScaffoldType'tool' | 'skill' | 'adapter'

像其他工具、技能或适配器一样,通过 createRuntimeuseChat 注册脚手架包。

故障排除

错误原因
Tool requires a namecreateToolTemplate 传入 name
requires a schema函数调用需要 JSON Schema。
Skill ... requires a systemPrompt技能必须通过 systemPrompt 定义行为。
Adapter requires createSource工厂必须暴露 createSource(request)

另请参阅

从这里开始 · 软件包 · TypeDoc@agentskit/templates) · @agentskit/core · Tools · Skills · Adapters