# 扩展模型

理解行为、节点和文字格式分别怎样加入编辑器。

编辑器能否输入标题、加粗文字或响应快捷键，都由安装的扩展决定。扩展把一种功能的配置、命令和生命周期放在一起，再交给 Editor 使用。

## 选哪一种扩展

| 你要增加什么 | 使用什么 | 例子 |
| --- | --- | --- |
| 一种行为，不增加正文结构 | `Extension` | 快捷键、历史记录 |
| 一种正文结构 | `Node` | 段落、图片、提示组 |
| 附着在文字上的格式 | `Mark` | 粗体、斜体、链接 |

StarterKit 是一组常用扩展的组合。你可以直接使用它，也可以按产品需要选择和配置其中的能力。

## 从快捷键开始

假设你希望用 `Mod-Shift-b` 执行加粗，不需要定义新节点，只需增加快捷键行为。示例的 `core/shortcuts.ts` 使用 `Extension.create()`，在 `addKeyboardShortcuts()` 中调用现有的 `toggleBold()`。

### core/shortcuts.ts

```ts
import { Extension } from "@quirekit/core";

/** A host-authored behavior extension using the same typed command registry as the toolbar. */
export const writingShortcuts = Extension.create({
  name: "writingShortcuts",
  /** @returns A keyboard binding that participates in the editor's existing history. */
  addKeyboardShortcuts() {
    return { "Mod-Shift-b": () => this.editor?.commands.toggleBold() ?? false };
  },
});

```

`this.editor` 指向安装该扩展的实例。调用现有命令以后，加粗仍使用同一个选区，也可以通过原来的历史记录撤销。将扩展加入创建时的 `extensions` 数组即可安装。

## 配置与扩展现有功能

`.configure(options)` 调整扩展公开的选项；`.extend(config)` 在已有定义上增加或替换行为。扩展里的 `addOptions()` 提供默认配置，`addStorage()` 保存实例运行状态。

配置和 storage 不会自动写入正文。需要随文档保存的业务字段，应定义为节点或标记属性。跟着[行为扩展教程](/guide/behavior)实现一个命令，再学习[输入规则与 PM 插件](/guide/rules)和 [NodeView](/guide/node-view)。

## 当内容需要更多能力

定义 Node 只解决“文档里有什么”。HTML 输出、Canvas 布局、跨结构选择、DOCX 转换和 AI 读取分别需要对应的实现，不会由节点名自动推断。

首次开发内容扩展，可以跟着[提示组教程](/build/extension)逐项连接。接入现成功能时先查[插件目录](/plugins)；完整钩子和类型在[扩展 API](/api/extensions)。
