Files
deepseek-harness/docs/core-data-structures/commands.zh.md
2026-07-26 02:33:29 +08:00

3.5 KiB
Raw Blame History

用户命令

English | 中文

dsh-commands 的用户命令 seam。交互式适配器用它发现插件拥有的命令并针对确切的 agent智能体直接执行这些命令而不创建模型消息。命令 Agent Noteagent 决策记录) 负责分发与生命周期的决策依据;packageREADME 负责组合方式与限制。

来源:packages/ui/commands/src/index.ts

输入元数据

该 seam 公开一个可选的非结构化输入提示。命令的可用性由插件组合决定:每个消费注册表的适配器都会看到全部生效定义。

/** Immutable metadata for a command's optional unstructured input. */
interface CommandInputDescriptor {
  /** Placeholder shown before the user supplies free-form input. */
  readonly hint: string
}

定义

CommandDefinition 是由插件编写的注册定义。注册表会验证并冻结一份与原始注册对象脱离的生效定义。

/** Plugin-owned command registration. */
interface CommandDefinition {
  /** Lowercase command name without the leading slash. */
  readonly name: string
  /** Human-readable summary used in discovery UI. */
  readonly description: string
  /** Optional free-form input hint advertised to capable clients. */
  readonly input?: CommandInputDescriptor
  /** Execute against the receiving agent without sending the command to the model. */
  readonly handler: (invocation: CommandInvocation) => CommandResult | Promise<CommandResult>
}

调用与结果

适配器拥有取消操作,并传入确切的目标 agent。rawInput 紧接在解析后的名称之后,并保留适配器传入的分隔符与后缀。结果会直接呈现给 UI而不是工具结果或会话事件。

/** Invocation passed to one registered command handler. */
interface CommandInvocation {
  /** Exact agent whose human-facing surface received the command. */
  readonly agent: Agent
  /** Exact text following the registered command name, including separator whitespace. */
  readonly rawInput: string
  /** Cancellation signal owned by the dispatching UI request. */
  readonly signal: AbortSignal
}
/** Expected command outcome rendered directly by the dispatching UI. */
type CommandResult =
  | { readonly kind: 'success'; readonly text?: string }
  | { readonly kind: 'error'; readonly text: string }

发现与解析视图

作用域解析后,适配器会获得不含处理器的不可变描述符。parseCommand() 在注册表解析前返回 ParsedCommand;语法有效的输入仍可能指向不可用的命令。

/** Handler-free immutable command view returned to UI adapters. */
interface CommandDescriptor {
  /** Lowercase command name without the leading slash. */
  readonly name: string
  /** Human-readable summary used in discovery UI. */
  readonly description: string
  /** Optional free-form input hint advertised to capable clients. */
  readonly input?: CommandInputDescriptor
}
/** Syntactically valid slash command before registry resolution. */
interface ParsedCommand {
  /** Lowercase command name without the leading slash. */
  readonly name: string
  /** Exact text following the command name. */
  readonly rawInput: string
}