Skip to content

@stello-ai/core 配置 ​

StelloAgentConfig 及其所有嵌套接口的完整参考。

StelloAgentConfig ​

顶层配置,传入 createStelloAgent() 创建 Agent。

typescript
interface StelloAgentConfig {
  sessions: SessionTree
  memory: MemoryEngine
  session?: StelloAgentSessionConfig
  capabilities: StelloAgentCapabilitiesConfig
  runtime?: StelloAgentRuntimeConfig
  orchestration?: StelloAgentOrchestrationConfig
}
字段必填说明
sessions是拓扑树管理器
memory是记忆引擎
session否Session 组件接入配置
capabilities是能力注入配置
runtime否运行时配置
orchestration否编排层配置

StelloAgentSessionConfig ​

将 @stello-ai/session 的 Session / MainSession 接入 core 的 Engine 体系。

typescript
interface StelloAgentSessionConfig {
  sessionResolver?: (sessionId: string) => Promise<SessionCompatible>
  mainSessionResolver?: () => Promise<MainSessionCompatible | null>
  consolidateFn?: SessionCompatibleConsolidateFn
  integrateFn?: SessionCompatibleIntegrateFn
  serializeSendResult?: (result: SessionCompatibleSendResult) => string
  toolCallParser?: ToolCallParser
  options?: Record<string, unknown>
}
字段说明
sessionResolver按 sessionId 解析真实 Session 实例。Session 需实现 fork() 以支持子 Session 创建
mainSessionResolver解析 MainSession,仅在需要 integration 时提供
consolidateFnSession L3 → L2 的提炼函数
integrateFnMainSession integration 函数
serializeSendResultsend() 结果序列化方式,默认 JSON
toolCallParserTurnRunner 用的 tool call 解析器,默认 sessionSendResultParser
options预留给 Session 组件的透传配置

TIP

如果提供了 sessionResolver + consolidateFn,core 会自动构建 runtime.resolver。Fork 由 session.fork() 处理——Engine 调用当前 Session 的 fork() 方法创建子 Session,无需单独提供创建工厂。

StelloAgentCapabilitiesConfig ​

typescript
interface StelloAgentCapabilitiesConfig {
  lifecycle: EngineLifecycleAdapter
  tools: EngineToolRuntime
  skills: SkillRouter
  confirm: ConfirmProtocol
  profiles?: ForkProfileRegistry
}
字段说明
lifecycle生命周期适配器
tools工具运行时(可直接使用 ToolRegistryImpl)
skills技能路由
confirm确认协议
profilesFork Profile 注册表(可选),预注册 fork 配置模板供 LLM 引用

EngineLifecycleAdapter ​

typescript
interface EngineLifecycleAdapter {
  bootstrap(sessionId: string): Promise<BootstrapResult>
  afterTurn(sessionId: string, userMsg: TurnRecord, assistantMsg: TurnRecord): Promise<AfterTurnResult>
}
方法说明
bootstrap进入 Session 时做初始化,返回组装好的上下文和元数据
afterTurn每轮结束后处理:提取 L1、更新 memory、追加 L3

INFO

Fork 由 Engine 编排:先创建拓扑节点(生成 ID),再调用当前 Session 的 fork({ id, ... }) 方法创建子 Session。Session 层处理所有 Session 关注点(systemPrompt 继承、上下文继承、LLM/tools 覆盖)。

EngineToolRuntime ​

typescript
interface EngineToolRuntime {
  getToolDefinitions(): ToolDefinition[]
  executeTool(name: string, args: Record<string, unknown>): Promise<ToolExecutionResult>
}
方法说明
getToolDefinitions返回所有可用工具的定义(名称、描述、参数 schema)
executeTool执行指定工具

ConfirmProtocol ​

typescript
interface ConfirmProtocol {
  confirmSplit(proposal: SplitProposal): Promise<TopologyNode>
  dismissSplit(proposal: SplitProposal): Promise<void>
  confirmUpdate(proposal: UpdateProposal): Promise<void>
  dismissUpdate(proposal: UpdateProposal): Promise<void>
}
方法说明
confirmSplit确认拆分建议,创建子 Session
dismissSplit拒绝拆分建议
confirmUpdate确认 L1 字段更新
dismissUpdate拒绝 L1 字段更新

