“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
日志即智能体:基于事件溯源的响应式图架构构建可审计、可分叉的智能体系统
本文提出 ActiveGraph 架构,将不可变事件日志作为唯一真相源,通过确定性投影构建响应式图,实现智能体系统的可审计、可分叉和完整因果追踪。
一、引言:现有智能体框架的深层缺陷
当前主流的智能体框架(如 LangChain、AutoGPT、BabyAGI 等)几乎都遵循一个隐含的架构层级:以语言模型(LLM)对话循环为核心,在其上依次添加工具调用、业务规则,最后为了可观测性而“事后”附加日志层。状态则通过“可检索记忆”(retrievable memory)来持久化——例如将关键信息存入向量数据库,或在每次对话前从历史中摘要出上下文。
这种设计存在三个根本性问题:
- 非确定性:LLM 的输出天然带有随机性(即使设置 temperature=0,模型内部也未必完全确定),加上异步工具调用、外部 API 返回时间的不确定性,导致同一输入在不同运行时可能产生不同结果。这使得复现 bug 或审计行为变得极其困难。
- 记忆即黑箱:所谓的“记忆”通常是 LLM 对历史事件的摘要或向量嵌入,这是一种有损压缩。你无法从最终状态反推出每一步的具体决策过程,也无法精确知道某个工件(artifact)是由哪个模型调用产生的。
- 不可分叉:如果你想基于某个中间状态尝试不同的决策路径,你需要从头开始重新运行整个流程,或者手动保存/恢复复杂的中间状态——这在实际系统中几乎不可行。
二、ActiveGraph 的核心思想:倒置的架构
Yohei Nakajima(BabyAGI 的作者)在 ActiveGraph 中提出了一个激进的倒置:日志不是附属品,日志就是智能体本身。
具体来说,ActiveGraph 是一个运行时系统,它由三个核心概念组成:
2.1 仅追加的事件日志(Append-Only Event Log)
所有发生的事件——包括用户输入、LLM 调用请求与响应、工具执行结果、内部决策——都被序列化为不可变的事件,按时间顺序追加到一个日志中。这个日志是唯一的“真相源”(source of truth)。没有任何状态是隐式的;任何时刻的系统状态都可以通过重放日志中的所有事件来精确重建。
2.2 响应式工作图(Reactive Working Graph)
工作图是一个有向图,节点代表实体(如一个任务、一个代码文件、一个用户查询),边代表关系(如“依赖”、“生成”、“修改”)。这个图不是手动维护的,而是事件日志的确定性投影(deterministic projection)。也就是说,给定相同的事件序列,任何时刻的工作图都是唯一确定的。
2.3 行为(Behaviors)
行为是附加在图的边上的逻辑——可以是普通函数、类方法、或者 LLM 驱动的例程。当工作图中的某个节点或边发生变化时(例如新增了一个节点,或一条边的属性被更新),所有相关的行为会被触发,它们的执行结果又会产生新的事件,追加到日志中,进而更新工作图。
关键点在于:没有任何组件直接指令另一个组件做什么。协调完全通过共享的工作图发生。行为只“观察”图的变化,然后“反应”并产生事件。
三、三个核心特性:可审计、可分叉、完整因果追踪
这种架构设计带来了三个传统记忆系统无法提供的特性:
3.1 确定性重放(Deterministic Replay)
由于所有状态都来自事件日志的确定性投影,你可以从日志中完整重放任何一次运行。这意味着:
- 调试时,你可以精确地重现导致 bug 的每一步事件序列。
- 审计时,你可以验证某个决策是否合规,因为所有输入输出都记录在案。
- 实验时,你可以修改日志中的某个事件(例如替换一个 LLM 响应),然后重新运行以观察不同结果。
论文中定义了一个“确定性契约”(determinism contract):只要行为函数是纯函数(给定相同输入返回相同输出,无副作用),整个系统的重放就是确定性的。对于 LLM 调用,可以通过记录 temperature、seed 等参数,并缓存实际返回的 token 序列来保证可重放性。
3.2 廉价分叉(Cheap Forking)
分叉是指从某个历史事件点创建分支,然后沿着新的路径继续执行,而不需要重新执行共享的前缀事件。在 ActiveGraph 中,分叉的成本极低:
- 你只需复制事件日志到分叉点(实际上可以共享前缀的存储)。
- 从分叉点开始,新的分支追加新的事件。
- 工作图从分叉点开始基于新事件重新投影,共享前缀的部分无需重新计算。
这类似于 Git 的分支机制:你可以从任何提交点创建分支,Git 只存储差异。ActiveGraph 将同样的概念应用到了智能体运行中。
实际应用场景:
- A/B 测试不同提示词的效果:从同一历史状态分叉,分别运行不同的提示词策略,比较结果。
- 回溯调试:如果智能体在步骤 10 产生了意外结果,你可以从步骤 8 分叉,尝试不同的工具调用顺序,看看是否能避免问题。
- 多路径探索:在需要探索多种可能性的任务中(如代码生成),可以同时维护多个分支,最终选择最优结果。
3.3 端到端因果追踪(End-to-End Lineage)
由于每个事件都记录了其触发原因(例如“事件 E 是由行为 B 在处理事件 D 时产生的”),你可以从高层目标向下追踪到每个具体的模型调用。论文中给出了一个“勤勉示例”(diligence example):
- 一个智能体被要求“生成一份关于量子计算的市场分析报告”。
- 通过因果追踪,你可以看到:
- 任务分解为“搜索最新论文”、“搜索市场数据”、“撰写报告”三个子任务。
- “搜索最新论文”子任务调用了 arXiv API,返回了 5 篇论文。
- 其中一篇论文的摘要被传递给 LLM 用于提炼关键点。
- 该 LLM 调用产生了报告中的第 3 段内容。
- 整个因果结构可以从日志中完整重建,没有任何信息丢失。
四、架构细节与实现
ActiveGraph 的实现基于 Apache-2.0 开源协议,提供了可复现的快速启动 demo。其核心架构包括:
4.1 事件结构
每个事件包含:
id: 全局唯一标识符timestamp: 发生时间type: 事件类型(如llm_call,tool_result,user_input,decision)payload: 事件内容(如 LLM 的 prompt 和 response)causality: 因果链,指向触发该事件的前序事件 IDbranch_id: 分支标识,用于支持分叉
4.2 工作图投影
工作图不是显式存储的,而是通过一个确定性函数 project(log) 从事件日志计算得出。这个函数:
- 按顺序读取事件
- 根据事件类型更新图结构(添加/删除节点和边)
- 维护节点的属性(如状态、内容)
- 返回当前图快照
由于投影是纯函数,相同的日志必然产生相同的图。这使得缓存和并行计算变得容易:你可以缓存投影结果,只有在日志尾部有新事件时才增量更新。
4.3 行为调度
当工作图发生变化时,系统会检查所有注册在受影响边上的行为。每个行为可以声明它“观察”的图模式(例如“当出现一个状态为‘待处理’的任务节点时”)。调度器会将这些行为放入一个队列,按确定性顺序执行(例如按行为注册顺序或按优先级)。
行为执行后产生的新事件被追加到日志,触发下一轮图更新和行为调度。这个过程是递归的,直到没有新事件产生(达到固定点)。
五、与现有工作的关系
5.1 BabyAGI 的延续
Yohei Nakajima 是 BabyAGI 的创建者,BabyAGI 是一个基于 LLM 的自主任务管理系统。ActiveGraph 可以被视为 BabyAGI 思想的自然演进:从“任务列表 + LLM 循环”升级为“事件日志 + 响应式图”。BabyAGI 中的任务依赖关系在 ActiveGraph 中被显式建模为图的边,而任务执行的历史则被完整记录在事件日志中。
5.2 与图记忆研究的结合
近年来,GraphRAG(基于图的检索增强生成)等研究探索了用图结构来组织记忆。ActiveGraph 将图从“检索索引”提升为“运行时状态的核心表示”。它不是用图来辅助记忆,而是用图来驱动整个系统的行为。
5.3 事件溯源与 CQRS
ActiveGraph 的设计深受软件工程中的事件溯源(Event Sourcing)和命令查询职责分离(CQRS)模式的影响。在传统企业软件中,事件溯源被用于构建可审计的金融系统;ActiveGraph 将其应用到 AI 智能体领域,解决的是同样的可审计性和状态重建问题。
六、讨论:为什么这适合自我改进的智能体
论文在最后讨论了一个重要但尚未充分验证的观点:ActiveGraph 的架构特别适合构建自我改进的智能体。原因如下:
- 自我审计:智能体可以读取自己的事件日志,分析自己的行为模式,找出低效或错误的决策点。
- 自我分叉实验:智能体可以在“沙箱”分支中尝试新的策略,然后比较结果。如果新策略更好,可以将该分支的日志合并到主分支。
- 元认知:日志本身可以作为训练数据,用于微调 LLM 或学习更好的行为策略。因为日志包含了完整的因果链,你可以精确知道哪个决策导致了哪个结果。
例如,一个代码生成智能体可以:
- 记录它每次生成代码、运行测试、修复 bug 的完整过程。
- 分析哪些提示词策略导致更少的 bug。
- 在分叉中尝试新的代码审查策略。
- 如果新策略有效,将其并入主流程。
七、局限与未来工作
论文坦诚地指出了当前工作的局限性:
- 尚未在大规模真实场景中验证性能(例如处理数百万事件的日志)。
- 行为函数的纯函数约束在实际中可能难以完全保证(LLM 调用本质上是非纯的,需要通过缓存和确定性参数来模拟纯函数)。
- 分叉的合并策略尚未明确定义(类似于 Git 的合并冲突解决在智能体上下文中如何工作?)。
- 因果追踪的存储开销可能随着运行时间线性增长。
未来工作方向包括:
- 实现高效的日志压缩和归档策略。
- 开发可视化的日志浏览器和调试工具。
- 探索基于日志的元学习(让智能体从自己的历史中学习)。
八、总结
ActiveGraph 提出了一种根本不同的智能体架构思路:放弃以 LLM 为核心、日志为附属品的传统设计,转而将不可变事件日志作为系统的基石。这种“日志即智能体”的理念,使得可审计性、可分叉性和因果追踪从附加功能变成了内建特性。
对于构建需要高度可靠性、可调试性和可演化性的 AI 系统(如金融交易、医疗诊断、自主科研)来说,这是一个非常有前景的方向。