oclaw/runtime/hooks/README.md
oliver 4a23b715a2 重构仓库目录为统一的 runtime 分层并清理历史 openclaw 残留。
本次迁移将网关/通道/工具/技能/脚本与协议资源集中到新结构,统一路径常量与脚本转发机制,减少顶层噪音并保证运行与测试行为一致。

Made-with: Cursor
2026-04-25 01:24:23 +08:00

30 lines
905 B
Markdown

## `oclaw/hooks`
Unified Python hooks runtime and hook packages.
### What you get
- **In-process hook bus**: register on `type` or `type:action`, sync/async handlers, isolated failures.
- **Directory discovery**: finds hooks by `HOOK.md + handler.py` (or `index.py`).
- **Config gating**: supports `hooks.internal.enabled` and `hooks.internal.entries.<hookKey>.enabled`.
- **Source precedence**: bundled / managed / workspace collision resolution.
### Hook layout
Put hooks in any of:
- **Bundled**: `oclaw/hooks/bundled/<hookName>/`
- **Managed**: `~/.oclaw/hooks/<hookName>/`
- **Workspace**: `<workspace>/hooks/<hookName>/` (explicit opt-in by default)
Each hook directory must contain:
- `HOOK.md` with YAML frontmatter including `metadata.oclaw.events`
- `handler.py` (or `index.py`) exporting a callable `handle(event)`
### Minimal self-test
```bash
python "oclaw/hooks/_selftest.py"
```