shlokkhemani/rabbithole

An infinite canvas for learning — select text, ask, and answers branch out as documents. MCP server for Claude Code, Codex, and any agent.

Rabbithole – 用于学习的无限、AI 驱动的画布

是什么 – Rabbithole 是一个轻量级的 Web 应用,允许您创建由任意 LLM(Claude Code、Codex、OpenAI 兼容端点)回答的分叉式「画布」。从一个文档开始,您可以在任意位置提出问题,答案将生成一个新链接的文档,从而以自包含的 HTML 页面树的形式探索想法。

为何重要 – 它结合了零设置前端与灵活的后端(MCP 服务器),可与 Claude Code、Codex、OpenAI 兼容端点或您本地运行的任何自定义模型通信。所有数据均保留在您的机器上——无需账户、无遥测、无云存储。


核心概念

组件 作用
Web 应用 纯客户端界面,渲染画布并将提示转发到您配置的模型端点(OpenRouter、本地 OpenAI 兼容服务器等)。
MCP 服务器 一个小型 Node.js 进程,作为 Web UI 与 "MCP 客户端"(如 Claude Code 或 Codex)之间的中介。它在本地运行,将文档存储在 ~/.rabbithole/(或 RABBITHOLE_DIR)中,并处理工具调用路由。
画布 一系列 HTML 快照。每个快照包含原始内容以及任何后续问题和模型的回答,彼此链接,支持前后导航。

快速入门

  1. Web 版本 – 打开 https://rabbithole.ing,粘贴一个问题、URL、Markdown 文件或 PDF。UI 会将提示发送到您配置的模型。
  2. 连接 Claude Code / Codex – 如果您已安装并登录 Claude Code 或 Codex CLI,请运行:
    npx @shlokkhemani/rabbithole bridge
    
    此命令将打印一个私有配对链接,并通过回环接口将浏览器页面与本地 CLI 连接。
  3. MCP 模式 – 安装 MCP 客户端(需要 Node 18+)并添加 Rabbithole 作为工具:
    # Claude Code
    claude mcp add rabbithole -- npx -y github:shlokkhemani/rabbithole
    # Codex
    codex mcp add rabbithole -- npx -y github:shlokkhemani/rabbithole
    
    然后启动一个代理会话并说“在 Rabbithole 中打开此文档”。代理将保持工具调用待处理状态,同时您与画布交互;MCP 服务器会持久化请求,因此您可以断开连接并稍后恢复。

开发与贡献

git clone https://github.com/shlokkhemani/rabbithole.git
cd rabbithole
npm install
npm run build   # 构建浏览器包
npm test        # 运行测试套件

该仓库已预先构建了浏览器包,因此从 npm 安装包的下游用户无需编译即可获得可立即运行的 Web 应用。

文档亮点

  • 产品与架构导览 – docs/01-tour.md
  • 生成的模块与命令映射 – 对扩展工具的开发者非常有用(docs/generated/*)。
  • 兼容性契约 – 定义了 Web 应用如何与模型端点和 MCP 客户端通信(docs/compatibility.md)。
  • 设计系统 – 视觉与交互指南(docs/design-system.md)。

许可证

MIT – 详见 LICENSE 文件。


总结 – Rabbithole 是一个自托管、模型无关、分叉文档的 UI,可将任何 LLM 交互转化为可导航的知识图谱,所有数据均保留在本地,完全由您控制。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目