Context Infrastructure

打通 AI 的大脑双手

同一个模型,不同的 scaffold,产出完全不同。当 claude.ai、记忆系统、Claude Code 三者割裂时,你的 AI 永远只能说正确的废话。用 MCP 打通它们。

Wayne Zhang · 2026.04 · 基于 鸭哥 Context Infrastructure 的实践延伸

从鸭哥的洞察说起

2026 年 3 月,鸭哥(grapeot)发了一篇文章,用一个实验证明了一件反直觉的事:决定 AI 产出质量的不是模型智能,而是 context。

两个人用了同级别的模型、同样的工具、同样的 prompt 做同一个调研。唯一的区别是背后的 context——一个有一年积累的判断框架,一个没有。结果一个输出了 checklist(正确但没用),一个输出了 insight(有立场的判断)。

他把这个称为 consensus 天花板:LLM 被训练的方式决定了它的默认输出是共识。换更好的模型、改更复杂的 prompt 都无法突破——你需要用足够密度的个人认知 context 压过训练时的 consensus prior。

鸭哥随后开源了一套 context infrastructure 系统,包含三层记忆(观察 → 反思 → 公理)、skill 库、和按需加载机制。这套系统运行了一年,积累了 43 条判断公理。

我尝试复现这套系统时,撞上了一个他没有遇到的问题。


光谱:同一个大脑,不同的身体

鸭哥的工作流是以 Claude Code(以及 OpenCode)为中心的——思考和执行都在终端里完成。但我不是。我更习惯在 claude.ai 的聊天界面里思考和反思,而把 Claude Code 当做执行工具。

这就引出了一个被忽略的事实:claude.ai 和 Claude Code 虽然用的是同一个 Opus 4.6,但它们是完全不同的 agent。

差异不在模型权重,在 scaffold(脚手架)。SWE-Bench Pro 的数据很说明问题:同一个模型在不同 scaffold 下的表现差异可达 22 个百分点,而不同模型之间的差异在前沿水平只有约 1 个百分点。Scaffold 比模型重要一个数量级。

具体来说,claude.ai 和 Claude Code 的 scaffold 优化方向完全不同:

claude.ai 对话优化
深度记忆 无归属
Claude Code 执行优化
← 对话质量 · 跨 session memory · 情感敏感度 文件读写 · bash · auto memory · subagent →

三者位于同一光谱的不同位置,但互相隔离,没有共享状态

左端是 claude.ai——对话质量最好,有跨 session 的 memory 系统,擅长反思、蒸馏、push back。但它碰不到你的本地文件系统。它的 memory 停在事实层("你住在 Bay Area""你在做 GTM"),达不到鸭哥说的判断原则层。

右端是 Claude Code——执行能力最强,有 CLAUDE.md 层级、auto memory、auto dream。但它的对话深度不够,不适合做深度反思和认知蒸馏。它的 auto memory 停在操作层("build command 是 pnpm""测试在 __tests__/ 下")。

中间是深度记忆——鸭哥说的判断原则层。"评估技术方案时怎么权衡可维护性和性能""面对不确定性时你倾向于先行动还是先分析"。这些两边都做不到,也没有归属。

这就是 核心问题:聊天入口、深度记忆、执行层——三者割裂,没有共享状态。你跟 claude.ai 说的它记得,但 Claude Code 不知道。Claude Code 积累的操作经验,claude.ai 看不到。而真正有价值的判断原则,夹在两者之间无处安放。


试过的死路

在找到解法之前,我试了几条路。每条都有各自的理由走不通:

方案 1
Notion 做中间层
claude.ai 和 Claude Code 都能通过 MCP 连 Notion。但每次读写 3-5 秒,对话中频繁拉取体感拖沓。够用但不丝滑。
方案 2
REST API
claude.ai 的 web_fetch 只能 GET,不能 POST。读通了,写还是断的。
方案 3
手动同步
claude.ai 生成文件 → 下载 → 拖到本地目录。可行,但对 ADHD 不友好。两周后一定会废弃。
解法
MCP Server
claude.ai 唯一支持的双向 tool call 协议。读和写都是原生 tool 调用,不受 GET/POST 限制。

MCP:唯一的双向通道

