# 命令系统

<cite>
**本文引用的文件**
- [src/lib/im/commands.ts](file://src/lib/im/commands.ts)
- [src/lib/im/channel-router.ts](file://src/lib/im/channel-router.ts)
- [src/lib/im/bridge-manager.ts](file://src/lib/im/bridge-manager.ts)
- [src/lib/im/concurrency.ts](file://src/lib/im/concurrency.ts)
- [src/lib/im/conversation-engine.ts](file://src/lib/im/conversation-engine.ts)
- [src/lib/im/delivery.ts](file://src/lib/im/delivery.ts)
- [src/lib/im/permission-broker.ts](file://src/lib/im/permission-broker.ts)
- [src/lib/im/policy.ts](file://src/lib/im/policy.ts)
- [src/lib/im/types.ts](file://src/lib/im/types.ts)
- [src/lib/im/im-events.ts](file://src/lib/im/im-events.ts)
- [src/lib/slash-commands.ts](file://src/lib/slash-commands.ts)
- [src/hooks/use-slash-commands.ts](file://src/hooks/use-slash-commands.ts)
- [src/components/chat/slash-command-menu.tsx](file://src/components/chat/slash-command-menu.tsx)
</cite>

## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构总览](#架构总览)
5. [详细组件分析](#详细组件分析)
6. [依赖关系分析](#依赖关系分析)
7. [性能考量](#性能考量)
8. [故障排查指南](#故障排查指南)
9. [结论](#结论)
10. [附录](#附录)

## 简介
本文件系统性阐述 Forge 的 IM 命令系统，覆盖命令解析、执行与响应机制；内置命令的功能与使用方法（会话绑定、权限请求、任务控制等）；安全检查、权限验证与错误处理；自定义命令的开发与注册、参数处理；扩展方法、调试技巧与性能优化；以及命令执行的并发控制与资源管理策略。目标是帮助开发者快速理解并高效扩展命令系统。

## 项目结构
命令系统位于 IM 子系统中，采用五层架构（适配器层、桥接层、路由层、对话引擎层、投递层），命令处理贯穿路由层与桥接层，最终由投递层将结果送达各平台。

```mermaid
graph TB
subgraph "IM 命令系统五层架构"
A["适配器层<br/>ChannelAdapter"] --> B["桥接层<br/>BridgeManager"]
B --> C["路由层<br/>ChannelRouter"]
C --> D["对话引擎层<br/>ConversationEngine"]
D --> E["投递层<br/>DeliveryLayer"]
end
B --> F["命令解析与执行<br/>commands.ts"]
B --> G["权限代理<br/>permission-broker.ts"]
B --> H["并发控制<br/>concurrency.ts"]
B --> I["策略检查<br/>policy.ts"]
B --> J["事件发布<br/>im-events.ts"]
```

图表来源
- [src/lib/im/bridge-manager.ts:1-635](file://src/lib/im/bridge-manager.ts#L1-L635)
- [src/lib/im/channel-router.ts:1-232](file://src/lib/im/channel-router.ts#L1-L232)
- [src/lib/im/conversation-engine.ts:1-459](file://src/lib/im/conversation-engine.ts#L1-L459)
- [src/lib/im/delivery.ts:1-336](file://src/lib/im/delivery.ts#L1-L336)
- [src/lib/im/commands.ts:1-964](file://src/lib/im/commands.ts#L1-L964)
- [src/lib/im/permission-broker.ts:1-117](file://src/lib/im/permission-broker.ts#L1-L117)
- [src/lib/im/concurrency.ts:1-61](file://src/lib/im/concurrency.ts#L1-L61)
- [src/lib/im/policy.ts:1-89](file://src/lib/im/policy.ts#L1-L89)
- [src/lib/im/im-events.ts:1-34](file://src/lib/im/im-events.ts#L1-L34)

章节来源
- [src/lib/im/bridge-manager.ts:1-635](file://src/lib/im/bridge-manager.ts#L1-L635)
- [src/lib/im/channel-router.ts:1-232](file://src/lib/im/channel-router.ts#L1-L232)
- [src/lib/im/conversation-engine.ts:1-459](file://src/lib/im/conversation-engine.ts#L1-L459)
- [src/lib/im/delivery.ts:1-336](file://src/lib/im/delivery.ts#L1-L336)
- [src/lib/im/commands.ts:1-964](file://src/lib/im/commands.ts#L1-L964)
- [src/lib/im/permission-broker.ts:1-117](file://src/lib/im/permission-broker.ts#L1-L117)
- [src/lib/im/concurrency.ts:1-61](file://src/lib/im/concurrency.ts#L1-L61)
- [src/lib/im/policy.ts:1-89](file://src/lib/im/policy.ts#L1-L89)
- [src/lib/im/im-events.ts:1-34](file://src/lib/im/im-events.ts#L1-L34)

## 核心组件
- 命令解析与执行：负责识别 IM 命令、校验与分发至对应处理器，并返回平台可读的文本响应。
- 路由层：将渠道与聊天标识映射到会话 ID，支持自动创建、绑定与会话查询。
- 并发控制：确保同一聊天通道的消息串行处理，避免竞态与资源冲突。
- 权限代理：集中处理工具调用的权限请求，支持超时与适配器回调。
- 对话引擎：与 SDK 交互，消费流式输出，生成最终文本与附件。
- 投递层：统一处理速率限制、消息分片、去重、重试与审计日志。
- 策略检查：基于数据库配置对私聊/群聊、触发方式、白名单进行访问控制。
- 事件发布：向桌面端同步会话变更与命令执行状态。

章节来源
- [src/lib/im/commands.ts:1-964](file://src/lib/im/commands.ts#L1-L964)
- [src/lib/im/channel-router.ts:1-232](file://src/lib/im/channel-router.ts#L1-L232)
- [src/lib/im/concurrency.ts:1-61](file://src/lib/im/concurrency.ts#L1-L61)
- [src/lib/im/permission-broker.ts:1-117](file://src/lib/im/permission-broker.ts#L1-L117)
- [src/lib/im/conversation-engine.ts:1-459](file://src/lib/im/conversation-engine.ts#L1-L459)
- [src/lib/im/delivery.ts:1-336](file://src/lib/im/delivery.ts#L1-L336)
- [src/lib/im/policy.ts:1-89](file://src/lib/im/policy.ts#L1-L89)
- [src/lib/im/im-events.ts:1-34](file://src/lib/im/im-events.ts#L1-L34)

## 架构总览
下图展示从消息到达至命令执行与响应的完整流程，包括策略检查、命令解析、会话绑定、并发控制、权限请求与最终投递。

```mermaid
sequenceDiagram
participant Plat as "平台适配器"
participant BM as "BridgeManager"
participant POL as "策略检查"
participant CMD as "命令解析/执行"
participant CR as "ChannelRouter"
participant LOCK as "并发锁"
participant CE as "对话引擎"
participant DL as "投递层"
Plat->>BM : "consumeOne() 获取消息"
BM->>POL : "checkPolicy()"
POL-->>BM : "允许/拒绝"
alt 允许
BM->>CMD : "parseImCommand()"
alt 是命令
CMD-->>DL : "executeImCommand() 返回响应"
DL-->>Plat : "deliver() 发送"
else 非命令
BM->>CR : "resolveSession()"
CR-->>BM : "sessionId, workspace"
BM->>LOCK : "acquire(sessionKey)"
LOCK-->>BM : "获得锁"
BM->>CE : "processMessage() 流式回调"
CE-->>DL : "onDraft/onFinal/附件"
DL-->>Plat : "deliver() 发送"
BM->>LOCK : "release(sessionKey)"
end
else 拒绝
BM-->>Plat : "忽略/记录"
end
```

图表来源
- [src/lib/im/bridge-manager.ts:337-529](file://src/lib/im/bridge-manager.ts#L337-L529)
- [src/lib/im/commands.ts:277-373](file://src/lib/im/commands.ts#L277-L373)
- [src/lib/im/channel-router.ts:31-74](file://src/lib/im/channel-router.ts#L31-L74)
- [src/lib/im/concurrency.ts:21-49](file://src/lib/im/concurrency.ts#L21-L49)
- [src/lib/im/conversation-engine.ts:40-231](file://src/lib/im/conversation-engine.ts#L40-L231)
- [src/lib/im/delivery.ts:78-169](file://src/lib/im/delivery.ts#L78-L169)
- [src/lib/im/policy.ts:20-36](file://src/lib/im/policy.ts#L20-L36)

## 详细组件分析

### 命令解析与执行（commands.ts）
- 支持命令集合：new、bind、sessions、clear、compact、projects、switch、newproject、model、mode、status、stop、help。
- 解析逻辑：以“/”开头识别命令，规范化别名（如 project→projects，session→sessions），匹配已知命令后拆分参数。
- 执行流程：根据命令名分派到对应处理器，返回平台可读文本；未知命令尝试给出相似命令提示。
- 内置命令功能要点：
  - 会话绑定与创建：/new 创建新会话并自动绑定；/bind 绑定现有会话；/sessions 列出最近会话。
  - 会话清理与压缩：/clear 需要二次确认；/compact 将历史消息压缩为摘要。
  - 项目与工作区：/projects 列表；/switch 切换项目并复用或新建会话；/newproject 创建新项目并绑定。
  - 模型与权限：/model 查看/切换模型；/mode 设置权限模式（confirm/full）。
  - 状态与停止：/status 展示桥接与会话状态；/stop 停止当前任务。
- 错误处理：对未知命令给出友好提示；对路径、会话缺失等情况返回明确错误信息。

```mermaid
flowchart TD
Start(["收到文本"]) --> CheckPrefix{"以'/'开头？"}
CheckPrefix --> |否| NotCmd["非命令，进入对话流程"]
CheckPrefix --> |是| Split["按空白分割参数"]
Split --> Normalize["规范化别名"]
Normalize --> Known{"是否为已知命令？"}
Known --> |否| Suggest["生成相似命令提示"]
Suggest --> Respond["返回提示文本"]
Known --> |是| Dispatch["分派到处理器"]
Dispatch --> Resp["生成响应文本"]
Resp --> Respond
NotCmd --> End(["结束"])
Respond --> End
```

图表来源
- [src/lib/im/commands.ts:277-326](file://src/lib/im/commands.ts#L277-L326)
- [src/lib/im/commands.ts:336-373](file://src/lib/im/commands.ts#L336-L373)

章节来源
- [src/lib/im/commands.ts:1-964](file://src/lib/im/commands.ts#L1-L964)

### 会话绑定与路由（channel-router.ts）
- 会话解析优先级：已有绑定且会话存在则复用；否则根据默认工作区创建新会话并绑定。
- 显式绑定：/bind 支持短 ID 前缀匹配与全 UUID 绑定。
- 自动绑定：首次消息或解绑后自动创建并绑定。
- 会话查询：/sessions 列出最近会话，含工作区与更新时间。
- 默认工作区与模型：优先读取配置项，回退策略明确。

```mermaid
classDiagram
class ChannelRouter {
+resolveSession(msg) SessionResolution
+bindSession(channelType, chatId, sessionId) void
+unbindSession(channelType, chatId) void
+createNewSession(msg) string
+getBindingInfo(channelType, chatId) BindingInfo
+listRecentSessions(limit) array
-getDefaultWorkspace() string
-getDefaultModel() string
}
class SessionResolution {
+string sessionId
+boolean isNew
+string workspace
}
ChannelRouter --> SessionResolution : "返回"
```

图表来源
- [src/lib/im/channel-router.ts:19-231](file://src/lib/im/channel-router.ts#L19-L231)

章节来源
- [src/lib/im/channel-router.ts:1-232](file://src/lib/im/channel-router.ts#L1-L232)

### 并发控制（concurrency.ts）
- 以 (channelType:chatId) 为键的锁管理，采用 Promise 链避免竞态，后续请求排队等待。
- 提供锁定状态查询与计数，便于监控与调试。

```mermaid
flowchart TD
Acquire["acquire(key)"] --> HasPrev{"是否存在旧锁？"}
HasPrev --> |是| AwaitPrev["等待旧锁释放"]
HasPrev --> |否| CreateNew["创建新锁并立即设置"]
CreateNew --> Release["release() 删除锁并释放"]
AwaitPrev --> Release
```

图表来源
- [src/lib/im/concurrency.ts:21-49](file://src/lib/im/concurrency.ts#L21-L49)

章节来源
- [src/lib/im/concurrency.ts:1-61](file://src/lib/im/concurrency.ts#L1-L61)

### 权限请求与代理（permission-broker.ts）
- 集中发起权限请求并通过适配器发送给用户，等待允许/拒绝。
- 超时自动拒绝（120 秒），支持适配器侧前缀匹配（如飞书短 ID）。
- 提供按通道清理与全局清理接口，保证资源回收。

```mermaid
sequenceDiagram
participant CE as "对话引擎"
participant PB as "权限代理"
participant AD as "适配器"
CE->>PB : "requestPermission(req)"
PB->>AD : "sendPermissionPrompt(req)"
AD-->>PB : "用户点击允许/拒绝"
PB-->>CE : "resolvePermission() 返回决策"
```

图表来源
- [src/lib/im/permission-broker.ts:36-85](file://src/lib/im/permission-broker.ts#L36-L85)
- [src/lib/im/conversation-engine.ts:112-132](file://src/lib/im/conversation-engine.ts#L112-L132)

章节来源
- [src/lib/im/permission-broker.ts:1-117](file://src/lib/im/permission-broker.ts#L1-L117)
- [src/lib/im/conversation-engine.ts:1-459](file://src/lib/im/conversation-engine.ts#L1-L459)

### 对话引擎与流式处理（conversation-engine.ts）
- 保存用户消息（含图片/文件块），构建 SDK 查询，消费流式事件。
- 流式回调：onTyping、onDraft、onFinal；支持附件回调。
- 权限模式：confirm 模式下通过 canUseTool 回调触发权限请求；full 模式直接放行。
- 会话标题与时间戳维护；周期性归档与内存刷新。
- 异常处理：会话 ID 冲突时重试；超时/取消通过 AbortController 控制。

```mermaid
sequenceDiagram
participant BM as "BridgeManager"
participant CE as "对话引擎"
participant CB as "回调"
BM->>CE : "processMessage(msg, sessionId, workspace, callbacks)"
CE->>CB : "onTyping()"
CE->>CB : "onDraft(partialText)"
CE->>CB : "onFinal(text)"
CE->>CB : "onAttachments(attachments)"
CE-->>BM : "ConversationResult"
```

图表来源
- [src/lib/im/conversation-engine.ts:40-231](file://src/lib/im/conversation-engine.ts#L40-L231)

章节来源
- [src/lib/im/conversation-engine.ts:1-459](file://src/lib/im/conversation-engine.ts#L1-L459)

### 投递层与平台适配（delivery.ts）
- 令牌桶限流：每通道每分钟约 20 条消息，突发 5 条。
- 平台分片：按 Telegram/Discord/飞书的最大长度切分消息。
- 去重：基于内容哈希的去重表，带 TTL 清理。
- 重试：指数退避最多 3 次。
- 审计日志：记录发送/编辑/删除/图片/文件等操作。
- 二进制附件：图片与文件单独发送，支持标题与审计。

```mermaid
flowchart TD
Deliver["deliver(adapter, chatId, text, options)"] --> Typing{"是否打字指示？"}
Typing --> |是| SendTyping["sendTypingIndicator()"]
Typing --> |否| Delete{"是否删除消息？"}
Delete --> |是| SendDelete["send(deleteMessageId) + 审计"]
Delete --> |否| Rate["acquireToken()"]
Rate --> Render["renderForPlatform()"]
Render --> Edit{"是否编辑？"}
Edit --> |是| TryEdit["send(editMessageId) 成功？"]
TryEdit --> |是| AuditEdit["审计编辑"]
TryEdit --> |否| SendNew["发送新消息"]
Edit --> |否| Chunk["chunkMessage()"]
Chunk --> Dedup["isDuplicate() 去重"]
Dedup --> Retry["retryWithBackoff()"]
Retry --> Track["trackOutboundRef() + 审计"]
Track --> Done["完成"]
```

图表来源
- [src/lib/im/delivery.ts:78-327](file://src/lib/im/delivery.ts#L78-L327)

章节来源
- [src/lib/im/delivery.ts:1-336](file://src/lib/im/delivery.ts#L1-L336)

### 策略检查（policy.ts）
- 私聊策略：disabled/open/allowlist/pairing。
- 群聊策略：disabled/open/allowlist；支持仅提及触发。
- 白名单：发送者与群组白名单 JSON 数组。
- 通道未找到时记录警告并拒绝。

章节来源
- [src/lib/im/policy.ts:1-89](file://src/lib/im/policy.ts#L1-L89)

### 事件发布（im-events.ts）
- 提供订阅/发布接口，用于桌面端同步消息、命令与会话变更事件。

章节来源
- [src/lib/im/im-events.ts:1-34](file://src/lib/im/im-events.ts#L1-L34)

### 前端命令菜单与注册（slash-commands.ts、use-slash-commands.ts、slash-command-menu.tsx）
- 命令定义：内置命令集合与分类、占位符与描述。
- 过滤与排序：按类别优先级与字母序排列，支持动态查询过滤。
- 注册机制：通过钩子拉取技能树、代理树与 MCP 服务器，动态注入命令。
- 菜单渲染：按类别分组显示图标与占位符，支持键盘导航与选中高亮。

```mermaid
sequenceDiagram
participant UI as "SlashCommandMenu"
participant Hook as "useSlashCommands"
participant API as "后端树接口"
Hook->>API : "获取技能/代理/MCP 树"
API-->>Hook : "名称数组"
Hook-->>UI : "合并后的命令列表"
UI-->>UI : "过滤与排序"
UI-->>User : "渲染菜单"
```

图表来源
- [src/hooks/use-slash-commands.ts:45-128](file://src/hooks/use-slash-commands.ts#L45-L128)
- [src/lib/slash-commands.ts:22-69](file://src/lib/slash-commands.ts#L22-L69)
- [src/components/chat/slash-command-menu.tsx:22-84](file://src/components/chat/slash-command-menu.tsx#L22-L84)

章节来源
- [src/lib/slash-commands.ts:1-69](file://src/lib/slash-commands.ts#L1-L69)
- [src/hooks/use-slash-commands.ts:1-129](file://src/hooks/use-slash-commands.ts#L1-L129)
- [src/components/chat/slash-command-menu.tsx:1-85](file://src/components/chat/slash-command-menu.tsx#L1-L85)

## 依赖关系分析
- BridgeManager 作为中枢，依赖 ChannelRouter、SessionLockManager、ConversationEngine、DeliveryLayer、PermissionBroker、Policy 与 IM 事件。
- commands.ts 依赖 ChannelRouter、DB 访问与 IM 事件；commands.ts 与 BridgeManager 在命令执行路径上耦合度较高。
- concurrency.ts 与 delivery.ts 分别在桥接层与投递层提供资源控制与限流保障。
- policy.ts 与 permission-broker.ts 分别在策略与权限层面提供安全边界。
- 前端 slash-commands.ts 与 use-slash-commands.ts 通过 API 动态注册命令，与后端 commands.ts 形成互补。

```mermaid
graph LR
BM["BridgeManager"] --> CR["ChannelRouter"]
BM --> SL["SessionLockManager"]
BM --> CE["ConversationEngine"]
BM --> DL["DeliveryLayer"]
BM --> PB["PermissionBroker"]
BM --> POL["Policy"]
BM --> EV["IM Events"]
CMD["commands.ts"] --> CR
CMD --> EV
DL --> |限流/去重/重试| Plat["平台适配器"]
CE --> |权限回调| PB
```

图表来源
- [src/lib/im/bridge-manager.ts:45-65](file://src/lib/im/bridge-manager.ts#L45-L65)
- [src/lib/im/commands.ts:1-964](file://src/lib/im/commands.ts#L1-L964)
- [src/lib/im/delivery.ts:1-336](file://src/lib/im/delivery.ts#L1-L336)
- [src/lib/im/permission-broker.ts:1-117](file://src/lib/im/permission-broker.ts#L1-L117)
- [src/lib/im/policy.ts:1-89](file://src/lib/im/policy.ts#L1-L89)
- [src/lib/im/im-events.ts:1-34](file://src/lib/im/im-events.ts#L1-L34)

章节来源
- [src/lib/im/bridge-manager.ts:1-635](file://src/lib/im/bridge-manager.ts#L1-L635)
- [src/lib/im/commands.ts:1-964](file://src/lib/im/commands.ts#L1-L964)
- [src/lib/im/delivery.ts:1-336](file://src/lib/im/delivery.ts#L1-L336)
- [src/lib/im/permission-broker.ts:1-117](file://src/lib/im/permission-broker.ts#L1-L117)
- [src/lib/im/policy.ts:1-89](file://src/lib/im/policy.ts#L1-L89)
- [src/lib/im/im-events.ts:1-34](file://src/lib/im/im-events.ts#L1-L34)

## 性能考量
- 并发控制：SessionLockManager 保证同一聊天串行处理，避免重复计算与资源争用。
- SDK 背压：BridgeManager 内部限制最大并发 SDK 调用数量，防止过载。
- 限流与去重：投递层令牌桶限流与去重表降低平台压力与重复消息。
- 缓存与回退：会话 ID 冲突时自动重试；策略与默认值提供降级路径。
- 流式预览：对话引擎按 800ms 阈值节流草稿更新，兼顾实时性与网络开销。

章节来源
- [src/lib/im/concurrency.ts:1-61](file://src/lib/im/concurrency.ts#L1-L61)
- [src/lib/im/bridge-manager.ts:535-549](file://src/lib/im/bridge-manager.ts#L535-L549)
- [src/lib/im/delivery.ts:23-55](file://src/lib/im/delivery.ts#L23-L55)
- [src/lib/im/conversation-engine.ts:279-287](file://src/lib/im/conversation-engine.ts#L279-L287)

## 故障排查指南
- 未知命令：命令解析器会检测疑似拼写错误并提示相似命令与帮助。
- 权限问题：确认权限模式设置；若长时间无响应，检查权限代理超时与适配器回调。
- 会话异常：检查会话绑定状态与默认工作区；必要时使用 /new 或 /bind 重建。
- 平台限流/去重：观察投递层日志与审计表；调整消息节奏或启用跳过分片。
- 连接中断：桥接层具备指数退避与断路器；认证失败将触发断路器暂停重连。
- 超时与取消：/stop 命令或整体超时会触发 AbortController，注意清理草稿消息。

章节来源
- [src/lib/im/commands.ts:296-326](file://src/lib/im/commands.ts#L296-L326)
- [src/lib/im/permission-broker.ts:22-47](file://src/lib/im/permission-broker.ts#L22-L47)
- [src/lib/im/channel-router.ts:31-74](file://src/lib/im/channel-router.ts#L31-L74)
- [src/lib/im/delivery.ts:175-193](file://src/lib/im/delivery.ts#L175-L193)
- [src/lib/im/bridge-manager.ts:555-601](file://src/lib/im/bridge-manager.ts#L555-L601)

## 结论
Forge 的 IM 命令系统以清晰的五层架构实现命令解析、会话绑定、权限控制与流式响应。通过策略检查、并发锁与背压控制，系统在安全性与稳定性之间取得平衡。前端命令菜单与后端命令执行形成闭环，既满足内置命令需求，又为自定义命令与第三方集成预留空间。建议在扩展时遵循现有模块职责与数据流，确保一致的用户体验与可观测性。

## 附录

### 内置命令速查
- 会话管理：/new、/bind、/sessions、/clear、/compact
- 项目与工作区：/projects、/switch、/newproject
- 设置：/model、/mode、/status
- 控制：/stop、/help

章节来源
- [src/lib/im/commands.ts:30-35](file://src/lib/im/commands.ts#L30-L35)

### 自定义命令开发指南
- 定义命令：在命令解析器中加入新命令名与别名映射。
- 实现处理器：在命令执行函数中添加分支与处理逻辑，返回平台可读文本。
- 会话与路由：如需访问会话或工作区，通过 ChannelRouter 获取绑定信息。
- 权限与安全：涉及危险操作时，结合权限模式与 PermissionBroker 触发用户确认。
- 响应与投递：使用投递层 deliver() 发送文本；需要草稿/最终态时配合流式回调。
- 事件同步：必要时通过 IM 事件发布会话变更或命令执行状态。

章节来源
- [src/lib/im/commands.ts:277-373](file://src/lib/im/commands.ts#L277-L373)
- [src/lib/im/channel-router.ts:143-154](file://src/lib/im/channel-router.ts#L143-L154)
- [src/lib/im/permission-broker.ts:36-58](file://src/lib/im/permission-broker.ts#L36-L58)
- [src/lib/im/delivery.ts:78-169](file://src/lib/im/delivery.ts#L78-L169)
- [src/lib/im/im-events.ts:31-33](file://src/lib/im/im-events.ts#L31-L33)

### 参数处理与类型约束
- 命令参数：按空白分割，首段为命令名，其余为参数数组。
- 类型定义：统一在类型文件中声明命令、消息、权限请求与回调接口，确保跨层一致性。

章节来源
- [src/lib/im/types.ts:76-126](file://src/lib/im/types.ts#L76-L126)
- [src/lib/im/commands.ts:277-294](file://src/lib/im/commands.ts#L277-L294)