Skip to content

API 参考

AIAdapter

主类,编排 IntentParser + 三个引擎。

构造函数

js
new AIAdapter(options?)
选项类型默认值说明
aiasync (input, ctx) => commandnullAI 后端函数
parserRuleBasedParsercreateDefault()规则引擎 fallback
maxContextnumber10对话上下文保留条数
maxMessagesnumber50消息日志最大条数
queryobject{}QueryEngine 配置
actionobject{}ActionEngine 配置
flowobject{}FlowEngine 配置
capabilityobject{}CapabilityRegistry 配置

方法

方法返回值说明
process(input, ctx?)Promise<ProcessResult>解析 + 中间件拦截 + 路由 + 执行(核心方法)
undo()Promise<UndoResult>撤销上一步操作
use(middleware)this添加中间件
getMessages()Message[]获取对话记录
clearConversation()void清空所有状态
getPanelHTML()string获取 UI 面板 HTML
getDevToolsSnapshot()DevToolsSnapshot获取完整运行时状态快照
on(event, cb)Function订阅事件,返回取消函数
off(event, cb)void取消事件订阅
once(event, cb)Function一次性订阅,触发后自动取消
wildcard(pattern, cb)Function前缀匹配订阅(如 'flow:*'

属性

属性类型说明
queryQueryEngine查询引擎实例
actionActionEngine执行引擎实例
flowFlowEngine流程引擎实例
parserIntentParser意图解析器实例
busEventBus事件总线实例
capabilityCapabilityRegistry集中式能力注册表

事件

事件数据触发时机
input{ input }用户输入时
parsedParsedCommand意图解析完成
result{ command, result }执行结果返回
flow:step{ step, label, status }流程步骤状态变化
flow:complete{ name, results }流程执行完成
action:before{ action, params }操作执行前
action:after{ action, params, result }操作执行后

QueryEngine

方法

方法返回值说明
register(name, handler)void注册查询处理器,handler(params, context?)
execute(command)Promise<QueryResult>执行查询
followUp(overrides)Promise<QueryResult>上下文追问
aggregate(op, field?)AggResult聚合运算(count/sum/avg/min/max)
getLastResult()QueryHistoryEntry获取上次查询结果
clearHistory()void清空历史和缓存

配置

选项类型默认值说明
cacheTTLnumber30000缓存过期时间(ms)
cacheEnabledbooleantrue是否启用缓存
maxHistorynumber20历史记录最大条数

查询缓存会把 context 纳入 cache key,避免不同用户或角色复用同一份缓存数据。


ActionEngine

方法

方法返回值说明
register(name, config)void注册操作处理器
execute(command, callbacks?)Promise<ActionResult>执行操作
executeBatch(commands, callbacks?)Promise<BatchResult>批量执行
undo()Promise<UndoResult>撤销
canUndo()boolean是否可撤销
getActions()ActionInfo[]获取已注册操作列表
beforeExecute(fn)Function添加权限钩子,返回取消函数
afterExecute(fn)Function添加后置钩子,返回取消函数
getAuditLog(filter?)AuditEntry[]获取审计日志
checkDependencies(type)string | null检查操作依赖是否满足

register 配置

字段类型说明
handlerasync (params, context?) => result操作处理函数
confirmboolean是否需要确认
undoasync (params) => void撤销函数
labelstring显示名称
retriesnumber失败重试次数
dependsOnstring[]前置依赖操作列表

配置

选项类型默认值说明
maxUndonumber10撤销栈深度
requireConfirmbooleantrue默认是否需要确认
onConfirmasync (label, params) => booleannull确认回调;没有可用确认器时默认拒绝需要确认的操作
retriesnumber0默认重试次数
maxAuditLognumber200审计日志最大条数

CapabilityRegistry

集中管理 AI 能力、权限、参数规则和返回字段过滤。

方法

方法返回值说明
register(config)CapabilityConfig注册单个能力
registerMany(configs)CapabilityRegistry批量注册能力
unregister(engine, type)boolean移除能力
get(engine, type)CapabilityConfig | null获取能力定义
has(engine, type)boolean是否已注册
canAccess(engine, type, context?)boolean仅做权限判断
list(filter?)CapabilityConfig[]列出能力
toAuthRules()AuthGuardRule[]转为权限规则
getAICapabilities(context?)AICapabilityDescription[]返回安全的 AI 可见能力清单
middleware(options?)Function生成能力拦截中间件

能力配置

字段说明
enginequery / action / flow
type能力类型
resource资源名
roles / permissions权限要求
paramsSchema参数白名单和类型规则
resultFields仅返回的字段
sensitiveFields额外脱敏字段
confirm是否确认
handler真正执行的业务处理函数

示例

js
adapter.capability.register({
  engine: 'query',
  type: 'users',
  resource: 'users',
  label: '用户',
  roles: ['admin'],
  permissions: ['system:user'],
  paramsSchema: { keyword: 'string' },
  resultFields: ['id', 'username', 'real_name'],
  handler: async (params, context) => api.get('/api/users', params, context),
});

FlowEngine

方法

方法返回值说明
define(name, config)Flow定义流程
execute(name, data?, callbacks?, options?)Promise<FlowResult>执行流程
resume(name, data, failedAt, callbacks?)Promise<FlowResult>断点恢复
remove(name)boolean删除流程
list()FlowInfo[]列出所有流程,每条包含 namecreatedAtlastRunAt
trackAction(command)Suggestion追踪操作模式(自动学习)
clearHistory()void清空执行历史

define 配置

字段类型说明
descriptionstring流程描述
variablesstring[]变量名列表
stepsStep[]步骤定义

Step 结构

字段类型说明
labelstring步骤名称
handlerasync (data, results, context?) => result处理函数
condition(data, results, context?) => boolean条件函数(跳过步骤)
parallelStep[]并行步骤组
flowstring嵌套流程名
paramsobject步骤参数(支持 替换)

配置

选项类型默认值说明
autoLearnThresholdnumber3自动学习触发次数
maxActionPatternsnumber100自动学习记录的最大操作模式数
storage{ get, set }localStorage持久化适配器

IntentParser

方法

方法返回值说明
parse(input, ctx?)Promise<ParsedCommand>解析自然语言
defineSlots(engine, type, slots)void定义参数要求
clearContext()void清空对话上下文
getHistory()ContextEntry[]获取对话历史

配置

选项类型默认值说明
aiasync (input, ctx) => commandnullAI 后端
fallbackRuleBasedParsernew RuleBasedParser()规则引擎
maxContextnumber10上下文保留条数
confidenceThresholdnumber0.5最低置信度

RuleBasedParser

方法

方法返回值说明
addRule(pattern, builder)void添加解析规则
parse(input, ctx?)ParsedCommand解析输入
static createDefault()RuleBasedParser创建默认规则集

EventBus

独立的事件总线类,支持 pub/sub、一次性监听和通配符匹配。

方法

方法返回值说明
on(event, fn)Function订阅事件,返回取消函数
off(event, fn)void取消订阅
emit(event, data?)void触发事件
once(event, fn)Function一次性订阅
wildcard(pattern, fn)Function前缀匹配(如 'flow:*'
removeAll()void移除所有监听器
listenerCount(event)number指定事件的监听器数量
eventNames()string[]所有已注册事件名

内置中间件工厂

createRateLimiter

ts
function createRateLimiter(options?: {
  maxRequests?: number;   // 默认 30
  windowMs?: number;      // 默认 60000
}): Middleware;

滑动窗口速率限制中间件。超限时设置 ctx.result 并阻止后续处理。

createDevToolsLogger

ts
function createDevToolsLogger(options?: {
  maxEntries?: number;    // 默认 200
  redactFields?: string[]; // 默认脱敏 password/token/secret/authorization 等字段
}): Middleware;

记录每次 process 的输入、耗时、结果到 window.__KUPOLA_AI_DEVTOOLS__

createAuthGuard

ts
function createAuthGuard(options?: {
  restrictedTypes?: string[];      // 受限 action type,兼容旧用法
  restrictedQueries?: string[];    // 受限 query type
  restrictedFlows?: string[];      // 受限 flow name
  rules?: AuthGuardRule[];         // 集中规则
  permissions?: Record<string, string[] | AuthGuardRule>;
  roleField?: string;              // 默认 'role'
  permissionsField?: string;       // 默认 'permissions'
  allowedRoles?: string[];         // 默认 ['admin']
  message?: string | ((payload) => string);
}): Middleware;

基于角色和权限的命令拦截中间件。未授权时设置错误结果并阻止后续处理,结果包含 engine: 'auth-guard'code: 'PERMISSION_DENIED'message

ts
interface AuthGuardRule {
  engine?: string | string[] | ((engine: string) => boolean);
  type?: string | string[] | ((type: string) => boolean);
  types?: string[];
  name?: string | string[] | ((name: string) => boolean);
  names?: string[];
  roles?: string[];
  allowedRoles?: string[];
  permission?: string | string[];
  permissions?: string[];
  message?: string | ((payload) => string);
  match?: (command: ParsedCommand, ctx: any) => boolean;
}

安全边界

AI Adapter 的权限守卫是前端交互拦截和提示,不能替代服务端鉴权。API 必须基于登录态、角色、菜单权限和数据权限做最终判断;无权限时服务端应返回 401403


AIPanel

Kupola 原生对话面板组件。

构造函数

js
new AIPanel(adapter, options?)
选项类型默认值说明
titlestring'AI Assistant'面板标题
layout'drawer' | 'floating''drawer'展示方式,默认右侧抽屉;传 'floating' 可使用旧的右下角悬浮面板
widthstring'520px'面板宽度
heightstring'400px'消息区域最大高度;抽屉布局会自动撑满可用高度
placeholderstring'输入指令...'输入框占位符
showTimestampbooleanfalse是否显示消息时间戳
contextobject | (input) => object | Promise<object>{}每次发送时传给 adapter.process(input, context) 的用户上下文
resultViewerbooleantrue查询结果是否显示“查看数据/复制 JSON/导出 CSV”操作
resultPageSizenumber20结果弹窗分页大小
maxTableColumnsnumber12结果弹窗最多显示列数
resizablebooleanfalse是否可拖拽调整宽度
minWidthstring'320px'面板最小宽度
maxWidthstring'720px'面板最大宽度

方法

方法返回值说明
mount(parent)AIPanel挂载到 DOM 元素
open()void打开面板
close()void关闭面板
toggle()void切换显示/隐藏
destroy()void销毁面板并清理事件
addMessage(role, text, actions?)void添加消息

AIDashboard

数据看板组件。

构造函数

js
new AIDashboard(adapter, options?)
选项类型默认值说明
refreshIntervalnumber0自动刷新间隔(ms,0=禁用)
columnsstring'3'每行列数

方法

方法返回值说明
addCard(name, queryType, config?)AIDashboard添加看板卡片
removeCard(name)AIDashboard移除卡片
mount(parent)AIDashboard挂载到 DOM
refresh(name)Promise<void>刷新指定卡片
refreshAll()Promise<void>刷新所有卡片
destroy()void销毁看板

DashboardCardConfig

字段类型说明
labelstring卡片标签
aggregatestring聚合函数:'count' / 'sum:field' / 'avg:field'
paramsobject查询参数
iconstring图标

VoiceController

Web Speech API 语音交互控制器。

构造函数

js
new VoiceController(adapter, options?)
选项类型默认值说明
langstring'zh-CN'识别语言
wakeWordstring'小库'唤醒词
commandMapobject{}语音指令映射
continuousbooleantrue是否持续监听
ttsbooleanfalse是否启用 TTS
silenceMsnumber5000无操作超时(ms)

属性

属性类型说明
supportedboolean浏览器是否支持 Web Speech API
isListeningboolean是否正在监听
isAwakeboolean是否已唤醒(命令模式)

方法

方法返回值说明
start()VoiceController开始监听
stop()VoiceController停止监听
onWake(fn)Function注册唤醒回调
onResult(fn)Function注册识别结果回调
onError(fn)Function注册错误回调
speak(text, options?)voidTTS 语音播报
destroy()void销毁并清理资源

DevToolsSnapshot

ts
interface DevToolsSnapshot {
  version: string;
  messages: Message[];
  middlewares: number;
  query: { registered: number; history: number; cache: number };
  action: { registered: number; undoStack: number; audit: number };
  flow: { defined: number; executions: number };
  events: string[];
}

TypeScript 类型

ts
import type {
  AIAdapterOptions,
  ParsedCommand,
  ProcessResult,
  QueryResult,
  ActionResult,
  FlowResult,
  BatchResult,
  UndoResult,
  AggResult,
  AuditEntry,
  FlowInfo,
  FlowStep,
  Suggestion,
  Message,
  ContextEntry,
  DevToolsSnapshot,
  EventBus,
  AIPanelOptions,
  AIPanel,
  AIDashboardOptions,
  DashboardCardConfig,
  AIDashboard,
  VoiceControllerOptions,
  VoiceController,
  RateLimiterOptions,
  DevToolsLoggerOptions,
  AuthGuardOptions,
} from '@kupola/ai-adapter';