{"answer":"管理AI智能体上下文窗口消耗,防止压缩死循环,并执行子智能体生成策略。适用场景:(1)上下文即将填满且w..."}
环境管理 防止环境耗竭、执行产卵纪律、使紧凑性存活是一项面向实际任务的技能,主要用于Core Concons.;Fixed Basure : 通常在任何通畅之前消耗的5-15%的环境。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
防止上下文耗尽,严格执行子代理(sub-agent)生成纪律,并确保压缩(compaction)过程可恢复。
所有百分比均相对于模型的上下文窗口(context window)计算。请运行 session_status 查看实际窗口大小与当前使用量。
每次执行重度调用工具的操作(>5 次工具调用)后,需进行如下评估:
session_status 查看当前使用率/compact 或 /new无法获得各组件精确的用量拆分,可按以下方式估算:
固定基线: ~5–15%(system prompt + workspace files + skills + tools) 每条用户消息: ~100–500 tokens 每条助手响应: ~200–1000 tokens 每次工具调用结果: ~500–5000 tokens(exec/read 类型开销大,search 类型较轻) 压缩摘要: ~2000–5000 tokens(具有累积性!)
统计近期历史中的消息数与工具调用次数,并乘以中位估值。结果以区间形式呈现,避免虚假精度。如需了解单次操作的具体开销,请查阅 references/operation-costs.md。
若工作区根目录存在 .context-policy.yml,则以其为依据设定生成阈值与任务分类;否则采用以下默认规则:
始终生成子代理(Always spawn)(无论当前上下文占用率如何):
永不生成子代理(Never spawn)(保留在主会话中):
依上下文动态决定(Context-dependent)(当上下文占用率超过阈值时生成):
生成子代理时,请提供详尽的任务描述。子代理无任何对话上下文——它仅能感知 task 字段所明确告知的内容。
在执行压缩或 /new 前,请于工作区根目录下创建 .context-checkpoint.md(代理将在压缩完成后读取此文件):
# 上下文检查点 — {date} {time}
## 当前任务
{你正在执行的操作}
## 关键状态
{当前状态要点列表 — 已完成事项、进行中事项}
## 本会话已做决策
{带理由说明的编号决策列表}
## 已修改文件
{本会话中被修改的文件列表}
## 下一步
{恢复后应执行的操作}
该文件可经受压缩过程保留。在会话启动或压缩完成后,请检查是否存在该文件,并据此恢复上下文。恢复后请立即删除该文件。
与 OpenClaw memoryFlush 协同说明:OpenClaw 可能触发自身的预压缩刷新(memoryFlush),将数据写入每日日志(daily log)。本检查点机制作为补充:memoryFlush 将数据存入每日日志,而检查点保存结构化的可恢复状态。二者应共存。若 memoryFlush 先被触发,压缩可能已处于进行中。对于关键会话,建议在上下文达 75% 时即主动写入检查点,切勿等到 85%。
scripts/context-checkpoint.sh 脚本支持基础的写入/读取/清除功能。如需完整五段式检查点,请直接手动编写该文件——多行内容在此场景下更易维护。
压缩或执行 /new 后:
.context-checkpoint.md,请先读取memory/{today}.md),请一并读取当上下文占用率超过 65% 时,发出如下警告:
⚠️ 上下文:{pct}%({used}k/{total}k)。预计剩余容量:约 {remaining_calls} 次工具调用。{recommendation}
不同层级的推荐语:
/compact 或 /new。”在完成大量工作后(或应用户请求),对当前会话进行性能分析,并提出配置优化建议。
运行 session_status,粗略统计工具调用次数与消息交互轮数,归类如下:
| 模式 | 特征 | 示例 |
|---|---|---|
| 工具密集型(Tool-heavy) | 上下文主要来自工具输出,含大量 exec/read/web 调用 | 审计、迁移、测试套件、调试 |
| 对话主导型(Conversational) | 上下文主要来自消息交互,工具调用极少 | 规划、讨论、决策 |
| 混合型(Mixed) | 工具调用与消息交互大致均衡 | 功能开发(讨论 → 编码 → 测试 → 讨论) |
| 突发型(Bursty) | 长时间静默后伴随高强度工具调用爆发 | 监控 + 故障响应 |
有四个关键配置项。向用户解释时,务必说明它们在实际使用中的效果,而非仅罗列参数名:
1. 何时压缩对话历史(reserveTokensFloor)
指上下文填充至何种程度时,代理自动对历史进行摘要与压缩。数值越大,压缩触发越早——生成的摘要越短,后续剩余空间越多。
30000 —— 等待几乎填满才压缩。风险:摘要体积巨大,压缩后剩余空间极小。50000 —— 在约 75% 占用率时压缩。平衡性最佳。60000 —— 在约 70% 占用率时提前压缩。预留空间最充裕。2. 工具输出清理速度(pruning TTL)
在用户停止交互达此时间后,代理将从内存中清除旧的命令输出、文件读取结果与搜索结果。数值越小,清理越激进。
5m —— 需静默 5 分钟才触发清理。活跃工作中极少触发。2m —— 静默 2 分钟即清理。适用于大多数工作流。1m —— 极度激进。清理迅速,但可能导致需重复读取文件。3. 受保护的最近交互轮数(keepLastAssistants)
执行工具输出清理时,保留最近的若干轮用户-助手交互不被清除。
3 —— 保留更多历史可见性,适合对话型任务。2 —— 中等保护力度。1 —— 仅最后 1 轮交互受保护。清理最彻底。4. 工具输出裁剪的最小尺寸(minPrunableToolChars)
仅当工具输出长度(字符数)超过此值时,才允许被裁剪。数值越小,可清理的内容越多。
50000(默认)—— 仅裁剪极大输出(如超长文件读取、海量命令输出)。10000 —— 同时裁剪中等规模输出,覆盖更广。5000 —— 极度激进。绝大多数工具输出均符合条件。按工作风格推荐的组合配置:
| 工作风格 | 压缩触发点 | 清理延迟 | 保护轮数 | 裁剪阈值 |
|---|---|---|---|---|
| 工具密集型(审计、测试、调试) | 60000 |
1m |
1 |
10000 |
| 对话主导型(规划、讨论) | 30000 |
5m |
3 |
50000 |
| 混合型(编码 → 测试 → 讨论) | 50000 |
2m |
2 |
10000 |
| 突发型(监控 + 故障响应) | 50000 |
2m |
1 |
10000 |
其他提示:
采用紧凑列表格式——表格在移动端及窄聊天窗口中渲染效果差。对每个配置项,仅当当前值与推荐值不同时才展示对比;当前值已符合推荐时则跳过该条目。
📊 当前会话画像:{pattern}
上下文:{pct}%({used}k/{total}k)· 已压缩次数:{c}
✅ 压缩触发时机 — {current_description}。适配当前工作风格。
✅ 清理旧输出延迟 — {current_description}。无需调整。
⚠️ 保护最近交互轮数 — 当前为 {current},建议设为 {recommended}。{why}
✅ 裁剪输出阈值 — {current_description}。无需调整。
预计剩余容量:约 {time_or_calls} 后触发下次压缩。
优先列出已正确的配置(建立信任感),再突出需调整项及其原因。保持简洁——用户需要的是明确结论,而非长篇大论。
若建议修改配置,请在征求用户同意前,一次性完整告知全部信息:
gateway config.get 获取)示例结尾:
建议一项变更:
文件:{config_path}
修改:{setting_name}:{old_value} → {new_value}
执行操作意味着:我将先备份配置文件,再将回滚文档写入 {temp_path},随后重启 OpenClaw 网关(约 2–3 秒暂停以重新加载)。是否继续?
若有多项变更,请逐条列出。切勿概括为“4 项变更”——必须明确写出每一项。
切勿在未向用户展示确切文件路径、确切参数值与确切影响的前提下,仅问“是否应用?”。用户须基于完整信息决策,而非盲目信任。
若用户同意,请严格遵循下方完整流程执行。
提供建议后,请将本次会话模式与最终结果记录至每日日志(若工作区启用了该功能)。经多次会话积累,规律将逐渐显现——用户的典型工作风格将清晰浮现,从而可永久优化默认配置。
提出配置变更建议时,必须严格遵循以下顺序。严禁跳步或简化。
运行 gateway config.get 获取配置文件路径与当前值。切勿假设路径——其因安装方式而异。
cp.backup-$(date +%Y%m%d-%H%M%S)
将回滚文档写入用户可访问的位置(非代理工作区——用户可能无权访问该路径)。使用系统临时目录(Linux/macOS 下为 /tmp/,或系统默认临时目录)。内容包含:
# 上下文配置回滚 — {date}
## 变更内容
| 设置项 | 变更前 | 变更后 | 文件 |
|--------|--------|--------|------|
| {setting} | {old} | {new} | {config_path} |
## 备份位置
{config_path}.backup-{timestamp}
## 回滚方法
cp {backup_path} {config_path}
## 重启网关方法
取决于本地环境,请确认适用方式:
- CLI(最常见):openclaw gateway restart
- systemd 服务:sudo systemctl restart
- 手动进程:kill 网关进程后执行 openclaw gateway start
## 健康检查方法
- 进程是否运行:检查进程列表中是否存在 openclaw
- 网关是否响应:curl http://localhost:/health
- 日志查看:依据本地配置查看系统日志或终端输出
## 若网关无法启动的处理步骤
1. 恢复备份(执行上方 cp 命令)
2. 重启网关
3. 查看日志,定位配置解析错误
请明确告知用户该文件所在路径。
需向用户明确说明:
gateway config.get 获取)通过 gateway 工具调用 action: config.patch。务必提供清晰的 note 参数——该消息将在网关重启后送达用户。
网关重启且会话重连后,必须立即向用户确认:
✅ 网关已恢复。配置变更已成功应用。
变更内容:
- {setting}:{old} → {new}({通俗解释})
- [等等]
回滚文档:{path}
备份文件:{path}
一切运行正常。可继续工作。
重启后绝不可沉默。用户必须明确知晓以下四点:
详细配置选项与配置画像说明:references/config-guide.md
各操作开销估算:references/operation-costs.md
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.3万人学习
共49课时 | 82.7万人学习
最新文章