叙述线
叙述线(原 Story Network)是 NarraFork 的项目全局视图。它以交互式有向图的形式,展示项目中所有章节及其关系,让你一眼看清项目的演进脉络。
节点与边
叙述线 由两个基本元素构成:
节点 —— 每个章节对应一个节点,展示章节的关键信息:
- 标题、状态、角色
- 所在分支、commit 数量
- 叙述者数量、容器状态
- 用户自定义的颜色标记
边 —— 章节之间的关系连线,共有四种类型:
| 边类型 | 含义 | 产生方式 |
|---|---|---|
| Fork | 分叉关系,从父章节到子章节 | fork 操作时自动创建 |
| Merge | 合并关系,从源章节到目标章节 | merge 操作时自动创建 |
| Dependency | 显式依赖关系,表示下游依赖上游的代码 | 用户手动连接 |
| Cherry-pick | 选择性合并,从源章节挑选特定 commit | cherry-pick 操作时创建 |
Fork 边决定了图的纵向层级 —— 父章节在上,子章节在下,形成自然的分叉树结构。Merge 边则横向连接,展示代码的汇聚方向。
布局
叙述线 采用自动布局与手动定位结合的方式:
- 自动布局:基于 Dagre 算法,按 fork 关系自上而下排列,自动计算节点位置
- 手动定位:拖拽节点到你想要的位置,位置会被记住。手动定位的节点不受自动布局影响
这样既能在章节较多时保持整洁的默认布局,也允许你按自己的理解调整关键节点的位置。
交互操作
在 叙述线 上,你可以进行以下操作:
- 单击节点:打开侧边面板,查看和编辑章节详情(标题、描述、角色、颜色等)
- 双击节点:进入章节详情页面,开始编码和 AI 对话
- 右键菜单:对章节执行操作 —— fork、merge、休眠、唤醒、修改角色、删除等
- 拖拽连线:从一个节点拖拽到另一个节点,创建 dependency 依赖关系
- 拖拽节点:手动调整节点位置
- 套索选择:框选多个节点进行批量操作
- 缩放和平移:滚轮缩放,拖拽背景平移
实时更新
叙述线 会自动保持最新状态:
- 每 30 秒自动刷新一次数据
- 当有章节被创建、合并、休眠等操作时,通过 WebSocket 实时推送更新
- 节点的 commit 数、叙述者数等信息会随操作同步变化
依赖追踪
当你在两个章节之间建立 dependency 关系后,叙述线 会追踪上游的变更。如果上游章节有了新的 commit,下游节点会显示提示标记,提醒你同步最新代码。
探索组
多个探索角色的章节可以组织为一个探索组,在 叙述线 上显示为可折叠的分组框。这方便你在对比多种技术方案时,将相关的探索分支放在一起,最终选定一个方案合并回主线。