mcpField
T
ThoughtDAG

ThoughtDAG

本地服务
chenxiachan.github.io搜索与检索716今天更新

关于 ThoughtDAG

ThoughtDAG 是一个 MCP 服务,用于按文件或短语检索本机 AI 编码会话,并回溯相关的原始轮次。它面向需要追溯代码修改来源的开发者,所有工具均为只读。

主要功能

  1. 01按文件路径查询相关会话轮次
  2. 02按短语检索提问与回答
  3. 03只读访问会话文件
  4. 04索引存储于本地 ~/.thoughtdag 目录

适用场景

  1. 01修改文件前检查是否已有相关历史
  2. 02追溯某段代码为何如此实现
  3. 03在编码 Agent 中查询既往决策依据

MCP 相关

该项目作为 MCP 服务运行,向客户端暴露 why_check、why_file、find 和 recall_turn 四个只读工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"chenxiachan-thoughtdag": {
"command": "npx",
"args": [
"-y",
"thoughtdag"
]
}
}
}
启动命令npx -y thoughtdag

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmthoughtdag0.2.2

工具

4

收录的工具列表 · 更新于 2 周前

参数类型必填说明
pathstring是文件路径(绝对路径或相对于 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 工具。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。