Memory 也需要维护者¶
编程 Agent 的认知环境¶
AI 可以维护 memory,但不能独自治理 memory。
这是 Aikito 的核心理念之一。
Coding Agent 擅长检索笔记、提炼持久结论、修复链接、发现过时措辞,以及把一次迁移应用到 许多文件。这些能力让轻量化的自动 memory 成为可能,却没有消除人的责任:判断一条 memory 意味着什么、应该归属哪里,以及它是否还应该继续存在。
一个完全自动化的 memory 系统,可能在结构上始终一致,在概念上却已经错了。
一次真实的重构¶
Chat Distiller 最初位于 Aikito workspace 内部。源码在那里开发,再导出到独立的公开仓库; 与它相关的架构、产品、合规和发布 memory 因此也都属于 Aikito 项目。
当 Chat Distiller 已经具备独立开发条件后,Agent 可以完成大部分机械迁移:
- 对比规范源码与公开仓库;
- 把唯一源码迁移到公开仓库;
- 保留打包、隐私和验证门禁;
- 注册独立的 Aikito project;
- 移动笔记、修复索引和链接、同步 runtime,并执行测试。
但仅靠自动化并不能得到正确的最终设计。人的审查连续引入了几次语义修正。
首先,只迁移源码还不够。Chat Distiller 的 memory 仍属于 Aikito 项目,其认知作用域与新的 仓库边界互相矛盾。因此必须独立注册项目,并把五条产品专属 memory 一同迁移。
其次,一个共享 release skill 同时包含 Aikito、Chat Distiller 和另一个 Python 包的发布 流程。它在技术上可以复用,在概念上却是一个浅抽象:三个产品的源码、产物、验证门禁和发布 渠道完全不同。最终它被三个自包含的项目 skill 取代。
最后,版本规则仍保存在一条独立 memory 中,但这些规则实际属于发布时必须执行的行为。
这条 memory 被退役,规则进入每个 release skill。人的审查又纠正了一个细节:不只是
2.0.0,包括 1.0.0、2.0.0 以及以后所有 MAJOR 版本,都必须先取得用户明确授权。
在每一步,Agent 都能保证文件彼此一致;而人决定系统究竟应该表达什么。
维护不等于治理¶
Memory 维护包括:
- 检索相关知识;
- 提议值得长期保留的结论;
- 更新过时措辞;
- 发现重复内容和断链;
- 移动笔记并验证迁移后的结构。
Memory 治理面对的是另一组问题:
- 这件事现在还成立吗?
- 它是知识、可执行策略,还是临时上下文?
- 它应该属于全局、某个项目,还是应该退役?
- 两个概念应该共享抽象,还是独立演进?
- 哪条规则真正表达作者意图?
- Agent 应该忘记什么?
前一组工作高度适合自动化;后一组工作涉及责任、产品判断和对未来方向的理解。
这不意味着人要逐条手工编辑笔记。更理想的循环是:
人的参与应该集中在影响意义、归属、规则和生命周期的变化上,而不是重复的文件操作上。
一种新的编程层次¶
传统编程主要描述机器应该执行什么。使用 Coding Agent 时,程序员还需要塑造另一个推理 系统工作的环境。
| 传统软件 | Agent 认知环境 |
|---|---|
| 持久状态 | Memory |
| 可执行逻辑 | Skill |
| 配置与策略 | Instructions |
| 模块边界 | Project scope |
| 重构与迁移 | 拆分、合并、移动或退役知识 |
| 测试与可观测性 | Verifier、状态检查和 Git diff |
这是一种高层编程。被编程的对象不再只有应用程序,也包括 Agent 能看到什么、记住什么、 遵循什么,以及忘记什么。
程序员的角色因此向上移动:
- 从亲自完成所有实现,转向定义意图并评价结果;
- 从只管理代码架构,扩展到管理认知架构;
- 从编写一次性 prompt,转向维护持久上下文和可执行策略;
- 从接受知识不断堆积,转向持续重构知识。
代码仍然重要,但 memory、skill 和 instruction 会越来越多地决定 Agent 能否安全、一致地 修改代码。
为什么 Aikito 坚持用文件保存 memory¶
Aikito 不承诺一种悄悄记录一切的“魔法自动记忆”。它把 memory 和 Agent 资源保存在具有 明确作用域、可以审查的文件中,因为治理需要可见的边界。
纯文件和 Git 让我们可以:
- 准确检查 Agent 将继承什么;
- 在接受之前审查 AI 提出的修改;
- 在项目归属变化时迁移知识;
- 把一条被记住的规则转化为可执行 skill;
- 让过时知识彻底退役,而不留下隐藏状态;
- 理解认知环境在何时、为何发生变化。
Aikito 的目标不是把人从 memory 管理中移除,而是让人的判断上升到更有效的层次,同时让 Agent 承担下层维护工作。
在 AI 时代,程序员不再只编程软件,也开始编程那个与自己共同编程软件的认知环境。