personal-hooks helps an OpenClaw agent keep track of the conversations that should not be dropped. Instead of treating every message as memory, it helps the agent distinguish between ordinary chat and topics that are worth following up on later.
When a user mentions something that should be continued later — a task, an ongoing situation, or something emotionally important — personal-hooks keeps hold of that thread so the agent can return to it naturally when the timing is right.
This repository contains the V1 continuity and follow-up skill for OpenClaw. V1 focuses on thread tracking, carryover, closure, suppression, and guardrails. More proactive companionship-style behavior belongs to later versions and is not part of the shipped V1 scope.
For reviewer-oriented project status and file map, see AUDIT.md.
casual_chat / staged_memory / tracked_followuprouting- four event types:
parked_topicwatchful_statedelegated_tasksensitive_event
- incremental
event_chainupdates candidate -> incident -> hookflow/newcarryover- active hook / closure lifecycle
- sleep/rest suppress
- dedupe / cooldown / dispatch cap
- frontstage guard
- structured trace
- regression harness
- live QA runbook
- companionship rhythm/nudge as a default capability
- user-configured idle chat frequency
- proactive chatting with no tracked continuity source
- Telegram delivery/network reliability fixes
SKILL.md: trigger rules and runtime boundaryscripts/: runtime script and verification helpersdocs/: call flow, harness usage, live QA, V2 blueprintexamples/: sample config and sample reportconfig.schema.json: public config schemaLICENSE: package license
This package is designed for users who already have an OpenClaw environment.
It is close to drop-in for an existing OpenClaw workspace, but it is not a fully standalone one-click app.
Recommended OpenClaw layout:
openclaw-workspace/
skills/
personal-hooks/
Copy install:
cp -R /path/to/personal-hooks /path/to/openclaw-workspace/skills/personal-hooksSymlink install:
ln -s /path/to/personal-hooks /path/to/openclaw-workspace/skills/personal-hooksOr use the helper script:
bash scripts/install_local.sh /path/to/openclaw-workspace/skills linkQuick start:
python3 /path/to/openclaw-workspace/skills/personal-hooks/scripts/personal_hooks.py init
python3 /path/to/openclaw-workspace/skills/personal-hooks/scripts/personal_hooks.py capability-state-showMinimal verification:
python3 /path/to/openclaw-workspace/skills/personal-hooks/scripts/followup_skill_harness.py --absence-minutes 3Browser/local-gateway first:
- the core skill works through the ordinary OpenClaw reply pipeline
- browser/local gateway usage is supported
- Telegram is not required for the core skill package
Copy or symlink this folder into an OpenClaw workspace skill directory, then point runtime state env vars at a writable data directory.
Typical layout:
workspace/
skills/
personal-hooks/
SKILL.md
scripts/
docs/
Runtime script:
python3 /path/to/personal-hooks/scripts/personal_hooks.py initOptional env overrides:
PERSONAL_HOOKS_DATA_DIRPERSONAL_HOOKS_MEMORY_DIRPERSONAL_HOOKS_SESSIONS_INDEX_PATHPERSONAL_HOOKS_JOBS_PATHPERSONAL_HOOKS_OPENCLAW_CONFIG_PATHPERSONAL_HOOKS_SETTINGS_PATHPERSONAL_HOOKS_EMBEDDER_ROOTPERSONAL_HOOKS_PRIMARY_SESSION_KEYPERSONAL_HOOKS_TARGET_TO
The package is designed for OpenClaw’s ordinary reply pipeline.
build_runtime_context()builds continuity context for web/browser and Telegram paths that share the same ordinary reply chain.personal_hooks.pyowns staged/tracked state and hook lifecycle.scripts/web_live_runner.mjsis an optional near-live browser runner for local gateway testing. It is not a Telegram network validator, and it requiresPERSONAL_HOOKS_OPENCLAW_ROOTso the release package never hard-binds to a live workspace.
See docs/install.md for a browser/local-gateway-first installation walkthrough.
The most common V1 settings live in:
examples/settings.sample.jsonconfig.schema.json
Minimum usable V1 settings are already reflected in the sample:
followup.enabledsleep_rest_suppress.enabledsleep_rest_suppress.duration_hourscarryover.enabledcarryover.max_turnscarryover.top_summary_onlydispatch.cooldown_minutesdispatch.capclosure.auto_close_on_user_reply
Important:
experimental.rhythm_nudge.enableddefaults tofalse- public V1 does not depend on rhythm/nudge
- you can keep the sample settings as-is for a minimal V1 setup
Minimal reproducible verification:
python3 /path/to/personal-hooks/scripts/followup_skill_harness.py --absence-minutes 3See docs/harness.md for sandbox override details.
- Telegram polling/send reliability is out of scope for V1.
- V1 does not ship companionship rhythm/nudge as a public default.
- Frontstage warmth/personality still depends on the host agent’s own soul/persona/model.
- Carryover is intentionally short; it is not full transcript replay.
This repository may later grow toward a ClawHub/install-flow friendly package shape, but the current release is intentionally optimized for manual local installation in an existing OpenClaw environment.