Symptom 1重复踩坑
「httpx 不能升级」这种事,不写下来就每次都得重新炸一次才想起来。
AI 会话天生失忆。我们用一套三层渐进索引,把 6 个人踩出来的 859 条经验压成 5.7KB 的入口,让每个人每次开工都自动带着全队的记忆。
// 数据实测于 2026-07-29 · docs/claude-memory/ 口径
每开一个新会话,AI 的上下文都是空的。昨天讲清楚的口径、上周踩平的坑、上个月定死的约定,如果只留在某一次对话里,下一次就得从头再来一遍。
更贵的是乘以人数:6 个人各开各的会话,同一个坑要踩 6 遍,同一个口径要问 6 次。知识不是没产生,是产生了却留不下、留下了却传不开。
「httpx 不能升级」这种事,不写下来就每次都得重新炸一次才想起来。
同一个指标,这个会话算 A、那个会话算 B。等到对不上账时已经晚了。
只有当事人知道为什么这么做,人一忙、一换,理由就没了。
把「个人的一次性经验」转成全队每次开工就自动带着的上下文——不靠记性,不靠问人,靠可检索、可继承、可审计的文件。
全部塞进上下文是不可能的——3.2MB 会把窗口撑爆。所以做成三层漏斗:只有最顶层自动加载,往下每一层都是看到触发词才展开。
5,692 B · 82 行
唯一每次会话自动进上下文的文件。只写协议 + 分组指针,不写任何细节。相当于一本书的目录页。
_index_<topic>.md
按主题分组的二级索引,每个开头有触发关键词段。聊到抖音抓取才读抓取那本,不相干的一律不碰。
feedback_ / project_ / reference_
一个文件一件事,平均 3.9KB,其中 295 个还不到 2KB。真正的知识在这层,只在明确需要时才整篇读。
省的不是磁盘,是上下文窗口。第一层永远只花 5.7KB,剩下 3.2MB 全部按需付费——这就是整套设计能长到 859 条还不塌的根因。
从「刚踩完一个坑」到「队友明早开机自动读到」,中间有 7 个动作。前 5 步是写的人的纪律,后 2 步是机器兜底。
grep -irl <主题> docs/claude-memory/ 命中就改现有那条,不新开文件——这是防重复、防打架的第一道。
feedback_(教训与行为准则)/project_(项目上下文)/reference_(外部资源指针)。前缀决定它归哪个 sidecar。
(N行) 让下次读的人能预估成本。不挂索引=孤儿,永远不会被读到。
[[name]] 连到相关记忆。允许链到还不存在的名字——那是在标记「这里以后该补一条」。
docs/claude-memory/ 是 git tracked 的,队友 pull 下来就通过 symlink 自动进他们的会话上下文。
分发机制:每台机器把 ~/.claude/projects/-Users-<user>-Akke/memory 软链到仓库里的 docs/claude-memory/ —— 一次性配置,此后记忆跟着代码走,不需要额外同步动作。
前缀不只是命名习惯,它决定这条记忆什么时候会被想起来。实测分布高度偏向教训类——这既是好事,也埋着一个结构性的洞(见 07 节)。
「httpx 不能升级」「DM 返回 200 不等于送达」「persona 改名必须同步改泄漏正则」。必须写清 为什么 和 怎么用。
多租户改造、企微通道、云电脑派单链路这类正在进行的工作与约束,相对日期一律转成绝对日期。
Lark Tasklist GUID、Supabase 管理 API、代理池矩阵这类查得到就行的东西,不复制内容只留指针。
三条硬纪律:写前必 grep(防重复)、单会话最多新建 2 个文件(防灌水)、TODO 不进 memory(走 Lark Task,防过期内容常驻)。
纪律写在文档里等于没写。真正撑住这套体系的是四个会自己动的东西——两个拦在提交前,两个盯在会话边界。
提交时自动跑。MEMORY.md 超 8KB / 120 行 / 单行 240 字节 就拒绝;任何 sidecar 超 24KB 硬闸、超 16KB 警告;顺带校验每个索引链接的目标文件真实存在。逼细节往下沉,不让顶层膨胀。
一键跑 7 项:顶层体量、sidecar 体量、死链、孤儿、(N行) 标注覆盖率、触发词段完整性、末端文件过肥告警。当前结果:0 死链 0 孤儿,标注覆盖 863/887。
SessionStart hook 检查 docs/claude-memory/ 有没有本地未提交变更,有就在开场横幅提示「push 后队友才能看到」。防止写了却烂在自己机器上。
同目录开第 2 个会话会共用 git index 和 HEAD,实测出过「改到一半的文件被别的会话 commit 走」。现在 hook 检测到就自动把新会话隔离进独立 worktree,第一个不动。
四道闸只有 Gate 1 是硬拦截,其余是提醒和隔离。这是刻意的——记忆系统宁可多收一条噪音,也不能因为门槛太高让人干脆不写。
这套系统真正的价值不在「AI 记住了」,而在六个人写进去的东西,另外五个人不用问就能读到。贡献分布相当均匀——说明它不是某一个人的私人笔记本。
按 git 提交触及 memory 文件的次数统计(全历史)。近 30 天仍有 5 人在写——说明这是活的,不是建完就没人碰的档案馆。
分发全靠 git:memory 就在仓库里,跟着代码一起 review、一起 push、一起回滚。没有第二套同步系统,也就没有第二个会失效的地方。
以下每一条都跑过命令核实,不是感觉。按「现在就在伤人 / 正在变差 / 结构性欠账」分三档。
今天开这个会话时当场撞上了其中两条——本地那份没提交的记忆和队友已推的同名文件冲突,git pull 直接中止,整个仓库同步卡住。
证据:_archive/ 2026-07-22 建好至今,里面只有一个 README,859 条没归档过一条;全目录 last-audited 标记 0 命中,无从判断上次清理是何时。
后果:过期口径和现行口径并排躺着,读到哪条算哪条。
证据:本次会话开场实测——本地未提交的 feedback_wuying_wecom_stop_requires_disable.md 与队友已 push 的同名文件冲突,merge 中止。
后果:两人给同一件事写记忆,文件名一撞就卡住整仓同步,还得手工拆。
证据:SessionStart 只提醒有未提交变更,不阻断、不自动推;会话结束时也没有二次兜底。
后果:知识产生了却停在个人机器上,队友读不到——本次开场那条横幅就是活例。
系统还能跑,但检索成本在涨——再放任下去,「按需展开」省下的那点上下文,会被少数几个巨型文件一口吃掉。
证据:10 个超 24KB,其中 4 个超 48KB;最大的 project_akke_potential_touch_route_b.md 达 81KB,一次读进来就是两万 token 级的开销。
证据:_index_douyin_scraping 挂 80 条、_index_feedback_llm 挂 77 条;另一头 _index_dashboards 只有 5 条、_index_wuying_yunshouji 只有 4 条。
证据:859 个文件里只有 456 个带 [[互链]](53%),其余只能靠索引单向找到。
横向关联断裂时,读到 A 不会想起相关的 B。
不紧急,但决定这套系统能不能给新人用,以及知识是不是只存在一个地方。
证据:feedback 占 78%(672 条),project 只占 14%(123 条)。
「别踩这个坑」很足,「系统现在长什么样」偏薄——新人 onboarding 主要还得啃 CLAUDE.md 一个文件。
证据:另有 runbooks 48、requirements 47、specs 42、skills 23 份,而 MEMORY.md 里提到它们的次数是 0。
想查「怎么跑扩源」,不知道该翻记忆还是翻 runbook。
证据:项目本地 859 条之外,还有跨项目全局库 485 条,规定要「手动 Read」,而 MEMORY.md 里没有任何指针指向它。
等于那 485 条默认不可见,想不起来就用不上。
前三条是一次性做完就长期生效的(改机制,不靠人记);后面几条是清理和补录,可以摊进月度维护。
| 动作 | 怎么做 | 解决 |
|---|---|---|
| 写入前查重 hook | PreToolUse 拦截写入 docs/claude-memory/,自动跑同名与近似名检查,撞名直接报出已有文件路径 | P0-02 |
| 会话收尾自动推 | SessionEnd hook:memory 有未提交变更就自动 commit + push(或硬提示),把「提醒级」升到「保证级」 | P0-03 |
| 月度归档跑起来 | 挂云端 Routines 定时任务:跑 stale audit → 过期条目 mv 进 _archive/ → 给每个 sidecar 盖 last-audited | P0-01 |
| 拆 4 个巨型文件 | >48KB 的按子主题拆开,剪掉已被推翻的历史段落;route_b(81KB)优先 | P1-04 |
| 拆 2 个超载索引 | douyin_scraping(80 条)、feedback_llm(77 条)按咨询场景二分;顺手把 4~5 条的小 sidecar 并回相邻主题 | P1-05 |
| MEMORY.md 加两段指针 | 顶层补「其他知识载体」(runbooks / requirements / skills 入口)与「全局跨项目库」两个指针段,各占 2~3 行 | P2-08 / 09 |
| 补 project_ 类画像 | 按当前架构补几条「系统现在长什么样」,让新人不必只啃 CLAUDE.md | P2-07 |
| 互链补录 | 归档跑批时顺带给无 [[]] 的文件补关联,目标从 53% 提到 75%+ | P1-06 |