mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
docs: document system-context prompt hook guidance
This commit is contained in:
@@ -82,7 +82,7 @@ See [Hooks](/automation/hooks) for setup and examples.
|
||||
These run inside the agent loop or gateway pipeline:
|
||||
|
||||
- **`before_model_resolve`**: runs pre-session (no `messages`) to deterministically override provider/model before model resolution.
|
||||
- **`before_prompt_build`**: runs after session load (with `messages`) to inject `prependContext`, `systemPrompt`, `prependSystemContext`, or `appendSystemContext` before prompt submission.
|
||||
- **`before_prompt_build`**: runs after session load (with `messages`) to inject `prependContext`, `systemPrompt`, `prependSystemContext`, or `appendSystemContext` before prompt submission. Use `prependContext` for per-turn dynamic text and system-context fields for stable guidance that should sit in system prompt space.
|
||||
- **`before_agent_start`**: legacy compatibility hook that may run in either phase; prefer the explicit hooks above.
|
||||
- **`agent_end`**: inspect the final message list and run metadata after completion.
|
||||
- **`before_compaction` / `after_compaction`**: observe or annotate compaction cycles.
|
||||
|
||||
@@ -431,6 +431,54 @@ Notes:
|
||||
- Plugin-managed hooks show up in `openclaw hooks list` with `plugin:<id>`.
|
||||
- You cannot enable/disable plugin-managed hooks via `openclaw hooks`; enable/disable the plugin instead.
|
||||
|
||||
### Agent lifecycle hooks (`api.on`)
|
||||
|
||||
For typed runtime lifecycle hooks, use `api.on(...)`:
|
||||
|
||||
```ts
|
||||
export default function register(api) {
|
||||
api.on(
|
||||
"before_prompt_build",
|
||||
(event, ctx) => {
|
||||
return {
|
||||
prependSystemContext: "Follow company style guide.",
|
||||
};
|
||||
},
|
||||
{ priority: 10 },
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
Important hooks for prompt construction:
|
||||
|
||||
- `before_model_resolve`: runs before session load (`messages` are not available). Use this to deterministically override `modelOverride` or `providerOverride`.
|
||||
- `before_prompt_build`: runs after session load (`messages` are available). Use this to shape prompt input.
|
||||
- `before_agent_start`: legacy compatibility hook. Prefer the two explicit hooks above.
|
||||
|
||||
`before_prompt_build` result fields:
|
||||
|
||||
- `prependContext`: prepends text to the user prompt for this run. Best for turn-specific or dynamic content.
|
||||
- `systemPrompt`: full system prompt override.
|
||||
- `prependSystemContext`: prepends text to the current system prompt.
|
||||
- `appendSystemContext`: appends text to the current system prompt.
|
||||
|
||||
Prompt build order in embedded runtime:
|
||||
|
||||
1. Apply `prependContext` to the user prompt.
|
||||
2. Apply `systemPrompt` override when provided.
|
||||
3. Apply `prependSystemContext + current system prompt + appendSystemContext`.
|
||||
|
||||
Merge and precedence notes:
|
||||
|
||||
- Hook handlers run by priority (higher first).
|
||||
- For merged context fields, values are concatenated in execution order.
|
||||
- `before_prompt_build` values are applied before legacy `before_agent_start` fallback values.
|
||||
|
||||
Migration guidance:
|
||||
|
||||
- Move static guidance from `prependContext` to `prependSystemContext` (or `appendSystemContext`) so providers can cache stable system-prefix content.
|
||||
- Keep `prependContext` for per-turn dynamic context that should stay tied to the user message.
|
||||
|
||||
## Provider plugins (model auth)
|
||||
|
||||
Plugins can register **model provider auth** flows so users can run OAuth or
|
||||
|
||||
Reference in New Issue
Block a user