Skip to content

# 业务管理器 ​

AI 小鲸的业务逻辑通过多个 Manager 类进行管理，各 Manager 职责单一、协作明确。本文档介绍各管理器的 API。

## ComponentManager ​

中央事件协调器，负责组件间的事件通信。所有 Manager 和组件通过 `ComponentManager` 进行解耦通信。

### 方法 ​

方法 | 类型 | 说明
--- | --- | ---
`on` | `(event: InternalEvent, handler: Function) => void` | 注册事件监听
`off` | `(event: InternalEvent, handler: Function) => void` | 移除事件监听
`emit` | `(event: InternalEvent, ...args: any[]) => void` | 触发事件

### 事件类型 ​

通过 `InternalEvent` 枚举定义，常用事件包括：

typescript

    enum InternalEvent {
      // 消息相关
      SendMessage = 'send-message',
      StopGeneration = 'stop-generation',
      ReceiveStart = 'receive-start',
      ReceiveText = 'receive-text',
      ReceiveEnd = 'receive-end',

      // 会话相关
      SessionSwitched = 'session-switched',
      SessionCreated = 'session-created',
      SessionDeleted = 'session-deleted',

      // 快捷指令
      ShortcutClick = 'shortcut-click',
      ShortcutSelect = 'shortcut-select',

      // UI 状态
      SelectionModeChanged = 'selection-mode-changed',

      // 错误
      Error = 'error',
    }

### 用法示例 ​

typescript

    import { ComponentManager } from '@blueking/ai-blueking';

    const manager = new ComponentManager();

    // 监听消息发送
    manager.on(InternalEvent.SendMessage, (message: string) => {
      console.log('消息已发送:', message);
    });

    // 触发事件
    manager.emit(InternalEvent.SendMessage, '你好');

## ChatBusinessManager ​

聊天业务管理器，封装消息发送、停止生成等核心聊天逻辑。

### 构造函数 ​

typescript

    new ChatBusinessManager(agentModule, sessionModule, chatbotInit)

参数 | 类型 | 说明
--- | --- | ---
`agentModule` | `AgentModule` | chat-helper 的 Agent 模块
`sessionModule` | `SessionModule` | chat-helper 的 Session 模块
`chatbotInit` | `ChatbotInit` | 聊天机器人初始化配置

### 方法 ​

方法 | 类型 | 说明
--- | --- | ---
`sendMessage` | `(content: string, sessionCode: string, options?: object) => void` | 发送消息
`stopGeneration` | `(sessionCode: string) => void` | 停止当前会话的生成

### 用法示例 ​

typescript

    // 发送消息
    chatBizManager.sendMessage('帮我写一个排序算法', currentSession.sessionCode);

    // 停止生成
    chatBizManager.stopGeneration(currentSession.sessionCode);

    // 带选项发送
    chatBizManager.sendMessage('解释这段代码', sessionCode, {
      shortcutId: 'explain-code',
      formData: { language: 'python' },
    });

## SessionBusinessManager ​

会话业务管理器，封装会话的增删改查及切换逻辑。

### 构造函数 ​

typescript

    new SessionBusinessManager(sessionModule, messageModule, agentModule?, options?)

参数 | 类型 | 说明
--- | --- | ---
`sessionModule` | `SessionModule` | chat-helper 的 Session 模块
`messageModule` | `MessageModule` | chat-helper 的 Message 模块
`agentModule` | `AgentModule` | chat-helper 的 Agent 模块（可选）
`options` | `object` | 配置选项（可选）

### 方法 ​

方法 | 类型 | 说明
--- | --- | ---
`createNewSession` | `() => Promise<ISession>` | 创建新会话
`switchSession` | `(code: string) => Promise<void>` | 切换到指定会话
`deleteSession` | `(code: string) => Promise<void>` | 删除指定会话
`batchDeleteSessions` | `(codes: string[]) => Promise<void>` | 批量删除会话
`renameSession` | `(code: string) => Promise<void>` | 重命名会话
`loadRecentSession` | `(options?: object) => Promise<void>` | 加载最近会话

