跳到主要内容

@agentskit/core

AgentsKit 的共享契约层:TypeScript 类型、无头聊天控制器、流辅助,以及 @agentskit/react@agentskit/ink@agentskit/runtime 与适配器使用的构建块。无第三方运行时依赖——保持本包小而稳定。

何时使用

  • 在官方类型之上实现自定义适配器、工具、记忆或 UI。
  • 需要无 React 的 createChatController(高级集成)。
  • 理解整个生态中的消息、工具调用与流块

典型 React 应用通常直接导入 core,除类型外——优先 useChat@agentskit/react

安装

npm install @agentskit/core

多数功能包已依赖 core;编写库或共享类型时可显式添加。

公开导出(概览)

聊天控制器与配置

导出作用
createChatController无头状态机:发送、流、工具、记忆、技能、检索器
类型:ChatConfigChatControllerChatStateChatReturn配置与控制器形状

控制器合并系统提示、运行检索、分发工具调用、通过 ChatMemory 持久化,并暴露 UI 包消费的订阅/更新模式。

原语与流

导出作用
buildMessage构造类型化 Message
consumeStream驱动 StreamSource → 块 + 完成
createEventEmitter观察者的内部事件总线
executeToolCallToolCall 负载运行工具
safeParseArgs安全解析 JSON 工具参数
createToolLifecycle工具的 init / dispose
generateId消息与调用的稳定 ID

智能体循环辅助

导出作用
buildToolMap名称 → ToolDefinition 映射
activateSkills合并技能系统提示与技能提供的工具
executeSafeTool受保护执行(确认钩子、错误)

记忆与 RAG(轻量)

导出作用
createInMemoryMemorycreateLocalStorageMemorycreateFileMemory测试或演示用的简单捆绑记忆
serializeMessages / deserializeMessages持久化辅助
createStaticRetrieverformatRetrievedDocuments静态上下文的检索器辅助

重型后端在 @agentskit/memory;向量存储与分块在 @agentskit/rag

配置文件

导出作用
loadConfig从项目加载 AgentsKitConfig(CLI / 工具)

类型(高层)

AdapterFactoryStreamSourceStreamChunkMessageToolDefinitionToolCallSkillDefinitionChatMemoryRetrieverVectorMemoryObserverAgentEvent 及相关类型——完整签名见下方 TypeDoc。

示例:在自定义工具中检查类型

import type { ToolDefinition, ToolExecutionContext } from '@agentskit/core'

export const myTool: ToolDefinition = {
name: 'greet',
description: 'Greets a user by name.',
schema: {
type: 'object',
properties: { name: { type: 'string' } },
required: ['name'],
},
async execute(args: Record<string, unknown>, _ctx: ToolExecutionContext) {
const name = String(args.name ?? 'world')
return `Hello, ${name}!`
},
}

示例:无头控制器(高级)

import { createChatController } from '@agentskit/core'
import { anthropic } from '@agentskit/adapters'

const chat = createChatController({
adapter: anthropic({ apiKey: process.env.ANTHROPIC_API_KEY!, model: 'claude-sonnet-4-6' }),
})

chat.subscribe(() => {
console.log(chat.getState().status, chat.getState().messages.length)
})

await chat.send('Hello')

React 应用优先使用 useChat——它以钩子包装该模式。

故障排除

问题缓解措施
升级后类型错误将所有 @agentskit/* 固定到同一 semver;core 类型随生态演进。
createChatControlleruseChat控制器与框架无关;React 钩子增加状态绑定与 Strict Mode 安全。
包体积顾虑摇树未使用导出;避免在客户端包中导入仅服务端工具。

另请参阅

从这里开始 · 软件包 · TypeDoc@agentskit/core) · React · Ink · Adapters · Runtime · Tools · Skills · useChat · useStream · useReactive