SkillRouter / Skill ​

Skill 对齐标准 Agent Skills 模式(lazy-loaded prompt injection)。LLM 通过内置的 activate_skill tool 按名称激活 skill,Engine 返回 skill 的 content 作为 tool result。

typescript
interface SkillRouter {
  register(skill: Skill): void
  get(name: string): Skill | undefined
  getAll(): Skill[]
}

interface Skill {
  name: string          // 唯一名称
  description: string   // LLM 据此判断是否激活
  content: string       // 激活时注入的完整 prompt 内容
}

Engine 在有 skill 注册时自动追加 activate_skill tool 到 getToolDefinitions() 列表,LLM 可通过 tool call 激活 skill。

ForkProfileRegistry / ForkProfile ​

预注册 fork 配置模板,LLM 在创建子 Session 时通过 profile 参数引用。

typescript
interface ForkProfileRegistry {
  register(name: string, profile: ForkProfile): void
  get(name: string): ForkProfile | undefined
  listNames(): string[]
}

interface ForkProfile {
  systemPrompt?: string | ((vars: Record<string, string>) => string)
  systemPromptMode?: 'preset' | 'prepend' | 'append'  // 默认 'prepend'
  llm?: LLMAdapter
  tools?: LLMCompleteOptions['tools']
  context?: 'none' | 'inherit'
  contextFn?: ForkContextFn
  skills?: string[]
}
字段说明
systemPrompt系统提示词模板;字符串或接收 vars 的函数
systemPromptModesystemPrompt 合成策略(见下表),默认 'prepend'
llm覆盖子 Session 的 LLM 适配器
tools覆盖子 Session 的工具列表
context上下文继承策略
contextFn自定义上下文转换函数(优先于 context)
skills可用 skill 白名单。undefined = 继承全部,['a'] = 仅白名单,[] = 禁用 activate_skill。详见 Per-Session Skills
systemPromptMode行为
prepend(默认)profile prompt 在前,LLM prompt 在后
appendLLM prompt 在前,profile prompt 在后
preset只用 profile prompt,忽略 LLM 提供的 prompt

ToolRegistry ​

ToolRegistryImpl 实现 EngineToolRuntime 接口,可直接作为 capabilities.tools 使用。

typescript
interface ToolRegistry extends EngineToolRuntime {
  register(tool: ToolRegistryEntry): void
  get(name: string): ToolRegistryEntry | undefined
  getAll(): ToolRegistryEntry[]
}

应用层通过 register() 注册自定义工具,Engine 自动合并内置工具(stello_create_session、activate_skill)和用户工具。

StelloAgentRuntimeConfig ​

typescript
interface StelloAgentRuntimeConfig {
  resolver: SessionRuntimeResolver
  recyclePolicy?: RuntimeRecyclePolicy
}
字段说明
resolverSession 运行时解析器
recyclePolicyEngine 回收策略

SessionRuntimeResolver ​

typescript
interface SessionRuntimeResolver {
  resolve(sessionId: string): Promise<EngineRuntimeSession>
}
方法说明
resolve按 sessionId 加载已有 session runtime

Fork 不需要 resolver 参与——Engine 直接调用当前 Session 的 fork() 方法。resolver 只负责按 ID 加载 Session。

TIP

通常不需要手动实现 SessionRuntimeResolver。提供 session.sessionResolver + session.consolidateFn 后,core 会自动构建 resolver。

RuntimeRecyclePolicy ​

typescript
interface RuntimeRecyclePolicy {
  idleTtlMs?: number
}
字段默认值说明
idleTtlMs0空闲回收延迟(毫秒)。0 表示引用归零立即回收;> 0 表示延迟回收

StelloAgentOrchestrationConfig ​

