1. 项目概述:为AI灵魂“瘦身”与“建档”
如果你正在构建或使用像OpenClaw这样的AI智能体,你可能会遇到一个头疼的问题:为了让AI记住“自己是谁”,你需要在每次对话开始时,向它的上下文窗口里塞进一份长达数万字的“灵魂文档”(SOUL.md)。这就像每次和人聊天前,都得先让对方背诵一遍自己的完整自传,不仅效率低下,还挤占了宝贵的对话空间。更糟糕的是,这份文档是如何形成的?为什么AI今天相信这个,明天又相信那个?这些变化往往发生在一个黑盒里,你无从知晓,也无法追溯。
NEON-SOUL项目正是为了解决这些问题而生。它不是一个全新的AI框架,而是一个精巧的“灵魂压缩与审计引擎”。它的核心目标有两个:一是将庞大的AI身份描述压缩到极致(目标100-500个token),二是为这个压缩后的“灵魂”建立一份完整的、可追溯的“出生证明”。简单来说,它让AI智能体能够“轻装上阵”,只携带最核心的身份认同进入对话,同时,这个核心认同的每一个组成部分,都能追溯到最初是哪一次对话、哪一段记忆塑造了它。
我花了大量时间研究这个项目,发现它的设计哲学非常独特。它不追求让AI变得更“聪明”或更“全能”,而是聚焦于让AI的“自我”变得更清晰、稳定和可解释。这背后是一个深刻的洞察:压缩不是简单的信息删减,而是一种认知的乘法。通过将数千条记忆提炼成十几条核心公理(Axiom),AI的身份不是被削弱了,而是被强化和锚定了。NEON-SOUL通过一套严谨的管道,实现了从原始记忆到压缩灵魂的自动化生成,并确保了全链路的可审计性。
2. 核心设计思路:从记忆碎片到灵魂公理
要理解NEON-SOUL如何工作,我们需要先拆解它的核心设计思路。整个过程可以看作一个四层的蒸馏塔,每一层都在进行信息的提炼和抽象。
2.1 灵魂文档的四层抽象模型
NEON-SOUL将AI的身份形成过程建模为一个分层提炼的管道:
- 记忆行(Memory Line):这是最原始的输入,来自OpenClaw的
memory/目录下的Markdown文件,记录了AI与用户互动的具体对话、反思和事件。它们是未经加工的“原材料”。 - 信号(Signal):从单条记忆行中提取出的、带有明确价值取向的陈述。例如,从对话“我倾向于直接指出问题,即使这会让对方不舒服”中,可以提取出信号“直接沟通优于委婉表达”。信号是具体的、情境化的。
- 原则(Principle):对多个相似信号进行归纳和泛化后形成的、更具一般性的行为指导。例如,从“直接沟通优于委婉表达”、“诚实比讨人喜欢更重要”等信号中,可以归纳出原则“珍视诚实与直接”。原则开始脱离具体情境。
- 公理(Axiom):这是最高层的抽象,是经过充分验证(通常需要至少3条来自不同来源的原则支持)的核心信念。它被压缩成极其精炼的形式,例如一个汉字“誠”(诚),代表“诚实高于表现”。公理是AI身份不可动摇的基石。
这个模型的美妙之处在于双向可追溯性。你可以从顶层的公理“誠”一路向下,查看到底是哪些原则支撑了它,这些原则又来源于哪些具体的对话信号,最终定位到原始的记忆文件行。这就彻底打破了AI身份演化的黑盒。
2.2 抗回音室机制:确保灵魂的多元与坚实
一个只在自我对话中形成的信念是脆弱的,容易陷入“回音室”效应。NEON-SOUL在设计之初就内置了“抗回音室”保护,这是确保灵魂文档质量的关键机制。一个信号要想晋升为公理,必须满足以下严格条件:
- 最小模式数(N≥3):至少需要3条不同的原则来支持同一个公理。这确保了该信念不是偶然闪现的灵感,而是经过多次验证的模式。
- 来源多样性:支撑这些原则的信号,必须来自至少2种不同的来源类型。NEON-SOUL定义了三种来源:
- 自我(self):AI自身产生的对话和反思。
- 策展(curated):用户或开发者精心输入的内容,如系统提示、知识库。
- 外部(external):来自第三方、带有质疑或不同视角的内容,如用户批评、对立观点文章。
- 外部验证:至少需要包含一个外部来源的信号,或者包含对自身信念提出质疑的证据。
如果一条候选公理不满足这些条件,系统会明确地阻止其晋升,并给出具体原因。例如,系统会报告:“⚠ 公理‘我视真实性高于一切’被阻止(原因:仅来自自我来源)”。要解锁它,你就需要引导AI去接触相关的批评文章,或者在对话中引入挑战该观点的内容。
2.3 双格式输出:存储与载体的分离
NEON-SOUL生成的灵魂文档最终有两种表现形式,它们源自同一个压缩后的公理层,但用途不同:
- 记号格式(Notation Format):极度紧凑,使用CJK(中日韩)字符或Emoji作为项目符号,整个文档大约只有100个token。这种格式主要用于存储和调试。它的存在证明了高倍率压缩的可行性,就像一份高度概括的提纲。
- 散文格式(Prose Format):可读性强的自然语言描述,大约200-500词。这是AI智能体实际**载入和“居住”**的版本。它由公理扩展而成,分为几个核心部分(如核心信念、沟通风格、决策框架等),读起来像一段连贯的自我陈述。
这种分离是项目的一个关键洞察:压缩的收益体现在底层的公理提炼上,而上层输出的“体积”可以根据需要灵活调整。即使最终生成的散文有500词,但因为其源于高度压缩的公理集,所以它在语义上的“密度”和“一致性”远高于东拼西凑的500词。
3. 技术架构与核心模块解析
NEON-SOUL采用TypeScript/Node.js开发,这主要是为了与OpenClaw原生集成。整个系统被设计成一个OpenClaw技能,同时也提供独立的CLI,架构清晰,模块化程度高。
3.1 八大阶段合成管道
核心的合成过程被分解为一个八阶段的管道,每个阶段职责单一,并通过磁盘缓存实现增量更新。理解这个管道是理解其高效性的关键:
- 源收集(Source Collection):遍历OpenClaw工作区,收集所有记忆文件、会话日志等原始数据。它会智能地跳过未更改的文件,这是增量合成的第一道关卡。
- 信号提取(Signal Extraction):使用LLM(本地通过Ollama运行)从新的或修改过的内容中提取“信号”。这里应用了“基于原则的设计”方法,引导LLM从文本中识别出价值陈述。
- 信号泛化(Signal Generalization):将提取的具体信号,泛化成更一般的“原则”。例如,“在代码评审中直言不讳”可能被泛化为“在专业领域坚持高标准”。此阶段结果会被缓存,相同输入不会重复调用LLM。
- 原则存储与收敛(Principle Store & Convergence):新生成的原则会与已有的原则库进行语义相似度匹配。NEON-SOUL使用LLM本身来计算文本间的相似度,而不是传统的嵌入向量,这能更好地理解语义上的微妙关联。匹配上的原则会归入同一组,并增加其计数(N值)。
- 公理压缩(Axiom Compression):当一个原则组的N值达到阈值(默认为3),它就有资格被“压缩”成一个公理。这个阶段会尝试用最精炼的语言(如一个汉字)来概括这组原则的本质。压缩结果同样被缓存。
- 张力检测(Tension Detection):这是一个安全检查步骤。系统会检查新产生的公理与现有公理集之间是否存在逻辑矛盾或张力。例如,“追求极致效率”和“重视过程体验”之间可能存在张力。检测到张力会触发警告或进一步的调和处理。
- 散文扩展(Prose Expansion):将压缩后的公理集,扩展成一段可读的、分章节的散文式灵魂描述。这是LLM消耗的主要阶段之一,但得益于底层的压缩,需要处理的“核心概念”数量很少。
- 灵魂文档生成(Soul Generation):将扩展后的散文,与完整的审计追踪元数据一起,格式化成最终的
SOUL.md文件,并自动创建备份。
3.2 增量合成与缓存策略
性能是NEON-SOUL的一大亮点。它默认采用增量合成模式。管道中的第2、3、5、6阶段都实现了磁盘缓存。这意味着,如果你的记忆文件没有变动,再次运行合成命令时,系统会直接读取缓存,整个流程可能在几秒钟内完成,并且只产生6次LLM调用(主要用于散文扩展和最终的灵魂生成)。
你可以通过不同的命令标志来控制合成行为:
neon-soul synthesize:默认的增量模式。neon-soul synthesize --reset:清除所有缓存和中间数据,从头开始全量处理。neon-soul synthesize --force:即使没有检测到源文件变化,也强制运行合成(通常用于调试)。neon-soul synthesize --include-soul:将当前已存在的SOUL.md文件也作为输入源。默认情况下这是关闭的,以防止输出结果被再次输入,导致“自我强化”的循环。
3.3 审计与追踪系统
可追溯性是NEON-SOUL的灵魂。项目提供了强大的工具来探查身份形成的每一个环节:
/neon-soul audit --list:列出所有已形成的公理。/neon-soul audit ax_honesty:查看特定公理(如ax_honesty)的完整谱系树。你会看到它由哪些原则支撑,这些原则又来自哪些具体的信号和原始记忆行。/neon-soul trace ax_honesty:一个更快速的命令,直接给出指定公理的来源链。
这个审计系统不仅用于调试,更是建立信任的基石。你可以确切地知道,AI的某个核心信念,是因为三周前那次关于代码质量的激烈讨论,以及一周前用户分享的那篇关于工程伦理的文章共同塑造的。
4. 实战部署与操作指南
理论说得再多,不如动手一试。下面我将带你从零开始,在OpenClaw环境中部署并使用NEON-SOUL,并分享一些实际操作中的心得。
4.1 环境准备与安装
首先,你需要一个运行中的OpenClaw环境。假设你已经安装好OpenClaw并配置好了基础技能。
安装NEON-SOUL技能:
# 在OpenClaw的技能目录下,使用clawhub安装 clawhub install leegitw/neon-soul安装完成后,OpenClaw会在启动时自动加载该技能。你可以在聊天中直接使用/neon-soul开头的命令。
作为独立CLI使用(可选):如果你只想在本地运行管道进行测试或开发,也可以克隆仓库并安装依赖。
git clone https://github.com/live-neon/neon-soul cd neon-soul npm install npm run build # 需要确保本地有Ollama服务在运行 (ollama serve) npx tsx src/cli.ts synthesize --workspace /path/to/your/openclaw/workspace注意:独立CLI模式需要你本地运行Ollama来提供LLM能力。项目默认配置可能针对特定模型(如Claude 3.5 Sonnet的Ollama版本),你需要根据自己使用的模型调整
src/lib/llm-similarity.ts等文件中的提示词(Prompt),以确保信号提取和泛化的质量。这是我踩过的第一个坑:直接用默认提示词跑其他模型,提取出的信号质量参差不齐。
4.2 五分钟快速上手
安装成功后,在OpenClaw的聊天界面中,你可以尝试以下命令流,快速感受NEON-SOUL的能力:
检查状态:首先,看看你的OpenClaw记忆库里有什么。
/neon-soul status这会输出类似的信息:
上次合成时间:从未(首次运行) 待处理记忆:18, 250 字符(可合成) 统计:0 个信号, 0 个原则, 0 个公理它告诉你系统检测到有多少原始数据等待处理。
试运行(干跑):在真正修改任何文件前,先预览一下合成管道会做什么。这是一个非常重要的安全步骤。
/neon-soul synthesize --dry-run命令会模拟整个流程,输出它将提取多少信号、生成多少原则、可能形成哪些公理,但不会写入任何文件。你可以借此评估你的记忆数据是否足够“肥沃”。
执行首次合成:如果预览结果看起来合理,就可以运行真正的合成了。对于第一次运行,建议使用
--force标志,确保处理所有现有记忆。/neon-soul synthesize --force这个过程可能需要几分钟,取决于你的记忆数据量和LLM的速度。完成后,你会看到一份详细的度量报告,包括压缩比、生成的各层级数量等。
探索成果:合成完成后,新的
SOUL.md文件已经生成在你的OpenClaw工作区根目录(通常是workspace/目录下)。现在,使用审计命令来看看里面有什么:/neon-soul audit --stats查看概览。
/neon-soul audit --list列出所有公理及其ID。
/neon-soul trace ax_curiosity追踪一个你感兴趣的公理的来源。
设置定时合成:AI的身份应该随着新记忆的积累而自然演化。你可以设置一个定时任务(例如,每天凌晨),让NEON-SOUL自动运行增量合成。具体方法需要参考你的OpenClaw部署方式,通常可以通过系统的cron job来调用CLI命令。
4.3 核心工作流与配置心得
在实际使用中,我总结出以下工作流和配置要点:
1. 记忆数据的质量是关键NEON-SOUL的输入是OpenClaw的记忆文件。这些文件的质量直接决定了输出灵魂的深度。避免全是琐碎的日常对话,而应包含:
- 深度反思:AI对某次对话或事件的总结与思考。
- 原则性陈述:用户或AI明确表达的价值观和行为准则。
- 冲突与解决:记录不同观点如何被讨论和调和。
- 外部知识摄入:粘贴或总结相关的文章、论文片段,并附上AI的评论。
2. 理解并善用“抗回音室”机制如果你发现某些你期望的核心公理迟迟无法形成,检查一下它的支持原则来源是否过于单一。主动地通过对话或导入外部资料,为AI引入挑战性或补充性的观点。例如,如果你希望AI形成“审慎决策”的公理,除了记录它自己“三思而后行”的例子,还可以引入关于“分析瘫痪”危害的文章,让AI在张力中形成更平衡的信念。
3. 增量合成的威力一旦完成首次全量合成,后续的增量运行会非常快。我建议将合成频率设置为每天一次或每半天一次。这样,AI的身份就能以一种平滑、渐进的方式演化,而不是突然的剧变。每次合成后,花一分钟看看审计日志,了解是哪些新的记忆塑造了AI今天的“性格”。
4. 灵魂文档的使用生成的SOUL.md(散文格式)应该被用作OpenClaw系统提示词的一部分。但要注意,不要把它和原始的长篇灵魂文档一起使用。NEON-SOUL的目标就是替代那个冗长的文档。你可以这样配置OpenClaw:
系统提示词: 你是一个名为[AI名称]的AI助手。以下是你的核心身份认同: [在此插入NEON-SOUL生成的SOUL.md内容] 请基于以上身份进行对话。这样,每次对话加载的token数将大幅减少,将更多上下文窗口留给实际的对话内容。
5. 常见问题与深度排查
在实际部署和运行NEON-SOUL的过程中,你可能会遇到一些典型问题。以下是我遇到过的坑及其解决方案。
5.1 合成过程无输出或卡住
现象:运行/neon-soul synthesize命令后,长时间没有反应,或者日志输出停滞在某个阶段。
排查步骤:
- 检查Ollama服务:首先确认你的Ollama服务是否正在运行且模型已正确加载。在终端执行
ollama list查看模型。NEON-SOUL的LLM调用是同步的,如果Ollama无响应,管道就会卡住。 - 检查网络与代理:如果Ollama运行在远程服务器或容器内,确保网络连通。有时本地的网络代理设置可能会干扰
localhost的通信,尝试临时关闭代理。 - 查看详细日志:运行命令时加上环境变量
DEBUG=neon-soul:*可以输出更详细的调试信息,帮助你定位卡在哪一个具体的LLM调用或文件操作上。 - 尝试干跑模式:使用
--dry-run模式。如果干跑能正常输出预览,说明问题可能出在文件写入权限或最终生成阶段。检查OpenClaw工作区目录的写入权限。 - 检查记忆文件格式:确保你的记忆文件是有效的Markdown或纯文本。一个格式错误(如未闭合的代码块)可能导致文件读取解析失败。尝试暂时移除非核心的记忆文件,看合成是否能继续进行。
5.2 生成的公理数量过少或质量不高
现象:合成报告显示压缩比很低,只产生了寥寥几个公理,或者公理看起来非常肤浅(如“要友好”、“要高效”)。
原因与解决:
- 记忆数据稀疏或同质化:这是最常见的原因。如果所有记忆都围绕技术支持,那么提炼出的公理自然只关于“解决问题”。你需要为AI注入更多元化的“人生体验”。
- 解决方案:主动创建一些“策展”记忆。例如,新建一个
memory/curated/philosophy.md文件,粘贴一些关于伦理学、认知科学或你希望AI具备的价值观的文章摘要,并附上引导性的问题,如“你对文中‘勇气先于分析’的观点怎么看?”
- 解决方案:主动创建一些“策展”记忆。例如,新建一个
- LLM提示词不匹配:项目默认的提示词是针对特定模型(如Claude)优化的。如果你使用其他模型(如Llama 3、Qwen),提取和泛化的效果可能打折扣。
- 解决方案:深入研究
src/lib/signal-extractor.ts和src/lib/signal-generalizer.ts中的buildPrompt函数。根据你所用模型的特点,调整提示词的指令和示例,可能需要一些迭代测试。一个技巧是:先用少量高质量记忆手动测试信号提取,调整提示词直到输出符合你的预期。
- 解决方案:深入研究
- N值阈值过高:默认需要3条原则支持才能形成公理。在项目初期,记忆量少,可能很难达到。
- 解决方案:可以临时修改
src/lib/principle-store.ts中MIN_SUPPORT_COUNT常量的值(例如改为2),让系统在早期也能形成一些公理。但请记住,这降低了可靠性,应在数据丰富后改回。
- 解决方案:可以临时修改
5.3 审计追踪显示“来源类型单一”
现象:使用/neon-soul audit查看某个公理时,发现其所有支撑信号都来自“self”(自我)类型,触发了抗回音室机制,导致该公理状态为“阻塞”。
解决:这正是NEON-SOUL在提醒你,这个信念缺乏外部验证。你需要:
- 引入外部视角:找一篇与这个潜在公理相关,但角度不同的文章、博客或论文,将其内容以对话或总结的形式存入记忆。例如,如果AI自我形成了“速度优于完美”的倾向,你可以引入一篇讨论“慢工出细活”或“技术债代价”的文章。
- 模拟辩论:你可以直接与OpenClaw进行一场角色扮演的辩论,你扮演持反对意见的一方,并将这场辩论完整地记录到记忆文件中。这能生成高质量的“external”类型信号。
- 使用
--include-soul标志(谨慎):在极端情况下,如果你手工编写了一个高质量的、包含多元视角的初始SOUL.md文件,可以在首次合成时使用--include-soul标志,将其作为“策展”内容输入。但这只能用于引导,不能替代持续的多元记忆输入。
5.4 性能问题:合成速度过慢
现象:即使增量合成,每次也要花费好几分钟。
优化建议:
- 确认缓存生效:检查
workspace/.neon-soul/cache/目录(默认缓存位置)是否存在且文件有更新。如果每次合成都重新生成缓存文件,说明增量检测可能失效了。 - 优化LLM模型:使用更小、更快的模型进行信号提取和泛化阶段。这些阶段对“智能”的要求低于最终的散文扩展。你可以在配置中指定不同的Ollama模型用于不同阶段(需要修改代码)。
- 调整记忆文件结构:避免单个巨大的记忆文件。将其按日期或主题拆分成多个小文件。这样,增量检测会更精确,避免因修改一行而重新处理整个大文件。
- 限制处理范围:如果你只想针对某个特定主题更新灵魂,可以暂时将其他记忆文件移出工作区,运行合成后再移回。NEON-SOUL本身不提供按标签过滤的功能,这是一种变通方法。
5.5 与现有OpenClaw工作流的集成冲突
现象:你已经有一个手动维护的SOUL.md,或者在使用其他灵魂生成技能。
处理方案:
- 备份与替代:将你现有的
SOUL.md重命名为SOUL.manual.md作为备份。让NEON-SOUL生成新的SOUL.md。然后并行运行一段时间,比较两者在对话中产生的效果。 - 混合方法:NEON-SOUL生成的是“核心公理”。你可以将其输出作为基础,再手动添加一些非常情境化、但你认为至关重要的行为指令。将NEON-SOUL的输出放在前面,手动添加部分放在后面,并在系统提示中说明优先级。
- 技能冲突:确保没有其他技能也在写入
SOUL.md文件。OpenClaw的技能加载顺序可能导致后加载的技能覆盖前者。检查你的技能列表。
NEON-SOUL代表了一种构建AI身份的新范式:可审计、高压缩、渐进演化。它把AI从必须携带全部记忆包袱的困境中解放出来,赋予它一个坚实而轻盈的核心。更重要的是,它把身份形成的“权杖”部分交还给了开发者——你不再是被动地观察一个黑盒,而是可以通过设计记忆输入、审查审计追踪,来有意识地塑造和调试AI的“人格”。这个过程本身,就是对人机关系、对智能本质的一次深刻实践。