360 Secure SkillHub
360 安全技能中心

Life State

life-state 是一个本地状态记录原语,通过 Bash 调用 CLI 写入当日心情、精力(1-10)、睡眠质量、酸痛肌群与备注,数据以每日 JSON 文件存于本地目录。支持同一天字段级合并非覆盖更新、读取指定日期状态以及近 7/14 天聚合统计(平均精力、心情分布、主要酸痛部位),供其他技能读取后调整建议。不含聊天交互、云同步或建议生成。

dsdevq
dsdevq
热度 48.74
最近更新 2026-07-20 21:28:43
分类:生活依赖:代码执行 / 读写文件应用场景:健康 / 笔记整理 / 任务管理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add life-state
Metadata
name
life-state
description
Daily mood / energy / soreness / sleep capture primitive. Other lifekit skills read this to make state-aware suggestions instead of generic templates.
author
Denys Sychov
version
0.2.0
metadata
{"openclaw":{"requires":{"bins":["life-state"]}}}
triggers
["how am I feeling","mood check","morning check-in","log mood","log energy","I feel","feeling tired","feeling good","feeling sore","energy is","slept badly","slept well","today I am"]

life-state

A boring, durable state primitive. NOT a chat experience — it's the integration glue that lets other skills (morning_brief, future workout suggester, bedtime brief) adapt to your current state instead of returning the same template every day.

When to invoke

User describes how they feel, their energy level, soreness, or sleep quality. Examples:

  • "feeling tired today, energy 4, sore chest"
  • "slept well, energy 8"
  • "good mood but quads are wrecked"
  • "headache, low energy"
  • "morning check-in: normal mood, energy 6, slept ok"

How to invoke

Use the life-state CLI via Bash. YAML output to stdout.

Capture state (merge semantics — only updates the fields you pass)

life-state set --mood tired --energy 4 --sore chest,triceps --sleep poor --note "headache, late night"

Flags (all optional, at least one required):

  • --mood <m> — great | good | normal | tired | terrible (freeform accepted; lowercased)
  • --energy <n> — 1-10 (rejected outside that range)
  • --sleep <q> — good | ok | poor (freeform accepted)
  • --sore <list> — comma-separated muscle groups (e.g. chest,triceps)
  • --note "<text>" — free-text annotation
  • --date YYYY-MM-DD — override (default: today)

Merge semantics: calling set twice on the same day updates only the fields passed. Morning check-in + post-workout check-in compose cleanly.

Read today's state

life-state get
life-state get --date 2026-05-15

Week aggregate

life-state week              # last 7 days
life-state week --days 14    # last 14 days

Returns avg energy, mood histogram, top soreness areas, and per-day rollup.

Data location

~/.life/state/<date>.json — one JSON file per day. Stable, known location every other lifekit skill should read from.

Set LIFE_STATE_DIR to relocate the store (containers, shared vaults) — the CLI reads it at startup.

Schema:

{
  "date": "2026-05-15",
  "mood": "tired",
  "energy": 4,
  "soreness": ["chest", "triceps"],
  "sleep_quality": "poor",
  "note": "headache, late night",
  "updated_at": "2026-05-15T19:30:00.000Z"
}

Notes for the agent

  • Don't be Sol. This skill has no personality — capture the state and confirm tersely. Personality belongs in morning_brief, not here.
  • Parse loosely from natural language. "feeling tired, energy 4" → --mood tired --energy 4. "sore chest and triceps" → --sore chest,triceps.
  • Merge, don't replace. If user adds "energy 6 now" later in the day, only update --energy. Don't wipe morning mood.
  • Recommend the enum values when you summarize back, but accept freeform — if a user says "drained" or "wired," store it verbatim; downstream skills can pattern-match or pass-through.
  • Other skills should read this state at the start of their flow:
    • morning_brief: read yesterday's sleep_quality + today's energy to vary breakfast / day prep
    • workout suggester (when built): read today's energy + soreness to adapt volume
    • bedtime brief: read today's note to tailor wind-down