ContextAtlas

为 AI Agent 提供稳定、可复用、可观测的代码上下文基础设施

Hybrid Retrieval · Project Memory · MCP Server · Retrieval Observability

Node >=20 TypeScript 5.x MCP Server License GitHub stars

English · 文档 · 首次使用 · 部署手册 · CLI · MCP

ContextAtlas architecture

**ContextAtlas** 是一个面向 AI 编程 Agent 的开源上下文基础设施——提供混合代码检索、项目记忆和检索可观测能力,可通过 CLI、MCP 服务器或嵌入式库接入。它结合 Tree-sitter 语义分片、LanceDB 向量搜索、SQLite FTS5 全文检索和 Token 感知的上下文打包,为 Claude Code、Codex 和自定义 Agent 工作流提供高质量、结构化的代码上下文。 ## 更新记录 - `2026-04-15`:新增 git hook 自动维护,`--quick` 健康检查(260x 提速)、幽灵索引目录清理和三层 hook 防护(防抖 + 快速模式 + 每日节流)。 - `2026-04-14`:将 11 个 Memory MCP 工具的业务逻辑下沉到 application 层,完成三层架构分离(CLI / MCP adapter → application → domain),并清零全量 TypeScript 编译错误。 - `2026-04-10`:`codebase-retrieval` 默认附带轻量直接图谱摘要,MCP 元数据、测试与更新日志同步到位。 - `2026-04-09`:为索引计划增加 churn / cost 策略、把长期记忆迁到独立表 + FTS5,并完成默认路径硬化、阈值配置化、运维告警口径对齐与文档同步。 - `2026-04-08`:新增 embedding gateway、本地缓存与多上游切换能力,并补齐 Hugging Face 接入与 MCP 上下文生命周期工具。 - `2026-04-07`:围绕索引链路完成轻量计划、快照复制优化、队列可观测、fallback 稳定性和性能基准建设。 - `2026-04-06`:收口默认主路径、记忆治理和运维可观测能力,让首次使用、反馈闭环和健康检查更清晰。 ## 目录 - [为什么需要 ContextAtlas](#为什么需要-contextatlas) - [适合什么场景](#适合什么场景) - [核心能力](#核心能力) - [技术栈](#技术栈) - [安装](#安装) - [配置](#配置) - [快速开始](#快速开始) - [接入方式](#接入方式) - [架构概览](#架构概览) - [文档导航](#文档导航) - [友情链接](#友情链接) - [License](#license) ContextAtlas 不是单一的“代码搜索工具”。它解决的是更实际的工程问题: - agent 能不能在大仓库里更快找到正确代码 - agent 能不能把项目理解沉淀下来,而不是每次重读整个仓库 - 检索、索引和记忆系统本身能不能被观测、优化和治理 如果你正在构建 Claude Code、MCP 客户端或自定义 agent workflow,ContextAtlas 提供的是一层 **context infrastructure**:检索、记忆、上下文打包和观测。 ## 为什么需要 ContextAtlas 在真实项目里,AI agent 失败往往不是因为“模型不够聪明”,而是因为上下文系统不可靠: - 找不到真正相关的代码 - 找到的是碎片,缺少依赖和上下文 - 同一个模块反复理解,无法沉淀稳定知识 - 索引过期、检索退化、预算耗尽却没有观测信号 ContextAtlas 把这些问题拆成一套可组合的基础能力: - **找**:混合检索找到相关实现 - **补**:图扩展和 token packing 补足局部上下文 - **存**:项目记忆、长期记忆、跨项目 Hub 沉淀知识 - **看**:索引健康、检索 telemetry、usage 和 alert 让系统可观测 ContextAtlas 决定的是**提供什么上下文**,而不是**如何执行任务**。它不处理 Agent 推理、工作流编排或业务 API 操作。 ## 适合什么场景 - 作为 coding agent 的仓库检索后端 - 作为 MCP server,为外部客户端提供代码检索和记忆工具 - 作为本地 CLI / skill backend,嵌入脚本、CI 或 agent workflow - 作为跨项目知识中枢,复用模块职责、决策记录和协作经验 ## 核心能力 | 能力 | 说明 | |------|------| | **Hybrid Retrieval** | 向量召回 + FTS 词法召回 + RRF 融合 + rerank | | **Context Expansion** | 基于邻居、breadcrumb、import 的局部上下文扩展 | | **Token-aware Packing** | 在有限 token 预算内优先保留高价值上下文 | | **Project Memory** | Feature Memory、Decision Record、Project Profile | | **Long-term Memory** | 保存无法从代码稳定推导的规则、偏好、外部参考 | | **Cross-project Hub** | 跨仓库共享模块记忆、依赖链和关系图谱 | | **Async Indexing** | SQLite 队列 + daemon 消费 + 快照原子切换 | | **Observability** | retrieval monitor、usage report、index health、memory health、alert evaluation | ## 技术栈 - **TypeScript / Node.js 20+** - **Tree-sitter**:语义分片 - **SQLite + FTS5**:元数据、检索、队列、memory hub - **LanceDB**:向量存储 - **Model Context Protocol SDK**:MCP server ## 安装 ```bash npm install -g @codefromkarl/context-atlas ``` 产品身份映射: - 仓库名:`ContextAtlas` - npm 包名:`@codefromkarl/context-atlas` - CLI 命令:`contextatlas` 可执行命令: - `contextatlas` - `cw`(短别名) 文档默认统一使用 `contextatlas`,`cw` 保留为兼容短别名。 ## 配置 先初始化配置目录和示例环境变量: ```bash contextatlas init # 选择接入模式: contextatlas setup:local --mode cli-skill # 终端 + skill 集成 # 或 contextatlas setup:local --mode mcp # MCP 客户端集成 ``` 默认配置文件位置: ```bash ~/.contextatlas/.env ``` 至少需要配置: ```bash EMBEDDINGS_API_KEY= EMBEDDINGS_BASE_URL= EMBEDDINGS_MODEL= RERANK_API_KEY= RERANK_BASE_URL= RERANK_MODEL= ``` 索引更新策略还支持以下可选参数: ```bash INDEX_UPDATE_CHURN_THRESHOLD=0.35 INDEX_UPDATE_COST_RATIO_THRESHOLD=0.65 INDEX_UPDATE_MIN_FILES=8 INDEX_UPDATE_MIN_CHANGED_FILES=5 ``` - `INDEX_UPDATE_CHURN_THRESHOLD`:改动文件占比达到阈值时,`index:plan` / `index:update` 更倾向直接建议 `full` - `INDEX_UPDATE_COST_RATIO_THRESHOLD`:估算增量处理成本接近全量时触发 `full` - `INDEX_UPDATE_MIN_FILES` / `INDEX_UPDATE_MIN_CHANGED_FILES`:只有仓库规模和改动规模都达到门槛时,才启用上述升级策略 - `contextatlas index:diagnose`:直接回显当前阈值和升级判定配置,适合排查“为什么升级成 full / 为什么仍保持 incremental” > `init` 会写入一份可直接编辑的示例 `.env`,包括默认的 SiliconFlow endpoint 和推荐模型配置。 > `setup:local --mode ` 仅写入所选模式的配置文件。模式选择指引见 [首次使用](./docs/guides/first-use.md)。 > setup 后建议运行 `contextatlas health:full`,一次性自检索引、记忆、图谱、契约和 MCP 进程状态。 更多配置与部署细节见 [部署手册](./docs/guides/deployment.md) 和 [CLI 文档](./docs/reference/cli.md)。 ## 快速开始 如果你是第一次接入,先看 [首次使用](./docs/guides/first-use.md)。 ### 1)确认主路径入口 ```bash contextatlas start /path/to/repo ``` ### 2)初始化并填写 API 配置 ```bash contextatlas init # 编辑 ~/.contextatlas/.env ``` ### 3)索引仓库 ```bash contextatlas index /path/to/repo ``` ### 4)本地检索 ```bash contextatlas search \ --repo-path /path/to/repo \ --information-request "用户认证流程是如何实现的?" ``` ### 5)启动守护进程(推荐) ```bash contextatlas daemon start ``` ### 6)作为 MCP Server 暴露给客户端 ```bash contextatlas mcp ``` ## 接入方式 ContextAtlas 支持两种互斥的接入模式,通过 `setup:local --mode ` 选择: - **cli-skill**:终端 + skill 集成,所有操作通过 `contextatlas` CLI 命令完成,不暴露 MCP server - **mcp**:MCP 客户端集成,通过 Claude Desktop、Cursor、Codex MCP 等标准工具协议调用 详见 [首次使用](./docs/guides/first-use.md) 中的模式选择指引。 ### 1. 作为本地 CLI / Skill Backend(cli-skill 模式) 适合: - 自定义 agent skills - shell workflow / CI 脚本 - 本地调试与检索分析 示例: ```bash # 检索 contextatlas search --repo-path /path/to/repo --information-request "支付重试策略在哪里实现?" # 项目记忆 contextatlas memory:find "search" contextatlas decision:list # 健康检查 contextatlas health:full ``` ### 2. 作为 MCP Server(mcp 模式) 适合: - 支持 MCP 的桌面客户端 - 需要以标准 tool 调用 ContextAtlas 能力的 agent 系统 如果只希望 MCP 客户端看到只读检索、图谱、契约和记忆读取工具,可使用 `contextatlas setup:local --mode mcp --toolset retrieval-only`。 Claude Desktop 配置示例: ```json { "mcpServers": { "contextatlas": { "command": "contextatlas", "args": ["mcp"], "env": { "CONTEXTATLAS_EXPOSURE_MODE": "mcp" } } } } ``` ContextAtlas 的 MCP 工具覆盖: - 代码检索 - 项目记忆 - 长期记忆 - 跨项目 Hub - 自动记录与建议写回 ## 架构概览 ```text 索引:Crawler / Scanner → Chunking → Indexing → Vector / SQLite Storage 检索:Vector + FTS Recall → RRF → Rerank → Graph Expansion → Context Packing 记忆:Project Memory / Long-term Memory / Hub → CLI / MCP Tools ``` ContextAtlas 更关注“给 agent 什么上下文”,而不是“替 agent 完成任务决策”。更完整的边界说明见 [仓库定位](./docs/architecture/repository-positioning.md) 和 [工程定位文档](./docs/architecture/harness-engineering.md)。 ## 文档导航 | 文档 | 用途 | |------|------| | [文档总览](./docs/README.md) | 文档目录统一入口,区分稳定文档、计划、更新日志和归档材料 | | [2026-04-15 更新总结](./docs/changelog/2026-04-15.md) | 快速健康检查、幽灵索引清理与 git hook 自动运维闭环 | | [2026-04-10 更新总结](./docs/changelog/2026-04-10.md) | `codebase-retrieval` 默认附带图谱摘要,并同步 MCP 文档与测试口径 | | [首次使用](./docs/guides/first-use.md) | 10 分钟跑通默认闭环,先理解包名、CLI 名和第一条查询 | | [2026-04-07 更新总结](./docs/changelog/2026-04-07.md) | 索引 7 个阶段优化总结,覆盖轻量计划、快照复制、健康修复、队列可观测性、fallback、存储裁剪与 benchmark | | [部署手册](./docs/guides/deployment.md) | 安装、部署场景、MCP 集成、运维建议 | | [CLI 命令参考](./docs/reference/cli.md) | 所有 CLI 命令的分类说明和示例 | | [MCP 工具参考](./docs/reference/mcp.md) | MCP 工具总览、参数和调用顺序 | | [项目记忆详解](./docs/project/project-memory.md) | Feature Memory、Decision Record、Catalog 路由 | | [仓库定位](./docs/architecture/repository-positioning.md) | 仓库角色、设计思路、系统边界 | | [工程定位文档](./docs/architecture/harness-engineering.md) | ContextAtlas 在 harness engineering 中的定位 | | [产品路线图](./docs/product/roadmap.md) | 后续版本规划和演进方向 | | [后续任务执行清单](./docs/plans/next-tasks-execution-checklist.md) | 将当前未完全关闭的后续事项整理为可执行任务板 | | [迭代执行计划(2026-04-08)](./docs/archive/iterations/2026-04-08/iteration-plan.md) | 按迭代批次拆分后续任务,便于直接排期执行 | ## 贡献 欢迎通过以下方式参与改进 ContextAtlas: - 提交 issue 报告 bug 或文档问题 - 提交 PR 修复检索、记忆、监控或文档问题 - 补充真实使用场景、部署经验和 benchmark 数据 - 改进 README、CLI 文档和 MCP 工具示例 如果你准备提交代码,建议先: 1. 运行 `pnpm build` 确认可以构建 2. 确认命令示例、README 和文档与当前实现一致 3. 尽量把功能、文档和运维说明一起补齐 ## 开发 ```bash pnpm build pnpm build:release pnpm dev node dist/index.js ``` ## 友情链接 https://linux.do/ ## License MIT