MCP(Model Context Protocol)是 Anthropic 推出的开放协议,让 AI 能调用外部工具和数据源。claude.ai 支持添加自定义的远程 MCP server 作为 connector。关键是:MCP tool call 天然支持双向操作——读和写都是 tool 调用。

方案很简单:在本地跑一个 MCP server,通过 Cloudflare Tunnel 暴露到公网,加到 claude.ai 的 connectors 里。

MCP server 暴露五个 tools:读文件、写文件、追加文件、列目录、执行 bash 命令。这意味着 claude.ai 不只是能读写记忆文件——它能操作你本地的一切。

安全模型

认证不用 OAuth(太复杂),用 URL secret path:在 URL 路径里嵌入一个 43+ 位的随机字符串。不知道完整路径就调不通,暴力扫描的组合数约 10⁷⁷——跟猜中一个原子差不多。

额外的物理安全层:电脑关了,Cloudflare Tunnel 就断了。不用的时候天然不可访问。

持久化

用 Cloudflare Named Tunnel 而不是临时 tunnel——URL 固定不变,claude.ai connector 配一次永远不改。macOS launchd 管理进程,开机自启、挂了自重启。网络切换时 cloudflared 自动重连。


最终架构

claude.ai 大脑 — 思考 · 对话 · 蒸馏 跨 session memory · memory edit 规则 MCP tool calls MCP Server + Cloudflare Tunnel 神经 — 桥接远程和本地 本地文件系统 memory/profile.md memory/axioms.md memory/observations.md 共享认知底座 Claude Code 双手 — 执行 · 编码 · 构建 CLAUDE.md · auto memory auto dream · subagent 直接读写

claude.ai 是大脑——负责思考、对话、蒸馏判断原则。MCP Server + Cloudflare Tunnel 是神经——把远程的大脑和本地的双手连起来。本地文件系统是共享认知底座——两个 agent 都能读写。Claude Code 是双手——负责执行、编码、构建。

两个 Agent 的分工

claude.aiClaude Code
擅长对话、反思、蒸馏、判断执行、编码、文件操作、调试
记忆系统跨 session memory + memory editCLAUDE.md + auto memory + auto dream
记忆维度认知层(判断原则、偏好、模式)操作层(架构偏好、代码规范、工具链)
共享状态通过 MCP 读写 memory/ 目录直接读写 memory/ 目录

这比单一记忆系统更强。两个 agent 各自在自己擅长的维度积累 context,通过共享文件层同步关键认知。


大脑指挥双手:tmux 模式

MCP 打通了读写管道,但 run_command 有 120 秒超时限制。简单的 bash 命令没问题,复杂任务(部署、重构、多步骤工作流)会超时。

解法是通过 tmux 启动一个持久的 Claude Code 交互 session。claude.ai 用 tmux send-keys 发指令,用 tmux capture-pane 读输出,异步监控进度。不受超时限制,Claude Code 可以自主处理错误(比如 git conflict)并持续推进。

这意味着 claude.ai 可以在对话中直接完成这样的操作链:启动 tmux session,打开 Claude Code,发送任务,每 15 秒检查进度,Claude Code 遇到 merge conflict 自行解决,部署完成,返回 URL。全程你只需要在聊天里说一句话。

模式适用场景超时
run_command简单 bash(ls, cat, git status)120s
claude -p中等复杂度、一次完成的任务120s
tmux 持久 session复杂多步骤、需要错误处理的任务无限制

这是大脑指挥双手的完整形态:你在 claude.ai 里说一句话,claude.ai 通过 MCP 调度 Claude Code 去执行一切。你不需要打开终端、不需要切换工具、不需要手动同步。聊天就是唯一的入口。


记忆系统:从观察到公理

记忆系统的设计直接采用鸭哥的三层蒸馏模型(详见他的开源实现):

L1 Observer(日常观察)→ 对话中识别有意义的观察,追加到 observations.md

L2 Reflector(定期整理)→ 每 2-3 周扫描 observations,合并重复,识别跨场景的稳定模式

L3 Axiom(判断原则)→ 从稳定模式中蒸馏决策原则,写入 axioms.md

