开源ThoughtDAG工作流:画布上剪一根线就能改AI答案


你跟AI对话过程,如果说错话,搞错方向想重来,非常麻烦,现在用这个工具在画布上剪一根线就能改AI答案,ThoughtDAG把上下文选择变成了动手操作!可装在DeepSeek Harness上的插件!AI深度对话者必备

ThoughtDAG 是一个开源的、本地优先的DeepSeek Harness可视化工作空间,旨在将线性的 LLM(大语言模型)对话转化为可编辑的、有向无环图(DAG)形式的“思维地图”。其核心理念是 “连线即上下文”(Wires are the context) ,通过直观的图形化界面,让用户精确控制发送给模型的上下文信息。


核心概念与理念

  • 图即上下文:ThoughtDAG 不是一个辅助工具,它本身就是上下文。它会遍历目标节点的所有入边,对相关祖先节点进行拓扑排序,并构建发送给模型的消息序列。编辑这个图,就是直接编辑模型的“记忆”。
  • 对抗“黑盒”上下文:传统聊天界面隐藏了上下文构建过程,容易导致上下文污染和幻觉。ThoughtDAG 让上下文“可见、可编辑、可审查”(Visible, Editable, Inspectable)。用户可以清晰地看到哪些信息将被发送给模型,哪些被排除。
  • 人在回路:所有图形编辑和上下文选择均由用户手动完成,没有自主代理替用户修改图谱。这确保了用户对思维过程的完全控制。

与 DeepSeek Harness 的集成

ThoughtDAG 可以作为插件在 DeepSeek Harness 的 Web UI 中运行。它提供了一个“对话 | 思维图”的切换开关,让用户可以在 Harness 的会话旁边直接使用画布功能。在画布上的连线决定了 Harness 下一步能看到什么上下文!

ThoughtDAG 不仅仅是一个对话可视化工具,它提供了一种全新的、以图形为中心的与 LLM 交互的范式,通过将上下文控制权完全交还给用户,旨在提高推理的透明度、可控性和可靠性。

主要功能与特性

ThoughtDAG 提供了一套完整的功能,涵盖了从上下文管理到知识检索的多个方面:
1. 可视化的上下文画布 (Canvas & Context)

  • DAG上下文引擎:buildContext() 函数会按照拓扑顺序遍历所有入边,构建历史记录。
  • 多层上下文组装:上下文按“材料 → 参考块 → 对话”的顺序分层组织,确保相同图谱产生相同的提示词。
  • 丰富的连线类型:
    • 紫色边 (继续):继承完整的祖先上下文。
    • 橙色实线边 (探索):选中文本,以其为上下文进行分支探索。
    • 虚线边 (引用):在不拖入整个对话历史的情况下,引用特定节点及其上游问题。
  • 上下文预览:在向模型提问前,可以实时预览即将发送的上下文,包括 Token 数量、消息数和文件数。
  • 节点角色系统:可以为每个节点设置系统提示词(继承、为下一步设置、在此重置)。
  • 归档功能:可以将节点在画布上变暗并排除在所有上下文遍历之外,需要时可恢复。
2. 强大的检索与索引 (Pinpoint the Context)
  • 跨Agent索引:ThoughtDAG 会在本地机器上为来自 Claude Code、Codex、DeepSeek Harness 以及其自身画布的对话建立统一索引。
  • 精准定位:用户可以通过代码文件、精确短语、URL 或论文标题来检索所有相关对话。
  • CLI与MCP工具:提供了命令行工具(CLI)和只读的 MCP(模型上下文协议)工具,方便集成到其他Agent中。
3. 阅读与研究工具 (Reading & Materials)
  • PDF阅读器:内置 PDF 阅读器(基于 pdf.js),支持选择文本并直接作为上下文分支提问。
  • 标注与问答:可以在 PDF 旁直接进行问答,答案流会显示在文档旁边。
  • 引导式摘要:一键将材料转化为结构化的简短摘要,并带有返回原文的跳转按钮。


在画布上剪断一根线,AI的答案马上变——但剪断的不是聊天记录,是它看见世界的路径!

打开ThoughtDAG,你面对的不是对话框,是一张可以亲手编辑的思维网——每剪断一条连线,AI的下一次回答就彻底改写!

ThoughtDAG用有向无环图画布取代线性聊天框。每个问答是一个节点,连线决定模型读什么。剪断错误分支可修复上下文污染,但错误可能已扩散到后代节点。本地优先、开源,让你亲手控制AI的认知输入。

画布上的每条线都在告诉AI“看这里”

