用了一周 Claude Code、Cursor、Codex,你可能没意识到一个荒诞的事实:你的电脑里躺着几个月的 agent 对话历史——你做过的决策、踩过的坑、跑通过的命令、被否掉的方案——但下一个 agent 会话一行都用不上。它每次都从零开始 grep,连你昨天为什么放弃某个重构都不知道。
这不是吐槽,这是本周 Hacker News 连续冒出来的一个新共识:AI 编程 agent 真正的瓶颈不是模型够不够聪明,而是"记忆"这一层缺位。过去这周(截至 2026-07-02),Show HN 上接连出现三把针对这个缺口的全新开源工具,都还在当天提交:一个把你机器上的 agent 历史变成可检索的金矿(ctx),一个把整个代码库的架构做成确定性地图喂给 agent(Enola),一个用 embedding 找出"语义撞车"的重复代码(slopo)。国内目前还没有任何工具盯住这条线,这就是这周该捡的信息差。
先把问题说清楚。当前主流用法(包括国内大量教程)里,AI agent 的状态管理基本是裸奔的:
这三块缺口,恰恰就是这周这三把刀各自补上的位置。它们合起来,相当于给 agent 装了三个"外挂记忆器官"。下图是它们和 agent 的协作关系:
flowchart LR
subgraph Agent["你的 AI Coding Agent"]
CC[Claude Code]
CU[Cursor]
CX[Codex]
end
subgraph Mem["三块外挂记忆 本周新开源"]
M1["ctx<br/>情景记忆<br/>检索本地历史会话"]
M2["Enola<br/>结构记忆<br/>确定性代码架构图"]
M3["slopo<br/>去重记忆<br/>embedding 语义查重"]
end
H[("本地 SQLite<br/>历史会话索引")] -.喂回.-> M1
SRC[("源代码库")] -.解析.-> M2
SRC -.分块计算.-> M3
M1 -->|"先搜历史 别重复踩坑"| Agent
M2 -->|"先看地图 别猜结构"| Agent
M3 -->|"先查重复 别重写"| Agent
style M1 fill:#e8f5e9
style M2 fill:#e3f2fd
style M3 fill:#fff3e0
下面挨个拆,每个都附真实链接、价格和可直接抄的安装命令。
这是这周我最想安利的一把,也是国内信息差最大的一把。
curl -fsSL https://ctx.rs/install | sh)它解决什么:你用了几个月 Claude Code、Cursor、Codex,本地其实存了海量 session 日志——里面有你的决策、约束、被否掉的方案,也有上一个 agent 的 bug 排查、重构记录、跑过的命令和测试结果。但新的 agent 会话永远从零开始,它最多能看当前 repo,翻不出这些历史。ctx 做的事很简单:把这些日志导入本地 SQLite,建索引,然后给当前/未来的 agent 提供一个 CLI,让它在重复造轮子之前,先去搜一下你以前有没有试过、为什么失败。
核心命令(仓库 README 原文):
# 一次性把你所有本地 agent 会话建索引
ctx setup
# 让 agent 用自然语言搜历史
ctx search "failed migration"
# 搜碰过某个文件的会话
ctx search --file crates/foo/src/lib.rs
# 多关键词组合
ctx search --term "failed migration" --term rollback
为什么值得特别关注(硬数据):README 里给了实测——同样查一次历史,ctx 返回 917 tokens,而直接喂原始 transcript 搜要 45,734 tokens。也就是比裸搜 transcript 省约 50 倍 token。作者说得直白:裸搜历史 token 太重,"效果上等于没有可用历史"。换句话说,你以前把整个 ~/.claude 日志塞进 context window 的做法,基本是错的——既贵又没用。
还可以一键装成 agent skill:npx skills add ctxrs/ctx,Claude Code / Codex / Cursor 都支持,这样 agent 在干活时能自动调用 ctx search。
国内对比:国内基本没有同类工具。最接近的土办法是用 grep / rg 在 ~/.claude/projects 那堆 JSONL 里硬翻,但完全没有 session 级、event 级的结构化,也没有按"碰过的文件"检索的能力,更谈不上给 agent 当工具调用。适用人群:重度 Claude Code / Cursor / Codex 用户,尤其是一个人维护多仓库、经常隔几天再回头改代码的独立开发者和团队。
小提醒:ctx 默认本地私有,但 transcript 文本会原样保留(包括本地路径、长得像密钥的字符串),所以复制结果对外分享前要自己 review 一眼,别把 token 带出去。
curl -fsSL https://raw.githubusercontent.com/enola-labs/enola/main/install.sh | sh)它解决什么:AI agent 最稳的痛点之一就是"每次都得重新发现代码库"——grep、开文件、猜模块怎么连起来的,而且经常猜得"差一点点但够错"。这个猜测烧的是时间(走错路、反复重提需求)和 token(每个会话重读同一批文件)。Enola 是个本地 MCP server,你把它指向一个或多个 repo,它会用解析器和图算法(而不是语言模型)构建一张精确的架构图:模块、类型、路由、依赖、它们怎么连——全是从源码里提取出来的事实,不是 LLM 总结出来的笔记。同一份 commit 跑两遍,结果完全一致。
30 秒接入 Claude Code / Cursor:
# Claude Code
claude mcp add enola enola
# Cursor 的 mcp.json
{ "mcpServers": { "enola": { "command": "enola" } } }
接好后对 agent 说一句"Generate an architectural snapshot of /path/to/my/project",它就拿到了精确的结构地图。
支持面:Go、JavaScript、TypeScript、Python、Java、Kotlin、Swift、Ruby、C、C++、PHP、Vue、Svelte、OpenAPI,而且带框架感知——Next.js、Nuxt、SvelteKit、FastAPI、Django、Spring、Rails、Laravel、Symfony、SwiftUI、Jetpack Compose、WordPress 等都认得。
为什么值得关注:作者的 framing 很戳——它把现状叫"vibe coding"(提示、祈祷、修 bug),用上之后才叫"AI-augmented engineering"(基于事实的工程)。结构层永远不该交给概率模型去猜。国内对比:国内很多人给 agent 配 RAG、配"代码知识图谱",但绝大多数是让模型去概括代码,而不是用静态分析提取确定性事实;Enola 的"提取而非总结"是思路上的差异。适用人群:中大型代码库、多模块 monorepo、做遗留系统重构、或经常被 agent"猜错目录结构"坑到的团队。
它解决什么:它专门抓那种最该查、最难抓的重复——写法很像、但隔得很远(不同模块、甚至同一大文件两端)的代码片段。逐字复制粘贴那种,PMD/CPD 早就能抓;靠得近的重复,人或 AI 一眼也看得见。slopo 抓的是"语义相近、空间分散"的隐性重复。
怎么干:对每个代码单元算一个 embedding,然后找 embedding 距离接近的对;相似不一定是重复,所以每对都是"待确认"候选项,最后由你的 AI agent 来判定是不是真重复,确认的可以标记忽略或送去重构。作者自己拿 slopo 代码库跑了一遍,发现各语言 parser 之间有大量重复(有逐字复制,也有相似变体),确实需要重构——这是真实可用证据。
快速上手:
uv tool install slopo # 用 uv 装到隔离环境
slopo init # 生成配置模板
embedding 模型:走 LiteLLM,理论上任何 LiteLLM 兼容 provider 都行;作者推荐专门的代码 embedding 模型,比如 Voyage AI(低维度 512 就够用,成本低)。这点对国内用户其实很友好——GLM、通义、BGE 这类国产 embedding 也能接,等于把查重成本压到几乎可忽略。
国内对比:国内代码查重基本停留在 PMD CPD、SonarQube 这类基于 token 序列/文本的工具,抓得了逐字复制,抓不了"换变量名、调整顺序但语义相同"的重复。用 embedding 做语义级查重,国内几乎没有成品工具。适用人群:老项目重构、团队代码治理、以及想让 agent"动手前先确认这段逻辑是不是已经存在"的人——本质上这也是 agent 的一块"去重记忆"。
| 维度 | 多数人现在的认知 | 这周的信息差 |
|---|---|---|
| agent 历史 | 聊完就没了,下次从零开始 | 本地躺着几个月会话,ctx 能让 agent 检索,省 50 倍 token |
| 代码库理解 | 让 agent 自己 grep + 猜 | Enola 用静态分析喂确定性架构图,跑两遍结果一致 |
| 重复代码 | 只能抓逐字复制 | slopo 用 embedding 抓语义重复,连变量改名都逃不掉 |
| 成本 | 塞整段 transcript 进 context 又贵又没用 | 结构化索引 + 静态分析,token 降一个数量级 |
| 国内可用性 | 以为只能等国产工具 | 三者全开源、本地优先,embedding 还能换国产模型 |
curl -fsSL https://ctx.rs/install | sh → ctx setup → 让 agent 习惯性先 ctx search 再动手。这一步对重度 Claude Code 用户回报最大。claude mcp add enola enola,让它先生成一张架构 snapshot。观察接下来几次改动是否少了"猜错目录"的反复。uv tool install slopo + 接国产/低成本 embedding,每周跑一次,把候选重复丢给 agent 复核,逐步消除技术债。一个组合用法:让 agent 改东西前,先
ctx search看历史有没有踩过坑,再问 Enola 这块结构长啥样,最后 slopo 确认别处有没有现成实现——三步走完再动手,几乎能干掉一半"重复劳动 + 返工"。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
mermaid-generator / architecture-diagram-zh 把"三块记忆"架构图渲染成 PNG 贴公众号。ducksearch skill 做交叉验证(当前 MCP 限流,ducksearch 走 DuckDuckGo 或不受同源限制,值得试)。--file / --term 高级检索与 skills add 集成玩法。[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
