Install
openclaw skills install @redwakame/openclaw-continuityStructured continuity and follow-up skill for OpenClaw agents. Use when an agent needs to decide whether natural user dialogue should stay as casual chat, become staged memory, or become tracked follow-up with carryover, closure, cooldown, sleep/rest suppress, routine-aware wording, quiet-hours behavior, traceability, and release-grade frontstage safety guards. This package is not a generic cron sender. It uses context, causal state, and explicit lifecycle rules to decide whether care or follow-up should appear at all. It covers parked topics, watchful states, delegated tasks, sensitive events, candidate to incident to hook flow, /new carryover, deterministic onboarding/guided settings, and time-aware continuity guards. It does not include always-on idle/social nudging as a default feature.
openclaw skills install @redwakame/openclaw-continuityUse this skill as a continuity/follow-up layer on top of an existing OpenClaw agent. Keep the agent's soul/persona intact and let this skill own the structured follow-up mechanics.
Public product name: OpenClaw Continuity.
Technical package / slug: personal-hooks.
Internal diagnostics may still use staged-followup-memory as a status label for continuity state surfaces.
Questions, feedback, or implementation discussion: adarobot666@gmail.com.
如果你期待這個技能持續優化與維護,請在 GitHub 給星支持:https://github.com/redwakame/openclaw-continuity
casual_chat, staged_memory, or tracked_followup.parked_topicwatchful_statedelegated_tasksensitive_eventevent_chain summaries with:
context_beforeevent_coreimmediate_resultfollowup_focuscausal_memory as structured continuity state with:
factsstateopen_looptime_anchorfollowup_focus_codewriteback_policycandidate -> incident -> hook./new carryover from the previous 3-5 turns and let the user
choose which continuity anchor leads a new conversation.sleep_time, and wake_time is still later on the same
local day, frame the next natural reconnect as later after waking rather than
a generic next-day farewell.Use this skill when the user is naturally:
scripts/personal_hooks.pyscripts/followup_skill_harness.pyconfig.schema.jsonexamples/settings.sample.jsonREADME.mddocs/call-flow.mddocs/harness.mddocs/live-qa-runbook.mddocs/v2-blueprint.mdcausal_memory and event_chain as internal structured context, not prewritten frontstage reply text.UTC/GMT offsets to a city timezone. Explicit IANA
zones should pass through unchanged; generic offsets must stay generic fixed
offsets such as UTC+00:00.The public skill package does not automatically provide host-side delivery plumbing. Keep this boundary explicit:
/new carryover, setup,
and skill/tool-layer guards.build_runtime_context()
intercept_message()
process_candidate_buffer()
due / render / complete
Use README.md for installation and package usage. Use docs/harness.md for reproducible verification. Use docs/release-acceptance.md for the publication gate. Use docs/live-qa-runbook.md for human channel acceptance. Use docs/v2-blueprint.md only for future design discussion.
If SKILL_ONBOARD.md exists in the workspace root, follow its guided setup flow. Once complete, delete the file.
When the user asks to change their schedule, care frequency, quiet hours, or other preferences:
setup-check to see current state:
python3 scripts/personal_hooks.py setup-check
setup-apply:
python3 scripts/personal_hooks.py setup-apply --payload-json '{"sleep_time":"00:00","wake_time":"09:00"}'
Only include the fields being changed — other fields remain untouched.The public package should support one host-agnostic natural-language entry into guided settings mode. This is not platform-specific and should work across any OpenClaw-supported conversation surface.
Recommended entry phrases:
幫我調整關心設定帮我调整关心设置Help me adjust my follow-up settingsフォローアップ設定を調整してHilf mir, meine Follow-up-Einstellungen anzupassenAiutami a regolare le impostazioni di follow-upAyúdame a ajustar mi configuración de seguimientoWhen the user says one of these or something equivalent:
setup-checksetup-applyDo not require platform-specific slash commands.
The skill now also treats explicit command-like entries such as /care setup
and /care config as guided-settings triggers at the runtime-context layer, so
the setup mode can be re-opened consistently across different OpenClaw hosts.
For capability questions, hosts should also expose:
/care capability / /care 功能 / /care 能力/care memory / /care 記憶 / /care 记忆Users can also change schedule and do-not-disturb behavior through natural language, for example:
我通常早上六點睡,下午兩點半起床半夜不要主動關心我把勿擾改成早上六點到下午兩點半Help me make follow-up quieter after midnightThese are not separate memory engines. They are explanation entry points for:
/new carryover is currently activeKeep the guided categories simple and host-agnostic:
schedule / 作息proactive / 主動關心tracking / 追蹤記憶continuity / 新對話承接modality / 語音/圖片延續偏好tone / 互動風格The user should be able to answer naturally rather than memorize technical keys. The skill should map those answers into settings/profile changes.
For first-install onboarding, the skill must not rely only on model-side classification. When the user explicitly states structured setup facts in normal conversation, the skill should deterministically extract and apply at least:
These values should be written into:
settings.json (routine_schedule)settings.json (new_session_continuity)settings.json (modality_continuity)profile.json (care_style.relationship)USER.mdThis makes the setup contract cross-version safe even when model behavior is conservative.
The skill also strips common webchat timestamp prefixes such as
[Wed 2026-04-15 05:25 GMT+0] before deterministic parsing so the same setup
text behaves consistently across CLI and web hosts.
When the user says any of the following, run setup-check and offer to update:
幫我調整關心設定 / 帮我调整关心设置Help me adjust my follow-up settingsフォローアップ設定を調整してHilf mir, meine Follow-up-Einstellungen anzupassenAiutami a regolare le impostazioni di follow-upAyúdame a ajustar mi configuración de seguimientoFor English natural-language settings requests, the shared skill should also handle common phrasings such as:
turn proactive check-ins on / offchecking in every 2 hoursretrying after 30 minutesstopping after 2 unanswered check-ins| Key | Target | What it configures |
|---|---|---|
| timezone | settings | Time calculations |
| sleep_time | settings | Sleep phase start |
| wake_time | settings | Sleep phase end |
| relationship | profile | Tone & interaction style |
| use_case | profile | support / developer / tracking |
| proactive_care | settings | Enable proactive messages |
| proactive_interval_hours | settings | Minimum re-evaluation interval (hours); actual dispatch depends on guard conditions |
| quiet_hours_start | settings | Do-not-disturb start |
| quiet_hours_end | settings | Do-not-disturb end |
| care_tone | profile | warm / neutral / playful |
| emoji_forbidden | profile | Banned emoji list |
| tracking_keywords | profile | Topics to track |
| heartbeat_enabled | settings | Enable heartbeat |
| new_session_continuity_mode | settings | Which continuity anchor leads after /new |
| modality_continuity_mode | settings | How voice/image discussion style should carry over when the host supports it |
/new
continuity anchor.hi immediately after /new should be treated as a low-information
acknowledgement of the selected continuity opener, not as a fresh time-of-day
small-talk reset./new capability is part of the public V2 package. If asked directly, the
skill should answer concretely that it preserves carryover from the previous
3–5 turns and tries to reattach the most relevant unresolved thread.| Key path | Default | What it controls |
|---|---|---|
| re_engagement.mode | wait_for_reply | After dispatch without reply: wait or timed retry |
| re_engagement.retry_after_hours | 4 | Hours before retrying a parked hook (timed_retry mode only) |
| re_engagement.max_unanswered_before_park | 2 | Dispatches without reply before parking |
| candidate_ttl_hours.emotion | 24 | Candidate buffer TTL for emotion signals (hours) |
| candidate_ttl_hours.task | 168 | Candidate buffer TTL for task signals (hours) |
| temporal_guard.newer_interaction_minutes | 5 | User interaction recency threshold for blocking dispatch |
| followup.parked_auto_close_hours | 0 | Auto-close parked hooks after N hours (0=disabled) |
| sleep_rest_suppress.auto_clear_hours | 4 | Auto-clear rest-suppress fallback (0=only on resume) |
| causal_memory.summary_max_facts | 3 | Maximum factual clauses preserved in internal causal summaries |
| causal_memory.include_time_anchor | true | Include extracted temporal anchors in internal causal summaries |
| causal_memory.include_state_marker | true | Include neutral state markers in internal causal summaries |