<!-- title: 你机器上的agent对话被海外当金矿挖 -->
<!-- domain: new-tools -->

# 你攒了半年的 Claude Code 对话，海外本周开始当金矿挖

**信息差一句话**：你每天用 Claude Code、Cursor、Codex 跟模型反复对话，几个月下来本机里堆了几 GB 的高质量上下文——决策、失败的尝试、踩过的命令、被否掉的方案。这些"废气"90% 的中国开发者从没想过复用，但本周 Hacker News 上连续冒出三把新刀，专门把你机器上已有的东西变成可检索、可经营、可喂回 agent 的资产。今天这篇拆三款：`ctx`、`Adrafinil`、`slopo`，全部本周 Show HN 热榜、全部开源、全部能立刻装。

---

## 一、ctx：把你的 agent 历史变成可搜索的 SQLite 金矿

这是本周最被低估的一款，也是本文真正的主角。

**官网 / 仓库**：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，让它在动手前先"查一下我之前是不是解决过这个"。

### 关键数据：50 倍 token 效率

这是它最硬的卖点。把同一段历史喂回 agent，ctx 的结构化检索返回 **917 tokens**，而"直接 grep 原始 transcript"要吐出 **45,734 tokens**。差了约 **50 倍**。

为什么重要？因为原始对话记录塞进 context 不仅贵，还会把 agent 搞晕——噪音太多等于没记忆。ctx 把历史拆成 sessions / events / touched-files / 元数据，返回带引用的精排片段，等于让 agent 用极小的 token 成本拿到"我上个月怎么修这个 cursor 重命名 bug 的"。

### 怎么用（三条命令）

```bash
# 一键安装（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 都支持。

### 支持哪些 agent

ctx 能"发现并导入"以下 harness 的本地历史：**Claude Code、Codex、Cursor、Pi、OpenCode、Antigravity/Gemini CLI、Factory AI Droid、Copilot CLI**。也就是说，不管你主力用哪个，历史都能被一起挖出来。

### 和国内"agent 记忆"工具的区别（认知差核心）

国内很多人把 ctx 类比成 Mem0 / Zet 之类的 agent 记忆工具，**但定位完全不同**：

- **记忆工具**存的是压缩后的事实、摘要、向量、图谱节点——适合记"用户偏好"，但当下一个 agent 要知道"某条决策的依据是什么、哪条命令失败过、什么方案被否了"时，摘要证据太弱。
- **ctx** 把检索绑定在 session/event 级别，agent 可以"先看原始证据再用"，可溯源、可审查。README 原话：它不存"事实"，它存"发生过什么"。

**适用人群**：重度使用 Claude Code / Cursor / Codex 半年以上的开发者。如果你本机的 agent history 已经累计到几百个 session，不装 ctx 基本等于在扔钱。

---

## 二、Adrafinil：只在 agent 干活时让 Mac 醒着

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 时合盖照睡不误。

### 三种唤醒方式

```bash
# 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
```

### 几个工程细节（为什么它不是个玩具）

- **引用计数断言**：多个 session 叠加，最后一个释放才解锁，不会互相打架。
- **热熔断（thermal cutout）**：合盖后温度超阈值，强制释放所有断言，**不让包里的 Mac 自燃**——这是 caffeinate 用户最容易踩的坑。
- **idle release**：拥有断言的进程死了或 CPU 空闲 N 分钟，自动释放。
- **开盖摘要**：合盖时响一声确认（屏幕关了看不到通知），开盖后告诉你"睡着时跑了什么、峰值温度多少、有没有触发过热熔断"。
- **CLI <50ms 往返**：因为在每个 agent turn 的热路径上，不能拖慢工作流。

一键集成 **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+**，老系统用户暂时无缘。

---

## 三、slopo：用 embedding 挖出你代码库里的"隐形重复"

前两把挖的是 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 越高，因为那才是真正该警惕的隐性重复。

### 怎么用

```bash
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。

### 真正巧妙的地方：把结果交给 agent，知识进 git