蒸馏的标准是 稳定性——一个判断如果跨场景、跨时间反复出现并保持一致,它大概率是你认知结构的一部分。不稳定的是情境反应,稳定的才是你自己。

区别在于蒸馏引擎:鸭哥用 Python 脚本 + cron 自动化执行。本系统用 claude.ai 本身作为蒸馏引擎——在对话中主动识别、提炼、写入。你只需要在它提出"这条值得落盘"时说一个字:"好"。


诚实的部分:触发不是确定性的

管道搭通了,记忆模型设计好了。但有一个必须正面承认的事实:让 claude.ai 记得使用这套系统,完全依赖软指令,没有任何一层能保证 100% 执行。

claude.ai 的工具机制(什么时候加载 MCP、什么时候调用 tool)是 Anthropic 平台层定义的。你不能给 MCP 加 "auto-load on session start" 的 hook,不能修改工具的触发逻辑。你能做的只是通过文本指令告诉 Claude "记得做这件事"——它可能记得,也可能忘了。

目前的触发机制有两层:

Skill(主力)

claude.ai 原生的 Skill 系统。创建一个 context-memory skill,description 里写清楚触发条件——故意写得很激进,几乎所有非闲聊话题都匹配。Skill 被触发后,文件里详细写了每一步:先加载 MCP tools,然后拉取 memory,然后在对话中识别落盘时机。这是触发率最高的一层。

Memory Edit(兜底)

claude.ai 的 memory_user_edits——一个跨所有对话自动注入的持久记事本。在里面写一条规则:"对话涉及工作/决策时,先加载 Wayne MCP"。每次对话 Claude 都会看到这条文本——但"看到"不等于"一定执行"。它是一个软指令,跟你跟同事说"记得每天早上先看邮件"一样。

人肉兜底

如果重要对话发现 Claude 没有自动加载 MCP,说一句"先加载记忆"。四个字,最后一道防线。

这三层全是概率性的,不是确定性的。优化方向是堆冗余 + 降低每层失败率,而不是追求完美自动化。随着 Anthropic 平台迭代(未来可能支持 MCP auto-load 或硬性触发规则),这个问题会逐步改善。但现在,接受它。

值得注意的是,Claude Code 侧没有这个问题。Claude Code 的 CLAUDE.md 每次 session 自动加载——这是它的原生机制,不是软指令。所以 Claude Code 读取 memory 文件是高度可靠的,不确定性只存在于 claude.ai 这一端。


跟鸭哥的关系

鸭哥的系统本系统
解决的问题Context 怎么积累和蒸馏Context 怎么在割裂的工具间流动
聊天入口Claude Code / OpenCode(终端)claude.ai(网页,对话质量更高)
蒸馏引擎Python 脚本 + cronclaude.ai 对话中主动触发
连接方式全在本地,无需桥接MCP + Cloudflare Tunnel 桥接远程和本地
维护成本需要 cron + 脚本维护几乎零维护,claude.ai 主动驱动
适合谁有开发经验,习惯终端偏好聊天界面,不想碰终端

两个系统不是替代关系。鸭哥解决了 "context 怎么积累"——三层蒸馏模型、稳定性筛选标准、axiom 和 skill 的结构。这是认知基础设施的理论基础,本系统完全采用。

本系统解决的是 "context 怎么在割裂的工具间流动"——当你的思考发生在 claude.ai、记忆存储在本地文件、执行发生在 Claude Code 时,怎么让它们共享同一个认知底座。


开始搭建

整套系统打包成了一个 claude.ai Skill(context-memory),包含:

SKILL.md(日常使用):claude.ai 端的完整运行流程(加载 MCP → 拉取 memory → 识别落盘 → reflector)、Claude Code 端的触发行为和协作规则、两端分工对比、记忆系统的三层蒸馏模型。

references/setup.md(一次性配置):MCP Server 搭建、Cloudflare Named Tunnel、macOS launchd 持久化、CLAUDE.md 配置、claude.ai connector 和 memory edit 设置。

记忆系统的理论基础直接采用鸭哥的三层蒸馏模型,详见他的文章开源实现

AI 变得更聪明,并不自动让它变得更深刻。更聪明的共识依然是共识。突破天花板的路径只有一条:注入非共识的视角——你的。