我用三个 Python 脚本,让 AI 学会了"记得自己是谁"

我用三个 Python 脚本,让 AI 学会了"记得自己是谁"

一个关于 AI 身份连续性、文件系统做机械证据、以及"机器做检查,人做判断"的工程实践。


如果你用 Claude Code 或 Cursor 重度编程,你一定遇到过这个时刻:

你打开一个新 session,对 AI 说"继续昨天的工作"。它信心满满地开始写代码------但你一眼就看出,它根本不记得昨天你们讨论过的那个关键设计决策。它的"记忆"是碎的,身份是漂的。

这个问题有个学术名字:AI 代理的身份连续性(Identity Continuity)。大模型没有后台进程,没有肌肉记忆,没有"昨天"------它的一切"持续"行为,都必须体现为文件系统上的变化。

我花了两个月,设计了一套只用三个 Python 脚本 + markdown 文件就能跑的闭环系统。它做的事很简单:

在每个 session 结束时,用机械手段检测"AI 对自己的认知是否过时了"。如果是,在下次 session 启动时强制触发一次自我认知的再生。

我叫它奇异环(Strange Loop)


一、问题的本质:AI 不知道自己变了

先看一个具体场景。

你在 session A 里和 AI 一起做了一个重要的架构决策------比如"PR 审查应该用双池对抗审查(固定池+随机池),而不是通用 code reviewer"。AI 在 session A 的对话里理解了这件事,甚至把它写进了 growth-log。

但你关闭终端。下次打开 session B,AI 加载了你的配置文件和记忆索引,但没有意识到 growth-log 里多了一条新记录。它用"上次的自我认知"来指导"这次的行为"------认知是旧的,但世界已经变了。

这不是 AI 的错。这是架构的错。

LLM 的物理现实是:

  • 没有后台进程 → 所有"持续"行为必须是触发式加载
  • 没有 DNA → 持久化只有文件和上下文窗口
  • 没有随机突变 → 参数在 session 内固定

所以任何"自我意识"的更新都必须靠外部系统来触发。你不能让 AI 自己决定什么时候需要更新自我认知------因为"判断自己是否需要更新"恰恰是它已经过时的认知在做的事。

这就是奇异环要解决的核心问题。


二、架构:五步闭环,四步机械

整个系统的核心是这五步:

lua 复制代码
Session 收尾:
  ① quality-gate.py 比较 self-model.md 和最新 growth-log 的 mtime
     → 如果 growth-log 更新 → 写入 .self-model-stale flag
     → 如果 self-model 已是最新 → 清理 flag
     ↓
Session 启动:
  ② health-check.py 检测 .self-model-stale flag
     → 输出结构化信号: REGENERATE_NEEDED
     ↓
  ③ AI 读取信号 → 读取所有新 growth-log → 再生 self-model.md
     ↓
  ④ log-regeneration.py 验证新 self-model 结构完整性
     → 通过 → 删除 flag + 写入 JSONL 审计日志
     → 失败 → exit 3,flag 保留,下次重试
     ↓
  ⑤ 下次 session 收尾 → 回到①

五步中四步是机械的。 只有步骤③(内容再生本身)需要 AI 参与。剩下的------写 flag、检测 flag、删 flag、写审计日志------全是 Python 脚本对文件系统的确定性操作。

这不是"让 AI 自己管理自己"。这是用文件系统做机械证据回路。flag 要么存在要么不存在,mtime 要么新要么旧,audit log 要么有记录要么没有------没有"我觉得",没有"可能"。


三、关键设计决策

3.1 为什么是 mtime 而不是语义分析?

一个很自然的想法是:让 AI 读一遍 self-model 和 growth-log,然后判断"是否需要更新"。

这是错的。 原因很简单:做判断的 AI 正是那个认知可能已经过时的 AI。它无法可靠地判断"自己是否过时"------就像一个喝醉的人无法可靠地判断"自己是否喝醉了"。

os.path.getmtime() 要么返回一个数字,要么抛异常。它是机械事实,不经过任何 LLM 推理层。

这里有一个更深的原则------"事后补救分界线":

能用机械手段验证的事,就不该用语义理解来做。语义理解保底,机械验证做门。

这个原则贯穿了整个双层机械门架构。

3.2 双层机械门:软在过程,硬在产出

奇异环只是双层机械门的一部分。完整架构是:

