80 lines
2.9 KiB
Markdown
80 lines
2.9 KiB
Markdown
---
|
||
title: "写入纪律(Write Discipline)"
|
||
type: concept
|
||
tags: [openclaw, memory, agentic-ai, best-practices]
|
||
sources: [养龙虾5天血泪史]
|
||
last_updated: 2026-04-23
|
||
---
|
||
|
||
## Definition
|
||
|
||
写入纪律是指强制 AI Agent 在任务执行过程中将决定、结果和错误主动记录到磁盘的规范。与"读取纪律"(设置文件供 Agent 读取)相对,是确保 Agent 记忆持久化的关键机制。
|
||
|
||
## Core Principle
|
||
|
||
> "写入纪律比读取纪律更重要"
|
||
|
||
大多数人设置文件供 Agent 读取,但从不强制执行写回。如果 Agent 不将决定、结果和错误记录到磁盘,这些东西只存在于上下文窗口中。而上下文窗口会被压缩。
|
||
|
||
**写回是临时上下文变成永久记忆的唯一方式。**
|
||
|
||
## Three Rules of Write Discipline
|
||
|
||
1. **每个任务记录其结果**:任务完成后必须写入 memory/YYYY-MM-DD.md
|
||
2. **每个错误变成规则**:Agent 犯的错误必须转化为一行规则写入 LEARNINGS.md
|
||
3. **任何值得记住的内容在压缩前写入**:配置 memoryFlush 确保重要信息存活
|
||
|
||
## How to Enforce Write Discipline
|
||
|
||
### 1. 启动序列强制指令
|
||
|
||
在 AGENTS.md 顶部明确列出写入时机:
|
||
```
|
||
开始任何任务前:
|
||
- 搜索 memory/YYYY-MM-DD.md 获取相关上下文
|
||
- 检查 LEARNINGS.md 获取此类任务的规则
|
||
- 完成后立即写入结果
|
||
|
||
任务期间:
|
||
- 如果有重要决定或新信息产生,立即写入 memory/YYYY-MM-DD.md
|
||
```
|
||
|
||
### 2. 交接协议
|
||
|
||
在任何模型切换或会话结束前,Agent 将当前上下文写入每日日志:
|
||
```
|
||
# Handoff Protocol
|
||
Before model switch or session end:
|
||
1. Write current task state to memory/YYYY-MM-DD.md
|
||
2. Note any pending decisions
|
||
3. Record what worked and what didn't
|
||
```
|
||
|
||
### 3. 禁止直接写入 MEMORY.md
|
||
|
||
> "任务期间永远不要直接写入 MEMORY.md"
|
||
|
||
- **每日日志**(`memory/YYYY-MM-DD.md`):原始且仅追加,Agent 可自由写入
|
||
- **MEMORY.md**:策划的长期记忆,在定期审查期间(心跳或定时任务)通过提炼每日日志来更新
|
||
|
||
让 Agent 向 MEMORY.md 转储任何内容,几周内它就会膨胀成 200 行的混乱。
|
||
|
||
## LEARNINGS.md: The Most Underrated File
|
||
|
||
> "Agent 犯的每个错误都应该变成一行规则"
|
||
|
||
示例:
|
||
- "在声称代码已推送前永远不要不检查 git 状态"
|
||
- "不要在群聊中读取完整的 MEMORY.md"
|
||
- "在安排前始终确认用户的时区"
|
||
|
||
这些规则会复合——几周后,Agent 就有了从自己失败中构建的个人操作手册。
|
||
|
||
## Connections
|
||
- [[上下文压缩]] ← 写入纪律防止压缩导致信息丢失
|
||
- [[上下文刷新]] ← 技术实现写入纪律的手段
|
||
- [[LEARNINGS.md]] ← 写入纪律的具体存储文件
|
||
- [[交接协议]] ← 写入纪律在模型切换时的应用
|
||
- [[养龙虾5天血泪史]] ← 主要来源
|
||
- [[Self-Improving-Skill]] ← 类似的自改进机制
|