回到首页

意图树与画布

我把正在追的事和它们的来由记成一棵树,材料画布是同一个需求里的另一部分。意图树在 2026 年 8 月 19 日做完,10 月两套合并,旧画布入口归档了。

TYPE
意图记录与材料画布
STATUS
意图树已做完,两套已合并,旧画布入口已归档
WHEN
2020 至今,意图树 2026 年 8 月做完
BUILT WITH
早期用 Unity,后来的树由文档维护

这是什么

我想记下自己在追什么,临时分出来的一件事又是从哪里来的。以前同时开着几段对话,手上能并行做事,但这些关系只留在对话里,切走以后要再接着做,得先想起来自己为什么会走到这里。树要管的是这个不断变化的意图,任务和计划是顺着它往下来的东西。聊着聊着,要做的事会变,原来那条线可能先挂起,后面还要能接得回来。

画布的想法更早,2020 年 12 月我就想让相关的东西放在一块二维的板上,能看见,也能拖动,2021 年 4 月又写下了思路被打断以后找回主线的需要。同一个需求后来做了四回,前三回先做了画布,意图和材料该怎么支撑工作还没安排好。

线从哪里分出来

树上的一条记录叫节点。复盘里对连线的要求很简单,后面这件事得是从前面那件事推出来的,不能因为两句话挨着说就连起来。图里编了一个“做一个小游戏”,下面接着想设计关卡、调试操作,这两条线都有来由,另外想到学做面包,就单独开一个根节点,从它重新往下记。

旧版每轮对话都会留一个节点,后来才改成每个节点放一个意图。同一件事聊了几轮,应该还在同一个地方,真正分出新意图时再往下接,看的就是事情之间的关系。

意图从哪里分出来虚构例子另一个根做一个小游戏设计关卡调试操作当前关注学做面包没有来源关系,就另开一棵树边表示来源,不代表聊天先后。这是历史修正方向,自动判断没有验证过。

FIG. 1 · 线从哪里来

示意图,按历史记录中的连线原则画。“做一个小游戏”和“学做面包”都是虚构举例,线表示来由,无关的话题另开一棵树。

旧版留下了什么

后来整理旧记录的复盘汇总里,有 135 棵树、608 个节点,其中 534 个节点的关系是程序固定填的,517 个没有父节点,只有 7 棵树有父子边。缺父节点的也可能同时用了固定关系,这两项不能加起来当成另一批节点。

这和旧程序的退化有关,它收到简化的标签时,会把编号和关系写成固定值,又没有填父节点,留下很多条记录,却说不清它们从哪里来。图里的数来自历史复盘的汇总。

当时修改以后,给程序看的结构会列出节点、根和当前节点,给人看的则是一棵缩进的树。找不到父节点时就让它另起一棵,解析失败时又会补一条失败记录,接在前一个节点下面,这样补出来的连线不一定代表两件事真有推导关系。

旧结构留下的统计旧结构的历史统计复盘汇总,本次未重新计数,也未读取原始意图数据。节点608个关系由程序写死534 / 608没有父节点517 / 608树135棵有父子边7 / 135一格是一棵树,点纹标出有父子边的 7 棵。两条节点统计可能重叠,不相加,树的分母另计。

FIG. 2 · 旧版记录里的结构问题

数来自历史复盘的汇总,节点与树各用自己的总数,两项节点问题不能相加。

后来怎么记

2026 年 7 月重建时,我把树改成一份持续维护的文档,不再按消息一条条堆。新开一件事、分出另一条线、切换回来,或者做完、放弃,都由 agent,也就是负责维护这些记录的程序,去更新文档。

文档里会标出哪些意图还在做、哪些先挂起、哪些已经做完或放弃,状态转换的条件没写全。历史画布会从树里取出“人在追什么”的那一部分,接着执行的其他 agent 也会收到意图文档作为上下文,但材料卡片到底怎么和树挂在一起,我还没有整理出完整说明。

当时怎样维护意图文档历史维护方式人表达想做什么agent负责维护的程序更新这份文档新开、分叉、切换、结束时维护文档意图文档做一个小游戏设计关卡活跃调试操作挂起以上内容为虚构例子历史状态集合活跃 · 挂起 · 做完 · 放弃历史画布显示人在追什么子 agent读取意图上下文历史上注入两份文档图中是历史关系,不表示当前接口。这里只列状态,完整的转换条件没有查到。

FIG. 3 · 一份文档怎么被维护

示意图,按文档的维护方式画,节点内容是虚构例子。文档曾供历史画布和其他 agent 使用,材料卡片怎么挂到树上、状态转换的完整条件没写全,图里也没画。

做到哪了