加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

凌晨两点,你正深陷一个复杂的重构任务。Claude Code 刚刚帮你理解了三层嵌套的业务逻辑,搞清楚了哪些模块负责认证、哪些处理支付、资金流转的边界在哪里。你花了整整四十分钟,才让它建立起对你代码库的直觉——然后你输入 *end 关闭了会话。
第二天早上,你重新打开 Claude Code,开始处理昨天没完成的支付模块重构。你习惯性地问了一句:"上次我们聊到哪了?" Claude Code 客气地回答:抱歉,我不记得我们上次讨论的内容——它真的不记得。
这不是 Claude Code 的 bug,这是它的设计逻辑:每一次会话都是全新的开始。模型权重是冻结的,对话历史只在当前 session 有效,一旦关闭,所有积累全部归零。这就是 AI 编程工具的"金鱼记忆"困境——每个 session 的开头,都是一场无奈的重复劳动。
basemode 解决的就是这个问题。
在 basemode 出现之前,开发者社区尝试过几种解法:
CLAUDE.md 是最原始的方案——在仓库根目录放一个文档,让 AI 每次都读一遍。但问题是,这个文档是静态的,不会随代码变化而更新,你得手动维护它,而且它不会自动判断"此刻什么相关、什么不相关"。
向量数据库记忆 是另一个思路:用 Embedding 把文档分段存进向量库,查询时做相似度匹配。但本质上这只是"找长得像的段落",它不知道"这条决策管理的是哪些文件",也不知道"这个模块依赖哪些上下文"。结果往往是返回了一个看起来相关但实际答非所问的段落。
LSP(语言服务器协议) 能回答"这个符号在哪里定义",但它是单语言的、只管符号、不管语义,更谈不上项目级记忆。
图谱类工具(知识图谱导出工具)是近年冒出来的新方向——它们扫描代码,生成一个知识图谱。但这是批处理产物:生成一次,git commit 之后图谱就过时了,下次得手动重跑。而且它们只理解代码文件,不知道你的项目边界、团队决策、业务规则。
basemode 的核心洞察:记忆的价值不在于"存储",而在于"投递"。一个没人主动去查询的记忆系统,在 Agent 工作流里毫无意义——Agent 在任务中途不会停下来去翻一个它不知道存在的数据库,它直接开猜。
basemode 的产品哲学是:在模型开始猜测之前,把正确的答案放到它眼前。
basemode(BASE = Builder's Automated State Engine)是一个 Rust 编写的 AI 构建操作系统,核心功能是把 Claude Code 从一个"每次会话从零开始"的工具,变成一个"永远记得项目上下文、知道你在做什么、主动提供相关知识"的持久化工作伙伴。
它不是又一个 ChatGPT 插件,也不是一个需要手动维护的文档库。它是一个运行时上下文注入引擎,通过深度集成 Claude Code 的 Hook 管道,在四个关键时刻自动把相关信息推送到模型眼前:
| 会话时刻 | basemode 注入内容 |
|---|---|
| 会话启动时 | 当前项目的活跃上下文、待处理交接事项、过时文件信号 |
| 你发出指令时 | 与指令相关的领域规则、历史决策、相关笔记 |
| 工具执行前 | 即将操作的文件结构(函数、类、依赖关系),在模型读取文件内容之前就到达 |
| 工具返回后 | 调用链信息——刚读取的代码片段在整个系统中的位置和意义,趁记忆还新鲜时注入 |
关键是:这些信息不是 Claude Code 自己去找的,是 basemode 主动推送的。模型不需要知道 basemode 的存在,不需要改变任何提问方式,只是在不知不觉中获得了"本来就知道"的上下文感知能力。
basemode 的技术选型非常精打细算:
语言:Rust(单二进制 ~20MB)。不需要任何运行时依赖,预编译二进制通过安装脚本分发,覆盖 macOS/Linux/Windows 三大平台。对用户来说,安装过程就是一条 curl 命令,不需要 Rust 工具链,不需要编译。
图数据库:Oxigraph(嵌入式内存图)。Oxigraph 是一个用 Rust 编写的 RDF 图数据库,完整实现了 SPARQL 1.1 规范。所有知识以 RDF 三元组形式存储,查询走 SPARQL,而不是简陋的字符串匹配。
持久化:NQuads 文本文件。图谱数据存储在 .base/ 目录下的纯文本文件中(.nt 格式),每一行一个 RDF 三元组。这意味着图谱天然受 Git 版本控制——你修改了哪些决策、添加了哪些规则,git diff 一目了然。原子写入机制保证了数据一致性。
代码理解:Tree-sitter(35+ 语言)。basemode 的 base sync --ast 命令对代码仓库做 AST 级别的扫描,提取函数签名、类定义、导入关系、调用依赖——所有这些解析完全由 Tree-sitter 完成,支持 35 种主流编程语言。扫描结果直接进入图谱,"这个函数在哪里被调用"、"这个类依赖哪些模块",都是图查询,不是 grep。
Agent 集成:Claude Code Hooks。basemode 通过 Claude Code 的 settings.json hook 机制注入上下文。这是 Claude Code 官方暴露的扩展接口,允许外部程序在每次 Agent 回合的输入前/输出后读写 JSON 数据。basemode 在四个时机注入对应查询结果,Claude Code 无感知地接收上下文,开发者无感知地受益。
Web UI:Svelte + Vite。base dashboard 启动一个嵌入式 Web 控制台,基于 Svelte 构建,对图谱数据做可视化。用户可以在浏览器里浏览知识图谱的结构、查看项目关系、追踪决策历史。
会话协调:Relay。basemode 内置了一个本地中继服务(Relay),支持多会话之间的状态同步和任务交接。*handoff 指令让当前会话的工作状态传递给下一个会话,*fork 让你暂存侧翼任务而不打断主线,*end 同时执行交接、存档和总结。这对于需要在多个 Claude Code 会话之间切换的复杂项目尤其有用。
basemode 的 .base/ 目录维护着对你代码库的完整理解:哪些模块代表哪个业务领域、每个领域有哪些规则、最近的决策是什么、谁负责哪个部分。这个理解在每次会话之间保持存活,并在模型需要时精确投递。
# 注册一个项目
base p a -n "My App" -p "src"
# 教它一条规则
base rule add --domain myapp --text "迁移必须通过 CLI,永远不直接执行原始 SQL"
# 以后你操作数据库相关代码时,这条规则会自动出现在上下文中
# 添加一条决策记录
base decision log --domain billing --decision "改用 Stripe 而非自建支付" --rationale "自建支付合规成本过高"
不需要你手动维护任何东西:第一次在项目中打开 Claude Code 并读取文件时,basemode 在后台异步构建代码图谱——Tree-sitter 扫描所有源文件,提取函数、类、导入、调用关系,写入图谱。之后的每次编辑操作自动增量更新图谱。你永远不会看到"正在构建图谱"的提示,除非出了错误。
# 手动触发全量同步(可选)
base sync --ast --target src
# 查询图谱
base a q -c "validate" # 查找名为 validate 的实体
base a q --calls "authenticate" # 谁调用了 authenticate 函数
base a q -f "main.rs" # main.rs 里有什么
这是 basemode 与其他工具最本质的区别。其他工具的模式是"你提问 → 它搜索 → 返回结果",basemode 的模式是"你在工作 → 它判断 → 自动注入"。模型在开始执行任务之前,就已经看到了相关文件结构、领域规则和历史决策。
basemode 支持对 Markdown 文档做概念级图谱提取:
base graph extract --target docs/ # LLM 解析文档,提取概念和关系
base graph query "为什么我们放弃了 Vercel?" # 从图谱检索并综合回答
*handoff # 结束当前会话,状态存入交接队列
*fork # 暂存当前任务,稍后继续
*base # 把当前会话的决策、任务和学习写入图谱
*end # 同时执行以上三个操作
局限一:强依赖 Claude Code。basemode 目前专为 Claude Code 设计,通过其 hook 机制注入上下文。对于其他 AI 编程工具(Cursor、Copilot、WindSurf),basemode 官方文档明确标注"coming soon"。如果你不使用 Claude Code,这个工具的价值大打折扣。
局限二:图谱构建有初始延迟。首次在一个项目中启用时,后台 AST 扫描需要遍历整个代码库。对于大型 monorepo,这可能需要几十秒到数分钟,期间模型暂时没有图谱上下文支撑。不过这是异步操作,不阻塞你的正常编辑。
局限三:无 Docker 支持。basemode 没有提供 Dockerfile 或 docker-compose.yaml,无法通过容器化方式一键部署。你必须逐台机器运行安装脚本,对于需要快速批量部署到多台机器的场景,这增加了运维复杂度。不过这也是其设计哲学的一部分——极简的单二进制分发,不需要容器运行时。
License 争议。basemode 采用 FSL 1.1(Functional Source License)+ Apache 2.0 未来许可。FSL 是一种"源代码可用但有使用限制"的许可证,禁止将 basemode 本身作为服务来销售(不能提供"basemode 即服务"类产品)。商业使用是允许的,但如果你计划基于 basemode 构建商业产品,需要仔细阅读 LICENSING.md 确认合规边界。
basemode 背后有一个更大的趋势:AI 编程正在从"模型能力竞争"进化到"上下文工程竞争"。当模型能力本身已经足够强大(GPT-4o、Claude Sonnet 在代码任务上差异有限),决定开发效率的关键变量变成了:模型在开始工作之前,拥有多少正确的上下文。
传统的上下文获取方式(手动写 CLAUDE.md、粘贴代码片段、口头描述项目背景)本质上都是人在做知识整理工作。basemode 的目标是让机器接管这部分工作——自动构建、自动维护、自动投递。
从增长曲线看,basemode 的 GitHub 页面虽然只有 172 颗星,但其 topic 标签(agentic-ai、context-engineering、code-intelligence)精准命中了 2025-2026 年 AI Agent 领域最热门的议题方向。作者 Chris Kahler 持续活跃更新(v0.14.2),文档质量高,社区反馈积极。
安装(macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/ChristopherKahler/base/main/install.sh | sh
安装(Windows)
irm https://raw.githubusercontent.com/ChristopherKahler/base/main/install.ps1 | iex
初始化项目
cd ~/my-workspace
base scaffold # 创建 .base/ 目录并安装 Claude Code hooks
base p a -n "My App" -p "src" # 注册项目
开始使用
打开 Claude Code,basemode 会在首次读取文件时自动构建代码图谱。之后的每次会话,正确的上下文都会自动出现在你的 Agent 回合里。
查看 Web 控制台:
base dashboard