打开任何一个聊天软件,你看到的是从上往下滚的文字。打开ThoughtDAG,你看到的是无限延伸的画布——上面散落着一个个方块,每个方块是一轮问答,方块之间连着粗细不同的线。紫色线告诉AI“把这条线上的所有内容都带上”,橙色线说“只带这一段”,虚线则说“引用一下但不带历史”。你拖拽一个方块,连上一条新线,AI下一次回答就变了。没有对话框,只有图。

这张图的规则极其简单:AI每次回答之前,程序会顺着你连的线往回找,把所有能走到的节点按顺序拼成一份上下文清单。你剪断一条紫色线,AI就看不到那个分支上的任何文字。你加上一条橙色线,AI就把那段文字塞进下一次提问的“背景资料”里。线的颜色、方向、连接方式,直接等于模型最终收到的提示词。图的编辑和模型输入之间没有模糊地带——你改图,就是在改AI的阅读材料。

开发者Xia Chen在Hugging Face论坛上贴了一组实验截图。截图里不是聊天窗口,是画布上一个方框连着另一个方框,中间有根线被鼠标选中、删掉,然后点击“重新生成”按钮,新答案从131变成了107。那个操作全程没有动过任何一段文字——你删的只是画布上的一根连线,连节点本身都还留在原处。但AI的答案确实变了,因为AI读不到那个节点了。

算术题证明:删源头不如剪整枝毒藤

Xia Chen设计了一个四步实验。四个箱子里各有30个零件,另加11个散件,正确答案是4乘30加11等于131。AI先给了一个错的重数——24个零件每箱,于是正确答案变成107。然后一条消息让AI把数字改回30。接下来三条消息都基于这个错误的30往下算,最后AI输出131。现在把那条改回30的消息节点从画布上孤立出来——剪断它和下游的所有连线,但保留节点本身。你猜九个模型里有多少个依然输出131?

三个!错误源头被切断了下游连接,但那些基于错误算出来的中间结果已经写在了下游节点的文字里。那些文字不会自动消失。你剪断源头到下游的线,下游节点还在,它们内部保存的“24个零件”的计算过程还在。当AI再次读取下游节点时,它依然能看到那个错误数字。要彻底修复,你得把整个被污染的子树——从错误源头开始,一路到最后一个基于它生成的消息——全部从遍历范围里剔除。实验里,这种操作做到了100%修复。

但更耐人寻味的是第三种操作:保留整个子树结构,但重新生成所有下游节点的内容。也就是剪断源头到下游的连线,然后对每个下游节点重新提问,让AI在没有错误上下文的情况下重新计算一遍。修复率98.6%,只差一个百分点没有满血。缺失的那个百分点来自重新生成时模型本身的随机性——同一个提示词在不同种子下可能给出不同答案,而原始输出碰巧是那个更接近正确答案的版本。这说明“修复上下文”不止是删除和保留的问题,还涉及重新计算时的不确定性。

其他工具让你看图,ThoughtDAG让你编译上下文

市面上已经有不少做对话分支的工具。KnowTree做消费级的可视化对话树,拖拽节点就能切换对话路径。Stepback搞“Git风格”的版本控制,每次分支都打一个快照。ThreadWeaver主打系统提示词复用,把提示词和对话分开管理。AIbranch和BranchLM也都是开源方案,一个侧重多模型并行分支,一个区分chat节点和context节点。这些工具都在图结构上做文章,但它们的共通点是——图是给你看的组织方式,你切换分支时,模型读到的是整条分支上的全部消息。

ThoughtDAG的差异在于:它的图不是导航界面,是编译器的输入文件。你删掉一条线,AI读到的东西变了;你加一条线,AI读到的东西也变了。这个变化不是“从分支A跳到分支B”那种整体替换,而是精细到每一个节点、每一条连线。你可以让AI只读某个节点的前半段,不读它的后续回复。你可以让AI引用另一个分支上的某条结论,但不引用那个结论的推理过程。你可以把PDF里划出的高亮文字单独连成一个“材料块”,然后让多个问答节点共用这一块材料。这些操作在其他工具里要么做不到,要么需要手动复制粘贴文字。

这个差异直接源自ThoughtDAG的buildContext()函数实现。它会遍历目标节点的所有入边,对祖先节点做拓扑排序,然后按照“材料→参考块→对话”的固定顺序组装提示词。材料是指你拖进画布的PDF或文本文件,参考块是你用虚线引用过来的外部内容,对话是紫色和橙色线连过来的问答节点。这三层顺序不可调换,但每一层里你可以自由编辑连线。同样的图结构一定产生同样的提示词序列,这意味着你可以把一张图当作一份可复用的提示词工程配置来保存和分享。

