# Nomi 使用指南

## 基本流程

```
创作区 → 生成区（画布）→ 时间轴 → 导出
```

---

## 创作区

写剧本、章节、镜头描述。

- 左侧面板选择项目和章节
- 直接在编辑器里写内容
- 内容自动保存到本地（`文档/Nomi Projects`）

---

## 生成区（画布）

把文字变成图片和视频。

**添加节点**
点击工具栏 `+` → 选择节点类型（图片 / 视频 / 文本 / 角色 / 场景等）

**生成图片**
1. 点击节点选中
2. 在下方输入框写提示词
3. 点击「生成 →」

**生成视频**
视频节点需要先连接一个图片节点作为首帧：
1. 点击图片节点右侧的连接点
2. 拖线到视频节点左侧
3. 填写提示词 → 点击「生成 →」

**连接节点**
点击节点边缘的圆点，拖到另一个节点。

**快捷键**
| 操作 | 快捷键 |
|------|--------|
| 复制节点 | Cmd/Ctrl + D |
| 删除节点 | Delete |
| 适应视图 | 工具栏 ⌖ 按钮 |
| 平移画布 | 拖拽空白区域 |

---

## 时间轴

把生成好的素材排成视频。

**添加素材**
从生成区把节点拖到时间轴轨道上。

**编辑片段**
| 操作 | 方式 |
|------|------|
| 移动片段 | 拖拽 |
| 裁剪 | 鼠标悬停在片段边缘，拖动 handle |
| 分割 | 选中片段，按 `S` |
| 复制 | 选中片段，按 Cmd/Ctrl + D |
| 删除 | 选中片段，按 Delete |
| 微移 | Shift + `<` / `>` |

**缩放时间轴**
Ctrl/Cmd + 滚轮，或点击工具栏 +/- 按钮。

**播放预览**
点击播放按钮，或按空格键。

---

## 导出

点击预览区右上角「导出 MP4」。

- 格式：MP4（H.264），1080p / 30fps，标准发布
- **音频**：随片导出视频自带的音轨，多段视频自动混音
- **预览即成片**：导出画面与预览完全一致（留黑边、整帧不裁，letterbox WYSIWYG）
- 保存位置：项目的 `exports/` 文件夹，完成后自动打开所在文件夹

> 极少数情况下，若个别素材解析或编码失败，会自动回退为静音 WebM 以保证导出不中断。

---

## Agent 工具调用（内置）

从 v0.4.0 起，Agent 直接集成在桌面端运行时里（`electron/runtime.ts`），无需额外 CLI 进程。

**位置**

- **生成区 AI 面板**：右侧抽屉，自然语言控制画布
- **创作区「拆镜头」按钮**：工具栏右上角，把当前文档一键拆成故事板

**配置**

顶部工具栏 → **模型接入** → 添加一个文本模型供应商（OpenAI 兼容或 Anthropic）。
没有任何 `agents.config.json` 之类的旁路文件，所有 Key 通过 UI 录入并加密存放在用户配置目录。

**示例指令**

```
把这段故事拆成 6 个镜头，每个镜头一张图。
```

```
读当前画布，把所有图片节点都连一条线到视频节点。
```

```
帮我把这段段落改写得更口语化。
```

Agent 的工具调用通过 UI 卡片让用户确认后才执行，画布会实时展示节点出现的过程。

**可用工具**

| 工具 | 用在 |
|------|------|
| `read_canvas_state` | 读取生成画布的节点和边 |
| `create_canvas_nodes` | 批量创建画布节点 |
| `connect_canvas_edges` | 建立节点引用边 |
| `set_node_prompt` | 改写指定节点的提示词 |
| `delete_canvas_nodes` | 删除节点（需用户确认） |
| `creation_read` / `creation_write` | 读取/修改创作区文档 |

每个 skill（`skills/<name>/skill.json`）声明自己允许调用的工具白名单。
详见 `docs/skill-pack-format.md`。
| `creation_read` | 读取文稿 |