### 响应式属性 ​

属性 | 类型 | 说明
--- | --- | ---
`sessionList` | `Ref<ISession[]>` | 会话列表
`currentSession` | `Ref<ISession | null>` | 当前会话

### 用法示例 ​

typescript

    // 创建新会话
    const session = await sessionBizManager.createNewSession();

    // 切换会话
    await sessionBizManager.switchSession('session-abc-123');

    // 删除会话
    await sessionBizManager.deleteSession('session-abc-123');

    // 批量删除
    await sessionBizManager.batchDeleteSessions(['session-1', 'session-2']);

    // 重命名
    await sessionBizManager.renameSession('session-abc-123');

    // 加载最近会话
    await sessionBizManager.loadRecentSession({ autoSwitch: true });

## ShortcutManager ​

快捷指令管理器，负责快捷指令的获取、过滤和选择。

### 构造函数 ​

typescript

    new ShortcutManager(agentModule)

参数 | 类型 | 说明
--- | --- | ---
`agentModule` | `AgentModule` | chat-helper 的 Agent 模块

### 方法 ​

方法 | 类型 | 说明
--- | --- | ---
`getShortcuts` | `() => IShortcut[]` | 获取全部快捷指令
`filterShortcuts` | `(keyword: string) => IShortcut[]` | 根据关键词过滤快捷指令
`selectShortcut` | `(shortcut: IShortcut, text?: string) => void` | 选择快捷指令并可选填充文本

### 响应式属性 ​

属性 | 类型 | 说明
--- | --- | ---
`shortcuts` | `Ref<IShortcut[]>` | 全部快捷指令列表
`filteredShortcuts` | `Ref<IShortcut[]>` | 过滤后的快捷指令列表

### 用法示例 ​

typescript

    const shortcutManager = new ShortcutManager(agentModule);

    // 获取全部快捷指令
    const allShortcuts = shortcutManager.getShortcuts();

    // 过滤
    const filtered = shortcutManager.filterShortcuts('代码');

    // 选择快捷指令
    shortcutManager.selectShortcut(shortcut, '请帮我优化这段代码');

## UIStateManager ​

UI 状态管理器，管理组件层面的全局 UI 状态，如多选模式。

### 方法 ​

方法 | 类型 | 说明
--- | --- | ---
`enableSelectionMode` | `() => void` | 启用多选模式
`disableSelectionMode` | `() => void` | 禁用多选模式

### 响应式属性 ​

属性 | 类型 | 说明
--- | --- | ---
`isSelectionMode` | `Ref<boolean>` | 当前是否处于多选模式

### 用法示例 ​

typescript

    const uiManager = new UIStateManager();

    // 进入多选模式（如分享场景）
    uiManager.enableSelectionMode();

    // 退出多选模式
    uiManager.disableSelectionMode();

    // 监听状态
    watch(uiManager.isSelectionMode, (val) => {
      console.log('多选模式:', val);
    });

## ShareBusinessManager ​

分享业务管理器，负责消息分享相关的业务逻辑。

### 构造函数 ​

typescript

    new ShareBusinessManager(messageModule, sessionModule)

参数 | 类型 | 说明
--- | --- | ---
`messageModule` | `MessageModule` | chat-helper 的 Message 模块
`sessionModule` | `SessionModule` | chat-helper 的 Session 模块

### 方法 ​

方法 | 类型 | 说明
--- | --- | ---
`shareMessages` | `(messages: Message[]) => Promise<{ shareUrl: string; userMessageIds: string[] }>` | 分享选中的消息，返回分享链接和用户消息 ID 列表

### 用法示例 ​

typescript

    const shareManager = new ShareBusinessManager(messageModule, sessionModule);

    // 分享消息
    const { shareUrl, userMessageIds } = await shareManager.shareMessages(selectedMessages);
    console.log('分享链接:', shareUrl);