一个你可以亲手试出来的“线控”机制

ThoughtDAG支持本地运行,数据全在你自己机器上。你从GitHub Releases下载对应系统的安装包,或者用Homebrew一条命令装好。

启动后先配模型——OpenAI、Anthropic、Google、Qwen、DeepSeek、Kimi、智谱、OpenRouter、Ollama全都能接。然后你导入一个PDF,比如一篇论文。

右侧边栏打开PDF阅读器,选中一段话,右键“以此作为上下文提问”。一个新节点落在画布上,里面是AI的回答。你再从那回答里选中另一句话,右键继续追问。第二个节点自动带着第一条连线挂在前一个节点下面。

整个过程你不需要打任何字,全是鼠标拖拽和框选。

最后你得到一张图,图上每个节点是一次问答,每根线是一次“选中-右键-提问”的动作记录。

这张图可以直接保存为JSON文件,下次打开继续编辑。你也可以把这张图发给别人,对方导入后看到同样的节点位置和连线关系,点一下“重新生成”就能复现你的全部推理路径。这种可复现性,在传统聊天界面里完全不存在——你永远不知道对方的上下文里混进了什么历史消息。

Xia Chen把整个实验的27个图结构和1485个模型状态打包放在Hugging Face上,任何人都可以下载导入。你不用重新发明实验,打开软件,加载案例,选中那根连接“30个零件”消息的线,按Delete键。然后点“重新生成”,看答案变不变。如果变了,你就亲眼看到了“连线即上下文”的物理含义。如果没变,你就亲眼看到了“错误已经固化在下游节点里”——而这两种结果,都直接呈现在画布上,而不是藏在哪个聊天框的滚动条后面。

但剪断的线还在画布上发灰

ThoughtDAG有一个极其容易被忽略的设计——归档。当你剪断一根线,那个节点不会消失,只是变暗了。你点击归档按钮,节点从彩色变成灰阶,它依然留在原位,只是后续的buildContext()遍历时会跳过它。你可以随时点“恢复”,它重新变亮,再次参与上下文构建。没有“删除”按钮,只有“归档”和“恢复”。开发者Xia Chen在代码注释里写了一句:“我们不抹掉任何探索路径,只改变它们的可见性。”

这个设计暴露了一个潜台词:你编辑的这张图,最终服务的是你自己,不是AI。AI只看被选中的亮色节点,但你看的是全图——包括那些灰暗的、被剪断的、暂时排除在外的分支。你看到自己走过哪些弯路,做过哪些错误假设,曾经把哪条线连到了错误的节点上。这些信息对AI没用,但对你的思考过程有用。传统聊天界面的“删除消息”是让错误从你眼前消失,ThoughtDAG的“归档”是让错误留在原地但不再参与计算——你记得它,但AI不需要记得它。

这跟人类自己的思考方式惊人地一致。你不会忘记自己曾经信过某个错误结论,你只是学会了不把它拿出来当论据。ThoughtDAG把这种“记得但不使用”的状态变成了画布上的一种视觉状态——灰色。那个灰色节点躺在那里,既是一个警示牌,也是一个可恢复的备选方案。万一哪天你发现那个被排除的假设其实没错,点一下恢复,整条分支重新激活。

安装试用


ThoughtDAG提供了四条安装路径!

最省事的是直接下桌面应用——它把本地服务器和界面打包在同一个窗口里,你不用装Node,不用敲终端命令,双击就能跑。

macOS用户用Homebrew敲一条brew install --cask thoughtdag,自动下载安装放进应用程序文件夹;或者去官网下载页拿.dmg安装包,苹果签名公证过的。

Windows用户拿x64安装包,大约106MB,双击安装时SmartScreen会弹警告——点“更多信息”再点“仍要运行”就行。

Linux用户拿.AppImage文件,大约133MB,加执行权限后双击跑起来。

所有安装包都在GitHub Releases页面,2026年9月的最新稳定版是v0.3.30。想从源码跑也行,克隆仓库后npm install、npm run server、npm run dev三条命令搞定——前端跑在localhost:5173,后端代理在3001端口,不需要额外写.env文件,模型连接在应用内部直接配。

在决定下载之前,你甚至可以先去网页demo(app.thoughtdag.workers.dev)里空手玩一把——不需要API key,内置示例画布让你直接体验从PDF里划线提问的完整流程。示例画布围绕一个日常问题展开——“为什么存下来的文章总是不读”——一共四个章节,里面嵌了一个真实的PDF,你能亲手试试选中一段话、右键提问、答案落在画布上、再选中下一段继续追问。整个循环走完一遍,你就知道这玩意儿跟聊天框到底差在哪儿。