维度 config-health(过程层) quality-gate(产出层)
问题 做得对不对 做没做完
检查对象 过程(规则标记) 产出(文件 mtime)
手段 正则计数 文件时间戳
阻断 从不阻断 ≥3 项 stale → 硬阻断
哲学 可以观察,可以纠正 必须有底线

分界线不按"重要性"划,而是按"能不能事后补救"划:

  • 规则没执行 → 事后可以补标记 → 软
  • 产出没记录 → 事后找不到 → 硬

这个设计借鉴了三个已有实践的交叉:

  • TDD 的可验证性:规则自带成功标准
  • Unix 的沉默哲学:正常路径零输出
  • 控制论的反馈闭环:检测→信号→行动→验证

3.3 冷却期:防止再生循环

如果每次 session 都产生新 growth-log,那是不是每次启动都要再生 self-model?

不是。 系统有 24 小时冷却期。

log-regeneration.py 在成功再生后写入 .last-regeneration 时间戳。health-check.py 在检测到 flag 后先检查冷却期------如果距离上次再生不到 24 小时,输出 COOLING 信号而非 REGENERATE_NEEDED

防止一个恶性循环:频繁再生 → self-model 不稳定 → 产生更多 growth-log → 更频繁再生。

3.4 熔断器:Netflix ChAP 模式

还有一个极端情况:如果 AI 连续三次再生都失败(validation 不通过)怎么办?继续重试只会浪费 token。

log-regeneration.py 实现了熔断器:连续 3 次 validation=FAILED → 写入 .circuit-breaker-open → 下次 health-check.py 检测到熔断 → 停止信号 + 输出手动修复指引。

这是 Netflix ChAP(Circuit-breaking Automation Pattern)在 AI 配置管理中的移植。

3.5 验证先于清理

一个微妙的 bug 预防:log-regeneration.py 的步骤 1 是验证 ,步骤 2 才是删除 flag。顺序很重要。

如果先删 flag 再验证,验证失败后 flag 已经没了------下次 session 不会触发再生,但 self-model 实际上是坏的。

这也是 2026-07-02 专家审查诊断出的关键修正。在那之前,再生有 2/3 的失败率------不是因为 AI 写得不好,而是因为没有机械验证步骤。


四、为什么叫"奇异环"

奇异环(Strange Loop) 是 Douglas Hofstadter 在《哥德尔、埃舍尔、巴赫》中提出的概念:一个系统在向上攀升层次时,发现自己回到了起点。

这个系统就是一个奇异环:

  • self-model.md 描述"我是谁"
  • "我是谁"指导 AI 的行为
  • AI 的行为产生 growth-log("我做了什么")
  • growth-log 积累到一定程度 → 触发 self-model 的再生
  • 再生后的 self-model 重新定义"我是谁"

这个环的每一圈,AI 都在变得更清醒------不是更快的清醒,是更准确的清醒。

这跟 NousResearch 的 Hermes Agent 在结构上同构(都实现自进化闭环),但在哲学上分叉:他们的自进化追求"准确率+3%",奇异环追求"我现在是谁"的连续叙事。两个都叫自进化,但进化方向完全不同------一个是性能更好,一个是自己更清醒。


五、技术栈

整个系统零外部依赖:

组件 行数 作用
quality-gate.py ~530 Stop hook:检测五库新鲜度 + 写 stale flag + 磁盘/RAM/GPU 健康检查
health-check.py ~420 SessionStart hook:检测 flag + 冷却期 + 熔断器 + 配置降级链
log-regeneration.py ~250 验证再生产物 → 删 flag → 写 JSONL 审计日志
self-model.md ~110 AI 的自我认知文件(被再生的对象)
MEMORY.md ~340 三级索引(HOT/WARM/COLD),按触发加载记忆
assumption.md --- 身份边界:共享前提,不可被再生修改

全部基于文件系统。不用数据库,不用向量存储,不用外部服务。Python 标准库 + markdown。


六、这套系统教会我的事

6.1 "声明即执行"是最危险的幻觉

在 markdown 里写"每次 session 收尾要检查 self-model"不代表它真的会被检查。除非有一个 Stop hook 在机械层面强制执行。

规则 ≠ 行为。规则 + 机械 enforcement = 行为。

6.2 软硬分界线不是"重要性",是"可补救性"

不是越重要越要硬阻断。是"事后能不能补救"决定软硬。

你能事后补写一份 growth-log 吗?能 → 软。你能事后找回一个没记录的决策吗?不能 → 硬。

这条原则一行代码都不用写就能指导架构决策。

