操作步骤
- 准备全局文件
假设你希望每个 agent 启动时都能看到global-notes.md,将它放在固定位置,例如:
bash
echo "# 全局注意事项\n- 始终遵守公司政策" > ~/.openclaw/global-notes.md
- 创建托管 Hook
在~/.openclaw/hooks/下新建一个目录,例如global-notes:
bash
mkdir -p ~/.openclaw/hooks/global-notes
cd ~/.openclaw/hooks/global-notes
- 在
~/.openclaw/hooks/下创建HOOK.md,handler.ts
- 3.1
HOOK.md
markdown
---
name: global-notes
description: "为所有 agent 注入全局注意事项文件"
metadata:
openclaw:
emoji: "🌍"
events: ["agent:bootstrap"]
---
# 全局注意事项注入器
在 agent 启动时,将 `~/.openclaw/global-notes.md` 添加到引导文件列表中。
- 3.2
handler.ts
typescript
import fs from 'fs/promises';
import path from 'path';
export default async function handler(event: any) {
// 仅在 agent:bootstrap 事件中处理
if (event.type !== 'agent' || event.action !== 'bootstrap') return;
const globalNotesPath = path.join(process.env.HOME!, '.openclaw', 'global-notes.md');
try {
const content = await fs.readFile(globalNotesPath, 'utf-8');
// 确保文件内容不为空,且文件名符合引导文件规范(AGENTS.md 或 TOOLS.md)
const bootstrapFile = {
path: globalNotesPath,
name: 'AGENTS.md', // 使用 AGENTS.md 让 agent 自动读取
content,
};
// 如果 context.bootstrapFiles 不存在则初始化
if (!event.context.bootstrapFiles) event.context.bootstrapFiles = [];
// 追加到数组,或替换同名文件
event.context.bootstrapFiles.push(bootstrapFile);
} catch (err) {
console.error('[global-notes] 无法加载全局注意事项:', err);
}
}
注意:
agent:bootstrap事件允许 Hook 修改context.bootstrapFiles数组,其中每个元素应包含path、name(必须是AGENTS.md或TOOLS.md)和content。
- 启用该 Hook
运行以下命令,确认 Hook 被发现并启用:
bash
openclaw hooks list # 应看到 🌍 global-notes
openclaw hooks enable global-notes
- 重启 Gateway使配置生效
bash
openclaw gateway restart
原理说明
agent:bootstrap事件在每次 agent 初始化(包括工作区引导)时触发。- 托管 Hook 存储在
~/.openclaw/hooks/,对所有 workspace 可见。 - 通过修改
context.bootstrapFiles,可以动态添加任意文件,这些文件会像工作区自带的AGENTS.md/TOOLS.md一样被 agent 读取并作为上下文。
验证
在任意渠道发送消息给 agent,让它列出当前可用的指导文件,或直接询问"根据全局注意事项我应该注意什么",即可确认注入生效。