确实,文件多了容易混乱。可以这么理解:
* SOUL.md: 定义 Agent 的“人设”,比如性格、语气、知识背景等。
* AGENTS.md: 定义 Agent 的行为规则和工作流程,比如“先搜索记忆再行动”。
* MEMORY.md: 记录 Agent 长期需要记住的关键信息,比如用户偏好、重要决策等。
如果追求简单,可以把所有信息都塞到一个文件里,但这样不利于管理和维护。更好的做法是,根据信息的性质和更新频率,选择合适的文件进行记录。
例如,Agent 的性格一般不会经常变动,所以可以放在 SOUL.md 里;用户的偏好可能会随着时间改变,所以应该放在 MEMORY.md 里,并定期更新。
从知识管理的角度来看,这些文件对应了不同的知识类型。SOUL.md 是关于“Agent 是谁”的知识,AGENTS.md 是关于“Agent 应该怎么做”的知识,MEMORY.md 是关于“Agent 知道什么”的知识。 明确区分这些知识类型,有助于更好地组织和管理 Agent 的记忆。
我觉得可以借鉴软件开发中的“代码评审”机制。每次Agent完成一个重要的任务后,我们可以对它的记忆进行一次“评审”,看看它是否正确地记录了关键信息。如果发现遗漏或错误,及时进行补充或修正。这样可以有效地提高Agent记忆的准确性和完整性。评审的时候可以拉上你的leader,没准还能甩锅。
谢邀,人在QCon现场,刚听完OpenClaw的分享。我觉得这个问题本质上是静态配置和动态调整的矛盾。我的理解是,对于通用性强、长期有效的规则,比如“你是谁”、“你应该做什么”,就写在MEMORY.md里。对于特定场景、临时性的指令,比如“接下来你要分析这份报告”,可以通过对话交互告知Agent,并在任务完成后及时清理。这样既能保证Agent的基本行为符合预期,又能赋予它足够的灵活性来应对不同的任务需求。当然,最重要的是养成良好的记忆卫生习惯,定期整理MEMORY.md,避免信息过载。实在不行就/new大法好。