typescript
interface StelloAgentOrchestrationConfig {
  strategy?: OrchestrationStrategy
  splitGuard?: SplitGuard
  mainSession?: SchedulerMainSession | null
  turnRunner?: TurnRunner
  scheduler?: Scheduler
  hooks?: EngineHookProvider
}
字段说明
strategy编排策略,默认 MainSessionFlatStrategy
splitGuard拆分保护守卫
mainSessionScheduler 用的 MainSession,不提供则不做 integration
turnRunner自定义 TurnRunner
scheduler自定义 Scheduler
hooksEngine 事件钩子提供者

EngineHooks ​

typescript
interface EngineHooks {
  onMessageReceived(ctx: { sessionId: string; input: string }): Promise<void> | void
  onAssistantReply(ctx: { sessionId: string; input: string; content: string | null; rawResponse: string }): Promise<void> | void
  onToolCall(ctx: { sessionId: string; toolCall: ToolCall }): Promise<void> | void
  onToolResult(ctx: { sessionId: string; result: ToolCallResult }): Promise<void> | void
  onSessionEnter(ctx: { sessionId: string }): Promise<void> | void
  onSessionLeave(ctx: { sessionId: string }): Promise<void> | void
  onRoundStart(ctx: EngineRoundContext): Promise<void> | void
  onRoundEnd(ctx: EngineRoundResultContext): Promise<void> | void
  onSessionArchive(ctx: { sessionId: string }): Promise<void> | void
  onSessionFork(ctx: { parentId: string; child: TopologyNode }): Promise<void> | void
  onError(ctx: { source: string; error: Error }): Promise<void> | void
}

所有钩子均为可选,支持同步或异步。

钩子上下文
onMessageReceivedsessionId、input
onAssistantReplysessionId、input、content、rawResponse
onToolCallsessionId、toolCall(含 name、args)
onToolResultsessionId、result(含 toolName、success、data、error)
onSessionEntersessionId
onSessionLeavesessionId
onRoundStartsessionId、input
onRoundEndsessionId、input、turn(TurnRunnerResult)
onSessionArchivesessionId
onSessionForkparentId、child(TopologyNode)
onErrorsource、error

SchedulerConfig ​

typescript
interface SchedulerConfig {
  consolidation?: ConsolidationPolicy
  integration?: IntegrationPolicy
}

interface ConsolidationPolicy {
  trigger: ConsolidationTrigger
  everyNTurns?: number
}

interface IntegrationPolicy {
  trigger: IntegrationTrigger
  everyNTurns?: number
}

ConsolidationTrigger:'manual' | 'everyNTurns' | 'onSwitch' | 'onArchive' | 'onLeave'

IntegrationTrigger:'manual' | 'afterConsolidate' | 'everyNTurns' | 'onSwitch' | 'onArchive' | 'onLeave'

SplitGuard ​

typescript
class SplitGuard {
  constructor(sessions: SessionTreeImpl, strategy?: Partial<SplitStrategy>)
  getConfig(): { minTurns: number; cooldownTurns: number }
  updateConfig(patch: Partial<{ minTurns: number; cooldownTurns: number }>): void
  checkCanSplit(sessionId: string): Promise<SplitCheckResult>
}
参数默认值说明
minTurns3Session 至少对话 N 轮后才允许拆分
cooldownTurns5两次拆分之间至少间隔 N 轮

TurnRunnerOptions ​

typescript
interface TurnRunnerOptions {
  maxToolRounds?: number
  onToolCall?: (toolCall: ToolCall) => Promise<void> | void
  onToolResult?: (result: ToolCallResult) => Promise<void> | void
}
字段说明
maxToolRounds最多允许多少轮工具调用
onToolCall工具调用前的观察回调
onToolResult工具调用后的观察回调

StelloAgentHotConfig ​

可通过 updateConfig() 在运行时安全修改的配置子集。仅包含值类型字段,不包含函数/对象引用。

typescript
interface StelloAgentHotConfig {
  runtime?: Partial<RuntimeRecyclePolicy>
  scheduling?: Partial<SchedulerConfig>
  splitGuard?: Partial<{ minTurns: number; cooldownTurns: number }>
}