slopo 不替你下"这是不是真重复"的结论——相似不等于重复。它的设计是：

1. 出 cluster 报告 → 喂给你的 AI coding agent；
2. agent 判断哪些是真重复，把假阳性的 cluster hash 写进 `slopo.ignore.txt`；
3. **`slopo.ignore.txt` 可以提交进 git**，跨团队复用——等于把团队的"去重知识"沉淀下来，新人不会再重构已经被否决的部分；
4. 重跑生成干净报告，作为重构依据交给 agent。

这是一个把"embedding 检索 + agent 协作 + 版本控制"拧成一条流水线的设计，比单纯"丢给 ChatGPT 问哪里重复"成熟得多。

**适用人群**：维护中大型代码库、想做系统化 AI 重构的技术负责人。  
**国内对比**：国内代码查重基本停在 jscpd（token 级精确重复），embedding 级语义去重这块几乎空白——又一个**认知差**：同样的 embedding 模型，国内多数人只拿去做 RAG，没想过拿去挖自己的代码库。

---

## 三款工具如何串成一条"本机资产"流水线

下面这张图说明这三把刀如何把你机器上已有的东西（对话历史 / 运行中的 session / 代码）变成可经营资产——它们不是互斥的，而是接力关系：

```mermaid
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 时代，留在你本机的数据比云端服务更值钱，因为它专属于你、可溯源、不上云**。

---

## 信息差总结：你知道的 vs 别人已经动手的

| 维度 | 你以为的 | 海外本周已经在做的 |
|---|---|---|
| **agent 历史** | 每次开新会话从零开始，旧对话是垃圾 | ctx 把几个月历史索引进 SQLite，agent 动手前先查，省 50x token |
| **记忆工具** | Mem0/Zep 存摘要事实 | ctx 存 session/event 级可溯源证据，"找回发生过什么"而非"记住偏好" |
| **跑长任务** | caffeinate 一刀切常亮，或丢云服务器 | Adrafinil 按需唤醒 + 热熔断，合盖也能跑、不烤机器 |
| **代码去重** | jscpd 抓精确复制粘贴 | slopo 用 embedding 抓语义级隐性重复，ignore.txt 进 git 跨团队复用 |
| **embedding 用途** | 只拿去做 RAG 检索 | slopo 拿来挖自己代码库，ctx 拿来结构化历史 |

---

## 行动指南（今晚就能做）

1. **先装 ctx**（最高 ROI）：`curl -fsSL https://ctx.rs/install | sh` → `ctx setup` → 看看自己到底攒了多少个 session。如果你用 Claude Code 半年以上，第一次 `ctx search` 的结果大概率会让你吃惊——你会发现自己早就解决过同一个问题。
2. **如果你是 Mac + 长任务党**：装 Adrafinil，配好 Claude Code / Codex 的 hook，今晚就让一个大重构任务合盖跑一夜，明早看开盖摘要。
3. **如果你管着一个中大型代码库**：`uv tool install slopo`，用 Voyage AI 跑一次 `analyze`，把报告丢给 agent，再把 `slopo.ignore.txt` 提交进 git。
4. **进阶**：把 ctx 的 `ctx search` 封进你的 Claude Code 自定义 slash command，让 agent 在每次 `UserPromptSubmit` 后自动查历史——这才是"agent 真正有了长期记忆"的姿势。

**一句忠告**：这三款都强调本地优先、不上云、BYOK。在数据合规越来越严的当下，"能力留在本机"本身就是一种护城河——这也是为什么海外独立开发者这周集体往这个方向扎堆。

---

## 参考来源

- ctx 官网与仓库：https://ctx.rs · https://github.com/ctxrs/ctx
- Adrafinil 仓库：https://github.com/kageroumado/adrafinil · https://kagerou.glass/adrafinil/
- slopo 仓库与官网：https://github.com/rafal-qa/slopo · https://slopo.dev
- Hacker News Show HN 本周热帖：https://news.ycombinator.com/show
- Weave Router 模型路由（相关但属另一赛道）：https://github.com/workweave/router

---
> 本文由「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 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
