关于 ThoughtDAG
ThoughtDAG 是一个 MCP 服务,用于按文件或短语检索本机 AI 编码会话,并回溯相关的原始轮次。它面向需要追溯代码修改来源的开发者,所有工具均为只读。
主要功能
- 01按文件路径查询相关会话轮次
- 02按短语检索提问与回答
- 03只读访问会话文件
- 04索引存储于本地 ~/.thoughtdag 目录
适用场景
- 01修改文件前检查是否已有相关历史
- 02追溯某段代码为何如此实现
- 03在编码 Agent 中查询既往决策依据
MCP 相关
该项目作为 MCP 服务运行,向客户端暴露 why_check、why_file、find 和 recall_turn 四个只读工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 文件路径(绝对路径或相对于 cwd 的路径)、URL 或 arxiv:<id> |
详细介绍
thoughtdag
查找塑造某个文件的对话。
npx thoughtdag why src/lib/api.ts
按每轮读取、写入或编辑的文件,为机器上已有的 Agent 会话(Claude Code、Codex、DeepSeek Harness、Pi)建立索引,并列出相关轮次:时间、变更内容、提出的问题,以及回答中对该文件的说明。每条结果都链接回对应的对话。
- 事实直接来自工具调用,绝不来自自由文本或模型。
- 会话文件只读,不会写入。索引位于
~/.thoughtdag(0700/0600),可通过thoughtdag purge删除。 Δ行表示观察到的变更;≈行摘自回答,是可能的解释,而非经核实的原因。
thoughtdag index [--full] [--canvas <dir>]
thoughtdag why <path> [--include-read] [--all] [--limit N] [--json]
thoughtdag why --check <path> # one line, exit 0/1: is there history here?
thoughtdag find "<phrase>" [--in q|a|m] # where these exact words were asked, answered or attached
thoughtdag recall <session> <n>
thoughtdag status
thoughtdag purge [--cache]
thoughtdag mcp # the same questions as MCP tools (stdio, read-only)
thoughtdag setup [mcp | rules [--remove]]
让 Agent 自行提问
thoughtdag setup mcp 会在本项目的 .mcp.json 中为 Claude Code 注册服务,并在用户级 ~/.codex/config.toml 中为 Codex 注册;随后,Agent 就能使用 why_check、why_file、find 和 recall_turn 这些工具。thoughtdag setup rules 会在本项目的 CLAUDE.md 和 AGENTS.md 中添加两行规则,并将其放入带标记的代码块中:编辑文件前检查历史记录;解释代码为何如此编写前先查询。使用 --remove 可移除这些规则。规则变更按项目单独设置,且必须明确操作;除非你提出要求,否则不会写入任何内容。
MCP 客户端和目录
该服务在 MCP Registry 中的名称为 io.github.chenxiachan/thoughtdag。支持本地 stdio 服务的客户端可以通过以下方式启动:
{
"mcpServers": {
"thoughtdag": {
"command": "npx",
"args": ["-y", "[email protected]", "mcp"]
}
}
}
需要在运行服务的机器上安装 Node.js 20 或更高版本,并具备受支持的会话日志。请在相关项目目录中启动服务,以便文件查询使用预期的工作区。不同客户端使用不同的配置格式;上面的示例适用于接受 mcpServers JSON 的客户端。
这四种工具可搜索和回溯历史记录;它们无法编辑画布、修改源会话,也不能替代客户端的对话。派生索引和缓存写入 ~/.thoughtdag。检索到的文本会返回给调用它的 Agent,并可能进入该 Agent 的模型上下文;使用私有历史记录前,请检查客户端的提供商设置。
容器和目录检查
Dockerfile 会将已发布的 CLI 版本安装为非 root 用户运行的 stdio 服务。它不会将代码仓库或任何会话数据复制到镜像中。在代码仓库根目录下:
docker build -f cli/Dockerfile -t thoughtdag-mcp cli
docker run --rm -i --network none thoughtdag-mcp
空容器可以响应 MCP 初始化和 tools/list;除非你明确提供本地数据,否则历史查询不会返回结果。目录检查不需要模型密钥、私有会话或托管端点。
Glama 会根据列表中的 Admin → Dockerfile 表单生成自己的 Dockerfile。使用 Node.js 22 和以下构建步骤:
["npm install --global --ignore-scripts --no-audit --no-fund [email protected]"]
使用以下 CMD 参数(Glama 会添加自己的 mcp-proxy 包装器):
["env", "THOUGHTDAG_HOME=/tmp/thoughtdag-index", "THOUGHTDAG_SESSION_ROOTS=/data/sessions", "THOUGHTDAG_CANVAS_ROOTS=/data/canvases", "THOUGHTDAG_MEMORY_ROOTS=", "thoughtdag", "mcp"]
将占位凭据留空,然后构建并发布。代码仓库根目录会构建 Web 前端;它不会生成 dist/thoughtdag.mjs。请确保此配置中固定的 CLI 版本与你计划列出的版本一致。Glama 生成的镜像与上面的非 root 镜像相互独立。
若要实际在本地使用,只挂载你选择的历史记录目录,并以只读方式挂载到 /data/sessions,也可选择挂载到 /data/canvases。派生索引单独存储在 /home/node/.thoughtdag。查询这些会话中记录的绝对文件路径;容器的默认工作目录并非主机项目的路径。上面的原生 npx 配置是进行项目相对路径查询的更简单方式。云端托管的副本无法访问你电脑上的历史记录。
可选的 Codex 技能
代码仓库还包含一项 Codex 技能,可在桌面应用中打开会话,或运行 CLI 历史查询:
npx skills add chenxiachan/thoughtdag --skill thoughtdag --agent codex
这会在当前项目中安装一项技能。打开会话需要 ThoughtDAG 桌面应用或其本地桥接程序;CLI 查询使用 npm 包。它与 MCP 注册相互独立,也不提供用于写入画布的 MCP 工具。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。