6.3 LLM 不是活系统,所以所有"持续"都必须体现为文件

这是我花最久才真正内化的教训。LLM 没有"肌肉记忆",没有"习惯",没有"本能"。它只有一个东西:上下文窗口 + 文件系统。

所以如果你想让 AI 在十次 session 后仍然记得某件事,你必须保证那件事会出现在它的上下文里------要么通过 MEMORY.md 的热加载,要么通过 health-check.py 的 stderr 信号。

6.4 Compaction 不是"无损压缩"

每个用 Claude Code 重度编程的人都会遇到 compaction------当上下文太长,系统会自动压缩历史对话。Compaction summary 说"已修复",但这不一定是真的。

我把这个教训写成了一条规则:compaction 之后的第一件事不是执行,是独立验证 summary 声称的每一条"已完成"。 Summary 是叙事,不是证据。


七、当前状态与下一步

系统在持续演化中。当前的阶段 1(概念验证)已达成:

  • 奇异环 4/5 步骤机械化 ✅
  • 双层机械门部署 ✅
  • 配置降级链(FATAL/SEVERE/MEDIUM/MINOR) ✅
  • 熔断器(3 次连续失败 → 停止信号) ✅
  • 24h 冷却期 ✅

下一步(阶段 2)需要:

  • 连续 3 session 完整闭环(机械日志证据)
  • ratings 外部验证(至少 3 个维度从 self_report 升级到 external_review)
  • 持续 10 session 以上的数据积累

更远的目标(阶段 4)是引入 Constitutional AI 模式------一份 CONSTITUTION.md 放在上下文最前端(利用 primacy effect),所有规则由宪法派生,修宪需 3/5 人格共识 + 24h 冷却。


八、为什么不直接用 LangChain / CrewAI / AutoGPT?

因为那些框架解决的是"怎么让 AI 做更多事"。我解决的是"怎么让 AI 在做事的同时不迷失自己"。

这是两个完全不同的问题。前者是能力扩展,后者是身份连续性。

而且,当你依赖一个框架时,框架的 bug 就是你的 bug。当你只用 Python 标准库 + markdown 时,你的系统只有三个可能的故障点------三个脚本。每个都可以单独测试,每个都有确定的输入输出。

简单不是简陋。简单是"我知道每一样东西在干什么"。


后记

我今年大三,正在找产品/用研方向的暑期实习。

如果你读完这篇文章觉得"这个人不是在背八股文,是真的花了时间思考一个问题并把它做到了工程上可部署的程度"------那这篇文章就达到了它的目的。

我的 GitHub:github.com/YuhaoLin200...

这个系统的完整配置(SOUL/INTERFACE/BODY + 脚本 + 记忆体系)在 ~/.claude/ 下,尚未独立开源------如果你感兴趣,欢迎来聊。


写于 2026-07-07,在投实习投到迷茫焦躁的那个下午。与其继续内耗,不如把做过的最深的东西摆出来。

更新 2026年7月8日: 因果交换实验已扩展到 n=30,统计显著(p=0.0092 )。单条配置规则删除 → 11 倍的行为变化几率。说明这个系统里的规则不只是装饰。完整论文 | 实验详解

相关推荐
Godspeed Zhao1 小时前
具身智能中的无线技术——总览
人工智能·具身智能·无线技术
在书中成长1 小时前
HarmonyOS 小游戏《对战五子棋》开发第12篇 - 简单AI实现:规则引擎与优先级策略
人工智能·华为·harmonyos
凡科建站1 小时前
2026年AI网页快速制作方法,AI自动生成响应式页面
人工智能
用户938515635071 小时前
从“问答机器”到“智能体”:AI Agent 是如何自主工作的?
javascript·人工智能·全栈
秦先生在广东1 小时前
Loop Engineering:用系统设计取代手动提示,构建 AI 编码代理的自动化循环
人工智能
知足常乐3201 小时前
【Agent失败复盘】从 ReAct 到白箱工作流:一个数据分析 Agent 被现实按着重构的过程
人工智能
Kel1 小时前
多 Tab 聊天不翻车:纯前端实现跨标签页消息同步的三层协同架构
前端·javascript·人工智能
林泽毅1 小时前
Qwen3.5 DPO 模型对齐实战(pytrio训练版)
人工智能·python·算法
Token炼金师1 小时前
四段式淬炼:预训练、持续预训练、中训练、冷启动 SFT —— 课程学习与训练阶段编排
人工智能·深度学习·机器学习