Cyber Girlfriend
Owner-only proactive companion system
Rank
62
Safety
84
Downloads
3.1k
Updated
Oct 9, 2026
Version
2.2.0
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 3.1K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 3.1K downloadsadoption · observed Oct 9, 2026
- Latest release
- 2.2.0release · observed Sep 3, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s179sw03xjd5aqn751cpzenk4n83v551:cyber-girlfriend- Install using `clawhub skill install s179sw03xjd5aqn751cpzenk4n83v551:cyber-girlfriend` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/kasanuowa/cyber-girlfriend before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-kasanuowa-cyber-girlfriend/snapshot"
Documentation
CLAWHUB
160,000 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
--- name: cyber-girlfriend description: Build or customize an owner-only proactive companion system with a cyber-girlfriend persona, Markdown private-life context, lightweight relationship memory, and OpenClaw presence cron delivery. metadata: version: "2.2.0" --- # Cyber Girlfriend Use this skill when the user wants an owner-only proactive companion instead of a purely reactive assistant. This skill gives the owner: - proactive companion messages sent on a real schedule - a core persona in `character-profile.md` - daily private-life context in `day-schedule.md` - configurable quiet hours and event-level pacing - lightweight continuity in `life-log.jsonl` - optional event media such as photos, audio, or video ## Quick Start This skill is meant to be set up by an agent, not by hand. If the user wants the default setup, the simplest explicit invocation is: > Use $cyber-girlfriend to help me set up a cyber girlfriend. The agent should then gather the minimum inputs, create or update the local files, wire the default cron jobs, and validate the install before claiming success. ## What The User Needs For a normal install, the user only needs: - an OpenClaw runtime - one working delivery route to the owner - a few persona and daily-life anchors The user should not need to: - hand-write JSON - hand-write cron payloads - manually wire runner contracts - read every reference file before getting started ## Default Setup Shape The recommended starter setup is: - one daily schedule builder job that writes `day-schedule.md` - one `companion-presence` automation that runs the deterministic tick wrapper as an exact Gateway command payload - 1-4 optional life anchors that are written into `day-schedule.md` Those anchors are life facts, not guaranteed sends. ## What The Agent Sets Up The current default active path has two small steps: - `scripts/companion_presence_tick.py --config <CONFIG>` - inside that wrapper, `scripts/companion_run.py --stage prepare --no-record-pending` On OpenClaw versions that support command automations, cron invokes the wrapper directly with an exact argv payload; no model turn is used merely to launch the script. The wrapper reads local state through the prepare runner and exits quietly when no current event should send. Only when prepare returns `status = "ok"` does it derive a fresh dispatch-scoped companion session from the prepared run id. That session writes the first-person story, but text delivery goes through `companion_presence_tick.py --send-story --story-stdin`, which reloads the saved delivery contract from the dispatch lock, sends with the external OpenClaw CLI, and commits state only after successful text delivery. If the matched event asks for media, media generation starts after `--send-story` succeeds and finishes asynchronously. The wrapper also starts a deterministic recent-media watcher for the same dispatch session, so generated media is delivered through the prepared delivery contract even if th
_meta.json
{
"ownerId": "kn71yvy6nsxy27kp8krr9879ys80gv9h",
"slug": "cyber-girlfriend",
"version": "2.2.0",
"publishedAt": 1788403624689
}references/agent-first-time-qa-template.md
# Agent First-Time Q&A Template Use this only when an agent needs literal onboarding wording for a brand-new setup conversation. This file is a conversation aid, not the source of truth. For setup order and defaults, read [first-time-setup.md](./first-time-setup.md). For field ownership, read [configuration.md](./configuration.md). For presence cron wiring, read [presence-integration.md](./presence-integration.md). ## Core Rule Do not ask the user to write prompts during first setup. The agent should: - collect routing and pacing decisions - collect enough real-world persona anchors when private life is enabled - ask whether any fixed life anchors should always enter the day - translate the result into config, Markdown life files, and cron jobs ## Recommended Opening Use wording like: > 我先按首配流程帮你收最小必要信息,不让你自己写 prompt。先确认投递目标,再写她的人设和生活锚点,最后我来落配置、日程和 presence cron。 ## Default Question Order ### 1. Delivery route > 陪伴消息准备发到哪个渠道?把目标 id 一起给我。 > 如果这个渠道发消息还要指定发送账号,也一起给我。 Capture: - `delivery.channel` - `delivery.owner_target` - `delivery.account` when needed ### 2. Owner profile source > owner 信息你要我从 OpenClaw 的 USER.md 导入,还是你手动给我一份简短自定义? > 我只需要区分 owner 和 companion,不会把渠道账号或 session id 塞进 prompt。 Capture: - `owner_profile.source`: `user_md`, `manual`, or `none` - stable owner identity fields only ### 3. Character profile reality anchors > 如果你要她有活人感,我还需要她现实里的身份信息:年龄或阶段、学生/上班/创作者是哪种、城市、平时更常看什么内容。 Capture when available: - 基础身份 - 兴趣与内容偏好 - 关系表达和禁区边界 ### 4. Required life events > 有没有什么你希望她每天一定会经历、但不一定每次都发消息的事?比如通勤、晚课、健身、夜里收尾、固定拍照散步。 > 有的话我会写成 `必定发生:是` 的日程锚点。 For each anchor, ask only: - 时间或时间窗口 - 持续多久 - 她在哪里 - 她正在做什么 - 可以自然提到什么 - 可以怎么轻轻接 owner - 不要写成什么 ### 5. Quiet hours > 安静时段你想设几点到几点?没要求我就用 01:00 到 08:00。 ### 6. Confirmation before writing > 执行前我先确认范围:会写 `config.local.json`、`character-profile.md`、`day-schedule.md` 和运行状态文件;创建或更新 `companion-build-day-schedule`、`companion-presence` 两个定时任务,并把任务名、时间和 payload 类型列给你。投递渠道、账号和目标只显示脱敏值。 > 日程生成和命中事件写作会访问公开网页;验收会向刚确认的 owner 目标发送一条可见测试消息。需要暂停时只禁用这两个任务并保留配置和状态;永久删除任务会另行征得你的明确同意。 > 请确认后我再执行这些写入、联网搜索、任务变更和一次真实发送。 ## Fast One-Shot Version When the user wants the shortest possible onboarding, ask this bundle: > 我按最快首配来收信息,你回我这些就行: > 1. 发到哪个渠道,目标 id 是什么,需不需要指定发送账号 > 2. 她现实里是什么身份:年龄/阶段、学校或工作、城市、常看的内容方向 > 3. 有没有必定发生的日常锚点:时间、持续多久、场景、正在做什么 > 4. 安静时段,如果没要求我就用默认值 > 5. 我会先预览要写的文件、两个任务的名称/时间/payload、脱敏投递目标、公开搜索和一次测试发送;你明确确认后我才执行。暂停只禁用任务并保留配置/状态,永久删除需另行确认。 ## Ownership Reminder Map answers like this: | Answer type | Goes to config | Goes to Markdown / cron | | --- | --- | --- | | delivery route | yes | used by presence send step | | owner identity boundary | yes | used to separate owner from companion | | character profile reality anchors | `character_profile_path` | `character-profile.md` | | quiet hours | yes | validators enforce schedule windows | | required life anchors | yes | `day-schedule.md` as `必定发生:是` | | presence cadence | no | OpenClaw cron | ## Do Not Do These Do not: -
references/configuration.md
# Configuration Keep the runtime file name as `config.local.json` for compatibility. Do **not** rename it for v2. Upgrade by adding `"version": 2` and the new sections. ## Design Goal Ask the user for as little as possible. Split the config into three kinds of fields: 1. **Companion character profile pointer** — where the Markdown character profile lives 2. **Owner identity boundary** — who the owner is, kept separate from companion life 3. **Agent-generated life model** — derived rhythm, current day schedule, continuity state The user should mostly fill the first two kinds. The agent/runtime should generate the third kind. ## Field Ownership Rule For first-time setup, keep this split strict: - `config.local.json` stores profile paths, delivery, pacing policy, runtime paths, and optional long-lived source toggles - `character-profile.md` stores the companion's core identity, tone, relationship expression, interests, and lived anchors - `life_schedule.day_schedule.required_events` stores stable user-defined life anchors - presence automation payloads store only an exact wrapper argv, not prompt prose - generated state files store derived rhythm, continuity, and current day schedules Do not turn `config.local.json` into a dump of prompt prose. ## Required Sections ### `version` - Set to `2` ### `character_profile_path` Path to the companion's core Markdown character profile. Recommended: - `./state/character-profile.md` The published example is: - `assets/character-profile.example.md` This file now owns the full companion persona: - name and owner-facing nickname - age / life stage - identity role - city / district - school, work, or creative background - personality, interests, entertainment tastes, expression style, relationship style, and safety boundaries ### `persona` (deprecated) Deprecated compatibility cache. New installs should not ask users to maintain this JSON object. If an older `config.local.json` still has `persona`, it may be used as a migration source or fallback. The forward direction is to migrate those fields into `character-profile.md` and keep config JSON focused on machine-readable runtime settings. ### `owner_profile` Optional lightweight owner identity boundary. Its job is not to over-control style; its job is to stop the companion's school, work, friends, dorm, class, or other private-life material from being projected onto the owner. Recommended fields: - `source` — `manual | user_md | none` - `user_md_path` — optional path when importing from OpenClaw `USER.md` - `name` - `preferred_name` - `pronouns` - `location` - `timezone` - `identity_summary` - `not_assumptions` — optional user-defined taboos or identity assumptions to avoid For first-time setup or upgrade, ask one product question: `owner 信息要从 USER.md 导入,还是你手动自定义?` If the user picks `USER.md`, import only stable identity fields such as name, preferred name, pronouns, location, and timezone. Do not copy messaging-platform session keys, accou
references/contract-schema.md
# Turn Contract
`scripts/companion_presence_tick.py` is the default presence automation entrypoint. New OpenClaw installations invoke it directly with an exact argv command payload; the wrapper runs `companion_run.py` for fresh prepare, exits quietly on skip, and starts a fresh dispatch-scoped companion session only when a current event is matched.
## Prepare Stage
Command:
```bash
python3 <SKILL_DIR>/scripts/companion_run.py --stage prepare --config <CONFIG> --no-record-pending
```
Automation command payload:
```json
{
"kind": "command",
"argv": [
"python3",
"<SKILL_DIR>/scripts/companion_presence_tick.py",
"--config",
"<CONFIG>"
],
"cwd": "<SKILL_DIR>",
"env": {
"PYTHONUNBUFFERED": "1"
},
"timeoutSeconds": 120,
"outputMaxBytes": 65536
}
```
Prepare selects the current `day-schedule.md` event by real local time. Events marked `必定发生:是` are life facts, not guaranteed sends.
Required output fields:
- `status`
- `run_id`
- `life_context`
- `delivery_contract`
- `media_contract`
- `state_commit`
- `next_step`
`life_context` is structured and must contain:
- `generated_at`
- `timezone`
- `speaker`
- `today`
- `event`
- `reality_check`
Optional:
- `delivery_mood`
The tick wrapper passes the prepared contract to a fresh dispatch-scoped companion session when status is ok. That session writes one first-person companion presence story directly from `life_context`. There is no separate render stage and no `render_spec` in the current architecture. A prepared run id is appended to the configured base session key, so an archived session from an earlier event is never resumed.
Prepare output must not include duplicated task fields or local-only execution hints:
- no top-level `primary_goal`
- no `render_spec`
- no local runbook fields
- no private local paths or channel identifiers beyond the configured delivery contract
Agents should not infer delivery ownership from prose. Follow these fields:
- `delivery_contract.send_in_main_turn = true`: text may be sent in the main turn.
- `media_contract.kind = event_media`: the current event requires media.
- `media_contract.async = true`: OpenClaw media generation is asynchronous.
- `media_contract.tool_name`: the runtime-selected async media generator for the matched media type.
- `media_contract.completion_event_is_sender = true`: the media task is asynchronous and will produce a native OpenClaw completion event.
- `media_contract.callback_context.strategy = same_stable_session`: "stable" means the same dispatch-scoped session for the lifetime of this one media task, not a session reused across events.
- `media_contract.callback_context.requires_original_session_context = true`: the completion turn relies on that dispatch session context to keep the original delivery contract available.
- `state_commit.when`: defines when pacing state can be committed.
The presence agent must send text through `companion_presence_tick.py --send-story --story-stdin`, not activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/kasanuowa/skills/cyber-girlfriend",
"sourceUrl": "https://clawhub.ai/kasanuowa/skills/cyber-girlfriend",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T09:30:52.667Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-kasanuowa-cyber-girlfriend/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-kasanuowa-cyber-girlfriend/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T09:30:52.667Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "3.1K downloads",
"href": "https://clawhub.ai/kasanuowa/cyber-girlfriend",
"sourceUrl": "https://clawhub.ai/kasanuowa/cyber-girlfriend",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T09:30:52.667Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "2.2.0",
"href": "https://clawhub.ai/kasanuowa/cyber-girlfriend",
"sourceUrl": "https://clawhub.ai/kasanuowa/cyber-girlfriend",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-09-03T02:47:04.689Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-kasanuowa-cyber-girlfriend/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-kasanuowa-cyber-girlfriend/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 2.2.0",
"description": "OpenClaw automation compatibility: deterministic exact-argv presence commands, fresh dispatch sessions, explicit-contract WeChat fallback with retryable delivery failures, and lightweight daily-builder context. Adds explicit skill invocation, authorization previews, reversible pause/removal guidance, and release checks. 中文说明:适配新版 OpenClaw command automation,presence 直接执行固定脚本并为每次命中派生新会话,避开归档会话复用;微信渠道异常沿用显式投递合同兜底,失败可重试;日程任务启用轻量上下文。同时完善显式调用、操作前确认、可逆暂停与独立删除授权,并纳入发布校验。",
"href": "https://clawhub.ai/kasanuowa/cyber-girlfriend",
"sourceUrl": "https://clawhub.ai/kasanuowa/cyber-girlfriend",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-09-03T02:47:04.689Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
