信息差一句话:你每天用 Claude Code、Cursor、Codex 跟模型反复对话,几个月下来本机里堆了几 GB 的高质量上下文——决策、失败的尝试、踩过的命令、被否掉的方案。这些"废气"90% 的中国开发者从没想过复用,但本周 Hacker News 上连续冒出三把新刀,专门把你机器上已有的东西变成可检索、可经营、可喂回 agent 的资产。今天这篇拆三款:ctx、Adrafinil、slopo,全部本周 Show HN 热榜、全部开源、全部能立刻装。
这是本周最被低估的一款,也是本文真正的主角。
官网 / 仓库:https://ctx.rs · https://github.com/ctxrs/ctx
价格:开源免费(Rust 写的本地二进制 + SQLite),不上云、不要 API key、不调模型接口
HN 热度:Show HN 当周 29+ 评论
coding agent 有一个所有人习以为常、其实极其荒谬的毛病:每次都从零开始。它能 inspect 当前 repo,但恢复不了上一次会话里你做出的决策、被否掉的方案、跑失败的命令、查过的 bug。于是你每个月都在让 agent 重新踩一遍同样的坑。
ctx 的切入点很准:这些会话日志本来就已经存在你本机——Claude Code、Codex、Cursor 各自有自己的本地 history 文件。ctx 自动发现这些文件,导入进一个本地 SQLite 索引,然后给当前和未来的 agent 一个 CLI,让它在动手前先"查一下我之前是不是解决过这个"。
这是它最硬的卖点。把同一段历史喂回 agent,ctx 的结构化检索返回 917 tokens,而"直接 grep 原始 transcript"要吐出 45,734 tokens。差了约 50 倍。
为什么重要?因为原始对话记录塞进 context 不仅贵,还会把 agent 搞晕——噪音太多等于没记忆。ctx 把历史拆成 sessions / events / touched-files / 元数据,返回带引用的精排片段,等于让 agent 用极小的 token 成本拿到"我上个月怎么修这个 cursor 重命名 bug 的"。
# 一键安装(Rust 二进制,自带签名自升级)
curl -fsSL https://ctx.rs/install | sh
# 索引你本机所有现有 agent 会话
ctx setup
# 让你的 agent 用自然语言搜历史,或按文件搜
ctx search "failed migration"
ctx search --file crates/foo/src/lib.rs
ctx sql "SELECT provider, COUNT(*) AS sessions FROM ctx_sessions GROUP BY provider"
可选地用 npx skills add ctxrs/ctx 把它注册成 agent skill,Codex / Claude Code / Cursor / 原生 Agent Skills 都支持。
ctx 能"发现并导入"以下 harness 的本地历史:Claude Code、Codex、Cursor、Pi、OpenCode、Antigravity/Gemini CLI、Factory AI Droid、Copilot CLI。也就是说,不管你主力用哪个,历史都能被一起挖出来。
国内很多人把 ctx 类比成 Mem0 / Zet 之类的 agent 记忆工具,但定位完全不同:
适用人群:重度使用 Claude Code / Cursor / Codex 半年以上的开发者。如果你本机的 agent history 已经累计到几百个 session,不装 ctx 基本等于在扔钱。
ctx 解决的是"agent 干完活留下的东西",Adrafinil 解决的是"怎么让 agent 真的能干一整夜活"。
官网 / 仓库:https://kagerou.glass/adrafinil/ · https://github.com/kageroumado/adrafinil
价格:开源 MIT,签名公证的 dmg,免费
HN 热度:124 pts / 78 评论(本周 agent 工具类第一)
让 agent 跑长任务是当下主流工作流,但 macOS 有个烦人的物理限制:合盖就睡。绝大多数人用 caffeinate 或 Amphetamine 强制保持唤醒——问题是这俩是"兴奋剂",永远让机器醒着,不管有没有活,忘关就是一晚上空转、笔记本在包里烤成暖手宝。
Adrafinil 的定位是"机器的促醒药":什么也不做,直到某个 agent 抢占它。只在 agent 有活跃 session 时阻止睡眠(含合盖),活一干完立刻释放、正常睡眠。零 session 时合盖照睡不误。
# 1. 自动:靠 agent hook,turn 开始 acquire、结束 release
adrafinil acquire <session-key> --tool claude-code --reason "long build"
adrafinil release <session-key>
# 2. agent 主动:长构建/部署时让 Mac 在回复之后多醒一会儿
adrafinil hold --for 30m --reason "deploy"
adrafinil mcp # 给支持 MCP 的 agent 暴露工具
# 3. 手动:菜单栏 Keep awake 按钮,定时 hold,无需 agent
一键集成 9 个 agent 的 hook:Claude Code、Codex、Cursor、Gemini CLI、Aider、Hermes、OpenCode、Cline、Pi。卸载时会干净清除它加过的所有 hook。
适用人群:用 Mac 让 agent 跑一夜 / 跑大重构 / 跑长构建的开发者。
国内对比:国内基本没有"agent 感知"的电源管理工具,大家要么裸用 caffeinate 一刀切常亮,要么靠云服务器跑(贵、且本机数据出不去)。Adrafinil 把"agent 工作时醒、空闲时睡"做成系统级原语——这是个典型的方法差:你不知道有这种粒度,就只能忍受要么烤机器、要么任务被打断。
限制:要求 macOS Tahoe 26.4+,老系统用户暂时无缘。
前两把挖的是 agent 对话历史,slopo 挖的是代码库本身——但用的不是老掉牙的 token 比对,而是 embedding。
官网 / 仓库:https://slopo.dev · https://github.com/rafal-qa/slopo
价格:开源免费,pip 安装
HN 热度:89 pts / 45 评论
代码重复有两种:精确复制粘贴(jscpd、SonarQube 早就解决),和最隐蔽、最有害的那种——逻辑相似、写法相近,但散落在不同模块、相隔几千行。这类靠人眼和精确工具都抓不到,却是技术债的主要来源。
slopo 的思路:对每个代码单元算 embedding,找 embedding 接近的对,聚成 cluster,再按"相似度 + 代码库内距离"排序——相距越远的相似代码 boost 越高,因为那才是真正该警惕的隐性重复。
uv tool install slopo # 用 uv 装进隔离环境,连 Python 都不用单独配
slopo init # 生成配置模板
slopo index && slopo embed && slopo analyze # 索引 → 算 embedding → 出报告
embedding 走外部 provider,推荐 Voyage AI(代码专用,512 维就够),也兼容任何 LiteLLM 支持的模型。支持 10 种语言:Python、TypeScript、JavaScript、Java、Kotlin、C#、Go、Rust、PHP、Elixir。
slopo 不替你下"这是不是真重复"的结论——相似不等于重复。它的设计是:
slopo.ignore.txt;slopo.ignore.txt 可以提交进 git,跨团队复用——等于把团队的"去重知识"沉淀下来,新人不会再重构已经被否决的部分;这是一个把"embedding 检索 + agent 协作 + 版本控制"拧成一条流水线的设计,比单纯"丢给 ChatGPT 问哪里重复"成熟得多。
适用人群:维护中大型代码库、想做系统化 AI 重构的技术负责人。
国内对比:国内代码查重基本停在 jscpd(token 级精确重复),embedding 级语义去重这块几乎空白——又一个认知差:同样的 embedding 模型,国内多数人只拿去做 RAG,没想过拿去挖自己的代码库。
下面这张图说明这三把刀如何把你机器上已有的东西(对话历史 / 运行中的 session / 代码)变成可经营资产——它们不是互斥的,而是接力关系:
flowchart TD
A["你每天和 agent 的对话<br/>几 GB 高质量上下文"] --> B["ctx<br/>索引进本地 SQLite"]
B --> C["agent 动手前先搜历史<br/>917 tokens vs 45734"]
C --> D["避免重复踩坑<br/>决策/失败/补丁可溯源"]
E["长任务:大重构/长构建"] --> F["Adrafinil<br/>只在 agent 工作时保持唤醒"]
F --> G["合盖不中断<br/>热熔断防止烤机"]
G --> H["session 完整跑完<br/>高质量历史持续累积"]
H --> A
I["现有代码库"] --> J["slopo<br/>embedding 算语义重复"]
J --> K["cluster 报告交给 agent<br/>ignore.txt 沉淀进 git"]
K --> L["系统化去重重构"]
L --> I
style B fill:#fff3cd,stroke:#d39e00
style F fill:#d1ecf1,stroke:#0c5460
style J fill:#d4edda,stroke:#155724
闭环一目了然:Adrafinil 保证 session 跑完 → 跑完的会话被 ctx 挖成可检索资产 → 同时 slopo 把代码库的隐性重复也挖出来交给 agent 重构。三者共同指向一个判断——agent 时代,留在你本机的数据比云端服务更值钱,因为它专属于你、可溯源、不上云。
| 维度 | 你以为的 | 海外本周已经在做的 |
|---|---|---|
| agent 历史 | 每次开新会话从零开始,旧对话是垃圾 | ctx 把几个月历史索引进 SQLite,agent 动手前先查,省 50x token |
| 记忆工具 | Mem0/Zep 存摘要事实 | ctx 存 session/event 级可溯源证据,"找回发生过什么"而非"记住偏好" |
| 跑长任务 | caffeinate 一刀切常亮,或丢云服务器 | Adrafinil 按需唤醒 + 热熔断,合盖也能跑、不烤机器 |
| 代码去重 | jscpd 抓精确复制粘贴 | slopo 用 embedding 抓语义级隐性重复,ignore.txt 进 git 跨团队复用 |
| embedding 用途 | 只拿去做 RAG 检索 | slopo 拿来挖自己代码库,ctx 拿来结构化历史 |
curl -fsSL https://ctx.rs/install | sh → ctx setup → 看看自己到底攒了多少个 session。如果你用 Claude Code 半年以上,第一次 ctx search 的结果大概率会让你吃惊——你会发现自己早就解决过同一个问题。uv tool install slopo,用 Voyage AI 跑一次 analyze,把报告丢给 agent,再把 slopo.ignore.txt 提交进 git。ctx search 封进你的 Claude Code 自定义 slash command,让 agent 在每次 UserPromptSubmit 后自动查历史——这才是"agent 真正有了长期记忆"的姿势。一句忠告:这三款都强调本地优先、不上云、BYOK。在数据合规越来越严的当下,"能力留在本机"本身就是一种护城河——这也是为什么海外独立开发者这周集体往这个方向扎堆。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!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 等场景全覆盖。
