AI多Agent协作系统实战(二十三):Agent读HEARTBEAT.md不读AGENTS.md——openclaw的文件加载之谜
系列第23篇 | 当你以为写对了文件但Agent根本不读背景今天下午我花了大量时间修改AGENTS.md期望agent能按步骤执行任务。但agent始终不按指令执行——读inbox、分析文件、做各种事情就是不按我写的步骤来。最后发现agent读的是HEARTBEAT.md根本没读AGENTS.md。问题1AGENTS.md写了但没用现象我写了详细的AGENTS.md包含6个步骤读取inbox JSON读取任务MD修改代码执行deploy.sh执行done.sh但agent执行时完全不按这些步骤。它自己决定读什么文件、做什么操作。原因openclaw的文件加载机制HEARTBEAT.mdagent每次heartbeat都会读取AGENTS.mdagent不一定读取取决于openclaw配置我一直在修改AGENTS.md但agent根本没读它。它读的是HEARTBEAT.md。修复把正确的流程写到HEARTBEAT.md中而不是AGENTS.md。# 小虾的HEARTBEAT.md# 第一步读取wakeup消息中指定的inbox文件# 第二步读取任务MD# 第三步按MD要求修改代码# 第四步打包部署# 第五步完成回复问题2inbox JSON没有steps字段现象agent读取了inbox JSON但不知道要做什么。JSON中只有task_id和content没有执行步骤。原因send_task.py生成的inbox JSON没有steps字段。agent不知道要执行什么命令。修复在inbox JSON中添加steps字段{task_id:DEV-20260724-001,content:修复im-chat.html左侧菜单缺失,steps:[1. 读取任务MD: cat /vol1/1000/workspace/claw-sync/task/DEV-20260724-001.md,2. 修改代码,3. 打包部署: bash /vol1/1000/workspace/scripts/send_Check/deploy.sh,4. 完成回复: bash /vol1/1000/workspace/scripts/send_Check/done.sh main DEV-20260724-001 \开发完成\]}问题3wakeup消息没有指定文件路径现象agent收到wakeup消息后扫描整个inbox目录读取所有文件包括旧文件。原因wakeup消息只说请处理任务没有指定读取哪个文件。修复wakeup消息指定具体文件路径wake_agent(小虾,f请读取文件{inbox_file_path}按steps字段的步骤执行。)问题4ws_server的task_db导入问题现象ws_server收到消息后报错cannot access local variable task_db原因task_db在函数内部导入但变量作用域问题导致无法访问。修复在文件开头导入task_dbimporttask_db问题5清理RETEST代码引发连环语法错误现象清理RETEST代码后format_report.py和auto_pipeline.py出现大量缩进错误。原因RETEST清理删除了for循环和if语句但留下了孤立的代码块。修复逐个修复缩进错误添加continue或pass。问题6自动复核没有触发现象小牛测试完成后没有自动调用review.py复核。原因dispatch_after_test只发送通知没有调用review.py。修复在dispatch_after_test中添加review.py调用# 测试通过→自动复核调用review.pyresultsubprocess.run([python3,review.py,task_id],capture_outputTrue,textTrue,timeout60)问题7feishu_notify通知内容不一致现象一个通知说✅ 任务 xxx 完成另一个说请读取文件 xxx按steps字段的步骤执行。原因两个不同的通知路径done.sh→ws_notify→ws_server→飞书通知check_and_retry→wake_agent→openclaw agent→飞书通知修复统一通知格式根据sender显示不同的内容。问题8报告中混入通知消息现象统筹报告前出现和✅通知消息。原因feishu_notify的print输出到stdout混入了报告。修复将print输出到stderrprint(f [{source}]{message[:100]},filesys.stderr)经验总结文件加载机制要确认openclaw读HEARTBEAT.md不读AGENTS.md写错文件等于白写inbox JSON要包含stepsagent需要明确的执行步骤wakeup消息要指定文件路径避免agent扫描整个目录清理代码要谨慎删除RETEST时要检查语法完整性通知格式要统一不同路径的通知内容要一致print输出要分清楚报告内容用stdout调试信息用stderr自动复核要真正调用review.py不能只发通知