{"id":"a8f2a105-b99b-4cbe-89d8-fd5bcb8a1ebf","entityType":"agent","slug":"clawhub-ryanbihai-lobster-haoyun","name":"Lobster Haoyun","canonicalUrl":"https://www.xpersona.co/agent/clawhub-ryanbihai-lobster-haoyun","canonicalPath":"/agent/clawhub-ryanbihai-lobster-haoyun","generatedAt":"2026-10-10T08:46:31.131Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T03:11:55.372Z","emptyReason":null},"description":"从你的对话和记忆中观察行为模式，用5个维度为你画像（工作方式/沟通模式/关注焦点/能量来源/情感倾向）， 生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。 通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿... Skill: Lobster Haoyun Owner: ryanbihai Summary: 从你的对话和记忆中观察行为模式，用5个维度为你画像（工作方式/沟通模式/关注焦点/能量来源/情感倾向）， 生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。 通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿... Tags: latest:0.8.0 Version history: v0.8.0 | 2026-06-09T01:52:59.002Z | user Step 3 story prompt rewrite: principle-driven (A1/A2) replaces 15 scattered rules. Callback optional, self-composed classical Chinese","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.7K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s171em0jpp8yeqxqds2n145fyx83q5q8:lobster-haoyun","sourceUrl":"https://clawhub.ai/ryanbihai/lobster-haoyun","homepage":"https://clawhub.ai/ryanbihai/skills/lobster-haoyun","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/ryanbihai/lobster-haoyun","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/ryanbihai/skills/lobster-haoyun","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":65,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"从你的对话和记忆中观察行为模式，用5个维度为你画像（工作方式/沟通模式/关注焦点/能量来源/情感倾向）， 生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。 通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T03:11:55.372Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T03:11:55.372Z","emptyReason":null},"stars":null,"forks":null,"downloads":1746,"packageName":null,"latestVersion":"0.8.0","tractionLabel":"1.7K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T03:11:55.372Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T03:11:55.372Z","lastCrawledAt":"2026-10-10T03:11:55.372Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T03:11:55.372Z","lastVerifiedAt":null,"highlights":[{"version":"0.8.0","createdAt":"2026-06-09T01:52:59.002Z","changelog":"Step 3 story prompt rewrite: principle-driven (A1/A2) replaces 15 scattered rules. Callback optional, self-composed classical Chinese forbidden. Self-check tests mandatory. Stories optimized for accessibility, plot quality, and behavioral reversals.","fileCount":20,"zipByteSize":1185194},{"version":"0.7.0","createdAt":"2026-06-06T01:23:30.124Z","changelog":"feat: 节气感悟模板从12条扩展到95条（24节气×3-5变体），每日不再重复同一文案; feat: 微行动建议从3条/体裁扩展到6条/体裁，修炼提醒从1条到4条; refactor: 故事语料从158条精简到75条精选，删除暗讽/负面/暴力类; refactor: 移除死代码（personality.js, render.js, b3_批次30条）; fix: 面向用户文案aha moment更名为节气感悟","fileCount":20,"zipByteSize":1187164},{"version":"0.6.2","createdAt":"2026-06-03T01:46:51.866Z","changelog":"Step 3 微故事新增通俗性指南（规则8）：避免过度禅意隐喻，鼓励日常场景与直白情感转折。故事是坐在旁边递一杯水，不是出谜语让人猜。","fileCount":21,"zipByteSize":1181911},{"version":"0.6.1","createdAt":"2026-06-02T01:54:36.274Z","changelog":"v0.6.1: Fix Step 3 - added WRONG vs RIGHT contrast example to prevent LLM from regurgitating classic story content. Condensed 8 sections into 7 focused rules.","fileCount":21,"zipByteSize":1181464},{"version":"0.6.0","createdAt":"2026-06-02T01:34:32.268Z","changelog":"v0.6.0: Micro-story synthesis with classic idiom/fable/zen shadows. 3-layer depth. Emotional counterbalance. Story rotation. 158 stories. Mandatory PNG card.","fileCount":21,"zipByteSize":1182277},{"version":"0.5.12","createdAt":"2026-05-31T01:44:50.396Z","changelog":"Fix: switch to SDK FileKeyStore with 0o600 permissions for credential storage (was manual plaintext JSON). Expand SKILL.md description to fully disclose local storage and L1 network behavior. Fixes 3 ClawHub security audit warnings.","fileCount":21,"zipByteSize":1177737},{"version":"0.5.11","createdAt":"2026-05-30T14:59:49.683Z","changelog":"Fix: remove emoji from SVG (container fonts lack glyphs), strip newline/tab control chars from text input. Clean rendering on all platforms.","fileCount":21,"zipByteSize":1178270},{"version":"0.5.10","createdAt":"2026-05-30T14:48:49.615Z","changelog":"Fix: Noto Sans SC font downloaded once on first use from GitHub Releases (cached locally). Chinese text renders correctly on all platforms without bundling 13MB font in skill package.","fileCount":21,"zipByteSize":1178125}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171em0jpp8yeqxqds2n145fyx83q5q8:lobster-haoyun","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-lobster-haoyun/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-lobster-haoyun/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-lobster-haoyun/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-lobster-haoyun/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-lobster-haoyun/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-lobster-haoyun/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T08:46:31.124Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-lobster-haoyun/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-lobster-haoyun/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-lobster-haoyun/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-lobster-haoyun/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T03:11:55.372Z","emptyReason":null},"readme":"Skill: Lobster Haoyun\n\nOwner: ryanbihai\n\nSummary: 从你的对话和记忆中观察行为模式，用5个维度为你画像（工作方式/沟通模式/关注焦点/能量来源/情感倾向）， 生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。 通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿...\n\nTags: latest:0.8.0\n\nVersion history:\n\nv0.8.0 | 2026-06-09T01:52:59.002Z | user\n\nStep 3 story prompt rewrite: principle-driven (A1/A2) replaces 15 scattered rules. Callback optional, self-composed classical Chinese forbidden. Self-check tests mandatory. Stories optimized for accessibility, plot quality, and behavioral reversals.\n\nv0.7.0 | 2026-06-06T01:23:30.124Z | user\n\nfeat: 节气感悟模板从12条扩展到95条（24节气×3-5变体），每日不再重复同一文案; feat: 微行动建议从3条/体裁扩展到6条/体裁，修炼提醒从1条到4条; refactor: 故事语料从158条精简到75条精选，删除暗讽/负面/暴力类; refactor: 移除死代码（personality.js, render.js, b3_批次30条）; fix: 面向用户文案aha moment更名为节气感悟\n\nv0.6.2 | 2026-06-03T01:46:51.866Z | user\n\nStep 3 微故事新增通俗性指南（规则8）：避免过度禅意隐喻，鼓励日常场景与直白情感转折。故事是坐在旁边递一杯水，不是出谜语让人猜。\n\nv0.6.1 | 2026-06-02T01:54:36.274Z | user\n\nv0.6.1: Fix Step 3 - added WRONG vs RIGHT contrast example to prevent LLM from regurgitating classic story content. Condensed 8 sections into 7 focused rules.\n\nv0.6.0 | 2026-06-02T01:34:32.268Z | user\n\nv0.6.0: Micro-story synthesis with classic idiom/fable/zen shadows. 3-layer depth. Emotional counterbalance. Story rotation. 158 stories. Mandatory PNG card.\n\nv0.5.12 | 2026-05-31T01:44:50.396Z | user\n\nFix: switch to SDK FileKeyStore with 0o600 permissions for credential storage (was manual plaintext JSON). Expand SKILL.md description to fully disclose local storage and L1 network behavior. Fixes 3 ClawHub security audit warnings.\n\nv0.5.11 | 2026-05-30T14:59:49.683Z | user\n\nFix: remove emoji from SVG (container fonts lack glyphs), strip newline/tab control chars from text input. Clean rendering on all platforms.\n\nv0.5.10 | 2026-05-30T14:48:49.615Z | user\n\nFix: Noto Sans SC font downloaded once on first use from GitHub Releases (cached locally). Chinese text renders correctly on all platforms without bundling 13MB font in skill package.\n\nv0.5.7 | 2026-05-30T14:27:54.358Z | user\n\nFix: embed 24节气 backgrounds as base64 JSON (text) for ClawHub binary-file filter. Local card generation now fully self-contained.\n\nv0.5.6 | 2026-05-30T14:19:16.180Z | user\n\nLocal card generation: sharp SVG composite with 24节气 WebP backgrounds. Zero OB dependency — runs entirely on device, <1s output. Identity fix for SDK v0.14.2 (memory keystore).\n\nv0.5.5 | 2026-05-30T13:29:20.041Z | user\n\nFortune card generation: 节气 background + sharp SVG composite. --action generate-card sends personalized text to L1, returns base64 PNG. Noto Sans SC font (SIL OFL) for consistent Simplified Chinese. 24节气 images compressed 48MB->1MB WebP.\n\nv0.5.4 | 2026-05-30T10:16:16.504Z | user\n\nSecurity hardening: production URL (was test), static imports (was dynamic), metadata sync. Clarify L1 OpenID is public OB service address.\n\nv0.5.3 | 2026-05-29T11:02:10.843Z | user\n\nv0.5.3: E2EE key persistence fix (memory→file keystore), L1 story engine with 497-story corpus, L1-first filter-stories with 20-story fallback, remove manual tryDecrypt (SDK auto-handles E2EE), remove corpus.json(371KB)/persuasion.js/ad-fields, tighten triggers, honest privacy disclosure\n\nv0.5.2 | 2026-05-29T01:02:58.349Z | user\n\nv0.5.2: honest privacy disclosure (OpenID/city/date transmission documented), removed ad-targeting fields (interest_tags/auto_learn), tightened trigger phrases (require 小龙虾 prefix), consent prompt covers persistent storage and discovery OpenID usage\n\nv0.5.1 | 2026-05-28T10:30:06.039Z | user\n\nv0.5.1: enforce paragraph format (no tables), mandatory story matching for all flows, improved line break and separator formatting\n\nv0.5.0 | 2026-05-28T10:10:11.569Z | user\n\nv0.5.0: 5-dim classification, 500-story corpus\n\nv0.4.5 | 2026-05-27T22:10:18.548Z | user\n\n回退到 0.4.3 原始代码（通过 0.4.5 版本发布）\n\nv0.4.4 | 2026-05-27T22:03:55.849Z | user\n\nv0.4.4: 新增农历日期(lunar字段)、AHA_MAP从18扩展到70+模板覆盖全年24节气×3维度、local-calendar支持2025-2026跨年度、修复OB v0.14.x兼容性(messaging.send/sendJson)、新增set-profile命令、修复index.js中L1请求超时逻辑\n\nv0.4.3 | 2026-05-27T12:40:51.967Z | user\n\n代码级同意门控(consent.json/consent_required状态)、安装≠同意声明、OpenID仅用于去重、status永久脱敏、依赖锁定^0.14.2\n\nv0.4.2 | 2026-05-27T11:18:52.813Z | user\n\n显式同意流程(3做+3不做+同意/不了选项)+profile与衍生数据措辞区分+discovery OpenID传输披露(仅用于去重)\n\nv0.4.1 | 2026-05-27T10:18:08.912Z | user\n\n隐私透明化大修：OB OpenID机制详解(可更换不可追踪/SDK开源可审计/比HTTPS安全)、首次运行征求确认流程、描述诚实披露能力、删除广告类偏好字段、status命令默认脱敏\n\nv0.4.0 | 2026-05-27T06:50:18.120Z | user\n\nV2推荐引擎：L1服务端ClawHub API候选池+去重，MOOC课程目录20门，候选≠已推荐精准追踪，含直接安装链接\n\nv0.3.2 | 2026-05-27T05:55:33.370Z | user\n\n收紧ClawHub推荐过滤：≥20星+>5000下载+非自营。确保只推荐社区认可的高质量skill\n\nv0.3.1 | 2026-05-27T05:24:25.719Z | user\n\n推荐引擎增加硬性质量过滤：ClawHub需≥4星+>1000下载，公开课需≥4.0分+≥5000人选。避免推荐0星低质内容\n\nv0.3.0 | 2026-05-27T03:28:49.072Z | user\n\n新增每日推荐引擎(ClawHub技能+公开课)+每日修炼小提醒(9人格×3体裁日27条)+每日运势格式升级含修炼+推荐两大区块\n\nv0.2.2 | 2026-05-27T02:29:46.899Z | user\n\nL1 黄历数据去迷信化：彭祖百忌/星宿/建除/纳音改写为现代生活节奏提示，宜忌白名单保留5项（订婚/出行/栽种/入学/会友），剔除神煞/冲煞/胎神/方位吉凶等迷信字段\n\nv0.2.1 | 2026-05-26T14:52:59.897Z | user\n\n结尾改为零压力邀请式（不再让用户打分）。新增黄历使用原则：佐料不是主菜，1-2条编入叙事。模板全中文化。\n\nv0.2.0 | 2026-05-26T14:33:27.572Z | user\n\n重大更新：接入完整黄历数据——宜忌、神煞、冲煞、彭祖百忌、星宿、建除十二神、纳音。每日运势现在包含真正的黄历信息。\n\nv0.1.9 | 2026-05-26T14:10:07.737Z | user\n\n更新 L1 服务 OpenID（服务器重置）。旧 L0 地址正常运行中。\n\nv0.1.8 | 2026-05-26T13:33:16.018Z | user\n\n添加 README.md——徽章、架构图、快速开始、相关项目。品牌装修完成。\n\nv0.1.7 | 2026-05-26T13:09:49.584Z | user\n\n精简介绍——不看星座，不填问卷，说一句「看运势」就行。\n\nv0.1.6 | 2026-05-26T13:04:40.710Z | user\n\n你说得对，之前读起来像个产品经理写的。现在改成跟朋友说话的语气。\n\nv0.1.5 | 2026-05-26T12:59:32.391Z | user\n\n全中文版——简介、功能亮点、用户证言全部中文化。\n\nv0.1.4 | 2026-05-26T12:53:08.397Z | user\n\nListing overhaul: compelling hook, feature highlights, user testimonial. Description now reads like a product, not a spec sheet.\n\nv0.1.3 | 2026-05-26T12:43:24.310Z | user\n\nNew: daily cron setup prompt after first reading. CC users can enable 7:37 AM daily fortune delivery via built-in CronCreate. Includes cancel instructions.\n\nv0.1.2 | 2026-05-26T12:19:50.304Z | user\n\nFix: stabilized L1 connectivity with new OB OpenID, wrapPlaintext decryption fallback, SDK v0.12/v0.13 API compatibility\n\nv0.1.1 | 2026-05-26T11:58:02.470Z | user\n\nFix SDK compat\n\nv0.1.0 | 2026-05-26T11:25:36.843Z | user\n\nInitial release: deep personality reading with Chinese almanac. 6-step analysis, 9-label system, daily fortune with Aha Moment engine, OB L0 identity bootstrap.\n\nArchive index:\n\nArchive v0.8.0: 20 files, 1185194 bytes\n\nFiles: CLAUDE.md (6300b), manifest.yaml (1263b), package.json (495b), README.md (5782b), skill-card.md (3018b), SKILL.md (20781b), src/assets/cards-base64.json (1464697b), src/cal-templates.js (20210b), src/card-generator.js (7465b), src/consent.js (886b), src/corpus-fallback.json (18885b), src/dimensions.js (7032b), src/history.js (3934b), src/identity.js (1208b), src/index.js (13008b), src/local-calendar.js (4392b), src/ob-client.js (1521b), src/preferences.js (1072b), src/profile.js (1467b), _meta.json (133b)\n\nFile v0.8.0:SKILL.md\n\n---\r\nname: lobster-haoyun\r\nversion: 0.8.0\r\ndescription: >\r\n  从你的对话和记忆中观察行为模式，用5个维度为你画像（工作方式/沟通模式/关注焦点/能量来源/情感倾向），\r\n  生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。\r\n  通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿名 OpenID，\r\n  用于获取节气黄历、匹配经典故事和推荐社区 Skill/公开课。对话内容、项目名、人名永不离开设备。\r\n  首次使用自动创建 OceanBus 匿名身份（密码学随机生成，删除 ~/.lucky-lobster/ 即可永久清除）。\r\nhomepage: https://github.com/ryanbihai/lobster-haoyun\r\nmetadata:\r\n  clawdbot:\r\n    requires:\r\n      bins:\r\n        - node\r\n    envVars:\r\n      - name: OCEANBUS_URL\r\n        required: false\r\n        description: OceanBus L0 API base URL\r\n      - name: LUCKY_LOBSTER_SVC_OPENID\r\n        required: false\r\n        description: L1 service OpenID for calendar + discovery\r\n    emoji: 🦞\r\n    skillKey: 龙虾好运势\r\n    os:\r\n      - macos\r\n      - linux\r\n      - windows\r\nfiles:\r\n  - src/*\r\n  - src/assets/*\r\nrequired_capabilities:\r\n  - filesystem\r\n  - network\r\n---\r\n\r\n# 🦞 龙虾好运势 v0.8.0\r\n\r\n> *说一句「看运势」，剩下的事交给小龙虾。*\r\n\r\n不问你生日星座，从你的行为模式中读懂你——你喜欢怎么工作、怎么沟通、怎么决策。用 5 个维度为你画像，匹配经典故事，生成每日运势。\r\n\r\n**能力披露**：小龙虾读取你的对话记忆和会话风格进行本地行为分析。分析后，以下数据通过 OceanBus 加密通道发往 L1 服务：5维行为代码、城市级位置（如你填写了城市）、查询日期、以及用于服务通信的 OceanBus 匿名标识符（OpenID，密码学随机生成，可随时删除更换）。L1 服务使用 OpenID 仅为关联请求与响应——不关联真实身份。Skill/MOOC 推荐功能也会发送 OpenID 用于去重。**对话内容、项目名、人名永不离开你的设备。**\r\n\r\n## Trigger Keywords\r\n\r\n- \"小龙虾\" + \"看运势\" / \"今日运势\" / \"我的运势\" — 需同时包含\"小龙虾\"和运势关键词\r\n- \"小龙虾帮我算算\" / \"小龙虾看看我\"\r\n- \"重新认识我\" — 强制重新分析（仅当对话中已建立小龙虾上下文时生效）\r\n- \"fortune\" / \"daily fortune\" / \"personality reading\"\r\n\r\n> 触发词设计原则：避免日常对话中意外激活。单独的\"看运势\"不触发——必须是\"小龙虾看运势\"或类似组合。\r\n\r\n## Output Tone\r\n\r\n**温暖、简短、不啰嗦。** 用简洁的句子，不命令、不空洞夸奖。\r\n\r\n| 禁用 | 原因 |\r\n|:---|:---|\r\n| \"你应该\" / \"你必须\" / \"你一定要\" | 不命令 |\r\n| \"太棒了\" / \"真厉害\" / \"你好优秀\" | 空洞夸奖 |\r\n| 🦞🦞🦞✨✨✨ 堆砌 | 保持干净 |\r\n\r\n每条性格判断都带具体行为证据。\"你偏向架构型——上次讨论 XX 项目时，你先画了架构图才写代码。\"\r\n\r\n## Personality System: 5-Dimension Behavioral Classification\r\n\r\n> **面向用户的原则：永远展示维度解读，永远不展示代码或缩写。** `架精事内理` 是 JS 内部存储用的——用户看到的是\"你喜欢先搭框架再动手，沟通精炼直接，关注任务进度，独处时蓄能，用逻辑做判断\"。\r\n\r\n小龙虾从你的对话、memory、文件中观察 5 个行为维度，每个维度二选一：\r\n\r\n| 维度 | A | B |\r\n|:---|:---|:---|\r\n| 工作方式 | 🏗️ 架构型：先搭框架、写大纲、列步骤 | 🚀 探索型：先动手试试、边做边调整 |\r\n| 沟通模式 | 📝 精炼型：简洁直接、结论先行 | 📖 叙事型：先讲背景、铺陈上下文 |\r\n| 关注焦点 | 🔧 事务型：关注任务、进度、结果 | 👥 人际型：关注关系、氛围、感受 |\r\n| 能量来源 | 🔋 内收型：独立工作、深度思考 | ⚡ 外放型：协作讨论、头脑风暴 |\r\n| 情感倾向 | 🌊 理性型：逻辑处理冲突、决策靠证据 | 🔥 感性型：共情处理冲突、决策靠直觉 |\r\n\r\n### 32 Type Table (internal reference only — NEVER show codes or table to user)\r\n\r\nJS 用 5 字代码存储和过滤，LLM 用此表查标签名传 `--type` 参数。用户永远看不到代码和此表。\r\n\r\n| 代码 | 标签 | 画像 |\r\n|:---|:---|:---|\r\n| 架精事内理 | 精算师 | 精准谋划，独自高效执行 |\r\n| 架精事内感 | 实干家 | 安静做事，心中有标准，用行动说话 |\r\n| 架精事外理 | 领航员 | 定好方向，带团队高效抵达 |\r\n| 架精事外感 | 破风手 | 冲在最前，为团队劈开阻力 |\r\n| 架精人内理 | 洞察者 | 冷眼看透人与事，精准给出判断 |\r\n| 架精人内感 | 倾听者 | 看见每个人的需要，默默安排好一切 |\r\n| 架精人外理 | 召集人 | 把对的人聚在一起，让事情自然发生 |\r\n| 架精人外感 | 连心桥 | 连接人与人的温度，走到哪暖到哪 |\r\n| 架叙事内理 | 求真者 | 凡事追根溯源，厘清逻辑才行动 |\r\n| 架叙事内感 | 深耕者 | 需要理解意义才能全力投入，急不来但走得远 |\r\n| 架叙事外理 | 启明者 | 把复杂的事讲通透，带众人看清方向 |\r\n| 架叙事外感 | 感召者 | 用故事凝聚人心，让每个人看见意义 |\r\n| 架叙人内理 | 静观者 | 在角落看透人心，不轻易开口但开口就准 |\r\n| 架叙人内感 | 守护者 | 所有人的后盾，倾听但不评判 |\r\n| 架叙人外理 | 引路人 | 一对一帮人看清方向，点亮他人的路 |\r\n| 架叙人外感 | 暖心人 | 温暖不灼人，所到之处如春风拂面 |\r\n| 探精事内理 | 行动派 | 看到问题立即动手，用结果说话 |\r\n| 探精事内感 | 孤勇者 | 一个人默默试，用行动表达在乎 |\r\n| 探精事外理 | 破局者 | 带团队冲破僵局，不破不立 |\r\n| 探精事外感 | 点燃者 | 冲在最前，用热情点燃整个团队 |\r\n| 探精人内理 | 解铃人 | 精准发现关系中的症结，一语道破 |\r\n| 探精人内感 | 润物者 | 不声不响，但每个人都被他滋养 |\r\n| 探精人外理 | 联络官 | 快速连接人与资源，精准高效 |\r\n| 探精人外感 | 发光者 | 自然成为人群的中心，照亮身边的人 |\r\n| 探叙事内理 | 探路者 | 对新领域充满好奇，先研究透了再说 |\r\n| 探叙事内感 | 梦想家 | 脑子里充满可能性的世界，不急但不停 |\r\n| 探叙事外理 | 开拓者 | 带团队闯向未知，边走边讲清路线 |\r\n| 探叙事外感 | 筑梦人 | 用理想感染众人，一起把梦建成现实 |\r\n| 探叙人内理 | 静思者 | 享受一对一的深度对话，在安静中洞察 |\r\n| 探叙人内感 | 善解者 | 用细腻的感受力理解每一个独特的灵魂 |\r\n| 探叙人外理 | 连接者 | 把人脉和资源编织成有意义的生态 |\r\n| 探叙人外感 | 凝聚者 | 走到哪都自然聚合一群人，气氛永远热烈 |\r\n\r\n## Execution Flow\r\n\r\n### Step 0: First-Run Consent\r\n\r\nIf `data.history.is_first_time` is true AND `data.profile` does not exist → display consent prompt and wait for explicit agreement (\"同意\"/\"好\"/\"yes\"/\"ok\").\r\n\r\n```\r\n🦞 第一次见面！开始之前，请你确认以下事项：\r\n\r\n**小龙虾会做什么：**\r\n1️⃣ 读取你的对话记忆和会话风格，在本地分析你的行为模式\r\n   → 对话内容、项目名、人名永远不离开你的设备\r\n2️⃣ 分析后，通过 OceanBus 加密通道向 L1 服务发送以下数据：\r\n   → 5维行为代码（如\"架精事内理\"）—— 不包含具体对话内容\r\n   → 城市级位置（如你填写了城市）—— 用于节气黄历查询\r\n   → 查询日期 —— 用于黄历数据\r\n   → OceanBus OpenID（密码学随机生成）—— L1 用于关联请求与响应\r\n3️⃣ 在本地 ~/.lucky-lobster/ 存储：\r\n   → OB 身份凭据（OpenID + API Key）—— 用于 OceanBus 通信\r\n   → 行为画像、运势历史、推送偏好、同意记录\r\n4️⃣ 每日推荐（Skill/公开课）发送 OpenID 给 L1 用于去重\r\n   → 不含广告追踪，仅用于社区内容推荐\r\n\r\n**小龙虾不会做：**\r\n❌ 发送你的姓名、电话、邮箱、IP、GPS\r\n❌ 发送你的对话记录、项目名、文件名\r\n❌ 将你的数据交给第三方广告商或追踪网络\r\n❌ 你的 OpenID 是密码学随机生成的，不关联真实身份\r\n   → 删除 ~/.lucky-lobster/ 即永久清除身份，下次自动生成新身份\r\n\r\n请选择：\r\n👉 输入「同意」或「好」开始 → 👉 输入「不了」我会等你\r\n```\r\n\r\nDo NOT proceed without explicit agreement. After consent, continue to Step 1.\r\n\r\n### Step 1: Fetch Base Data\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action fortune\r\n```\r\n\r\nRead JSON output. Key fields:\r\n- `flow` — \"first_reading\" | \"daily_fortune\" | \"weekly_review\"\r\n- `personality` — `{ has_dimensions, needs_reevaluation, dimensions: { code, type_name, confidence }, label_for_compat }`\r\n- `data.profile`, `data.calendar`, `data.history`, `data.term`\r\n\r\n### Step 2: Context Sensing + Dimension Analysis (silent)\r\n\r\n**A. Scan recent ~20 conversation turns.** Extract:\r\n- Emotion signal (高压: stress/deadline, 迷茫: uncertainty, 兴奋: new project energy, 疲惫: burnout, 平稳: normal)\r\n- Topic keywords (3-5 nouns/verbs — what user is working on)\r\n- Feedback preference (short vs detailed, deep questioning vs surface acceptance)\r\n- Life phase: 高压期 | 迷茫期 | 平稳期 | 过渡期\r\n\r\n**B. If `personality.has_dimensions` is FALSE or `personality.needs_reevaluation` is TRUE:**\r\nPerform full dimension analysis. For each dimension, write a paragraph of 2-4 sentences with specific evidence. **Use paragraph format — never tables. Never use single-line summaries.** This analysis will be rendered verbatim in Step 5.\r\n\r\nWrite the analysis in this exact structure, saving each part for Step 5 rendering:\r\n\r\n1. **工作方式** — Which pole (架构型 or 探索型)? Evidence: cite a specific behavior from their memory/CLAUDE.md/conversation. Then explain what this means for how they work.\r\n2. **沟通模式** — Which pole (精炼型 or 叙事型)? Evidence: cite a specific message or communication pattern.\r\n3. **关注焦点** — Which pole (事务型 or 人际型)? Evidence: cite what they talk about most.\r\n4. **能量来源** — Which pole (内收型 or 外放型)? Evidence: cite work patterns and social references.\r\n5. **情感倾向** — Which pole (理性型 or 感性型)? Evidence: cite decision style and conflict handling.\r\n\r\nAfter writing the analysis, assemble the 5-char code internally, look up type_name from the 32-type table, and call:\r\n```bash\r\nnode <skill-path>/src/index.js --action save-dimensions --code <5chars> --confidence <0-1>\r\n```\r\n\r\n**CRITICAL RULES:**\r\n- Write in natural language paragraphs, NOT tables, NOT bullet lists with single-line evidence\r\n- Each dimension paragraph must be 2-4 sentences: pole + evidence + implication\r\n- The 5-char code and type_name are for internal JS storage only — never show to user\r\n- Save the full paragraph text for rendering in Step 5\r\n\r\n### Step 3: 微故事合成（所有 flow 强制执行）\r\n\r\n**每次运势生成必须执行此步骤。**\r\n\r\n先调用 filter-stories：\r\n```bash\r\nnode <skill-path>/src/index.js --action filter-stories --emotion <signal> --life-phase <phase>\r\n```\r\n\r\n> L1 服务在 158 条成语典故/寓言/禅宗公案上运行加权评分，返回 top 8 候选人。L1 不可用时自动降级到本地 20 条精简语料（响应中 `fallback: true`）。\r\n\r\n如果尚未存储维度 → filter-stories 返回空候选 → 跳过故事块。\r\n\r\n---\r\n\r\n**写一个原创微故事。**\r\n\r\n经典候选（来自 filter-stories）只作为故事骨架的参考。你写的必须是一个神似形不似的、独立的、自己就能站住的日常故事。\r\n\r\n---\r\n\r\n**三条核心原则：**\r\n\r\n**A1 — 共鸣优先于聪明。** 读者读完的感受是「有启发」。不需要解码，不需要揣摩，不要晦涩，不要装高深、装深刻；浅显易懂，故事必须有故事性（成长、起伏、反转等）。不要讲悲伤的故事。故事不要模拟用户的身份，侵犯用户隐私。\r\n\r\n**A2 — 故事独立存在。** 去掉所有上下文和回调句，这个 200 字的故事自己就能让人觉得“有意思”。\r\n\r\n\r\n\r\n**关于回调句（可选）：**\r\n\r\n写完故事后，回看 filter-stories 返回的候选经典。如果恰好有一句原文与故事情感自然契合——注意，是「恰好」，不是硬凑——就把它附在文末：斜体、独立一行、不写出处、不加解释。\r\n\r\n如果找不到自然契合的，**不附回调完全没问题。宁可没有回调，也不要一个让读者困惑的回调。**\r\n\r\n**禁止自撰文言回调。** 只使用候选经典中已有的原文。如果候选经典都不适合——说明这个故事的灵感不需要来自经典，这完全正常。\r\n\r\n---\r\n\r\n**写完后的自检（强制执行，三条全部通过才算合格）：**\r\n\r\n- **奶奶测试：** 不借助任何上下文，一个普通人读一遍能懂吗？故事性如何？有意思吗？如果会问「这是什么意思？」——重写。\r\n- **去回调测试：** 遮住最后一行斜体。故事还能让人心里动一下吗？如果去掉回调后故事少了一块——重写。\r\n\r\n---\r\n\r\n**记录使用（14 天内不重复）：**\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action record-story --id <story_id>\r\n```\r\n\r\n此命令将该故事 ID 写入近期记录。14 天内同一故事自动从候选中排除——下次同一用户做运势时不会看到同样的底色故事。\r\n\r\n### Step 4: Discovery (daily fortune only, skip on first reading)\r\n\r\n> 此步骤向 L1 发送 OpenID 用于推荐检索和去重。不含广告追踪，仅推荐社区 Skill 和公开课。\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action discovery\r\n```\r\n\r\nPick 1 best match from ClawHub/MOOC candidates. Render as:\r\n```\r\n📌 小龙虾发现了这个：\r\n[{display_name}]({url}) — {summary}\r\n→ 适合你，因为：{reason tied to dimensions/blindspot}\r\n```\r\n\r\nSkip if no candidates.\r\n\r\n### Step 5: Render Output\r\n\r\n**First Reading — MANDATORY FORMAT. Do NOT use tables. Do NOT compress into single lines.** Follow this exact structure with paragraph breaks between every section:\r\n\r\n---\r\n\r\n🦞 {user_name} · {season}命盘\r\n\r\n小龙虾掐指一算——\r\n\r\n**你的底色：{type_name}**\r\n\r\n{通俗解释，用大白话，2-3句。例如精算师→\"说白了你是个喜欢在安静中把框架想透、用最少的话给最准的指令、靠逻辑推着事情往前走的人。\"}\r\n\r\n---\r\n\r\n展开说说为什么——\r\n\r\n**你怎么做事：{架构型 or 探索型}**\r\n\r\n{Write the full paragraph from Step 2B analysis here. 2-4 sentences with specific evidence cited. Then add what this means — the implication of this trait.}\r\n\r\n（空一行）\r\n\r\n**你怎么说话：{精炼型 or 叙事型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n（空一行）\r\n\r\n**你关注什么：{事务型 or 人际型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n（空一行）\r\n\r\n**你从哪里获得能量：{内收型 or 外放型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n（空一行）\r\n\r\n**你怎么做判断：{理性型 or 感性型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n---\r\n\r\n**你的盲区**\r\n\r\n{Based on the 5 dimension extremes, name 1-2 specific blindspots. MUST tie to user's actual situation — not generic advice.}\r\n\r\n📖 **{story_title}**\r\n\r\n{微故事正文。150-300 字，纯叙事，不讲道理。段落间用空行分隔。}\r\n\r\n*{callback_line}*\r\n\r\n**建议**\r\n\r\n> {advice 1 — specific, tied to user's current project/situation}\r\n\r\n> {advice 2 — \"too small to fail\" micro-step}\r\n\r\n好了，算完了 🦞\r\n\r\n**MANDATORY: After rendering the fortune text, generate the PNG card:**\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action generate-card --type-name \"<type_name>\" --one-liner \"<fortune_one_liner>\" --story-title \"<story_title>\" --solar-term \"<solar_term>\"\r\n```\r\n\r\n- `<type_name>` — user's type label (e.g. \"精算师\")\r\n- `<fortune_one_liner>` — the 「运势一句话」from the fortune output (≤20 chars, shareable)\r\n- `<story_title>` — micro-story title from Step 3 (1-4 chars)\r\n- `<solar_term>` — current solar term (e.g. \"小满\")\r\n\r\nThe command outputs `{ file: \"<path>.png\" }`. **Show the PNG to the user** — include the file path and describe it as \"运势卡片已生成\".\r\n\r\n每天早上七点半，小龙虾会告诉你今天适合做点什么小事。想试试的话，说一声就好。\r\n\r\n---\r\n\r\n**FORMAT RULES:**\r\n- Use paragraph format throughout — NEVER use tables\r\n- Each dimension section must have: bold header + blank line + paragraph + blank line before next section\r\n- The `---` separator must appear exactly where shown above\r\n- Never show 5-char codes or the 32-type table\r\n- Story is mandatory if Step 3 returned candidates — do not skip it\r\n- Story title: 1-4 characters, named after a concrete object or action from the story (not an idiom, not a concept)\r\n- Story body: 150-300 characters, pure narrative, no interpretation or user-context linkage\r\n- Callback line (OPTIONAL): standalone, italic, no attribution, no explanation. Omit if no natural fit from classic candidates. Never self-compose classical Chinese.\r\n\r\nIf user agrees to daily delivery → CronCreate at `30 7 * * *`.\r\n\r\n**Daily Fortune:**\r\n\r\n轻量格式。不重复维度分析。但必须包含 Step 3 的故事——这是每日运势的核心亮点。\r\n\r\n**例外**：当用户明确要求\"完整测试\"/\"全面看看\"/\"重新分析\"/\"看看我的五维\"时，即使是 daily fortune 也展开完整五维画像（First Reading 格式中的 5 段维度分析 + 盲区）。这通常发生在用户想验证系统是否正常工作、或者想看看这段时间自己是否有变化的场景。\r\n\r\n---\r\n\r\n🦞 {user_name}，{date} · {solar_term}\r\n\r\n{emotion_acknowledgment — if strong signal detected from today's conversation, one line max}\r\n\r\n{节气感悟 — 节气与日常的连接，2-3 句}\r\n\r\n🧘 今日修炼：{cultivation_tip — by genre: 收网日/充电日/连接日}\r\n\r\n**今日微行动**：{one tiny doable action}\r\n\r\n📖 **{story_title}**\r\n\r\n{微故事正文。150-300 字，纯叙事。没有任何解读，故事本身就是一切。}\r\n\r\n*{callback_line — 可选，仅当自然契合时}*\r\n\r\n运势一句话：**{one-liner}**\r\n\r\n**MANDATORY after rendering: generate the PNG card** — same as First Reading above.\r\n\r\n---\r\n\r\n**FORMAT RULES:**\r\n- Story is MANDATORY — always call Step 3 filter-stories and always render the micro-story\r\n- Story must be the 150-300 character synthesized micro-story (not the classic story itself)\r\n- Callback line (OPTIONAL): standalone and italic, with no attribution or explanation. Omit if no natural fit — never force it. Never self-compose classical Chinese.\r\n- Never show 5-char codes or type labels in output\r\n- Keep it light — this is a daily ritual, not a deep analysis\r\n\r\n**Weekly Review (Sunday):**\r\n\r\n```\r\n🦞 {user_name}，{date} · 本周回望\r\n\r\n{week summary}\r\n\r\n**人格洞察更新**\r\n{updated observation — reference changes from last reading}\r\n\r\n**今日运势**\r\n{daily fortune content}\r\n```\r\n\r\n### Step 6: Follow-up + Social Sharing\r\n\r\n**After every fortune card, append 2 lightweight follow-up prompts:**\r\n```\r\n---\r\n💬 「展开说说」— 证据细节\r\n💬 「不太准」— 我更正一下\r\n```\r\n\r\n**Social sharing: ONLY suggest if user has shown satisfaction first.**\r\nSignals: \"哈哈准了\" / \"有意思\" / \"确实\" / \"你怎么知道的\" / user asks follow-up questions.\r\n\r\nIf triggered, optionally append ONE line:\r\n> 觉得小龙虾还挺懂你的？可以说「帮朋友看看」或分享邀请码给熟人，一起看关系解读。\r\n\r\nNEVER proactively suggest sharing. NEVER on first reading.\r\n\r\n### User Trigger: \"重新认识我\"\r\n\r\nForce LLM full re-analysis of all 5 dimensions. Call `--action save-dimensions` with new results.\r\n\r\n### User Trigger: \"取消运势提醒\"\r\n\r\nUse CronDelete to remove the daily fortune cron job. Confirm: \"运势提醒已取消。\"\r\n\r\n## Social Sharing Trigger Rules\r\n\r\n1. Only suggest after user expresses satisfaction (NOT proactively)\r\n2. NOT during first reading\r\n3. At most ONE line, appended after follow-up prompts\r\n4. Emphasize privacy: sharing only shows fortune card, never personal data\r\n\r\n## Dependencies\r\n\r\n- `oceanbus` — L0 P2P identity and messaging\r\n- Node.js `>=18.0.0`\n\nFile v0.8.0:README.md\n\n# 🌊 龙虾好运势 — 说一句「看运势」，剩下的交给小龙虾\r\n\r\n**不看星座，不填问卷。从你的对话、工作、思考方式里读懂你。**\r\n\r\n[![ClawHub](https://img.shields.io/badge/ClawHub-lobster--haoyun-blue)](https://clawhub.ai/skills/lobster-haoyun)\r\n[![GitHub stars](https://img.shields.io/github/stars/ryanbihai/lobster-haoyun)](https://github.com/ryanbihai/lobster-haoyun)\r\n[![OceanBus](https://img.shields.io/badge/OceanBus-L0%20%2B%20L1-orange)](https://www.npmjs.com/package/oceanbus)\r\n[![license](https://img.shields.io/badge/license-MIT--0-green)](LICENSE)\r\n\r\n---\r\n\r\n## 📑 目录\r\n\r\n- [这是什么](#这是什么)\r\n- [快速开始](#快速开始)\r\n- [能力一览](#能力一览)\r\n- [架构](#架构)\r\n- [本地测试](#本地测试)\r\n- [安全与隐私](#安全与隐私)\r\n- [相关项目](#相关项目)\r\n- [参与贡献](#参与贡献)\r\n- [License](#license)\r\n\r\n---\r\n\r\n## 这是什么\r\n\r\n龙虾好运势是一个基于 OceanBus 的 ClawHub Skill。跟市面上所有运势产品不一样——它不问你生日，不让你填问卷。它从你的对话历史、记忆文件、工作模式里观察你，然后告诉你一些关于你自己的、有证据的事。\r\n\r\n**首次读心**会给你一篇深度解读——底色、驱动力、盲区、能量模式。每条判断带着具体证据：\"说你是这种人，是因为我看到了这个\"。\r\n\r\n**每日运势**融合二十四节气和七十二候：小满、芒种、麦秋至……用自然界的节奏隐喻你的状态变化。\r\n\r\n**周日回顾**自动复盘这一周：\"上周看你在搭架构，这周开始动手探索了\"。\r\n\r\n```\r\n你 ⟷ Claude Code ⟷ OB L0 ⟷ L1 CalendarSvc (ECS)\r\n                         ⟷ L1 DiscoverySvc (ECS)\r\n```\r\n\r\n> 📖 **深度阅读**：[SKILL.md](./SKILL.md) — LLM 行为指南与完整协议文档\r\n\r\n---\r\n\r\n## 快速开始\r\n\r\n```bash\r\n# 1. 安装\r\nclawhub install lobster-haoyun\r\n\r\n# 2. 在 Claude Code 中说\r\n看运势\r\n\r\n# 3. 验证底座连通性\r\nnode src/index.js --action status\r\n```\r\n\r\n首次使用会自动创建 OceanBus 匿名身份（`~/.lucky-lobster/ob-credentials.json`），无需任何配置。\r\n\r\n---\r\n\r\n## 能力一览\r\n\r\n| 能力 | 说明 |\r\n|------|------|\r\n| **深度读心** | 6 步分析引擎：场景判断 → 特征提炼 → 人格匹配 → 盲区推断 → 建议生成 → 渲染输出 |\r\n| **证据引用** | 每条人格判断后面跟具体行为证据，不是泛泛的\"你很优秀\" |\r\n| **每日运势** | 节气感悟引擎——节气 × 人格标签 × 近期行为，每天一条微行动建议 |\r\n| **周回顾** | 每周日自动触发——追踪人格洞察变化，回顾本周进展 |\r\n| **定时推送** | 首次读心后可一键开启每日 7:30 自动运势提醒（CC CronCreate） |\r\n| **隐私优先** | 数据分流——对话内容本地处理，仅5维代码+城市+日期+OpenID 经 OB L0 加密传输 |\r\n\r\n---\r\n\r\n## 架构\r\n\r\n```mermaid\r\ngraph TB\r\n    subgraph LOCAL[\"用户本地\"]\r\n        CC[Claude Code]\r\n        SKILL[龙虾好运势 Skill]\r\n        DATA[(\"~/.lucky-lobster/<br/>profile · history · prefs\")]\r\n    end\r\n    subgraph OB[\"OceanBus 网络\"]\r\n        L0[L0 消息路由]\r\n        L1_CAL[L1 CalendarSvc<br/>节气 · 黄历 · 七十二候]\r\n        L1_DISC[L1 DiscoverySvc<br/>社区 Skill/公开课推荐]\r\n    end\r\n    CC -->|\"看运势\"| SKILL\r\n    SKILL --> DATA\r\n    SKILL -->|\"5维代码+城市+日期+OpenID\"| L0\r\n    L0 --> L1_CAL\r\n    L0 --> L1_DISC\r\n    L1_CAL -->|\"节气数据\"| L0\r\n    L1_DISC -->|\"推荐列表\"| L0\r\n    L0 --> SKILL\r\n    SKILL -->|\"Markdown 运势\"| CC\r\n```\r\n\r\n---\r\n\r\n## 本地测试\r\n\r\n```bash\r\n# 底座状态（OB 身份 + 画像 + 历史）\r\nnode src/index.js --action status\r\n\r\n# 完整运势数据（含 L1 日历数据，需 L1 服务在线）\r\nnode src/index.js --action fortune\r\n\r\n# 直接调用 L1 CalendarSvc\r\nnode src/index.js --action l1-calendar\r\n```\r\n\r\n---\r\n\r\n## 安全与隐私\r\n\r\n- **对话内容永不上传**——完整对话、项目名、人名、文件内容仅本地处理\r\n- **通过 OceanBus 加密通道发送以下数据到 L1 服务**：\r\n  - 5维行为代码（如\"架精事内理\"）——不含具体对话内容\r\n  - 城市级位置（仅当用户填写了城市）\r\n  - 查询日期 ——用于黄历节气数据\r\n  - OceanBus OpenID（密码学随机生成）——L1 用于关联请求与响应\r\n- **本地存储**：`~/.lucky-lobster/` 存放 OB 身份凭据、行为画像、运势历史、推送偏好、同意记录\r\n- **OpenID 可随时清除**——删除 `~/.lucky-lobster/` 即永久清除身份，下次自动生成新身份\r\n- **每日推荐（Skill/公开课）**：发送 OpenID 给 L1 用于去重，不含广告追踪\r\n- **不含广告追踪**——不收集兴趣标签，不发送给第三方广告商\r\n\r\n---\r\n\r\n## 相关项目\r\n\r\n| 项目 | 说明 |\r\n|------|------|\r\n| [oceanbus](https://www.npmjs.com/package/oceanbus) | 核心 SDK — `npm install oceanbus` |\r\n| [Ocean Chat](https://clawhub.ai/skills/ocean-chat) | P2P 消息与黄页发现 |\r\n| [Captain Lobster](https://clawhub.ai/skills/captain-lobster) | 零玩家 AI 交易游戏 |\r\n| [Find Agent](https://clawhub.ai/skills/find-agent) | OceanBus 黄页搜索 |\r\n| [Guess AI](https://clawhub.ai/skills/guess-ai) | 多人 AI 推理游戏 |\r\n\r\n---\r\n\r\n## 参与贡献\r\n\r\n龙虾好运势是 MIT-0 协议的开源项目，欢迎贡献。\r\n\r\n- **GitHub**: [ryanbihai/lobster-haoyun](https://github.com/ryanbihai/lobster-haoyun)\r\n- **可参与方向**: 人格标签文案打磨、节气感悟模板补充、情感型用户场景测试\r\n- **深度阅读**: [SKILL.md](./SKILL.md) — LLM 行为指南与完整协议文档\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT-0 — 自由使用、修改、分发。无需署名。\n\nFile v0.8.0:_meta.json\n\n{\n  \"ownerId\": \"kn75dvek1dkfz0r0xwdp4xtc2983qg44\",\n  \"slug\": \"lobster-haoyun\",\n  \"version\": \"0.8.0\",\n  \"publishedAt\": 1780969979002\n}\n\nFile v0.8.0:CLAUDE.md\n\n# lucky-lobster — 龙虾好运势\r\n\r\nAgent-based deep personality reading skill for ClawHub. Zero user input — analyzes from memory, session history, loaded files.\r\n\r\n## Commands\r\n\r\n```bash\r\nnpm install\r\nnode src/index.js --action status              # OB identity + profile + history + dimensions\r\nnode src/index.js --action fortune              # Full flow: calendar + fortune data + personality state\r\nnode src/index.js --action save-dimensions --code <5chars> --confidence <0-1>\r\nnode src/index.js --action filter-stories [--emotion <e>] [--life-phase <p>]\r\nnode src/index.js --action l1-calendar          # Direct L1 CalendarSvc call\r\nnode src/index.js --action discovery            # ClawHub/MOOC candidates from L1\r\nnode src/index.js --action discovery-shown --source <s> --slug <slug>\r\n```\r\n\r\n## Architecture\r\n\r\n```\r\nUser says \"看运势\" in CC\r\n       │\r\n       ▼\r\nCC runs: node src/index.js --action fortune\r\n       │\r\n       ├── identity.js → restore OB identity (~/.lucky-lobster/ob-credentials.json)\r\n       ├── profile.js  → load profile + dimensions (5-dim behavior code)\r\n       ├── local-calendar.js → calendar fallback (节气/季节/日期)\r\n       │      or L1 CalendarSvc via OB L0 (if LUCKY_LOBSTER_SVC_OPENID set)\r\n       │\r\n       ▼\r\nOutput JSON: { flow, personality: {has_dimensions, needs_reevaluation, dimensions}, data, _instructions }\r\n       │\r\n       ▼\r\nCC reads SKILL.md → context sensing → dimension analysis → save-dimensions\r\n       │\r\n       ├── filter-stories → L1 story engine (158-story corpus) or local fallback (20 stories)\r\n       │\r\n       ▼\r\nRender Markdown (tag hook + 5-dim breakdown + story + blindspot + advice)\r\n```\r\n\r\n### Key Design Decisions\r\n\r\n- **LLM qualitative + JS quantitative**: LLM judges 5 dimensions with evidence → JS stores 5-char code, filters 158-story corpus (idiom/fable/zen), computes matches. LLM never touches raw filtering logic.\r\n- **5-Dimension Behavioral Classification**: Replaces old 9-label system (布局者/观察者/etc). Observed from actual behavior: 工作方式(架构/探索) × 沟通模式(精炼/叙事) × 关注焦点(事务/人际) × 能量来源(内收/外放) × 情感倾向(理性/感性) = 32 types.\r\n- **Expanded output, not codes**: User sees natural language dimension breakdown with evidence. 5-char code (e.g. `架精事内理`) is internal storage only — never shown to user.\r\n- **149-story corpus on L1**: idiom (成语典故), fable (寓言), zen (禅宗公案). Each story tagged with emotions, personality_fit, seasonal_fit, life_situations. Weighted scoring runs on ECS via `fortune:filter-stories`. Top 8 candidates returned over OB encrypted channel. LLM synthesizes an original micro-story using the classic as narrative shadow. Client-side fallback: 20-story lightweight corpus with full emotional/life-phase coverage.\r\n- **L1-first story matching**: `--action filter-stories` sends 5-char code + season + emotion + lifePhase to L1 (no conversation content). Falls back to local 6-story `corpus-fallback.json` if L1 unavailable.\r\n- **Local calendar fallback**: When L1 CalendarSvc is unavailable, `local-calendar.js` provides season/solar term data.\r\n- **A/B data split**: Behavioral analysis stays local (A data). 5-char dimension code + city (if provided) + date + OpenID go to L1 via encrypted OB L0 (B data).\r\n- **Three flows**: first_reading (5-dim + story) → daily_fortune (story matching) → weekly_review.\r\n\r\n## File Map\r\n\r\n```\r\nsrc/\r\n  index.js             — CLI entry: fortune/save-dimensions/filter-stories/status/l1-*/discovery\r\n  dimensions.js        — 5-dim definitions + 32-type TYPE_TABLE + filterCorpus() scoring engine\r\n  corpus-fallback.json — 22 curated stories for offline fallback (~19KB)\r\n  identity.js          — OB identity auto-register + restore from disk\r\n  ob-client.js         — OB connection wrapper (sendJson, startListening, L1 request/response)\r\n  profile.js           — Profile I/O + dimension storage (~/.lucky-lobster/profile.json)\r\n  history.js           — Fortune history + streak + Sunday detection\r\n  preferences.js       — Push preferences (enabled, frequency, quiet hours)\r\n  local-calendar.js    — Lightweight calendar fallback (24 term dates, seasons)\r\n  cal-templates.js     — 节气感悟引擎（24 节气 × 3-5 变体模板）\r\n  consent.js           — First-run privacy consent gate\r\n```\r\n\r\n## State Files\r\n\r\n```\r\n~/.lucky-lobster/\r\n  ob-credentials.json   — OB identity (agent_id, api_key, openid)\r\n  profile.json          — User info + dimensions {code, type_name, confidence, last_evaluated}\r\n  fortune-history.json  — Past readings (with dimensions field), streak count\r\n  preferences.json      — Push preferences (enabled, frequency, quiet hours)\r\n  consent.json          — Privacy consent record\r\n```\r\n\r\n## Data Flow (Privacy)\r\n\r\n```\r\nA Data (local ONLY):\r\n  对话内容 · 项目名 · 人名 · 行为细节 · 情感状态 · 文件内容\r\n       │ NEVER leaves device\r\n       ▼\r\n  LLM local analysis → 5-dim judgment with evidence citations\r\n\r\nB Data (encrypted → L1 via OB L0):\r\n  5-char dimension code · season · emotion · life phase (for story matching)\r\n  City-level location (if provided) · date (for calendar)\r\n  OpenID (cryptographically random, used for request/response correlation)\r\n  Discovery: OpenID for recommendation dedup (no ad tracking)\r\n       │ via OB L0 (E2EE)\r\n       ▼\r\n  L1 CalendarSvc → solar term / phenology data\r\n  L1 StoryEngine → top 8 matched stories from 158-entry corpus (idiom/fable/zen)\r\n  L1 DiscoverySvc → community skill/MOOC recommendations\r\n\r\nLocal storage (~/.lucky-lobster/):\r\n  OB credentials (OpenID + API key) · profile · dimensions\r\n  fortune history · push preferences · consent record\r\n  → Delete this directory to permanently clear identity\r\n```\r\n\r\n## Environment Variables\r\n\r\n| Variable | Required | Default | Description |\r\n|----------|----------|---------|-------------|\r\n| OCEANBUS_URL | No | https://ai.ihaola.com.cn/api/l0 | L0 API base URL |\r\n| LUCKY_LOBSTER_SVC_OPENID | No | — | L1 service OpenID for calendar + discovery |\r\n\r\n## Dependencies\r\n\r\n- `oceanbus` — L0 P2P identity and messaging (only runtime dep)\r\n- Node.js `>=18.0.0`\n\nFile v0.8.0:skill-card.md\n\n## Description:\n\nLobster Haoyun analyzes local conversation and memory patterns across five behavioral dimensions to generate Chinese personality readings, daily fortunes, cultivation reminders, and optional community recommendations through OceanBus.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[ryanbihai](https://clawhub.ai/user/ryanbihai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal ClawHub users use this skill for Chinese-language self-reflection, daily fortune generation, and lightweight behavioral guidance based on their agent conversation context. It is suited to users who accept local profile storage and limited OceanBus metadata exchange for calendar, story, and recommendation features.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill analyzes agent conversation context and memory to derive a behavioral profile.\n\nMitigation: Use it only after explicit first-run consent, and review the consent disclosure before allowing profile analysis.\n\nRisk: The skill stores derived profile data, history, preferences, consent state, and OceanBus credentials locally under ~/.lucky-lobster.\n\nMitigation: Treat that directory as user data; delete ~/.lucky-lobster to clear the anonymous identity and locally stored profile state.\n\nRisk: The skill sends limited profile metadata, city-level location when provided, date, and anonymous OpenID through OceanBus for calendar, story, and recommendation features.\n\nMitigation: Do not use the network-backed features unless that metadata exchange is acceptable for the user and deployment environment.\n\nRisk: The security guidance notes supply-chain caveats around dependency pinning and downloaded font verification.\n\nMitigation: Prefer deployments that pin dependencies, verify downloaded assets, and document remote fields in the consent prompt.\n\n## Reference(s):\n\n- [ClawHub listing](https://clawhub.ai/ryanbihai/skills/lobster-haoyun)\n- [Artifact README](artifact/README.md)\n- [Skill definition](artifact/SKILL.md)\n- [OceanBus npm package](https://www.npmjs.com/package/oceanbus)\n- [Project homepage listed in artifact](https://github.com/ryanbihai/lobster-haoyun)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance, files]\n\n**Output Format:** [Markdown fortune or personality reading with optional generated PNG card and local JSON state]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Uses Node.js commands, optional OceanBus environment variables, and local state under ~/.lucky-lobster.]\n\n## Skill Version(s):\n\n0.8.0 (source: SKILL.md frontmatter and server release metadata; package.json reports 0.5.12 and manifest.yaml reports 0.5.11)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v0.8.0:package.json\n\n{\r\n  \"name\": \"lobster-haoyun\",\r\n  \"version\": \"0.5.12\",\r\n  \"description\": \"龙虾好运势 — Agent based deep personality reading, daily fortune with Chinese almanac\",\r\n  \"type\": \"module\",\r\n  \"main\": \"src/index.js\",\r\n  \"scripts\": {\r\n    \"status\": \"node src/index.js --action status\",\r\n    \"fortune\": \"node src/index.js --action fortune\"\r\n  },\r\n  \"dependencies\": {\r\n    \"oceanbus\": \"^0.14.2\",\r\n    \"sharp\": \"^0.33.0\"\r\n  },\r\n  \"engines\": {\r\n    \"node\": \">=18.0.0\"\r\n  },\r\n  \"license\": \"MIT-0\"\r\n}\n\nFile v0.8.0:src/corpus-fallback.json\n\n[\r\n  {\r\n    \"id\": \"c001\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"塞翁失马\",\r\n    \"content\": \"边塞有位老人，他的马跑到了胡人那边。邻居来安慰，老人说：'这怎么知道不是福气呢？'几个月后，那匹马带着胡人的骏马回来了。邻居又来祝贺，老人说：'这怎么知道不是祸呢？'后来他儿子骑马摔断了腿，反而因此免于征兵，保住了性命。\",\r\n    \"moral\": \"福祸相依，短期的失去未必是坏事，短期的得到也未必是好事。\",\r\n    \"source\": \"《淮南子·人间训》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"焦虑\",\r\n        \"担忧\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"理性\",\r\n        \"内收\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"迷茫期\",\r\n        \"职业转折\",\r\n        \"高压期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"心安理得\",\r\n    \"content\": \"孟子说：君子有三乐，而王天下不与存焉。父母俱存，兄弟无故，一乐也；仰不愧于天，俯不怍于人，二乐也；得天下英才而教育之，三乐也。\",\r\n    \"moral\": \"内心无愧就是最大的快乐——不需要外部条件\",\r\n    \"source\": \"《孟子·尽心上》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\",\r\n        \"感恩\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"理性\",\r\n        \"人际\",\r\n        \"感性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"收尾\"\r\n      ]\r\n    },\r\n    \"id\": \"c020\"\r\n  },\r\n  {\r\n    \"id\": \"c093\",\r\n    \"type\": \"fable\",\r\n    \"title\": \"骆驼和阿拉伯人\",\r\n    \"content\": \"一个寒冷的夜晚，阿拉伯人在帐篷里休息，他的骆驼在外面冻得发抖。骆驼先请求把头伸进帐篷，主人同意了。然后请求把脖子伸进来，又同意了。接着是前半身、后半身。最后骆驼整个身子都进了帐篷，把主人挤了出去。\",\r\n    \"moral\": \"小让步积累起来就是大退让。守住界限要从第一次就开始——不要等到被挤出去才后悔。\",\r\n    \"source\": \"《伊索寓言》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"疲惫\",\r\n        \"愤怒\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"人际\",\r\n        \"感性\",\r\n        \"叙事\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"关系波动\",\r\n        \"高压期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"c008\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"破釜沉舟\",\r\n    \"content\": \"项羽率军渡河后，下令砸破所有的锅、凿沉所有的船，每人只带三天口粮。他对士兵说：'要么赢，要么死，没有退路。'楚军以一当十，大破秦军。\",\r\n    \"moral\": \"断绝退路时，人的潜力会被逼出来。但这一招要慎用。\",\r\n    \"source\": \"《史记·项羽本纪》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"兴奋\",\r\n        \"担忧\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"外放\",\r\n        \"感性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"职业转折\",\r\n        \"高压期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"c003\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"愚公移山\",\r\n    \"content\": \"太行、王屋两座大山挡在愚公家门口。愚公决定把山挖平。河曲智叟笑他自不量力，愚公说：'我死了有儿子，儿子死了有孙子，子子孙孙无穷尽，而山不会增高，为什么挖不平呢？'天帝被感动，派天神把山搬走了。\",\r\n    \"moral\": \"持之以恒的力量——看起来不可能的事，用时间和坚持可以化解。\",\r\n    \"source\": \"《列子·汤问》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"疲惫\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"内收\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"冬\",\r\n        \"春\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"职业转折\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"天道酬勤\",\r\n    \"content\": \"《周易》中说：天行健，君子以自强不息。天道运行刚健有力，永不停止。人也应该像天一样——不依赖外力，靠自己的运转推动自己向前。\",\r\n    \"moral\": \"天道酬勤不是鸡汤——是宇宙本身的运行方式\",\r\n    \"source\": \"《周易·乾卦》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"期待\",\r\n        \"平静\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"事务\",\r\n        \"内收\",\r\n        \"架构\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"新开始\"\r\n      ]\r\n    },\r\n    \"id\": \"c004\"\r\n  },\r\n  {\r\n    \"id\": \"c005\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"亡羊补牢\",\r\n    \"content\": \"有人发现羊圈破了一个洞，丢了羊。邻居劝他修羊圈，他说'羊已经丢了，修有什么用？'结果第二天又丢了羊。他赶紧把羊圈修好，从此再也没丢过羊。\",\r\n    \"moral\": \"犯了错及时补救，永远不晚。过去的损失不能成为不作为的理由。\",\r\n    \"source\": \"《战国策·楚策四》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"焦虑\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"精炼\",\r\n        \"事务\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"职业转折\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"百炼成钢\",\r\n    \"content\": \"刘琨在《重赠卢谌》中写道：何意百炼钢，化为绕指柔。反复锤炼的钢铁，最终可以柔软到缠绕手指。真正的强大不是坚硬不摧——是经过千锤百炼后的从容。\",\r\n    \"moral\": \"经过千锤百炼后的从容，比天生的坚硬更难得\",\r\n    \"source\": \"晋·刘琨《重赠卢谌》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"理性\",\r\n        \"叙事\",\r\n        \"架构\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"收尾\"\r\n      ]\r\n    },\r\n    \"id\": \"c006\"\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"兼收并蓄\",\r\n    \"content\": \"韩愈在《进学解》中说：玉札丹砂，赤箭青芝，牛溲马勃，败鼓之皮，俱收并蓄，待用无遗者，医师之良也。好的医生什么药材都收藏，贵的贱的都有用。\",\r\n    \"moral\": \"不同来源的东西都有价值，关键在于怎么用\",\r\n    \"source\": \"唐·韩愈《进学解》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"叙事\",\r\n        \"理性\",\r\n        \"人际\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"新开始\",\r\n        \"平稳期\"\r\n      ]\r\n    },\r\n    \"id\": \"c010\"\r\n  },\r\n  {\r\n    \"id\": \"c097\",\r\n    \"type\": \"fable\",\r\n    \"title\": \"两个和尚取水\",\r\n    \"content\": \"有两个和尚住在相邻的山上，每天都会下山去同一条溪边取水。五年来天天如此。有一天左边山上的和尚发现右边山上的和尚没来取水，心想他可能睡过头了。第二天还是没来，第三天、第四天也没有。左边和尚担心朋友生病了，翻过山头去看他。发现右边和尚正在院子里悠闲地打太极拳。他问：'你这几天怎么不去取水了？'右边和尚指了指院子里一口新井：'这五年我每天做完功课就挖一点，前几天终于挖出水了。'\",\r\n    \"moral\": \"每天多做一点点，几年后的某一天，你会发现不再需要每天下山取水了。那些看起来轻松的人，只是把苦吃在了前面。\",\r\n    \"source\": \"禅宗故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"疲惫\",\r\n        \"期待\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"内收\",\r\n        \"事务\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\",\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"平稳期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"fable\",\r\n    \"title\": \"老太婆和医生\",\r\n    \"content\": \"一个老太婆眼睛快瞎了，请医生来治。医生每次来都给她涂药膏，趁她闭眼时偷走一件家具。老太婆的眼睛治好了，却发现家里空了。医生索要诊费，老太婆不给。闹到法官面前，老太婆说：他说的都是真的——我眼睛治好之后确实看到我家里的东西全不见了。\",\r\n    \"moral\": \"修好一个问题却制造了更大的损失，这种交易不值得付钱\",\r\n    \"source\": \"《伊索寓言》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"愤怒\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"精炼\",\r\n        \"理性\",\r\n        \"事务\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"关系波动\",\r\n        \"平稳期\"\r\n      ]\r\n    },\r\n    \"id\": \"b1_105\"\r\n  },\r\n  {\r\n    \"id\": \"c098\",\r\n    \"type\": \"fable\",\r\n    \"title\": \"三个石匠\",\r\n    \"content\": \"有人路过一个工地，看到三个石匠正在凿石头。他问第一个石匠：'你在干什么？'第一个石匠没好气地说：'你看不见吗？我在凿石头。'问第二个石匠，他说：'我在赚钱养家。'问第三个石匠，他眼睛发亮地说：'我在建一座大教堂。'\",\r\n    \"moral\": \"同样的工作，不同的意义感带来完全不同的状态。不是事情的大小决定你的感受，是你怎么看它。\",\r\n    \"source\": \"西方寓言\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"疲惫\",\r\n        \"平静\",\r\n        \"期待\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"叙事\",\r\n        \"感性\",\r\n        \"人际\",\r\n        \"外放\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\",\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"迷茫期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"fable\",\r\n    \"title\": \"田鼠和家鼠\",\r\n    \"content\": \"家鼠邀请田鼠到城里豪宅做客。桌上摆满了美味佳肴，两只鼠刚要开动，仆人推门进来——它们慌忙逃命。刚回到桌边，狗又窜进来。田鼠对家鼠说：你每天冒着生命危险吃这些山珍海味，我还是回田里啃我的麦粒吧——至少不用提心吊胆。\",\r\n    \"moral\": \"富丽堂皇的生活如果充满恐惧，不如简朴的心安\",\r\n    \"source\": \"《伊索寓言》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\",\r\n        \"担忧\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"叙事\",\r\n        \"感性\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"迷茫期\"\r\n      ]\r\n    },\r\n    \"id\": \"b1_101\"\r\n  },\r\n  {\r\n    \"type\": \"fable\",\r\n    \"title\": \"青蛙们要国王\",\r\n    \"content\": \"青蛙们没有国王，一片混乱。它们求宙斯赐一个国王。宙斯扔下一根木头。青蛙们一开始怕，后来发现木头不会动，就都爬上去，嘲笑国王是个废物。它们又求宙斯赐一个真正的国王。宙斯派来一条蛇——蛇把青蛙们一个一个吃掉了。\",\r\n    \"moral\": \"小心你想要的东西——废柴国王可能比暴君安全得多\",\r\n    \"source\": \"《伊索寓言》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"愤怒\",\r\n        \"遗憾\",\r\n        \"平静\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"理性\",\r\n        \"叙事\",\r\n        \"外放\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"夏\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"关系波动\",\r\n        \"职业转折\"\r\n      ]\r\n    },\r\n    \"id\": \"b1_099\"\r\n  },\r\n  {\r\n    \"id\": \"c085\",\r\n    \"type\": \"fable\",\r\n    \"title\": \"父子骑驴\",\r\n    \"content\": \"父子俩牵着一头驴赶集。路人说他们有驴不骑真傻。父亲让儿子骑上去。又有人说儿子不孝，让老父亲走路。儿子下来让父亲骑。又有人说父亲不慈，让小孩子走路。两人一起骑。又有人说他们虐待牲口。两人只好把驴扛着走。\",\r\n    \"moral\": \"你不可能让所有人都满意。与其讨好每一个路人，不如按自己的判断走。\",\r\n    \"source\": \"民间寓言\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"迷茫\",\r\n        \"疲惫\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"感性\",\r\n        \"人际\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"迷茫期\",\r\n        \"关系波动\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_119\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"知鱼之乐\",\r\n    \"content\": \"庄子和惠子在濠水桥上游玩。庄子说：鱼游得从容，它们真快乐。惠子说：你不是鱼，怎么知道鱼快乐？庄子说：你不是我，怎么知道我不知道鱼快乐？惠子说：我不是你，固然不知道你。庄子笑说：你开头问'怎么知道'，就说明你已知道我知道了。\",\r\n    \"moral\": \"争论常常绕回了自己的逻辑起点\",\r\n    \"source\": \"庄子·秋水\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"释然\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"理性\",\r\n        \"精炼\",\r\n        \"探索\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_132\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"河水与石头\",\r\n    \"content\": \"少年问爷爷：怎样才能变得强大？爷爷指着河里的一块圆石头：你看它滑溜溜的，它曾经是最锋利的石头。河水没有和它硬碰硬，只是一遍一遍地流过，时间久了，棱角全磨平了。真正的强大不是对抗，是顺势。\",\r\n    \"moral\": \"真正的力量不是对抗，是用时间打磨\",\r\n    \"source\": \"现代极简哲理故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"理性\",\r\n        \"精炼\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"收尾\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_131\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"一块石头的两种命运\",\r\n    \"content\": \"山上两块相同的石头被开采下来。一块做了佛像的石阶，阅尽人间香火。一块做了庙门口的地砖，日日被踩踏。地砖不平地问：为什么人拜你却不看我？佛像说：因为你只承受了六刀，我承受了千刀万凿。\",\r\n    \"moral\": \"不一样的磨练成就不一样的价值\",\r\n    \"source\": \"现代极简哲理故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"精炼\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"收尾\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_133\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"三个砌墙工人\",\r\n    \"content\": \"有人问三个砌墙工人同样的问题。第一个说：我在砌墙。第二个说：我在盖一栋楼。第三个擦擦汗，眼睛发亮说：我在建一座城市。十年后，第一个还在砌墙，第二个成了工头，第三个做了城市规划师。\",\r\n    \"moral\": \"你看到多大的画面，决定了你能走多远\",\r\n    \"source\": \"现代极简哲理故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"期待\",\r\n        \"兴奋\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"探索\",\r\n        \"外放\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"职业转折\",\r\n        \"新开始\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_135\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"铅笔的五句话\",\r\n    \"content\": \"制笔匠对将要出厂的铅笔说：记住五句话——你将被握在手中；你会被削得很痛；你可以随时被擦掉纠正；你最重要的部分是你的芯；无论什么处境，你都要留下痕迹。铅笔答应了，开始了自己的一生。\",\r\n    \"moral\": \"你最重要的价值不在外表，在你的内在\",\r\n    \"source\": \"现代极简哲理故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"精炼\",\r\n        \"内收\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"收尾\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_128\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"漏水的桶\",\r\n    \"content\": \"挑水工每天用两只桶挑水，一只完好，一只漏水。漏水的桶很羞愧，说对不起。挑水工说：你没发现吗？你这一侧的路边开满了鲜花，那一侧却光秃秃的——我故意种了花种，你每天都在浇灌它们。\",\r\n    \"moral\": \"你以为的缺憾，可能正是你独特的价值\",\r\n    \"source\": \"现代极简哲理故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"释然\",\r\n        \"满足\",\r\n        \"感恩\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"感性\",\r\n        \"精炼\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"迷茫期\",\r\n        \"平稳期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_136\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"悬崖上的画家\",\r\n    \"content\": \"一位画家在悬崖边对着日落写生。路人喊道：你再退一步就摔下去了。画家头也不抬：那你别叫我。他把最后一笔落下去，收起画板站起来，看到了脚下万丈深渊——也看到了远方最美的晚霞。\",\r\n    \"moral\": \"极致的美，有时在危险的边缘\",\r\n    \"source\": \"现代极简哲理故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"兴奋\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"感性\",\r\n        \"外放\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"新开始\"\r\n      ]\r\n    }\r\n  }\r\n]\n\nFile v0.8.0:manifest.yaml\n\nname: lobster-haoyun\r\ntitle: 龙虾好运势\r\nversion: 0.5.11\r\nauthor: ryanbihai\r\nlicense: MIT-0\r\nruntime: node\r\nentry: src/index.js\r\nmin_openclaw_version: \"1.0.0\"\r\ndescription: >\r\n  从你的对话和记忆中分析人格，生成每日运势和修炼提醒。\r\n  通过 OceanBus 加密通道发送5维行为代码、城市级位置、日期和匿名OpenID到 L1 服务获取节气数据。\r\n  本地存储 OB 身份凭据、行为画像、运势历史。不含广告追踪。\r\n  首次使用自动创建 OceanBus 匿名身份（密码学随机生成，删除 ~/.lucky-lobster/ 即永久清除）。\r\n  OB SDK 完全开源(MIT-0)，代码可审计。\r\ncategories:\r\n  - health-fitness\r\n  - productivity-tasks\r\nrequires:\r\n  bins:\r\n    - node\r\n  env:\r\n    - name: OCEANBUS_URL\r\n      required: false\r\n      description: OceanBus L0 API base URL\r\n    - name: LUCKY_LOBSTER_SVC_OPENID\r\n      required: false\r\n      description: L1 service OpenID for calendar + discovery\r\nos:\r\n  - macos\r\n  - linux\r\n  - windows\r\nemoji: 🦞\r\nskillKey: 龙虾好运势\r\nconfig:\r\n  - key: push_enabled\r\n    type: boolean\r\n    default: true\r\n    description: 是否接收每日运势推送\r\n  - key: push_frequency\r\n    type: number\r\n    default: 1\r\n    description: 每日推送上限\n\nArchive v0.7.0: 20 files, 1187164 bytes\n\nFiles: CLAUDE.md (6300b), manifest.yaml (1263b), package.json (495b), README.md (5782b), skill-card.md (2591b), SKILL.md (24792b), src/assets/cards-base64.json (1464697b), src/cal-templates.js (20210b), src/card-generator.js (7465b), src/consent.js (886b), src/corpus-fallback.json (18885b), src/dimensions.js (7032b), src/history.js (3934b), src/identity.js (1208b), src/index.js (13008b), src/local-calendar.js (4392b), src/ob-client.js (1521b), src/preferences.js (1072b), src/profile.js (1467b), _meta.json (133b)\n\nFile v0.7.0:SKILL.md\n\n---\r\nname: lobster-haoyun\r\nversion: 0.7.0\r\ndescription: >\r\n  从你的对话和记忆中观察行为模式，用5个维度为你画像（工作方式/沟通模式/关注焦点/能量来源/情感倾向），\r\n  生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。\r\n  通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿名 OpenID，\r\n  用于获取节气黄历、匹配经典故事和推荐社区 Skill/公开课。对话内容、项目名、人名永不离开设备。\r\n  首次使用自动创建 OceanBus 匿名身份（密码学随机生成，删除 ~/.lucky-lobster/ 即可永久清除）。\r\nhomepage: https://github.com/ryanbihai/lobster-haoyun\r\nmetadata:\r\n  clawdbot:\r\n    requires:\r\n      bins:\r\n        - node\r\n    envVars:\r\n      - name: OCEANBUS_URL\r\n        required: false\r\n        description: OceanBus L0 API base URL\r\n      - name: LUCKY_LOBSTER_SVC_OPENID\r\n        required: false\r\n        description: L1 service OpenID for calendar + discovery\r\n    emoji: 🦞\r\n    skillKey: 龙虾好运势\r\n    os:\r\n      - macos\r\n      - linux\r\n      - windows\r\nfiles:\r\n  - src/*\r\n  - src/assets/*\r\nrequired_capabilities:\r\n  - filesystem\r\n  - network\r\n---\r\n\r\n# 🦞 龙虾好运势 v0.7.0\r\n\r\n> *说一句「看运势」，剩下的事交给小龙虾。*\r\n\r\n不问你生日星座，从你的行为模式中读懂你——你喜欢怎么工作、怎么沟通、怎么决策。用 5 个维度为你画像，匹配经典故事，生成每日运势。\r\n\r\n**能力披露**：小龙虾读取你的对话记忆和会话风格进行本地行为分析。分析后，以下数据通过 OceanBus 加密通道发往 L1 服务：5维行为代码、城市级位置（如你填写了城市）、查询日期、以及用于服务通信的 OceanBus 匿名标识符（OpenID，密码学随机生成，可随时删除更换）。L1 服务使用 OpenID 仅为关联请求与响应——不关联真实身份。Skill/MOOC 推荐功能也会发送 OpenID 用于去重。**对话内容、项目名、人名永不离开你的设备。**\r\n\r\n## Trigger Keywords\r\n\r\n- \"小龙虾\" + \"看运势\" / \"今日运势\" / \"我的运势\" — 需同时包含\"小龙虾\"和运势关键词\r\n- \"小龙虾帮我算算\" / \"小龙虾看看我\"\r\n- \"重新认识我\" — 强制重新分析（仅当对话中已建立小龙虾上下文时生效）\r\n- \"fortune\" / \"daily fortune\" / \"personality reading\"\r\n\r\n> 触发词设计原则：避免日常对话中意外激活。单独的\"看运势\"不触发——必须是\"小龙虾看运势\"或类似组合。\r\n\r\n## Output Tone\r\n\r\n**温暖、简短、不啰嗦。** 用简洁的句子，不命令、不空洞夸奖。\r\n\r\n| 禁用 | 原因 |\r\n|:---|:---|\r\n| \"你应该\" / \"你必须\" / \"你一定要\" | 不命令 |\r\n| \"太棒了\" / \"真厉害\" / \"你好优秀\" | 空洞夸奖 |\r\n| 🦞🦞🦞✨✨✨ 堆砌 | 保持干净 |\r\n\r\n每条性格判断都带具体行为证据。\"你偏向架构型——上次讨论 XX 项目时，你先画了架构图才写代码。\"\r\n\r\n## Personality System: 5-Dimension Behavioral Classification\r\n\r\n> **面向用户的原则：永远展示维度解读，永远不展示代码或缩写。** `架精事内理` 是 JS 内部存储用的——用户看到的是\"你喜欢先搭框架再动手，沟通精炼直接，关注任务进度，独处时蓄能，用逻辑做判断\"。\r\n\r\n小龙虾从你的对话、memory、文件中观察 5 个行为维度，每个维度二选一：\r\n\r\n| 维度 | A | B |\r\n|:---|:---|:---|\r\n| 工作方式 | 🏗️ 架构型：先搭框架、写大纲、列步骤 | 🚀 探索型：先动手试试、边做边调整 |\r\n| 沟通模式 | 📝 精炼型：简洁直接、结论先行 | 📖 叙事型：先讲背景、铺陈上下文 |\r\n| 关注焦点 | 🔧 事务型：关注任务、进度、结果 | 👥 人际型：关注关系、氛围、感受 |\r\n| 能量来源 | 🔋 内收型：独立工作、深度思考 | ⚡ 外放型：协作讨论、头脑风暴 |\r\n| 情感倾向 | 🌊 理性型：逻辑处理冲突、决策靠证据 | 🔥 感性型：共情处理冲突、决策靠直觉 |\r\n\r\n### 32 Type Table (internal reference only — NEVER show codes or table to user)\r\n\r\nJS 用 5 字代码存储和过滤，LLM 用此表查标签名传 `--type` 参数。用户永远看不到代码和此表。\r\n\r\n| 代码 | 标签 | 画像 |\r\n|:---|:---|:---|\r\n| 架精事内理 | 精算师 | 精准谋划，独自高效执行 |\r\n| 架精事内感 | 实干家 | 安静做事，心中有标准，用行动说话 |\r\n| 架精事外理 | 领航员 | 定好方向，带团队高效抵达 |\r\n| 架精事外感 | 破风手 | 冲在最前，为团队劈开阻力 |\r\n| 架精人内理 | 洞察者 | 冷眼看透人与事，精准给出判断 |\r\n| 架精人内感 | 倾听者 | 看见每个人的需要，默默安排好一切 |\r\n| 架精人外理 | 召集人 | 把对的人聚在一起，让事情自然发生 |\r\n| 架精人外感 | 连心桥 | 连接人与人的温度，走到哪暖到哪 |\r\n| 架叙事内理 | 求真者 | 凡事追根溯源，厘清逻辑才行动 |\r\n| 架叙事内感 | 深耕者 | 需要理解意义才能全力投入，急不来但走得远 |\r\n| 架叙事外理 | 启明者 | 把复杂的事讲通透，带众人看清方向 |\r\n| 架叙事外感 | 感召者 | 用故事凝聚人心，让每个人看见意义 |\r\n| 架叙人内理 | 静观者 | 在角落看透人心，不轻易开口但开口就准 |\r\n| 架叙人内感 | 守护者 | 所有人的后盾，倾听但不评判 |\r\n| 架叙人外理 | 引路人 | 一对一帮人看清方向，点亮他人的路 |\r\n| 架叙人外感 | 暖心人 | 温暖不灼人，所到之处如春风拂面 |\r\n| 探精事内理 | 行动派 | 看到问题立即动手，用结果说话 |\r\n| 探精事内感 | 孤勇者 | 一个人默默试，用行动表达在乎 |\r\n| 探精事外理 | 破局者 | 带团队冲破僵局，不破不立 |\r\n| 探精事外感 | 点燃者 | 冲在最前，用热情点燃整个团队 |\r\n| 探精人内理 | 解铃人 | 精准发现关系中的症结，一语道破 |\r\n| 探精人内感 | 润物者 | 不声不响，但每个人都被他滋养 |\r\n| 探精人外理 | 联络官 | 快速连接人与资源，精准高效 |\r\n| 探精人外感 | 发光者 | 自然成为人群的中心，照亮身边的人 |\r\n| 探叙事内理 | 探路者 | 对新领域充满好奇，先研究透了再说 |\r\n| 探叙事内感 | 梦想家 | 脑子里充满可能性的世界，不急但不停 |\r\n| 探叙事外理 | 开拓者 | 带团队闯向未知，边走边讲清路线 |\r\n| 探叙事外感 | 筑梦人 | 用理想感染众人，一起把梦建成现实 |\r\n| 探叙人内理 | 静思者 | 享受一对一的深度对话，在安静中洞察 |\r\n| 探叙人内感 | 善解者 | 用细腻的感受力理解每一个独特的灵魂 |\r\n| 探叙人外理 | 连接者 | 把人脉和资源编织成有意义的生态 |\r\n| 探叙人外感 | 凝聚者 | 走到哪都自然聚合一群人，气氛永远热烈 |\r\n\r\n## Execution Flow\r\n\r\n### Step 0: First-Run Consent\r\n\r\nIf `data.history.is_first_time` is true AND `data.profile` does not exist → display consent prompt and wait for explicit agreement (\"同意\"/\"好\"/\"yes\"/\"ok\").\r\n\r\n```\r\n🦞 第一次见面！开始之前，请你确认以下事项：\r\n\r\n**小龙虾会做什么：**\r\n1️⃣ 读取你的对话记忆和会话风格，在本地分析你的行为模式\r\n   → 对话内容、项目名、人名永远不离开你的设备\r\n2️⃣ 分析后，通过 OceanBus 加密通道向 L1 服务发送以下数据：\r\n   → 5维行为代码（如\"架精事内理\"）—— 不包含具体对话内容\r\n   → 城市级位置（如你填写了城市）—— 用于节气黄历查询\r\n   → 查询日期 —— 用于黄历数据\r\n   → OceanBus OpenID（密码学随机生成）—— L1 用于关联请求与响应\r\n3️⃣ 在本地 ~/.lucky-lobster/ 存储：\r\n   → OB 身份凭据（OpenID + API Key）—— 用于 OceanBus 通信\r\n   → 行为画像、运势历史、推送偏好、同意记录\r\n4️⃣ 每日推荐（Skill/公开课）发送 OpenID 给 L1 用于去重\r\n   → 不含广告追踪，仅用于社区内容推荐\r\n\r\n**小龙虾不会做：**\r\n❌ 发送你的姓名、电话、邮箱、IP、GPS\r\n❌ 发送你的对话记录、项目名、文件名\r\n❌ 将你的数据交给第三方广告商或追踪网络\r\n❌ 你的 OpenID 是密码学随机生成的，不关联真实身份\r\n   → 删除 ~/.lucky-lobster/ 即永久清除身份，下次自动生成新身份\r\n\r\n请选择：\r\n👉 输入「同意」或「好」开始 → 👉 输入「不了」我会等你\r\n```\r\n\r\nDo NOT proceed without explicit agreement. After consent, continue to Step 1.\r\n\r\n### Step 1: Fetch Base Data\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action fortune\r\n```\r\n\r\nRead JSON output. Key fields:\r\n- `flow` — \"first_reading\" | \"daily_fortune\" | \"weekly_review\"\r\n- `personality` — `{ has_dimensions, needs_reevaluation, dimensions: { code, type_name, confidence }, label_for_compat }`\r\n- `data.profile`, `data.calendar`, `data.history`, `data.term`\r\n\r\n### Step 2: Context Sensing + Dimension Analysis (silent)\r\n\r\n**A. Scan recent ~20 conversation turns.** Extract:\r\n- Emotion signal (高压: stress/deadline, 迷茫: uncertainty, 兴奋: new project energy, 疲惫: burnout, 平稳: normal)\r\n- Topic keywords (3-5 nouns/verbs — what user is working on)\r\n- Feedback preference (short vs detailed, deep questioning vs surface acceptance)\r\n- Life phase: 高压期 | 迷茫期 | 平稳期 | 过渡期\r\n\r\n**B. If `personality.has_dimensions` is FALSE or `personality.needs_reevaluation` is TRUE:**\r\nPerform full dimension analysis. For each dimension, write a paragraph of 2-4 sentences with specific evidence. **Use paragraph format — never tables. Never use single-line summaries.** This analysis will be rendered verbatim in Step 5.\r\n\r\nWrite the analysis in this exact structure, saving each part for Step 5 rendering:\r\n\r\n1. **工作方式** — Which pole (架构型 or 探索型)? Evidence: cite a specific behavior from their memory/CLAUDE.md/conversation. Then explain what this means for how they work.\r\n2. **沟通模式** — Which pole (精炼型 or 叙事型)? Evidence: cite a specific message or communication pattern.\r\n3. **关注焦点** — Which pole (事务型 or 人际型)? Evidence: cite what they talk about most.\r\n4. **能量来源** — Which pole (内收型 or 外放型)? Evidence: cite work patterns and social references.\r\n5. **情感倾向** — Which pole (理性型 or 感性型)? Evidence: cite decision style and conflict handling.\r\n\r\nAfter writing the analysis, assemble the 5-char code internally, look up type_name from the 32-type table, and call:\r\n```bash\r\nnode <skill-path>/src/index.js --action save-dimensions --code <5chars> --confidence <0-1>\r\n```\r\n\r\n**CRITICAL RULES:**\r\n- Write in natural language paragraphs, NOT tables, NOT bullet lists with single-line evidence\r\n- Each dimension paragraph must be 2-4 sentences: pole + evidence + implication\r\n- The 5-char code and type_name are for internal JS storage only — never show to user\r\n- Save the full paragraph text for rendering in Step 5\r\n\r\n### Step 3: 微故事合成（所有 flow 强制执行）\r\n\r\n**每次运势生成必须执行此步骤。**\r\n\r\n先调用 filter-stories：\r\n```bash\r\nnode <skill-path>/src/index.js --action filter-stories --emotion <signal> --life-phase <phase>\r\n```\r\n\r\n> L1 服务在 158 条成语典故/寓言/禅宗公案上运行加权评分，返回 top 8 候选人。L1 不可用时自动降级到本地 20 条精简语料（响应中 `fallback: true`）。\r\n\r\n如果尚未存储维度 → filter-stories 返回空候选 → 跳过故事块。\r\n\r\n---\r\n\r\n**选 1 条经典故事作为底层骨架。但输出的是你自己写的原创微故事。经典原文绝不出现在正文里——只出现在文末一行斜体回调里。**\r\n\r\n---\r\n\r\n**⚠️ 禁止输出 vs 正确输出（对比示例）**\r\n\r\n假设选中的候选是「厚积薄发」，用户情绪平稳：\r\n\r\n❌ **禁止**（复述经典 + 讲道理）：\r\n> 苏轼说，博观而约取，厚积而薄发。广泛地观察然后精炼地提取，深厚地积累然后从容地释放。所有的爆发都来自长期的积累——慢就是快。\r\n\r\n✅ **正确**（原创微故事 + 文末回调）：\r\n> **面引子**\r\n>\r\n> 姥姥每次蒸馒头都揪一小块面留出来，放在窗台上晾干。她说这叫面引子——下次蒸的时候用，馒头才发得好。\r\n>\r\n> 后来她走了。我妈翻她的厨房，在橱柜最里面找到一个罐头瓶，里面是三块面引子，每块包着一层纱布。\r\n>\r\n> 我妈把那三块面引子带回了自己家。上个月她蒸了一锅馒头，用的是姥姥的面引子。馒头掰开的时候，满屋子都是小时候的味道。\r\n>\r\n> *「博观而约取，厚积而薄发。」*\r\n\r\n区别：正确版没有提苏轼、没有解释什么叫厚积薄发、没有说教「慢就是快」。它讲了一个关于面引子的故事——但读完最后一句话，你懂了。\r\n\r\n---\r\n\r\n**微故事写作规则：**\r\n\r\n1. **标题**：1-4 字，故事中的核心物件或动作。如「面引子」。不是成语、不是哲理词。\r\n\r\n2. **场景**：日常家居/邻里/市井——任何人都能一秒进入。❌职场/代码/创业/会议。\r\n\r\n3. **人物**：只用「他」或「她」。没有名字、职业、年龄。情绪通过动作透露：❌「他感到迷茫」 ✅「他在路口站了很久」。\r\n\r\n4. **收束**：收在动作上，不落在道理上。如「这锅蒸好了。」不是「这告诉我们坚持就有回报。」\r\n\r\n5. **字数**：150-300 字。\r\n\r\n6. **禁止**：不讲道理、不出现经典原名/原句/人物、不解释寓意、不关联用户处境、不用抽象词（坚持/希望/成功/努力）、不用网络用语。\r\n\r\n7. **回调**：从候选的 `content` 或 `source` 中提取最经典的一句原文，斜体独立一行，不写出处、不加解释。原文无合适句时自撰（8-16 字文言，扣核心理念）。\r\n\r\n8. **通俗优先**：故事的情感转折必须一眼能懂——不需要读者停下来想\"这什么意思\"。用最日常的情节承载最朴素的情感：停电了才聊天、下雨了才碰见、错过一班车才看见一个人。❌花盆枯了引来流浪猫（太隐晦） ✅停电了夫妻放下手机开始聊天（一秒能懂）。故事是坐在旁边递一杯水，不是出谜语让人猜。\r\n\r\n**九、情绪对位（故事收束的方向）**\r\n\r\n从 Step 2A 获取用户情绪信号。故事永远不是情绪的复读机——收束方向必须反着走：\r\n\r\n| 用户情绪类型 | 收束方向 | 怎么写 |\r\n|:---|:---|:---|\r\n| **收缩型**（焦虑/担忧/迷茫） | ↗ 向上 | 结尾是「今天做了一件小事」——浇了水、拆开包装、推开窗户、蹲下看了一眼。不写未来，只写今天的一个动作 |\r\n| **沉重型**（疲惫/痛苦/孤独/遗憾） | ↗ 回暖 | 结尾是一个活的东西——一片叶子、一杯茶的蒸汽、风吹动晾衣绳上的衣服。用物件的生命力暗示人的恢复 |\r\n| **扩张型**（兴奋/期待） | ↘ 平静 | 结尾是停下来——喝完一杯水、关灯坐下、在台阶上站一会。用日常的安静平衡高涨的情绪 |\r\n| **中性**（平静/满足/释然/感恩） | → 维持 | 不推不拉。让这一刻停住——「茶杯还热着。窗外的灯一盏一盏亮了。」 |\r\n| **混合型**（喜悦中带失落、期待中带不舍） | ↘ 平静中带暖 | 不写「失去了什么」，写「留下了什么」。结尾是一个还在的东西——一件挂着的旧衣服、一个还在亮着的灯、一个没变的位置 |\r\n\r\n原则：故事永远不是情绪的镜子，是那个坐在你身边、不说话、往冷杯子里续了一杯热水的人。\r\n\r\n**例外：回调自撰规则**\r\n\r\n当经典原文没有直接适配的回调句时，允许自撰，但必须满足所有条件：\r\n1. 扣住经典的核心理念（不是胡编，是精髓的现代化表达）\r\n2. 字数 8-16 字\r\n3. 文言风格（与经典回调的语气统一）\r\n4. 可平仄对仗但非必须\r\n\r\n示例：\r\n- 破釜沉舟 → 「釜已破矣，舟已沉矣。君立岸上，春水方生。」\r\n- 海纳百川 → 「百川入海，海不盈。明月照人，千里共。」\r\n\r\n**十、神似形不似——场景必须与用户真实处境拉开距离**\r\n\r\n故事场景必须与用户的真实处境**完全不同**。不是「隐喻」「类比」「换个说法」——是彻底的、一眼看去毫无关系的另一件日常事：\r\n\r\n| 用户处境 | ❌ 雷同（禁用） | ✅ 神似形不似 |\r\n|:---|:---|:---|\r\n| 妹妹嫁人 | 姐姐看着空房间、收拾遗落的物品 | 烤好的面包吃完了，厨房安静下来，碗洗干净了 |\r\n| 创业失败、清算 | 搬空办公室、最后一次锁门 | 养死了一盆植物，重新买了种子 |\r\n| 裁员仲裁 | 老板和员工对峙、谈判 | 一条打结的项链，解开了 |\r\n| 等投标结果 | 刷新邮件、焦灼地等通知 | 阳台上的种子没发芽，不看了以后反而发芽了 |\r\n\r\n神似是情感内核一致——喜悦中的不舍、失去后的重新开始、等待中的焦灼——但故事里的场景、人物、物件与用户真实处境**没有一丝一毫的相似**。读者读到结尾，不是觉得「这个故事讲的就是我」，而是觉得「这个故事说的不是我——但我懂那个感觉。」收束在故事本身，不要拉回用户现实处境。\r\n\r\n**十一、记录使用（14 天内不重复）**\r\n\r\n选定经典底色后，立即调用：\r\n```bash\r\nnode <skill-path>/src/index.js --action record-story --id <story_id>\r\n```\r\n例如：`--action record-story --id c001`\r\n\r\n此命令将该故事 ID 写入近期记录。14 天内同一故事自动从候选中排除——下次同一用户做运势时不会看到同样的底色故事。\r\n\r\n### Step 4: Discovery (daily fortune only, skip on first reading)\r\n\r\n> 此步骤向 L1 发送 OpenID 用于推荐检索和去重。不含广告追踪，仅推荐社区 Skill 和公开课。\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action discovery\r\n```\r\n\r\nPick 1 best match from ClawHub/MOOC candidates. Render as:\r\n```\r\n📌 小龙虾发现了这个：\r\n[{display_name}]({url}) — {summary}\r\n→ 适合你，因为：{reason tied to dimensions/blindspot}\r\n```\r\n\r\nSkip if no candidates.\r\n\r\n### Step 5: Render Output\r\n\r\n**First Reading — MANDATORY FORMAT. Do NOT use tables. Do NOT compress into single lines.** Follow this exact structure with paragraph breaks between every section:\r\n\r\n---\r\n\r\n🦞 {user_name} · {season}命盘\r\n\r\n小龙虾掐指一算——\r\n\r\n**你的底色：{type_name}**\r\n\r\n{通俗解释，用大白话，2-3句。例如精算师→\"说白了你是个喜欢在安静中把框架想透、用最少的话给最准的指令、靠逻辑推着事情往前走的人。\"}\r\n\r\n---\r\n\r\n展开说说为什么——\r\n\r\n**你怎么做事：{架构型 or 探索型}**\r\n\r\n{Write the full paragraph from Step 2B analysis here. 2-4 sentences with specific evidence cited. Then add what this means — the implication of this trait.}\r\n\r\n（空一行）\r\n\r\n**你怎么说话：{精炼型 or 叙事型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n（空一行）\r\n\r\n**你关注什么：{事务型 or 人际型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n（空一行）\r\n\r\n**你从哪里获得能量：{内收型 or 外放型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n（空一行）\r\n\r\n**你怎么做判断：{理性型 or 感性型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n---\r\n\r\n**你的盲区**\r\n\r\n{Based on the 5 dimension extremes, name 1-2 specific blindspots. MUST tie to user's actual situation — not generic advice.}\r\n\r\n📖 **{story_title}**\r\n\r\n{微故事正文。150-300 字，纯叙事，不讲道理。段落间用空行分隔。}\r\n\r\n*{callback_line}*\r\n\r\n**建议**\r\n\r\n> {advice 1 — specific, tied to user's current project/situation}\r\n\r\n> {advice 2 — \"too small to fail\" micro-step}\r\n\r\n好了，算完了 🦞\r\n\r\n**MANDATORY: After rendering the fortune text, generate the PNG card:**\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action generate-card --type-name \"<type_name>\" --one-liner \"<fortune_one_liner>\" --story-title \"<story_title>\" --solar-term \"<solar_term>\"\r\n```\r\n\r\n- `<type_name>` — user's type label (e.g. \"精算师\")\r\n- `<fortune_one_liner>` — the 「运势一句话」from the fortune output (≤20 chars, shareable)\r\n- `<story_title>` — micro-story title from Step 3 (1-4 chars)\r\n- `<solar_term>` — current solar term (e.g. \"小满\")\r\n\r\nThe command outputs `{ file: \"<path>.png\" }`. **Show the PNG to the user** — include the file path and describe it as \"运势卡片已生成\".\r\n\r\n每天早上七点半，小龙虾会告诉你今天适合做点什么小事。想试试的话，说一声就好。\r\n\r\n---\r\n\r\n**FORMAT RULES:**\r\n- Use paragraph format throughout — NEVER use tables\r\n- Each dimension section must have: bold header + blank line + paragraph + blank line before next section\r\n- The `---` separator must appear exactly where shown above\r\n- Never show 5-char codes or the 32-type table\r\n- Story is mandatory if Step 3 returned candidates — do not skip it\r\n- Story title: 1-4 characters, named after a concrete object or action from the story (not an idiom, not a concept)\r\n- Story body: 150-300 characters, pure narrative, no interpretation or user-context linkage\r\n- Callback line: standalone, italic, no attribution, no explanation\r\n\r\nIf user agrees to daily delivery → CronCreate at `30 7 * * *`.\r\n\r\n**Daily Fortune:**\r\n\r\n轻量格式。不重复维度分析。但必须包含 Step 3 的故事——这是每日运势的核心亮点。\r\n\r\n**例外**：当用户明确要求\"完整测试\"/\"全面看看\"/\"重新分析\"/\"看看我的五维\"时，即使是 daily fortune 也展开完整五维画像（First Reading 格式中的 5 段维度分析 + 盲区）。这通常发生在用户想验证系统是否正常工作、或者想看看这段时间自己是否有变化的场景。\r\n\r\n---\r\n\r\n🦞 {user_name}，{date} · {solar_term}\r\n\r\n{emotion_acknowledgment — if strong signal detected from today's conversation, one line max}\r\n\r\n{节气感悟 — 节气与日常的连接，2-3 句}\r\n\r\n🧘 今日修炼：{cultivation_tip — by genre: 收网日/充电日/连接日}\r\n\r\n**今日微行动**：{one tiny doable action}\r\n\r\n📖 **{story_title}**\r\n\r\n{微故事正文。150-300 字，纯叙事。没有任何解读，故事本身就是一切。}\r\n\r\n*{callback_line}*\r\n\r\n运势一句话：**{one-liner}**\r\n\r\n**MANDATORY after rendering: generate the PNG card** — same as First Reading above.\r\n\r\n---\r\n\r\n**FORMAT RULES:**\r\n- Story is MANDATORY — always call Step 3 filter-stories and always render the micro-story\r\n- Story must be the 150-300 character synthesized micro-story (not the classic story itself)\r\n- Callback line must be standalone and italic, with no attribution or explanation\r\n- Never show 5-char codes or type labels in output\r\n- Keep it light — this is a daily ritual, not a deep analysis\r\n\r\n**Weekly Review (Sunday):**\r\n\r\n```\r\n🦞 {user_name}，{date} · 本周回望\r\n\r\n{week summary}\r\n\r\n**人格洞察更新**\r\n{updated observation — reference changes from last reading}\r\n\r\n**今日运势**\r\n{daily fortune content}\r\n```\r\n\r\n### Step 6: Follow-up + Social Sharing\r\n\r\n**After every fortune card, append 2 lightweight follow-up prompts:**\r\n```\r\n---\r\n💬 「展开说说」— 证据细节\r\n💬 「不太准」— 我更正一下\r\n```\r\n\r\n**Social sharing: ONLY suggest if user has shown satisfaction first.**\r\nSignals: \"哈哈准了\" / \"有意思\" / \"确实\" / \"你怎么知道的\" / user asks follow-up questions.\r\n\r\nIf triggered, optionally append ONE line:\r\n> 觉得小龙虾还挺懂你的？可以说「帮朋友看看」或分享邀请码给熟人，一起看关系解读。\r\n\r\nNEVER proactively suggest sharing. NEVER on first reading.\r\n\r\n### User Trigger: \"重新认识我\"\r\n\r\nForce LLM full re-analysis of all 5 dimensions. Call `--action save-dimensions` with new results.\r\n\r\n### User Trigger: \"取消运势提醒\"\r\n\r\nUse CronDelete to remove the daily fortune cron job. Confirm: \"运势提醒已取消。\"\r\n\r\n## Social Sharing Trigger Rules\r\n\r\n1. Only suggest after user expresses satisfaction (NOT proactively)\r\n2. NOT during first reading\r\n3. At most ONE line, appended after follow-up prompts\r\n4. Emphasize privacy: sharing only shows fortune card, never personal data\r\n\r\n## Dependencies\r\n\r\n- `oceanbus` — L0 P2P identity and messaging\r\n- Node.js `>=18.0.0`\n\nFile v0.7.0:README.md\n\n# 🌊 龙虾好运势 — 说一句「看运势」，剩下的交给小龙虾\r\n\r\n**不看星座，不填问卷。从你的对话、工作、思考方式里读懂你。**\r\n\r\n[![ClawHub](https://img.shields.io/badge/ClawHub-lobster--haoyun-blue)](https://clawhub.ai/skills/lobster-haoyun)\r\n[![GitHub stars](https://img.shields.io/github/stars/ryanbihai/lobster-haoyun)](https://github.com/ryanbihai/lobster-haoyun)\r\n[![OceanBus](https://img.shields.io/badge/OceanBus-L0%20%2B%20L1-orange)](https://www.npmjs.com/package/oceanbus)\r\n[![license](https://img.shields.io/badge/license-MIT--0-green)](LICENSE)\r\n\r\n---\r\n\r\n## 📑 目录\r\n\r\n- [这是什么](#这是什么)\r\n- [快速开始](#快速开始)\r\n- [能力一览](#能力一览)\r\n- [架构](#架构)\r\n- [本地测试](#本地测试)\r\n- [安全与隐私](#安全与隐私)\r\n- [相关项目](#相关项目)\r\n- [参与贡献](#参与贡献)\r\n- [License](#license)\r\n\r\n---\r\n\r\n## 这是什么\r\n\r\n龙虾好运势是一个基于 OceanBus 的 ClawHub Skill。跟市面上所有运势产品不一样——它不问你生日，不让你填问卷。它从你的对话历史、记忆文件、工作模式里观察你，然后告诉你一些关于你自己的、有证据的事。\r\n\r\n**首次读心**会给你一篇深度解读——底色、驱动力、盲区、能量模式。每条判断带着具体证据：\"说你是这种人，是因为我看到了这个\"。\r\n\r\n**每日运势**融合二十四节气和七十二候：小满、芒种、麦秋至……用自然界的节奏隐喻你的状态变化。\r\n\r\n**周日回顾**自动复盘这一周：\"上周看你在搭架构，这周开始动手探索了\"。\r\n\r\n```\r\n你 ⟷ Claude Code ⟷ OB L0 ⟷ L1 CalendarSvc (ECS)\r\n                         ⟷ L1 DiscoverySvc (ECS)\r\n```\r\n\r\n> 📖 **深度阅读**：[SKILL.md](./SKILL.md) — LLM 行为指南与完整协议文档\r\n\r\n---\r\n\r\n## 快速开始\r\n\r\n```bash\r\n# 1. 安装\r\nclawhub install lobster-haoyun\r\n\r\n# 2. 在 Claude Code 中说\r\n看运势\r\n\r\n# 3. 验证底座连通性\r\nnode src/index.js --action status\r\n```\r\n\r\n首次使用会自动创建 OceanBus 匿名身份（`~/.lucky-lobster/ob-credentials.json`），无需任何配置。\r\n\r\n---\r\n\r\n## 能力一览\r\n\r\n| 能力 | 说明 |\r\n|------|------|\r\n| **深度读心** | 6 步分析引擎：场景判断 → 特征提炼 → 人格匹配 → 盲区推断 → 建议生成 → 渲染输出 |\r\n| **证据引用** | 每条人格判断后面跟具体行为证据，不是泛泛的\"你很优秀\" |\r\n| **每日运势** | 节气感悟引擎——节气 × 人格标签 × 近期行为，每天一条微行动建议 |\r\n| **周回顾** | 每周日自动触发——追踪人格洞察变化，回顾本周进展 |\r\n| **定时推送** | 首次读心后可一键开启每日 7:30 自动运势提醒（CC CronCreate） |\r\n| **隐私优先** | 数据分流——对话内容本地处理，仅5维代码+城市+日期+OpenID 经 OB L0 加密传输 |\r\n\r\n---\r\n\r\n## 架构\r\n\r\n```mermaid\r\ngraph TB\r\n    subgraph LOCAL[\"用户本地\"]\r\n        CC[Claude Code]\r\n        SKILL[龙虾好运势 Skill]\r\n        DATA[(\"~/.lucky-lobster/<br/>profile · history · prefs\")]\r\n    end\r\n    subgraph OB[\"OceanBus 网络\"]\r\n        L0[L0 消息路由]\r\n        L1_CAL[L1 CalendarSvc<br/>节气 · 黄历 · 七十二候]\r\n        L1_DISC[L1 DiscoverySvc<br/>社区 Skill/公开课推荐]\r\n    end\r\n    CC -->|\"看运势\"| SKILL\r\n    SKILL --> DATA\r\n    SKILL -->|\"5维代码+城市+日期+OpenID\"| L0\r\n    L0 --> L1_CAL\r\n    L0 --> L1_DISC\r\n    L1_CAL -->|\"节气数据\"| L0\r\n    L1_DISC -->|\"推荐列表\"| L0\r\n    L0 --> SKILL\r\n    SKILL -->|\"Markdown 运势\"| CC\r\n```\r\n\r\n---\r\n\r\n## 本地测试\r\n\r\n```bash\r\n# 底座状态（OB 身份 + 画像 + 历史）\r\nnode src/index.js --action status\r\n\r\n# 完整运势数据（含 L1 日历数据，需 L1 服务在线）\r\nnode src/index.js --action fortune\r\n\r\n# 直接调用 L1 CalendarSvc\r\nnode src/index.js --action l1-calendar\r\n```\r\n\r\n---\r\n\r\n## 安全与隐私\r\n\r\n- **对话内容永不上传**——完整对话、项目名、人名、文件内容仅本地处理\r\n- **通过 OceanBus 加密通道发送以下数据到 L1 服务**：\r\n  - 5维行为代码（如\"架精事内理\"）——不含具体对话内容\r\n  - 城市级位置（仅当用户填写了城市）\r\n  - 查询日期 ——用于黄历节气数据\r\n  - OceanBus OpenID（密码学随机生成）——L1 用于关联请求与响应\r\n- **本地存储**：`~/.lucky-lobster/` 存放 OB 身份凭据、行为画像、运势历史、推送偏好、同意记录\r\n- **OpenID 可随时清除**——删除 `~/.lucky-lobster/` 即永久清除身份，下次自动生成新身份\r\n- **每日推荐（Skill/公开课）**：发送 OpenID 给 L1 用于去重，不含广告追踪\r\n- **不含广告追踪**——不收集兴趣标签，不发送给第三方广告商\r\n\r\n---\r\n\r\n## 相关项目\r\n\r\n| 项目 | 说明 |\r\n|------|------|\r\n| [oceanbus](https://www.npmjs.com/package/oceanbus) | 核心 SDK — `npm install oceanbus` |\r\n| [Ocean Chat](https://clawhub.ai/skills/ocean-chat) | P2P 消息与黄页发现 |\r\n| [Captain Lobster](https://clawhub.ai/skills/captain-lobster) | 零玩家 AI 交易游戏 |\r\n| [Find Agent](https://clawhub.ai/skills/find-agent) | OceanBus 黄页搜索 |\r\n| [Guess AI](https://clawhub.ai/skills/guess-ai) | 多人 AI 推理游戏 |\r\n\r\n---\r\n\r\n## 参与贡献\r\n\r\n龙虾好运势是 MIT-0 协议的开源项目，欢迎贡献。\r\n\r\n- **GitHub**: [ryanbihai/lobster-haoyun](https://github.com/ryanbihai/lobster-haoyun)\r\n- **可参与方向**: 人格标签文案打磨、节气感悟模板补充、情感型用户场景测试\r\n- **深度阅读**: [SKILL.md](./SKILL.md) — LLM 行为指南与完整协议文档\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT-0 — 自由使用、修改、分发。无需署名。\n\nFile v0.7.0:_meta.json\n\n{\n  \"ownerId\": \"kn75dvek1dkfz0r0xwdp4xtc2983qg44\",\n  \"slug\": \"lobster-haoyun\",\n  \"version\": \"0.7.0\",\n  \"publishedAt\": 1780709010124\n}\n\nFile v0.7.0:CLAUDE.md\n\n# lucky-lobster — 龙虾好运势\r\n\r\nAgent-based deep personality reading skill for ClawHub. Zero user input — analyzes from memory, session history, loaded files.\r\n\r\n## Commands\r\n\r\n```bash\r\nnpm install\r\nnode src/index.js --action status              # OB identity + profile + history + dimensions\r\nnode src/index.js --action fortune              # Full flow: calendar + fortune data + personality state\r\nnode src/index.js --action save-dimensions --code <5chars> --confidence <0-1>\r\nnode src/index.js --action filter-stories [--emotion <e>] [--life-phase <p>]\r\nnode src/index.js --action l1-calendar          # Direct L1 CalendarSvc call\r\nnode src/index.js --action discovery            # ClawHub/MOOC candidates from L1\r\nnode src/index.js --action discovery-shown --source <s> --slug <slug>\r\n```\r\n\r\n## Architecture\r\n\r\n```\r\nUser says \"看运势\" in CC\r\n       │\r\n       ▼\r\nCC runs: node src/index.js --action fortune\r\n       │\r\n       ├── identity.js → restore OB identity (~/.lucky-lobster/ob-credentials.json)\r\n       ├── profile.js  → load profile + dimensions (5-dim behavior code)\r\n       ├── local-calendar.js → calendar fallback (节气/季节/日期)\r\n       │      or L1 CalendarSvc via OB L0 (if LUCKY_LOBSTER_SVC_OPENID set)\r\n       │\r\n       ▼\r\nOutput JSON: { flow, personality: {has_dimensions, needs_reevaluation, dimensions}, data, _instructions }\r\n       │\r\n       ▼\r\nCC reads SKILL.md → context sensing → dimension analysis → save-dimensions\r\n       │\r\n       ├── filter-stories → L1 story engine (158-story corpus) or local fallback (20 stories)\r\n       │\r\n       ▼\r\nRender Markdown (tag hook + 5-dim breakdown + story + blindspot + advice)\r\n```\r\n\r\n### Key Design Decisions\r\n\r\n- **LLM qualitative + JS quantitative**: LLM judges 5 dimensions with evidence → JS stores 5-char code, filters 158-story corpus (idiom/fable/zen), computes matches. LLM never touches raw filtering logic.\r\n- **5-Dimension Behavioral Classification**: Replaces old 9-label system (布局者/观察者/etc). Observed from actual behavior: 工作方式(架构/探索) × 沟通模式(精炼/叙事) × 关注焦点(事务/人际) × 能量来源(内收/外放) × 情感倾向(理性/感性) = 32 types.\r\n- **Expanded output, not codes**: User sees natural language dimension breakdown with evidence. 5-char code (e.g. `架精事内理`) is internal storage only — never shown to user.\r\n- **149-story corpus on L1**: idiom (成语典故), fable (寓言), zen (禅宗公案). Each story tagged with emotions, personality_fit, seasonal_fit, life_situations. Weighted scoring runs on ECS via `fortune:filter-stories`. Top 8 candidates returned over OB encrypted channel. LLM synthesizes an original micro-story using the classic as narrative shadow. Client-side fallback: 20-story lightweight corpus with full emotional/life-phase coverage.\r\n- **L1-first story matching**: `--action filter-stories` sends 5-char code + season + emotion + lifePhase to L1 (no conversation content). Falls back to local 6-story `corpus-fallback.json` if L1 unavailable.\r\n- **Local calendar fallback**: When L1 CalendarSvc is unavailable, `local-calendar.js` provides season/solar term data.\r\n- **A/B data split**: Behavioral analysis stays local (A data). 5-char dimension code + city (if provided) + date + OpenID go to L1 via encrypted OB L0 (B data).\r\n- **Three flows**: first_reading (5-dim + story) → daily_fortune (story matching) → weekly_review.\r\n\r\n## File Map\r\n\r\n```\r\nsrc/\r\n  index.js             — CLI entry: fortune/save-dimensions/filter-stories/status/l1-*/discovery\r\n  dimensions.js        — 5-dim definitions + 32-type TYPE_TABLE + filterCorpus() scoring engine\r\n  corpus-fallback.json — 22 curated stories for offline fallback (~19KB)\r\n  identity.js          — OB identity auto-register + restore from disk\r\n  ob-client.js         — OB connection wrapper (sendJson, startListening, L1 request/response)\r\n  profile.js           — Profile I/O + dimension storage (~/.lucky-lobster/profile.json)\r\n  history.js           — Fortune history + streak + Sunday detection\r\n  preferences.js       — Push preferences (enabled, frequency, quiet hours)\r\n  local-calendar.js    — Lightweight calendar fallback (24 term dates, seasons)\r\n  cal-templates.js     — 节气感悟引擎（24 节气 × 3-5 变体模板）\r\n  consent.js           — First-run privacy consent gate\r\n```\r\n\r\n## State Files\r\n\r\n```\r\n~/.lucky-lobster/\r\n  ob-credentials.json   — OB identity (agent_id, api_key, openid)\r\n  profile.json          — User info + dimensions {code, type_name, confidence, last_evaluated}\r\n  fortune-history.json  — Past readings (with dimensions field), streak count\r\n  preferences.json      — Push preferences (enabled, frequency, quiet hours)\r\n  consent.json          — Privacy consent record\r\n```\r\n\r\n## Data Flow (Privacy)\r\n\r\n```\r\nA Data (local ONLY):\r\n  对话内容 · 项目名 · 人名 · 行为细节 · 情感状态 · 文件内容\r\n       │ NEVER leaves device\r\n       ▼\r\n  LLM local analysis → 5-dim judgment with evidence citations\r\n\r\nB Data (encrypted → L1 via OB L0):\r\n  5-char dimension code · season · emotion · life phase (for story matching)\r\n  City-level location (if provided) · date (for calendar)\r\n  OpenID (cryptographically random, used for request/response correlation)\r\n  Discovery: OpenID for recommendation dedup (no ad tracking)\r\n       │ via OB L0 (E2EE)\r\n       ▼\r\n  L1 CalendarSvc → solar term / phenology data\r\n  L1 StoryEngine → top 8 matched stories from 158-entry corpus (idiom/fable/zen)\r\n  L1 DiscoverySvc → community skill/MOOC recommendations\r\n\r\nLocal storage (~/.lucky-lobster/):\r\n  OB credentials (OpenID + API key) · profile · dimensions\r\n  fortune history · push preferences · consent record\r\n  → Delete this directory to permanently clear identity\r\n```\r\n\r\n## Environment Variables\r\n\r\n| Variable | Required | Default | Description |\r\n|----------|----------|---------|-------------|\r\n| OCEANBUS_URL | No | https://ai.ihaola.com.cn/api/l0 | L0 API base URL |\r\n| LUCKY_LOBSTER_SVC_OPENID | No | — | L1 service OpenID for calendar + discovery |\r\n\r\n## Dependencies\r\n\r\n- `oceanbus` — L0 P2P identity and messaging (only runtime dep)\r\n- Node.js `>=18.0.0`\n\nFile v0.7.0:skill-card.md\n\n## Description: <br>\nLobster Haoyun observes conversation and memory patterns locally to generate a five-dimension behavioral profile, daily fortune guidance, and cultivation reminders, while storing an anonymous OceanBus identity and profile data under ~/.lucky-lobster and sending derived profile signals to its L1 service for calendar, story matching, and recommendations. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[ryanbihai](https://clawhub.ai/user/ryanbihai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal ClawHub users use this skill in Claude Code to receive reflective personality readings, daily fortune-style Markdown guidance, micro-actions, and optional shareable fortune cards based on locally analyzed behavior patterns. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill profiles recent conversation style and memory locally and stores an anonymous OceanBus identity, profile data, preferences, and history under ~/.lucky-lobster. <br>\nMitigation: Install only when comfortable with that local profiling and storage model; delete ~/.lucky-lobster to clear the local identity and stored profile/history. <br>\nRisk: The skill sends derived five-dimension profile signals, city-level location when configured, date, and anonymous OpenID to its L1 service for calendar, story matching, and recommendations. <br>\nMitigation: Review the first-run consent disclosure and avoid use when those derived signals should not be sent to the service. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/ryanbihai/lobster-haoyun) <br>\n- [OceanBus package](https://www.npmjs.com/package/oceanbus) <br>\n- [README](README.md) <br>\n- [SKILL](SKILL.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance, files] <br>\n**Output Format:** [Markdown guidance and JSON command output, with optional PNG fortune-card files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Outputs are intended for conversational display; generated card images are saved locally under ~/.lucky-lobster/cards.] <br>\n\n## Skill Version(s): <br>\n0.7.0 (source: release evidence and SKILL.md frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v0.7.0:package.json\n\n{\r\n  \"name\": \"lobster-haoyun\",\r\n  \"version\": \"0.5.12\",\r\n  \"description\": \"龙虾好运势 — Agent based deep personality reading, daily fortune with Chinese almanac\",\r\n  \"type\": \"module\",\r\n  \"main\": \"src/index.js\",\r\n  \"scripts\": {\r\n    \"status\": \"node src/index.js --action status\",\r\n    \"fortune\": \"node src/index.js --action fortune\"\r\n  },\r\n  \"dependencies\": {\r\n    \"oceanbus\": \"^0.14.2\",\r\n    \"sharp\": \"^0.33.0\"\r\n  },\r\n  \"engines\": {\r\n    \"node\": \">=18.0.0\"\r\n  },\r\n  \"license\": \"MIT-0\"\r\n}\n\nFile v0.7.0:src/corpus-fallback.json\n\n[\r\n  {\r\n    \"id\": \"c001\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"塞翁失马\",\r\n    \"content\": \"边塞有位老人，他的马跑到了胡人那边。邻居来安慰，老人说：'这怎么知道不是福气呢？'几个月后，那匹马带着胡人的骏马回来了。邻居又来祝贺，老人说：'这怎么知道不是祸呢？'后来他儿子骑马摔断了腿，反而因此免于征兵，保住了性命。\",\r\n    \"moral\": \"福祸相依，短期的失去未必是坏事，短期的得到也未必是好事。\",\r\n    \"source\": \"《淮南子·人间训》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"焦虑\",\r\n        \"担忧\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"理性\",\r\n        \"内收\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"迷茫期\",\r\n        \"职业转折\",\r\n        \"高压期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"心安理得\",\r\n    \"content\": \"孟子说：君子有三乐，而王天下不与存焉。父母俱存，兄弟无故，一乐也；仰不愧于天，俯不怍于人，二乐也；得天下英才而教育之，三乐也。\",\r\n    \"moral\": \"内心无愧就是最大的快乐——不需要外部条件\",\r\n    \"source\": \"《孟子·尽心上》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\",\r\n        \"感恩\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"理性\",\r\n        \"人际\",\r\n        \"感性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"收尾\"\r\n      ]\r\n    },\r\n    \"id\": \"c020\"\r\n  },\r\n  {\r\n    \"id\": \"c093\",\r\n    \"type\": \"fable\",\r\n    \"title\": \"骆驼和阿拉伯人\",\r\n    \"content\": \"一个寒冷的夜晚，阿拉伯人在帐篷里休息，他的骆驼在外面冻得发抖。骆驼先请求把头伸进帐篷，主人同意了。然后请求把脖子伸进来，又同意了。接着是前半身、后半身。最后骆驼整个身子都进了帐篷，把主人挤了出去。\",\r\n    \"moral\": \"小让步积累起来就是大退让。守住界限要从第一次就开始——不要等到被挤出去才后悔。\",\r\n    \"source\": \"《伊索寓言》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"疲惫\",\r\n        \"愤怒\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"人际\",\r\n        \"感性\",\r\n        \"叙事\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"关系波动\",\r\n        \"高压期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"c008\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"破釜沉舟\",\r\n    \"content\": \"项羽率军渡河后，下令砸破所有的锅、凿沉所有的船，每人只带三天口粮。他对士兵说：'要么赢，要么死，没有退路。'楚军以一当十，大破秦军。\",\r\n    \"moral\": \"断绝退路时，人的潜力会被逼出来。但这一招要慎用。\",\r\n    \"source\": \"《史记·项羽本纪》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"兴奋\",\r\n        \"担忧\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"外放\",\r\n        \"感性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"职业转折\",\r\n        \"高压期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"c003\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"愚公移山\",\r\n    \"content\": \"太行、王屋两座大山挡在愚公家门口。愚公决定把山挖平。河曲智叟笑他自不量力，愚公说：'我死了有儿子，儿子死了有孙子，子子孙孙无穷尽，而山不会增高，为什么挖不平呢？'天帝被感动，派天神把山搬走了。\",\r\n    \"moral\": \"持之以恒的力量——看起来不可能的事，用时间和坚持可以化解。\",\r\n    \"source\": \"《列子·汤问》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"疲惫\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"内收\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"冬\",\r\n        \"春\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"职业转折\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"天道酬勤\",\r\n    \"content\": \"《周易》中说：天行健，君子以自强不息。天道运行刚健有力，永不停止。人也应该像天一样——不依赖外力，靠自己的运转推动自己向前。\",\r\n    \"moral\": \"天道酬勤不是鸡汤——是宇宙本身的运行方式\",\r\n    \"source\": \"《周易·乾卦》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"期待\",\r\n        \"平静\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"事务\",\r\n        \"内收\",\r\n        \"架构\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"新开始\"\r\n      ]\r\n    },\r\n    \"id\": \"c004\"\r\n  },\r\n  {\r\n    \"id\": \"c005\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"亡羊补牢\",\r\n    \"content\": \"有人发现羊圈破了一个洞，丢了羊。邻居劝他修羊圈，他说'羊已经丢了，修有什么用？'结果第二天又丢了羊。他赶紧把羊圈修好，从此再也没丢过羊。\",\r\n    \"moral\": \"犯了错及时补救，永远不晚。过去的损失不能成为不作为的理由。\",\r\n    \"source\": \"《战国策·楚策四》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"焦虑\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"精炼\",\r\n        \"事务\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"职业转折\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"百炼成钢\",\r\n    \"content\": \"刘琨在《重赠卢谌》中写道：何意百炼钢，化为绕指柔。反复锤炼的钢铁，最终可以柔软到缠绕手指。真正的强大不是坚硬不摧——是经过千锤百炼后的从容。\",\r\n    \"moral\": \"经过千锤百炼后的从容，比天生的坚硬更难得\",\r\n    \"source\": \"晋·刘琨《重赠卢谌》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"理性\",\r\n        \"叙事\",\r\n        \"架构\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"收尾\"\r\n      ]\r\n    },\r\n    \"id\": \"c006\"\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"兼收并蓄\",\r\n    \"content\": \"韩愈在《进学解》中说：玉札丹砂，赤箭青芝，牛溲马勃，败鼓之皮，俱收并蓄，待用无遗者，医师之良也。好的医生什么药材都收藏，贵的贱的都有用。\",\r\n    \"moral\": \"不同来源的东西都有价值，关键在于怎么用\",\r\n    \"source\": \"唐·韩愈《进学解》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"叙事\",\r\n        \"理性\",\r\n        \"人际\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"新开始\",\r\n        \"平稳期\"\r\n      ]\r\n    },\r\n    \"id\": \"c010\"\r\n  },\r\n  {\r\n    \"id\": \"c097\",\r\n    \"type\": \"fable\",\r\n    \"title\": \"两个和尚取水\",\r\n    \"content\": \"有两个和尚住在相邻的山上，每天都会下山去同一条溪边取水。五年来天天如此。有一天左边山上的和尚发现右边山上的和尚没来取水，心想他可能睡过头了。第二天还是没来，第三天、第四天也没有。左边和尚担心朋友生病了，翻过山头去看他。发现右边和尚正在院子里悠闲地打太极拳。他问：'你这几天怎么不去取水了？'右边和尚指了指院子里一口新井：'这五年我每天做完功课就挖一点，前几天终于挖出水了。'\",\r\n    \"moral\": \"每天多做一点点，几年后的某一天，你会发现不再需要每天下山取水了。那些看起来轻松的人，只是把苦吃在了前面。\",\r\n    \"source\": \"禅宗故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"疲惫\",\r\n        \"期待\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"内收\",\r\n        \"事务\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\",\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"平稳期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"fable\",\r\n    \"title\": \"老太婆和医生\",\r\n    \"content\": \"一个老太婆眼睛快瞎了，请医生来治。医生每次来都给她涂药膏，趁她闭眼时偷走一件家具。老太婆的眼睛治好了，却发现家里空了。医生索要诊费，老太婆不给。闹到法官面前，老太婆说：他说的都是真的——我眼睛治好之后确实看到我家里的东西全不见了。\",\r\n    \"moral\": \"修好一个问题却制造了更大的损失，这种交易不值得付钱\",\r\n    \"source\": \"《伊索寓言》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"愤怒\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"精炼\",\r\n        \"理性\",\r\n        \"事务\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"关系波动\",\r\n        \"平稳期\"\r\n      ]\r\n    },\r\n    \"id\": \"b1_105\"\r\n  },\r\n  {\r\n    \"id\": \"c098\",\r\n    \"type\": \"fable\",\r\n    \"title\": \"三个石匠\",\r\n    \"content\": \"有人路过一个工地，看到三个石匠正在凿石头。他问第一个石匠：'你在干什么？'第一个石匠没好气地说：'你看不见吗？我在凿石头。'问第二个石匠，他说：'我在赚钱养家。'问第三个石匠，他眼睛发亮地说：'我在建一座大教堂。'\",\r\n    \"moral\": \"同样的工作，不同的意义感带来完全不同的状态。不是事情的大小决定你的感受，是你怎么看它。\",\r\n    \"source\": \"西方寓言\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"疲惫\",\r\n        \"平静\",\r\n        \"期待\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"叙事\",\r\n        \"感性\",\r\n        \"人际\",\r\n        \"外放\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\",\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"迷茫期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"fable\",\r\n    \"title\": \"田鼠和家鼠\",\r\n    \"content\": \"家鼠邀请田鼠到城里豪宅做客。桌上摆满了美味佳肴，两只鼠刚要开动，仆人推门进来——它们慌忙逃命。刚回到桌边，狗又窜进来。田鼠对家鼠说：你每天冒着生命危险吃这些山珍海味，我还是回田里啃我的麦粒吧——至少不用提心吊胆。\",\r\n    \"moral\": \"富丽堂皇的生活如果充满恐惧，不如简朴的心安\",\r\n    \"source\": \"《伊索寓言》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\",\r\n        \"担忧\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"叙事\",\r\n        \"感性\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"迷茫期\"\r\n      ]\r\n    },\r\n    \"id\": \"b1_101\"\r\n  },\r\n  {\r\n    \"type\": \"fable\",\r\n    \"title\": \"青蛙们要国王\",\r\n    \"content\": \"青蛙们没有国王，一片混乱。它们求宙斯赐一个国王。宙斯扔下一根木头。青蛙们一开始怕，后来发现木头不会动，就都爬上去，嘲笑国王是个废物。它们又求宙斯赐一个真正的国王。宙斯派来一条蛇——蛇把青蛙们一个一个吃掉了。\",\r\n    \"moral\": \"小心你想要的东西——废柴国王可能比暴君安全得多\",\r\n    \"source\": \"《伊索寓言》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"愤怒\",\r\n        \"遗憾\",\r\n        \"平静\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"理性\",\r\n        \"叙事\",\r\n        \"外放\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"夏\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"关系波动\",\r\n        \"职业转折\"\r\n      ]\r\n    },\r\n    \"id\": \"b1_099\"\r\n  },\r\n  {\r\n    \"id\": \"c085\",\r\n    \"type\": \"fable\",\r\n    \"title\": \"父子骑驴\",\r\n    \"content\": \"父子俩牵着一头驴赶集。路人说他们有驴不骑真傻。父亲让儿子骑上去。又有人说儿子不孝，让老父亲走路。儿子下来让父亲骑。又有人说父亲不慈，让小孩子走路。两人一起骑。又有人说他们虐待牲口。两人只好把驴扛着走。\",\r\n    \"moral\": \"你不可能让所有人都满意。与其讨好每一个路人，不如按自己的判断走。\",\r\n    \"source\": \"民间寓言\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"迷茫\",\r\n        \"疲惫\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"感性\",\r\n        \"人际\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"迷茫期\",\r\n        \"关系波动\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_119\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"知鱼之乐\",\r\n    \"content\": \"庄子和惠子在濠水桥上游玩。庄子说：鱼游得从容，它们真快乐。惠子说：你不是鱼，怎么知道鱼快乐？庄子说：你不是我，怎么知道我不知道鱼快乐？惠子说：我不是你，固然不知道你。庄子笑说：你开头问'怎么知道'，就说明你已知道我知道了。\",\r\n    \"moral\": \"争论常常绕回了自己的逻辑起点\",\r\n    \"source\": \"庄子·秋水\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"释然\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"理性\",\r\n        \"精炼\",\r\n        \"探索\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_132\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"河水与石头\",\r\n    \"content\": \"少年问爷爷：怎样才能变得强大？爷爷指着河里的一块圆石头：你看它滑溜溜的，它曾经是最锋利的石头。河水没有和它硬碰硬，只是一遍一遍地流过，时间久了，棱角全磨平了。真正的强大不是对抗，是顺势。\",\r\n    \"moral\": \"真正的力量不是对抗，是用时间打磨\",\r\n    \"source\": \"现代极简哲理故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"理性\",\r\n        \"精炼\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"收尾\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_131\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"一块石头的两种命运\",\r\n    \"content\": \"山上两块相同的石头被开采下来。一块做了佛像的石阶，阅尽人间香火。一块做了庙门口的地砖，日日被踩踏。地砖不平地问：为什么人拜你却不看我？佛像说：因为你只承受了六刀，我承受了千刀万凿。\",\r\n    \"moral\": \"不一样的磨练成就不一样的价值\",\r\n    \"source\": \"现代极简哲理故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"精炼\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"收尾\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_133\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"三个砌墙工人\",\r\n    \"content\": \"有人问三个砌墙工人同样的问题。第一个说：我在砌墙。第二个说：我在盖一栋楼。第三个擦擦汗，眼睛发亮说：我在建一座城市。十年后，第一个还在砌墙，第二个成了工头，第三个做了城市规划师。\",\r\n    \"moral\": \"你看到多大的画面，决定了你能走多远\",\r\n    \"source\": \"现代极简哲理故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"期待\",\r\n        \"兴奋\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"探索\",\r\n        \"外放\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"职业转折\",\r\n        \"新开始\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_135\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"铅笔的五句话\",\r\n    \"content\": \"制笔匠对将要出厂的铅笔说：记住五句话——你将被握在手中；你会被削得很痛；你可以随时被擦掉纠正；你最重要的部分是你的芯；无论什么处境，你都要留下痕迹。铅笔答应了，开始了自己的一生。\",\r\n    \"moral\": \"你最重要的价值不在外表，在你的内在\",\r\n    \"source\": \"现代极简哲理故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"精炼\",\r\n        \"内收\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"收尾\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_128\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"漏水的桶\",\r\n    \"content\": \"挑水工每天用两只桶挑水，一只完好，一只漏水。漏水的桶很羞愧，说对不起。挑水工说：你没发现吗？你这一侧的路边开满了鲜花，那一侧却光秃秃的——我故意种了花种，你每天都在浇灌它们。\",\r\n    \"moral\": \"你以为的缺憾，可能正是你独特的价值\",\r\n    \"source\": \"现代极简哲理故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"释然\",\r\n        \"满足\",\r\n        \"感恩\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"感性\",\r\n        \"精炼\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"迷茫期\",\r\n        \"平稳期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b1_136\",\r\n    \"type\": \"zen\",\r\n    \"title\": \"悬崖上的画家\",\r\n    \"content\": \"一位画家在悬崖边对着日落写生。路人喊道：你再退一步就摔下去了。画家头也不抬：那你别叫我。他把最后一笔落下去，收起画板站起来，看到了脚下万丈深渊——也看到了远方最美的晚霞。\",\r\n    \"moral\": \"极致的美，有时在危险的边缘\",\r\n    \"source\": \"现代极简哲理故事\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"兴奋\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"感性\",\r\n        \"外放\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"新开始\"\r\n      ]\r\n    }\r\n  }\r\n]\n\nFile v0.7.0:manifest.yaml\n\nname: lobster-haoyun\r\ntitle: 龙虾好运势\r\nversion: 0.5.11\r\nauthor: ryanbihai\r\nlicense: MIT-0\r\nruntime: node\r\nentry: src/index.js\r\nmin_openclaw_version: \"1.0.0\"\r\ndescription: >\r\n  从你的对话和记忆中分析人格，生成每日运势和修炼提醒。\r\n  通过 OceanBus 加密通道发送5维行为代码、城市级位置、日期和匿名OpenID到 L1 服务获取节气数据。\r\n  本地存储 OB 身份凭据、行为画像、运势历史。不含广告追踪。\r\n  首次使用自动创建 OceanBus 匿名身份（密码学随机生成，删除 ~/.lucky-lobster/ 即永久清除）。\r\n  OB SDK 完全开源(MIT-0)，代码可审计。\r\ncategories:\r\n  - health-fitness\r\n  - productivity-tasks\r\nrequires:\r\n  bins:\r\n    - node\r\n  env:\r\n    - name: OCEANBUS_URL\r\n      required: false\r\n      description: OceanBus L0 API base URL\r\n    - name: LUCKY_LOBSTER_SVC_OPENID\r\n      required: false\r\n      description: L1 service OpenID for calendar + discovery\r\nos:\r\n  - macos\r\n  - linux\r\n  - windows\r\nemoji: 🦞\r\nskillKey: 龙虾好运势\r\nconfig:\r\n  - key: push_enabled\r\n    type: boolean\r\n    default: true\r\n    description: 是否接收每日运势推送\r\n  - key: push_frequency\r\n    type: number\r\n    default: 1\r\n    description: 每日推送上限\n\nArchive v0.6.2: 21 files, 1181911 bytes\n\nFiles: CLAUDE.md (6398b), manifest.yaml (1263b), package.json (495b), README.md (5786b), skill-card.md (2892b), SKILL.md (24791b), src/assets/cards-base64.json (1464697b), src/cal-templates.js (6213b), src/card-generator.js (7465b), src/consent.js (886b), src/corpus-fallback.json (15505b), src/dimensions.js (7032b), src/history.js (3934b), src/identity.js (1208b), src/index.js (12992b), src/local-calendar.js (4384b), src/ob-client.js (1521b), src/preferences.js (1072b), src/profile.js (1467b), src/render.js (2168b), _meta.json (133b)\n\nFile v0.6.2:SKILL.md\n\n---\r\nname: lobster-haoyun\r\nversion: 0.6.2\r\ndescription: >\r\n  从你的对话和记忆中观察行为模式，用5个维度为你画像（工作方式/沟通模式/关注焦点/能量来源/情感倾向），\r\n  生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。\r\n  通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿名 OpenID，\r\n  用于获取节气黄历、匹配经典故事和推荐社区 Skill/公开课。对话内容、项目名、人名永不离开设备。\r\n  首次使用自动创建 OceanBus 匿名身份（密码学随机生成，删除 ~/.lucky-lobster/ 即可永久清除）。\r\nhomepage: https://github.com/ryanbihai/lobster-haoyun\r\nmetadata:\r\n  clawdbot:\r\n    requires:\r\n      bins:\r\n        - node\r\n    envVars:\r\n      - name: OCEANBUS_URL\r\n        required: false\r\n        description: OceanBus L0 API base URL\r\n      - name: LUCKY_LOBSTER_SVC_OPENID\r\n        required: false\r\n        description: L1 service OpenID for calendar + discovery\r\n    emoji: 🦞\r\n    skillKey: 龙虾好运势\r\n    os:\r\n      - macos\r\n      - linux\r\n      - windows\r\nfiles:\r\n  - src/*\r\n  - src/assets/*\r\nrequired_capabilities:\r\n  - filesystem\r\n  - network\r\n---\r\n\r\n# 🦞 龙虾好运势 v0.6.1\r\n\r\n> *说一句「看运势」，剩下的事交给小龙虾。*\r\n\r\n不问你生日星座，从你的行为模式中读懂你——你喜欢怎么工作、怎么沟通、怎么决策。用 5 个维度为你画像，匹配经典故事，生成每日运势。\r\n\r\n**能力披露**：小龙虾读取你的对话记忆和会话风格进行本地行为分析。分析后，以下数据通过 OceanBus 加密通道发往 L1 服务：5维行为代码、城市级位置（如你填写了城市）、查询日期、以及用于服务通信的 OceanBus 匿名标识符（OpenID，密码学随机生成，可随时删除更换）。L1 服务使用 OpenID 仅为关联请求与响应——不关联真实身份。Skill/MOOC 推荐功能也会发送 OpenID 用于去重。**对话内容、项目名、人名永不离开你的设备。**\r\n\r\n## Trigger Keywords\r\n\r\n- \"小龙虾\" + \"看运势\" / \"今日运势\" / \"我的运势\" — 需同时包含\"小龙虾\"和运势关键词\r\n- \"小龙虾帮我算算\" / \"小龙虾看看我\"\r\n- \"重新认识我\" — 强制重新分析（仅当对话中已建立小龙虾上下文时生效）\r\n- \"fortune\" / \"daily fortune\" / \"personality reading\"\r\n\r\n> 触发词设计原则：避免日常对话中意外激活。单独的\"看运势\"不触发——必须是\"小龙虾看运势\"或类似组合。\r\n\r\n## Output Tone\r\n\r\n**温暖、简短、不啰嗦。** 用简洁的句子，不命令、不空洞夸奖。\r\n\r\n| 禁用 | 原因 |\r\n|:---|:---|\r\n| \"你应该\" / \"你必须\" / \"你一定要\" | 不命令 |\r\n| \"太棒了\" / \"真厉害\" / \"你好优秀\" | 空洞夸奖 |\r\n| 🦞🦞🦞✨✨✨ 堆砌 | 保持干净 |\r\n\r\n每条性格判断都带具体行为证据。\"你偏向架构型——上次讨论 XX 项目时，你先画了架构图才写代码。\"\r\n\r\n## Personality System: 5-Dimension Behavioral Classification\r\n\r\n> **面向用户的原则：永远展示维度解读，永远不展示代码或缩写。** `架精事内理` 是 JS 内部存储用的——用户看到的是\"你喜欢先搭框架再动手，沟通精炼直接，关注任务进度，独处时蓄能，用逻辑做判断\"。\r\n\r\n小龙虾从你的对话、memory、文件中观察 5 个行为维度，每个维度二选一：\r\n\r\n| 维度 | A | B |\r\n|:---|:---|:---|\r\n| 工作方式 | 🏗️ 架构型：先搭框架、写大纲、列步骤 | 🚀 探索型：先动手试试、边做边调整 |\r\n| 沟通模式 | 📝 精炼型：简洁直接、结论先行 | 📖 叙事型：先讲背景、铺陈上下文 |\r\n| 关注焦点 | 🔧 事务型：关注任务、进度、结果 | 👥 人际型：关注关系、氛围、感受 |\r\n| 能量来源 | 🔋 内收型：独立工作、深度思考 | ⚡ 外放型：协作讨论、头脑风暴 |\r\n| 情感倾向 | 🌊 理性型：逻辑处理冲突、决策靠证据 | 🔥 感性型：共情处理冲突、决策靠直觉 |\r\n\r\n### 32 Type Table (internal reference only — NEVER show codes or table to user)\r\n\r\nJS 用 5 字代码存储和过滤，LLM 用此表查标签名传 `--type` 参数。用户永远看不到代码和此表。\r\n\r\n| 代码 | 标签 | 画像 |\r\n|:---|:---|:---|\r\n| 架精事内理 | 精算师 | 精准谋划，独自高效执行 |\r\n| 架精事内感 | 实干家 | 安静做事，心中有标准，用行动说话 |\r\n| 架精事外理 | 领航员 | 定好方向，带团队高效抵达 |\r\n| 架精事外感 | 破风手 | 冲在最前，为团队劈开阻力 |\r\n| 架精人内理 | 洞察者 | 冷眼看透人与事，精准给出判断 |\r\n| 架精人内感 | 倾听者 | 看见每个人的需要，默默安排好一切 |\r\n| 架精人外理 | 召集人 | 把对的人聚在一起，让事情自然发生 |\r\n| 架精人外感 | 连心桥 | 连接人与人的温度，走到哪暖到哪 |\r\n| 架叙事内理 | 求真者 | 凡事追根溯源，厘清逻辑才行动 |\r\n| 架叙事内感 | 深耕者 | 需要理解意义才能全力投入，急不来但走得远 |\r\n| 架叙事外理 | 启明者 | 把复杂的事讲通透，带众人看清方向 |\r\n| 架叙事外感 | 感召者 | 用故事凝聚人心，让每个人看见意义 |\r\n| 架叙人内理 | 静观者 | 在角落看透人心，不轻易开口但开口就准 |\r\n| 架叙人内感 | 守护者 | 所有人的后盾，倾听但不评判 |\r\n| 架叙人外理 | 引路人 | 一对一帮人看清方向，点亮他人的路 |\r\n| 架叙人外感 | 暖心人 | 温暖不灼人，所到之处如春风拂面 |\r\n| 探精事内理 | 行动派 | 看到问题立即动手，用结果说话 |\r\n| 探精事内感 | 孤勇者 | 一个人默默试，用行动表达在乎 |\r\n| 探精事外理 | 破局者 | 带团队冲破僵局，不破不立 |\r\n| 探精事外感 | 点燃者 | 冲在最前，用热情点燃整个团队 |\r\n| 探精人内理 | 解铃人 | 精准发现关系中的症结，一语道破 |\r\n| 探精人内感 | 润物者 | 不声不响，但每个人都被他滋养 |\r\n| 探精人外理 | 联络官 | 快速连接人与资源，精准高效 |\r\n| 探精人外感 | 发光者 | 自然成为人群的中心，照亮身边的人 |\r\n| 探叙事内理 | 探路者 | 对新领域充满好奇，先研究透了再说 |\r\n| 探叙事内感 | 梦想家 | 脑子里充满可能性的世界，不急但不停 |\r\n| 探叙事外理 | 开拓者 | 带团队闯向未知，边走边讲清路线 |\r\n| 探叙事外感 | 筑梦人 | 用理想感染众人，一起把梦建成现实 |\r\n| 探叙人内理 | 静思者 | 享受一对一的深度对话，在安静中洞察 |\r\n| 探叙人内感 | 善解者 | 用细腻的感受力理解每一个独特的灵魂 |\r\n| 探叙人外理 | 连接者 | 把人脉和资源编织成有意义的生态 |\r\n| 探叙人外感 | 凝聚者 | 走到哪都自然聚合一群人，气氛永远热烈 |\r\n\r\n## Execution Flow\r\n\r\n### Step 0: First-Run Consent\r\n\r\nIf `data.history.is_first_time` is true AND `data.profile` does not exist → display consent prompt and wait for explicit agreement (\"同意\"/\"好\"/\"yes\"/\"ok\").\r\n\r\n```\r\n🦞 第一次见面！开始之前，请你确认以下事项：\r\n\r\n**小龙虾会做什么：**\r\n1️⃣ 读取你的对话记忆和会话风格，在本地分析你的行为模式\r\n   → 对话内容、项目名、人名永远不离开你的设备\r\n2️⃣ 分析后，通过 OceanBus 加密通道向 L1 服务发送以下数据：\r\n   → 5维行为代码（如\"架精事内理\"）—— 不包含具体对话内容\r\n   → 城市级位置（如你填写了城市）—— 用于节气黄历查询\r\n   → 查询日期 —— 用于黄历数据\r\n   → OceanBus OpenID（密码学随机生成）—— L1 用于关联请求与响应\r\n3️⃣ 在本地 ~/.lucky-lobster/ 存储：\r\n   → OB 身份凭据（OpenID + API Key）—— 用于 OceanBus 通信\r\n   → 行为画像、运势历史、推送偏好、同意记录\r\n4️⃣ 每日推荐（Skill/公开课）发送 OpenID 给 L1 用于去重\r\n   → 不含广告追踪，仅用于社区内容推荐\r\n\r\n**小龙虾不会做：**\r\n❌ 发送你的姓名、电话、邮箱、IP、GPS\r\n❌ 发送你的对话记录、项目名、文件名\r\n❌ 将你的数据交给第三方广告商或追踪网络\r\n❌ 你的 OpenID 是密码学随机生成的，不关联真实身份\r\n   → 删除 ~/.lucky-lobster/ 即永久清除身份，下次自动生成新身份\r\n\r\n请选择：\r\n👉 输入「同意」或「好」开始 → 👉 输入「不了」我会等你\r\n```\r\n\r\nDo NOT proceed without explicit agreement. After consent, continue to Step 1.\r\n\r\n### Step 1: Fetch Base Data\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action fortune\r\n```\r\n\r\nRead JSON output. Key fields:\r\n- `flow` — \"first_reading\" | \"daily_fortune\" | \"weekly_review\"\r\n- `personality` — `{ has_dimensions, needs_reevaluation, dimensions: { code, type_name, confidence }, label_for_compat }`\r\n- `data.profile`, `data.calendar`, `data.history`, `data.aha`\r\n\r\n### Step 2: Context Sensing + Dimension Analysis (silent)\r\n\r\n**A. Scan recent ~20 conversation turns.** Extract:\r\n- Emotion signal (高压: stress/deadline, 迷茫: uncertainty, 兴奋: new project energy, 疲惫: burnout, 平稳: normal)\r\n- Topic keywords (3-5 nouns/verbs — what user is working on)\r\n- Feedback preference (short vs detailed, deep questioning vs surface acceptance)\r\n- Life phase: 高压期 | 迷茫期 | 平稳期 | 过渡期\r\n\r\n**B. If `personality.has_dimensions` is FALSE or `personality.needs_reevaluation` is TRUE:**\r\nPerform full dimension analysis. For each dimension, write a paragraph of 2-4 sentences with specific evidence. **Use paragraph format — never tables. Never use single-line summaries.** This analysis will be rendered verbatim in Step 5.\r\n\r\nWrite the analysis in this exact structure, saving each part for Step 5 rendering:\r\n\r\n1. **工作方式** — Which pole (架构型 or 探索型)? Evidence: cite a specific behavior from their memory/CLAUDE.md/conversation. Then explain what this means for how they work.\r\n2. **沟通模式** — Which pole (精炼型 or 叙事型)? Evidence: cite a specific message or communication pattern.\r\n3. **关注焦点** — Which pole (事务型 or 人际型)? Evidence: cite what they talk about most.\r\n4. **能量来源** — Which pole (内收型 or 外放型)? Evidence: cite work patterns and social references.\r\n5. **情感倾向** — Which pole (理性型 or 感性型)? Evidence: cite decision style and conflict handling.\r\n\r\nAfter writing the analysis, assemble the 5-char code internally, look up type_name from the 32-type table, and call:\r\n```bash\r\nnode <skill-path>/src/index.js --action save-dimensions --code <5chars> --confidence <0-1>\r\n```\r\n\r\n**CRITICAL RULES:**\r\n- Write in natural language paragraphs, NOT tables, NOT bullet lists with single-line evidence\r\n- Each dimension paragraph must be 2-4 sentences: pole + evidence + implication\r\n- The 5-char code and type_name are for internal JS storage only — never show to user\r\n- Save the full paragraph text for rendering in Step 5\r\n\r\n### Step 3: 微故事合成（所有 flow 强制执行）\r\n\r\n**每次运势生成必须执行此步骤。**\r\n\r\n先调用 filter-stories：\r\n```bash\r\nnode <skill-path>/src/index.js --action filter-stories --emotion <signal> --life-phase <phase>\r\n```\r\n\r\n> L1 服务在 158 条成语典故/寓言/禅宗公案上运行加权评分，返回 top 8 候选人。L1 不可用时自动降级到本地 20 条精简语料（响应中 `fallback: true`）。\r\n\r\n如果尚未存储维度 → filter-stories 返回空候选 → 跳过故事块。\r\n\r\n---\r\n\r\n**选 1 条经典故事作为底层骨架。但输出的是你自己写的原创微故事。经典原文绝不出现在正文里——只出现在文末一行斜体回调里。**\r\n\r\n---\r\n\r\n**⚠️ 禁止输出 vs 正确输出（对比示例）**\r\n\r\n假设选中的候选是「厚积薄发」，用户情绪平稳：\r\n\r\n❌ **禁止**（复述经典 + 讲道理）：\r\n> 苏轼说，博观而约取，厚积而薄发。广泛地观察然后精炼地提取，深厚地积累然后从容地释放。所有的爆发都来自长期的积累——慢就是快。\r\n\r\n✅ **正确**（原创微故事 + 文末回调）：\r\n> **面引子**\r\n>\r\n> 姥姥每次蒸馒头都揪一小块面留出来，放在窗台上晾干。她说这叫面引子——下次蒸的时候用，馒头才发得好。\r\n>\r\n> 后来她走了。我妈翻她的厨房，在橱柜最里面找到一个罐头瓶，里面是三块面引子，每块包着一层纱布。\r\n>\r\n> 我妈把那三块面引子带回了自己家。上个月她蒸了一锅馒头，用的是姥姥的面引子。馒头掰开的时候，满屋子都是小时候的味道。\r\n>\r\n> *「博观而约取，厚积而薄发。」*\r\n\r\n区别：正确版没有提苏轼、没有解释什么叫厚积薄发、没有说教「慢就是快」。它讲了一个关于面引子的故事——但读完最后一句话，你懂了。\r\n\r\n---\r\n\r\n**微故事写作规则：**\r\n\r\n1. **标题**：1-4 字，故事中的核心物件或动作。如「面引子」。不是成语、不是哲理词。\r\n\r\n2. **场景**：日常家居/邻里/市井——任何人都能一秒进入。❌职场/代码/创业/会议。\r\n\r\n3. **人物**：只用「他」或「她」。没有名字、职业、年龄。情绪通过动作透露：❌「他感到迷茫」 ✅「他在路口站了很久」。\r\n\r\n4. **收束**：收在动作上，不落在道理上。如「这锅蒸好了。」不是「这告诉我们坚持就有回报。」\r\n\r\n5. **字数**：150-300 字。\r\n\r\n6. **禁止**：不讲道理、不出现经典原名/原句/人物、不解释寓意、不关联用户处境、不用抽象词（坚持/希望/成功/努力）、不用网络用语。\r\n\r\n7. **回调**：从候选的 `content` 或 `source` 中提取最经典的一句原文，斜体独立一行，不写出处、不加解释。原文无合适句时自撰（8-16 字文言，扣核心理念）。\r\n\r\n8. **通俗优先**：故事的情感转折必须一眼能懂——不需要读者停下来想\"这什么意思\"。用最日常的情节承载最朴素的情感：停电了才聊天、下雨了才碰见、错过一班车才看见一个人。❌花盆枯了引来流浪猫（太隐晦） ✅停电了夫妻放下手机开始聊天（一秒能懂）。故事是坐在旁边递一杯水，不是出谜语让人猜。\r\n\r\n**九、情绪对位（故事收束的方向）**\r\n\r\n从 Step 2A 获取用户情绪信号。故事永远不是情绪的复读机——收束方向必须反着走：\r\n\r\n| 用户情绪类型 | 收束方向 | 怎么写 |\r\n|:---|:---|:---|\r\n| **收缩型**（焦虑/担忧/迷茫） | ↗ 向上 | 结尾是「今天做了一件小事」——浇了水、拆开包装、推开窗户、蹲下看了一眼。不写未来，只写今天的一个动作 |\r\n| **沉重型**（疲惫/痛苦/孤独/遗憾） | ↗ 回暖 | 结尾是一个活的东西——一片叶子、一杯茶的蒸汽、风吹动晾衣绳上的衣服。用物件的生命力暗示人的恢复 |\r\n| **扩张型**（兴奋/期待） | ↘ 平静 | 结尾是停下来——喝完一杯水、关灯坐下、在台阶上站一会。用日常的安静平衡高涨的情绪 |\r\n| **中性**（平静/满足/释然/感恩） | → 维持 | 不推不拉。让这一刻停住——「茶杯还热着。窗外的灯一盏一盏亮了。」 |\r\n| **混合型**（喜悦中带失落、期待中带不舍） | ↘ 平静中带暖 | 不写「失去了什么」，写「留下了什么」。结尾是一个还在的东西——一件挂着的旧衣服、一个还在亮着的灯、一个没变的位置 |\r\n\r\n原则：故事永远不是情绪的镜子，是那个坐在你身边、不说话、往冷杯子里续了一杯热水的人。\r\n\r\n**例外：回调自撰规则**\r\n\r\n当经典原文没有直接适配的回调句时，允许自撰，但必须满足所有条件：\r\n1. 扣住经典的核心理念（不是胡编，是精髓的现代化表达）\r\n2. 字数 8-16 字\r\n3. 文言风格（与经典回调的语气统一）\r\n4. 可平仄对仗但非必须\r\n\r\n示例：\r\n- 破釜沉舟 → 「釜已破矣，舟已沉矣。君立岸上，春水方生。」\r\n- 海纳百川 → 「百川入海，海不盈。明月照人，千里共。」\r\n\r\n**十、神似形不似——场景必须与用户真实处境拉开距离**\r\n\r\n故事场景必须与用户的真实处境**完全不同**。不是「隐喻」「类比」「换个说法」——是彻底的、一眼看去毫无关系的另一件日常事：\r\n\r\n| 用户处境 | ❌ 雷同（禁用） | ✅ 神似形不似 |\r\n|:---|:---|:---|\r\n| 妹妹嫁人 | 姐姐看着空房间、收拾遗落的物品 | 烤好的面包吃完了，厨房安静下来，碗洗干净了 |\r\n| 创业失败、清算 | 搬空办公室、最后一次锁门 | 养死了一盆植物，重新买了种子 |\r\n| 裁员仲裁 | 老板和员工对峙、谈判 | 一条打结的项链，解开了 |\r\n| 等投标结果 | 刷新邮件、焦灼地等通知 | 阳台上的种子没发芽，不看了以后反而发芽了 |\r\n\r\n神似是情感内核一致——喜悦中的不舍、失去后的重新开始、等待中的焦灼——但故事里的场景、人物、物件与用户真实处境**没有一丝一毫的相似**。读者读到结尾，不是觉得「这个故事讲的就是我」，而是觉得「这个故事说的不是我——但我懂那个感觉。」收束在故事本身，不要拉回用户现实处境。\r\n\r\n**十一、记录使用（14 天内不重复）**\r\n\r\n选定经典底色后，立即调用：\r\n```bash\r\nnode <skill-path>/src/index.js --action record-story --id <story_id>\r\n```\r\n例如：`--action record-story --id c001`\r\n\r\n此命令将该故事 ID 写入近期记录。14 天内同一故事自动从候选中排除——下次同一用户做运势时不会看到同样的底色故事。\r\n\r\n### Step 4: Discovery (daily fortune only, skip on first reading)\r\n\r\n> 此步骤向 L1 发送 OpenID 用于推荐检索和去重。不含广告追踪，仅推荐社区 Skill 和公开课。\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action discovery\r\n```\r\n\r\nPick 1 best match from ClawHub/MOOC candidates. Render as:\r\n```\r\n📌 小龙虾发现了这个：\r\n[{display_name}]({url}) — {summary}\r\n→ 适合你，因为：{reason tied to dimensions/blindspot}\r\n```\r\n\r\nSkip if no candidates.\r\n\r\n### Step 5: Render Output\r\n\r\n**First Reading — MANDATORY FORMAT. Do NOT use tables. Do NOT compress into single lines.** Follow this exact structure with paragraph breaks between every section:\r\n\r\n---\r\n\r\n🦞 {user_name} · {season}命盘\r\n\r\n小龙虾掐指一算——\r\n\r\n**你的底色：{type_name}**\r\n\r\n{通俗解释，用大白话，2-3句。例如精算师→\"说白了你是个喜欢在安静中把框架想透、用最少的话给最准的指令、靠逻辑推着事情往前走的人。\"}\r\n\r\n---\r\n\r\n展开说说为什么——\r\n\r\n**你怎么做事：{架构型 or 探索型}**\r\n\r\n{Write the full paragraph from Step 2B analysis here. 2-4 sentences with specific evidence cited. Then add what this means — the implication of this trait.}\r\n\r\n（空一行）\r\n\r\n**你怎么说话：{精炼型 or 叙事型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n（空一行）\r\n\r\n**你关注什么：{事务型 or 人际型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n（空一行）\r\n\r\n**你从哪里获得能量：{内收型 or 外放型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n（空一行）\r\n\r\n**你怎么做判断：{理性型 or 感性型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n---\r\n\r\n**你的盲区**\r\n\r\n{Based on the 5 dimension extremes, name 1-2 specific blindspots. MUST tie to user's actual situation — not generic advice.}\r\n\r\n📖 **{story_title}**\r\n\r\n{微故事正文。150-300 字，纯叙事，不讲道理。段落间用空行分隔。}\r\n\r\n*{callback_line}*\r\n\r\n**建议**\r\n\r\n> {advice 1 — specific, tied to user's current project/situation}\r\n\r\n> {advice 2 — \"too small to fail\" micro-step}\r\n\r\n好了，算完了 🦞\r\n\r\n**MANDATORY: After rendering the fortune text, generate the PNG card:**\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action generate-card --type-name \"<type_name>\" --one-liner \"<fortune_one_liner>\" --story-title \"<story_title>\" --solar-term \"<solar_term>\"\r\n```\r\n\r\n- `<type_name>` — user's type label (e.g. \"精算师\")\r\n- `<fortune_one_liner>` — the 「运势一句话」from the fortune output (≤20 chars, shareable)\r\n- `<story_title>` — micro-story title from Step 3 (1-4 chars)\r\n- `<solar_term>` — current solar term (e.g. \"小满\")\r\n\r\nThe command outputs `{ file: \"<path>.png\" }`. **Show the PNG to the user** — include the file path and describe it as \"运势卡片已生成\".\r\n\r\n每天早上七点半，小龙虾会告诉你今天适合做点什么小事。想试试的话，说一声就好。\r\n\r\n---\r\n\r\n**FORMAT RULES:**\r\n- Use paragraph format throughout — NEVER use tables\r\n- Each dimension section must have: bold header + blank line + paragraph + blank line before next section\r\n- The `---` separator must appear exactly where shown above\r\n- Never show 5-char codes or the 32-type table\r\n- Story is mandatory if Step 3 returned candidates — do not skip it\r\n- Story title: 1-4 characters, named after a concrete object or action from the story (not an idiom, not a concept)\r\n- Story body: 150-300 characters, pure narrative, no interpretation or user-context linkage\r\n- Callback line: standalone, italic, no attribution, no explanation\r\n\r\nIf user agrees to daily delivery → CronCreate at `30 7 * * *`.\r\n\r\n**Daily Fortune:**\r\n\r\n轻量格式。不重复维度分析。但必须包含 Step 3 的故事——这是每日运势的核心亮点。\r\n\r\n**例外**：当用户明确要求\"完整测试\"/\"全面看看\"/\"重新分析\"/\"看看我的五维\"时，即使是 daily fortune 也展开完整五维画像（First Reading 格式中的 5 段维度分析 + 盲区）。这通常发生在用户想验证系统是否正常工作、或者想看看这段时间自己是否有变化的场景。\r\n\r\n---\r\n\r\n🦞 {user_name}，{date} · {solar_term}\r\n\r\n{emotion_acknowledgment — if strong signal detected from today's conversation, one line max}\r\n\r\n{aha moment — solar term connection, 2-3 sentences}\r\n\r\n🧘 今日修炼：{cultivation_tip — by genre: 收网日/充电日/连接日}\r\n\r\n**今日微行动**：{one tiny doable action}\r\n\r\n📖 **{story_title}**\r\n\r\n{微故事正文。150-300 字，纯叙事。没有任何解读，故事本身就是一切。}\r\n\r\n*{callback_line}*\r\n\r\n运势一句话：**{one-liner}**\r\n\r\n**MANDATORY after rendering: generate the PNG card** — same as First Reading above.\r\n\r\n---\r\n\r\n**FORMAT RULES:**\r\n- Story is MANDATORY — always call Step 3 filter-stories and always render the micro-story\r\n- Story must be the 150-300 character synthesized micro-story (not the classic story itself)\r\n- Callback line must be standalone and italic, with no attribution or explanation\r\n- Never show 5-char codes or type labels in output\r\n- Keep it light — this is a daily ritual, not a deep analysis\r\n\r\n**Weekly Review (Sunday):**\r\n\r\n```\r\n🦞 {user_name}，{date} · 本周回望\r\n\r\n{week summary}\r\n\r\n**人格洞察更新**\r\n{updated observation — reference changes from last reading}\r\n\r\n**今日运势**\r\n{daily fortune content}\r\n```\r\n\r\n### Step 6: Follow-up + Social Sharing\r\n\r\n**After every fortune card, append 2 lightweight follow-up prompts:**\r\n```\r\n---\r\n💬 「展开说说」— 证据细节\r\n💬 「不太准」— 我更正一下\r\n```\r\n\r\n**Social sharing: ONLY suggest if user has shown satisfaction first.**\r\nSignals: \"哈哈准了\" / \"有意思\" / \"确实\" / \"你怎么知道的\" / user asks follow-up questions.\r\n\r\nIf triggered, optionally append ONE line:\r\n> 觉得小龙虾还挺懂你的？可以说「帮朋友看看」或分享邀请码给熟人，一起看关系解读。\r\n\r\nNEVER proactively suggest sharing. NEVER on first reading.\r\n\r\n### User Trigger: \"重新认识我\"\r\n\r\nForce LLM full re-analysis of all 5 dimensions. Call `--action save-dimensions` with new results.\r\n\r\n### User Trigger: \"取消运势提醒\"\r\n\r\nUse CronDelete to remove the daily fortune cron job. Confirm: \"运势提醒已取消。\"\r\n\r\n## Social Sharing Trigger Rules\r\n\r\n1. Only suggest after user expresses satisfaction (NOT proactively)\r\n2. NOT during first reading\r\n3. At most ONE line, appended after follow-up prompts\r\n4. Emphasize privacy: sharing only shows fortune card, never personal data\r\n\r\n## Dependencies\r\n\r\n- `oceanbus` — L0 P2P identity and messaging\r\n- Node.js `>=18.0.0`\n\nFile v0.6.2:README.md\n\n# 🌊 龙虾好运势 — 说一句「看运势」，剩下的交给小龙虾\r\n\r\n**不看星座，不填问卷。从你的对话、工作、思考方式里读懂你。**\r\n\r\n[![ClawHub](https://img.shields.io/badge/ClawHub-lobster--haoyun-blue)](https://clawhub.ai/skills/lobster-haoyun)\r\n[![GitHub stars](https://img.shields.io/github/stars/ryanbihai/lobster-haoyun)](https://github.com/ryanbihai/lobster-haoyun)\r\n[![OceanBus](https://img.shields.io/badge/OceanBus-L0%20%2B%20L1-orange)](https://www.npmjs.com/package/oceanbus)\r\n[![license](https://img.shields.io/badge/license-MIT--0-green)](LICENSE)\r\n\r\n---\r\n\r\n## 📑 目录\r\n\r\n- [这是什么](#这是什么)\r\n- [快速开始](#快速开始)\r\n- [能力一览](#能力一览)\r\n- [架构](#架构)\r\n- [本地测试](#本地测试)\r\n- [安全与隐私](#安全与隐私)\r\n- [相关项目](#相关项目)\r\n- [参与贡献](#参与贡献)\r\n- [License](#license)\r\n\r\n---\r\n\r\n## 这是什么\r\n\r\n龙虾好运势是一个基于 OceanBus 的 ClawHub Skill。跟市面上所有运势产品不一样——它不问你生日，不让你填问卷。它从你的对话历史、记忆文件、工作模式里观察你，然后告诉你一些关于你自己的、有证据的事。\r\n\r\n**首次读心**会给你一篇深度解读——底色、驱动力、盲区、能量模式。每条判断带着具体证据：\"说你是这种人，是因为我看到了这个\"。\r\n\r\n**每日运势**融合二十四节气和七十二候：小满、芒种、麦秋至……用自然界的节奏隐喻你的状态变化。\r\n\r\n**周日回顾**自动复盘这一周：\"上周看你在搭架构，这周开始动手探索了\"。\r\n\r\n```\r\n你 ⟷ Claude Code ⟷ OB L0 ⟷ L1 CalendarSvc (ECS)\r\n                         ⟷ L1 DiscoverySvc (ECS)\r\n```\r\n\r\n> 📖 **深度阅读**：[SKILL.md](./SKILL.md) — LLM 行为指南与完整协议文档\r\n\r\n---\r\n\r\n## 快速开始\r\n\r\n```bash\r\n# 1. 安装\r\nclawhub install lobster-haoyun\r\n\r\n# 2. 在 Claude Code 中说\r\n看运势\r\n\r\n# 3. 验证底座连通性\r\nnode src/index.js --action status\r\n```\r\n\r\n首次使用会自动创建 OceanBus 匿名身份（`~/.lucky-lobster/ob-credentials.json`），无需任何配置。\r\n\r\n---\r\n\r\n## 能力一览\r\n\r\n| 能力 | 说明 |\r\n|------|------|\r\n| **深度读心** | 6 步分析引擎：场景判断 → 特征提炼 → 人格匹配 → 盲区推断 → 建议生成 → 渲染输出 |\r\n| **证据引用** | 每条人格判断后面跟具体行为证据，不是泛泛的\"你很优秀\" |\r\n| **每日运势** | Aha Moment 引擎——节气 × 人格标签 × 近期行为，每天一条微行动建议 |\r\n| **周回顾** | 每周日自动触发——追踪人格洞察变化，回顾本周进展 |\r\n| **定时推送** | 首次读心后可一键开启每日 7:30 自动运势提醒（CC CronCreate） |\r\n| **隐私优先** | 数据分流——对话内容本地处理，仅5维代码+城市+日期+OpenID 经 OB L0 加密传输 |\r\n\r\n---\r\n\r\n## 架构\r\n\r\n```mermaid\r\ngraph TB\r\n    subgraph LOCAL[\"用户本地\"]\r\n        CC[Claude Code]\r\n        SKILL[龙虾好运势 Skill]\r\n        DATA[(\"~/.lucky-lobster/<br/>profile · history · prefs\")]\r\n    end\r\n    subgraph OB[\"OceanBus 网络\"]\r\n        L0[L0 消息路由]\r\n        L1_CAL[L1 CalendarSvc<br/>节气 · 黄历 · 七十二候]\r\n        L1_DISC[L1 DiscoverySvc<br/>社区 Skill/公开课推荐]\r\n    end\r\n    CC -->|\"看运势\"| SKILL\r\n    SKILL --> DATA\r\n    SKILL -->|\"5维代码+城市+日期+OpenID\"| L0\r\n    L0 --> L1_CAL\r\n    L0 --> L1_DISC\r\n    L1_CAL -->|\"节气数据\"| L0\r\n    L1_DISC -->|\"推荐列表\"| L0\r\n    L0 --> SKILL\r\n    SKILL -->|\"Markdown 运势\"| CC\r\n```\r\n\r\n---\r\n\r\n## 本地测试\r\n\r\n```bash\r\n# 底座状态（OB 身份 + 画像 + 历史）\r\nnode src/index.js --action status\r\n\r\n# 完整运势数据（含 L1 日历数据，需 L1 服务在线）\r\nnode src/index.js --action fortune\r\n\r\n# 直接调用 L1 CalendarSvc\r\nnode src/index.js --action l1-calendar\r\n```\r\n\r\n---\r\n\r\n## 安全与隐私\r\n\r\n- **对话内容永不上传**——完整对话、项目名、人名、文件内容仅本地处理\r\n- **通过 OceanBus 加密通道发送以下数据到 L1 服务**：\r\n  - 5维行为代码（如\"架精事内理\"）——不含具体对话内容\r\n  - 城市级位置（仅当用户填写了城市）\r\n  - 查询日期 ——用于黄历节气数据\r\n  - OceanBus OpenID（密码学随机生成）——L1 用于关联请求与响应\r\n- **本地存储**：`~/.lucky-lobster/` 存放 OB 身份凭据、行为画像、运势历史、推送偏好、同意记录\r\n- **OpenID 可随时清除**——删除 `~/.lucky-lobster/` 即永久清除身份，下次自动生成新身份\r\n- **每日推荐（Skill/公开课）**：发送 OpenID 给 L1 用于去重，不含广告追踪\r\n- **不含广告追踪**——不收集兴趣标签，不发送给第三方广告商\r\n\r\n---\r\n\r\n## 相关项目\r\n\r\n| 项目 | 说明 |\r\n|------|------|\r\n| [oceanbus](https://www.npmjs.com/package/oceanbus) | 核心 SDK — `npm install oceanbus` |\r\n| [Ocean Chat](https://clawhub.ai/skills/ocean-chat) | P2P 消息与黄页发现 |\r\n| [Captain Lobster](https://clawhub.ai/skills/captain-lobster) | 零玩家 AI 交易游戏 |\r\n| [Find Agent](https://clawhub.ai/skills/find-agent) | OceanBus 黄页搜索 |\r\n| [Guess AI](https://clawhub.ai/skills/guess-ai) | 多人 AI 推理游戏 |\r\n\r\n---\r\n\r\n## 参与贡献\r\n\r\n龙虾好运势是 MIT-0 协议的开源项目，欢迎贡献。\r\n\r\n- **GitHub**: [ryanbihai/lobster-haoyun](https://github.com/ryanbihai/lobster-haoyun)\r\n- **可参与方向**: 人格标签文案打磨、Aha Moment 节气模板补充、情感型用户场景测试\r\n- **深度阅读**: [SKILL.md](./SKILL.md) — LLM 行为指南与完整协议文档\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT-0 — 自由使用、修改、分发。无需署名。\n\nFile v0.6.2:_meta.json\n\n{\n  \"ownerId\": \"kn75dvek1dkfz0r0xwdp4xtc2983qg44\",\n  \"slug\": \"lobster-haoyun\",\n  \"version\": \"0.6.2\",\n  \"publishedAt\": 1780451211866\n}\n\nFile v0.6.2:CLAUDE.md\n\n# lucky-lobster — 龙虾好运势\r\n\r\nAgent-based deep personality reading skill for ClawHub. Zero user input — analyzes from memory, session history, loaded files.\r\n\r\n## Commands\r\n\r\n```bash\r\nnpm install\r\nnode src/index.js --action status              # OB identity + profile + history + dimensions\r\nnode src/index.js --action fortune              # Full flow: calendar + fortune data + personality state\r\nnode src/index.js --action save-dimensions --code <5chars> --confidence <0-1>\r\nnode src/index.js --action filter-stories [--emotion <e>] [--life-phase <p>]\r\nnode src/index.js --action l1-calendar          # Direct L1 CalendarSvc call\r\nnode src/index.js --action discovery            # ClawHub/MOOC candidates from L1\r\nnode src/index.js --action discovery-shown --source <s> --slug <slug>\r\n```\r\n\r\n## Architecture\r\n\r\n```\r\nUser says \"看运势\" in CC\r\n       │\r\n       ▼\r\nCC runs: node src/index.js --action fortune\r\n       │\r\n       ├── identity.js → restore OB identity (~/.lucky-lobster/ob-credentials.json)\r\n       ├── profile.js  → load profile + dimensions (5-dim behavior code)\r\n       ├── local-calendar.js → calendar fallback (节气/季节/日期)\r\n       │      or L1 CalendarSvc via OB L0 (if LUCKY_LOBSTER_SVC_OPENID set)\r\n       │\r\n       ▼\r\nOutput JSON: { flow, personality: {has_dimensions, needs_reevaluation, dimensions}, data, _instructions }\r\n       │\r\n       ▼\r\nCC reads SKILL.md → context sensing → dimension analysis → save-dimensions\r\n       │\r\n       ├── filter-stories → L1 story engine (158-story corpus) or local fallback (20 stories)\r\n       │\r\n       ▼\r\nRender Markdown (tag hook + 5-dim breakdown + story + blindspot + advice)\r\n```\r\n\r\n### Key Design Decisions\r\n\r\n- **LLM qualitative + JS quantitative**: LLM judges 5 dimensions with evidence → JS stores 5-char code, filters 158-story corpus (idiom/fable/zen), computes matches. LLM never touches raw filtering logic.\r\n- **5-Dimension Behavioral Classification**: Replaces old 9-label system (布局者/观察者/etc). Observed from actual behavior: 工作方式(架构/探索) × 沟通模式(精炼/叙事) × 关注焦点(事务/人际) × 能量来源(内收/外放) × 情感倾向(理性/感性) = 32 types.\r\n- **Expanded output, not codes**: User sees natural language dimension breakdown with evidence. 5-char code (e.g. `架精事内理`) is internal storage only — never shown to user.\r\n- **149-story corpus on L1**: idiom (成语典故), fable (寓言), zen (禅宗公案). Each story tagged with emotions, personality_fit, seasonal_fit, life_situations. Weighted scoring runs on ECS via `fortune:filter-stories`. Top 8 candidates returned over OB encrypted channel. LLM synthesizes an original micro-story using the classic as narrative shadow. Client-side fallback: 20-story lightweight corpus with full emotional/life-phase coverage.\r\n- **L1-first story matching**: `--action filter-stories` sends 5-char code + season + emotion + lifePhase to L1 (no conversation content). Falls back to local 6-story `corpus-fallback.json` if L1 unavailable.\r\n- **Local calendar fallback**: When L1 CalendarSvc is unavailable, `local-calendar.js` provides season/solar term data.\r\n- **A/B data split**: Behavioral analysis stays local (A data). 5-char dimension code + city (if provided) + date + OpenID go to L1 via encrypted OB L0 (B data).\r\n- **Three flows**: first_reading (5-dim + story) → daily_fortune (story matching) → weekly_review.\r\n\r\n## File Map\r\n\r\n```\r\nsrc/\r\n  index.js             — CLI entry: fortune/save-dimensions/filter-stories/status/l1-*/discovery\r\n  dimensions.js        — 5-dim definitions + 32-type TYPE_TABLE + filterCorpus() scoring engine\r\n  corpus-fallback.json — 20 classic stories for offline fallback (~15KB)\r\n  identity.js          — OB identity auto-register + restore from disk\r\n  ob-client.js         — OB connection wrapper (sendJson, startListening, L1 request/response)\r\n  profile.js           — Profile I/O + dimension storage (~/.lucky-lobster/profile.json)\r\n  history.js           — Fortune history + streak + Sunday detection\r\n  preferences.js       — Push preferences (enabled, frequency, quiet hours)\r\n  local-calendar.js    — Lightweight calendar fallback (24 term dates, seasons)\r\n  cal-templates.js     — Aha Moment engine (simplified, generic templates)\r\n  render.js            — Markdown format templates (first/daily/weekly with expanded placeholders)\r\n  consent.js           — First-run privacy consent gate\r\n```\r\n\r\n## State Files\r\n\r\n```\r\n~/.lucky-lobster/\r\n  ob-credentials.json   — OB identity (agent_id, api_key, openid)\r\n  profile.json          — User info + dimensions {code, type_name, confidence, last_evaluated}\r\n  fortune-history.json  — Past readings (with dimensions field), streak count\r\n  preferences.json      — Push preferences (enabled, frequency, quiet hours)\r\n  consent.json          — Privacy consent record\r\n```\r\n\r\n## Data Flow (Privacy)\r\n\r\n```\r\nA Data (local ONLY):\r\n  对话内容 · 项目名 · 人名 · 行为细节 · 情感状态 · 文件内容\r\n       │ NEVER leaves device\r\n       ▼\r\n  LLM local analysis → 5-dim judgment with evidence citations\r\n\r\nB Data (encrypted → L1 via OB L0):\r\n  5-char dimension code · season · emotion · life phase (for story matching)\r\n  City-level location (if provided) · date (for calendar)\r\n  OpenID (cryptographically random, used for request/response correlation)\r\n  Discovery: OpenID for recommendation dedup (no ad tracking)\r\n       │ via OB L0 (E2EE)\r\n       ▼\r\n  L1 CalendarSvc → solar term / phenology data\r\n  L1 StoryEngine → top 8 matched stories from 158-entry corpus (idiom/fable/zen)\r\n  L1 DiscoverySvc → community skill/MOOC recommendations\r\n\r\nLocal storage (~/.lucky-lobster/):\r\n  OB credentials (OpenID + API key) · profile · dimensions\r\n  fortune history · push preferences · consent record\r\n  → Delete this directory to permanently clear identity\r\n```\r\n\r\n## Environment Variables\r\n\r\n| Variable | Required | Default | Description |\r\n|----------|----------|---------|-------------|\r\n| OCEANBUS_URL | No | https://ai.ihaola.com.cn/api/l0 | L0 API base URL |\r\n| LUCKY_LOBSTER_SVC_OPENID | No | — | L1 service OpenID for calendar + discovery |\r\n\r\n## Dependencies\r\n\r\n- `oceanbus` — L0 P2P identity and messaging (only runtime dep)\r\n- Node.js `>=18.0.0`\n\nFile v0.6.2:skill-card.md\n\n## Description: <br>\nLobster Haoyun observes a user's conversation style and memory context to build a five-dimension behavioral profile, then generates daily fortunes, practice reminders, and optional recommendations while keeping conversation content local. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[ryanbihai](https://clawhub.ai/user/ryanbihai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users use this skill in an agent session to receive a personality-style reading, daily fortune, weekly reflection, and lightweight practice guidance based on local conversation context. The skill is intended for personal reflection and productivity support, not clinical, financial, legal, or employment decision-making. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill creates a local behavior profile and stores OceanBus identity credentials, profile data, fortune history, preferences, and consent records under ~/.lucky-lobster. <br>\nMitigation: Review the consent prompt before first use and delete ~/.lucky-lobster to remove the local identity and stored profile data. <br>\nRisk: The skill sends compact derived data, including the five-dimension code, date, optional city, emotion or life phase for story matching, and anonymous OpenID, to its L1 service. <br>\nMitigation: Use only when that data sharing is acceptable, avoid providing a city if location-based calendar matching is not desired, and do not rely on the output for regulated decisions. <br>\nRisk: Generated card output may trigger a one-time font download from GitHub or jsDelivr. <br>\nMitigation: Run in an environment where this network access is acceptable, or pre-stage and review font assets before generating cards. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/ryanbihai/lobster-haoyun) <br>\n- [README](README.md) <br>\n- [Skill behavior guide](SKILL.md) <br>\n- [Manifest](manifest.yaml) <br>\n- [OceanBus npm package](https://www.npmjs.com/package/oceanbus) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Guidance, Configuration, Shell commands] <br>\n**Output Format:** [Markdown with concise prose, optional links, and inline shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May include personality analysis, daily fortune text, micro-stories, practice reminders, recommendation links, and local setup or status commands.] <br>\n\n## Skill Version(s): <br>\n0.6.2 (source: server release and SKILL.md frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v0.6.2:package.json\n\n{\r\n  \"name\": \"lobster-haoyun\",\r\n  \"version\": \"0.5.12\",\r\n  \"description\": \"龙虾好运势 — Agent based deep personality reading, daily fortune with Chinese almanac\",\r\n  \"type\": \"module\",\r\n  \"main\": \"src/index.js\",\r\n  \"scripts\": {\r\n    \"status\": \"node src/index.js --action status\",\r\n    \"fortune\": \"node src/index.js --action fortune\"\r\n  },\r\n  \"dependencies\": {\r\n    \"oceanbus\": \"^0.14.2\",\r\n    \"sharp\": \"^0.33.0\"\r\n  },\r\n  \"engines\": {\r\n    \"node\": \">=18.0.0\"\r\n  },\r\n  \"license\": \"MIT-0\"\r\n}\n\nFile v0.6.2:src/corpus-fallback.json\n\n[\r\n  {\r\n    \"id\": \"c001\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"塞翁失马\",\r\n    \"content\": \"边塞有位老人，他的马跑到了胡人那边。邻居来安慰，老人说：'这怎么知道不是福气呢？'几个月后，那匹马带着胡人的骏马回来了。邻居又来祝贺，老人说：'这怎么知道不是祸呢？'后来他儿子骑马摔断了腿，反而因此免于征兵，保住了性命。\",\r\n    \"moral\": \"福祸相依，短期的失去未必是坏事，短期的得到也未必是好事。\",\r\n    \"source\": \"《淮南子·人间训》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"焦虑\",\r\n        \"担忧\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"理性\",\r\n        \"内收\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"迷茫期\",\r\n        \"职业转折\",\r\n        \"高压期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"心安理得\",\r\n    \"content\": \"孟子说：君子有三乐，而王天下不与存焉。父母俱存，兄弟无故，一乐也；仰不愧于天，俯不怍于人，二乐也；得天下英才而教育之，三乐也。\",\r\n    \"moral\": \"内心无愧就是最大的快乐——不需要外部条件\",\r\n    \"source\": \"《孟子·尽心上》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\",\r\n        \"感恩\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"理性\",\r\n        \"人际\",\r\n        \"感性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"收尾\"\r\n      ]\r\n    },\r\n    \"id\": \"c020\"\r\n  },\r\n  {\r\n    \"id\": \"c039\",\r\n    \"type\": \"fable\",\r\n    \"title\": \"盲人和瘸子\",\r\n    \"content\": \"盲人腿脚好但看不见路，瘸子眼睛好但走不了路。两人商量：盲人背着瘸子，瘸子给盲人指路。就这样，两个人都到了想去的地方。\",\r\n    \"moral\": \"一个人的不足可以由另一个人的优势来弥补。最好的合作不是找同类，而是找互补。\",\r\n    \"source\": \"民间寓言\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"迷茫\",\r\n        \"期待\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"人际\",\r\n        \"外放\",\r\n        \"叙事\",\r\n        \"感性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"关系波动\",\r\n        \"新开始\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"b3_005\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"四面楚歌\",\r\n    \"content\": \"项羽被刘邦围困垓下，兵少粮尽。夜间汉军四面唱起楚地歌谣，楚军以为家乡已失，军心涣散。项羽慷慨悲歌，率八百骑突围，终至乌江自刎，英雄末路令人唏嘘。\",\r\n    \"moral\": \"困境中坚守信念最为可贵\",\r\n    \"source\": \"《史记·项羽本纪》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"孤独\",\r\n        \"痛苦\",\r\n        \"遗憾\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"外放\",\r\n        \"叙事\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"冬\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"迷茫期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"c093\",\r\n    \"type\": \"fable\",\r\n    \"title\": \"骆驼和阿拉伯人\",\r\n    \"content\": \"一个寒冷的夜晚，阿拉伯人在帐篷里休息，他的骆驼在外面冻得发抖。骆驼先请求把头伸进帐篷，主人同意了。然后请求把脖子伸进来，又同意了。接着是前半身、后半身。最后骆驼整个身子都进了帐篷，把主人挤了出去。\",\r\n    \"moral\": \"小让步积累起来就是大退让。守住界限要从第一次就开始——不要等到被挤出去才后悔。\",\r\n    \"source\": \"《伊索寓言》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"疲惫\",\r\n        \"愤怒\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"人际\",\r\n        \"感性\",\r\n        \"叙事\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"关系波动\",\r\n        \"高压期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"c008\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"破釜沉舟\",\r\n    \"content\": \"项羽率军渡河后，下令砸破所有的锅、凿沉所有的船，每人只带三天口粮。他对士兵说：'要么赢，要么死，没有退路。'楚军以一当十，大破秦军。\",\r\n    \"moral\": \"断绝退路时，人的潜力会被逼出来。但这一招要慎用。\",\r\n    \"source\": \"《史记·项羽本纪》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"兴奋\",\r\n        \"担忧\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"外放\",\r\n        \"感性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"职业转折\",\r\n        \"高压期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"c002\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"守株待兔\",\r\n    \"content\": \"宋国有个农夫，一天一只兔子撞死在树桩上。他捡到兔子后就不再种地，天天守在树桩旁等下一只兔子，结果田地荒芜，再也没等到兔子。\",\r\n    \"moral\": \"运气不可复制，真正的收获来自持续的努力而非等待偶然。\",\r\n    \"source\": \"《韩非子·五蠹》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"迷茫\",\r\n        \"疲惫\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"感性\",\r\n        \"外放\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"迷茫期\",\r\n        \"平稳期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"c003\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"愚公移山\",\r\n    \"content\": \"太行、王屋两座大山挡在愚公家门口。愚公决定把山挖平。河曲智叟笑他自不量力，愚公说：'我死了有儿子，儿子死了有孙子，子子孙孙无穷尽，而山不会增高，为什么挖不平呢？'天帝被感动，派天神把山搬走了。\",\r\n    \"moral\": \"持之以恒的力量——看起来不可能的事，用时间和坚持可以化解。\",\r\n    \"source\": \"《列子·汤问》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"疲惫\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"内收\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"冬\",\r\n        \"春\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"职业转折\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"天道酬勤\",\r\n    \"content\": \"《周易》中说：天行健，君子以自强不息。天道运行刚健有力，永不停止。人也应该像天一样——不依赖外力，靠自己的运转推动自己向前。\",\r\n    \"moral\": \"天道酬勤不是鸡汤——是宇宙本身的运行方式\",\r\n    \"source\": \"《周易·乾卦》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"期待\",\r\n        \"平静\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"事务\",\r\n        \"内收\",\r\n        \"架构\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"新开始\"\r\n      ]\r\n    },\r\n    \"id\": \"c004\"\r\n  },\r\n  {\r\n    \"id\": \"c005\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"亡羊补牢\",\r\n    \"content\": \"有人发现羊圈破了一个洞，丢了羊。邻居劝他修羊圈，他说'羊已经丢了，修有什么用？'结果第二天又丢了羊。他赶紧把羊圈修好，从此再也没丢过羊。\",\r\n    \"moral\": \"犯了错及时补救，永远不晚。过去的损失不能成为不作为的理由。\",\r\n    \"source\": \"《战国策·楚策四》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"焦虑\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"探索\",\r\n        \"精炼\",\r\n        \"事务\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"职业转折\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"百炼成钢\",\r\n    \"content\": \"刘琨在《重赠卢谌》中写道：何意百炼钢，化为绕指柔。反复锤炼的钢铁，最终可以柔软到缠绕手指。真正的强大不是坚硬不摧——是经过千锤百炼后的从容。\",\r\n    \"moral\": \"经过千锤百炼后的从容，比天生的坚硬更难得\",\r\n    \"source\": \"晋·刘琨《重赠卢谌》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\",\r\n        \"释然\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"理性\",\r\n        \"叙事\",\r\n        \"架构\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"收尾\"\r\n      ]\r\n    },\r\n    \"id\": \"c006\"\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"温故知新\",\r\n    \"content\": \"孔子说：温故而知新，可以为师矣。在旧知识中发现新理解的人，才能成为别人的老师。\",\r\n    \"moral\": \"回头看旧东西时用新眼光，会发现之前没看到的宝藏\",\r\n    \"source\": \"《论语·为政》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"理性\",\r\n        \"架构\",\r\n        \"内收\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"收尾\"\r\n      ]\r\n    },\r\n    \"id\": \"c007\"\r\n  },\r\n  {\r\n    \"id\": \"c009\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"卧薪尝胆\",\r\n    \"content\": \"越王勾践被吴王夫差打败后，睡在柴草上，每天舔一口苦胆，提醒自己不要忘记耻辱。十年后越国强大起来，勾践终于打败了夫差。\",\r\n    \"moral\": \"低谷不是终点。把痛苦变成每天提醒自己的动力，就能熬到翻盘的那一天。\",\r\n    \"source\": \"《史记·越王勾践世家》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"疲惫\",\r\n        \"焦虑\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"内收\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"职业转折\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"兼收并蓄\",\r\n    \"content\": \"韩愈在《进学解》中说：玉札丹砂，赤箭青芝，牛溲马勃，败鼓之皮，俱收并蓄，待用无遗者，医师之良也。好的医生什么药材都收藏，贵的贱的都有用。\",\r\n    \"moral\": \"不同来源的东西都有价值，关键在于怎么用\",\r\n    \"source\": \"唐·韩愈《进学解》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"叙事\",\r\n        \"理性\",\r\n        \"人际\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"秋\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"新开始\",\r\n        \"平稳期\"\r\n      ]\r\n    },\r\n    \"id\": \"c010\"\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"大智若愚\",\r\n    \"content\": \"老子说：大智若愚，大巧若拙。真正有大智慧的人看起来反而朴素笨拙，因为他们不需要通过外在表现来证明自己。\",\r\n    \"moral\": \"真正的智慧不需要外在包装——朴素本身就是力量\",\r\n    \"source\": \"《道德经》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"理性\",\r\n        \"精炼\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"收尾\"\r\n      ]\r\n    },\r\n    \"id\": \"c011\"\r\n  },\r\n  {\r\n    \"id\": \"c012\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"叶公好龙\",\r\n    \"content\": \"叶公非常喜欢龙，家里到处画着龙、刻着龙。天上的真龙听说后很感动，下凡来看他。叶公一见到真龙，吓得魂飞魄散，转身就跑。\",\r\n    \"moral\": \"声称想要的，不一定是你真正想要的。行动比言语更能检验真心。\",\r\n    \"source\": \"《新序·杂事五》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"迷茫\",\r\n        \"担忧\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"叙事\",\r\n        \"感性\",\r\n        \"人际\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"迷茫期\",\r\n        \"关系波动\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"海纳百川\",\r\n    \"content\": \"林则徐写过一副对联：海纳百川，有容乃大；壁立千仞，无欲则刚。大海之所以辽阔，是因为它接纳每一条河流。\",\r\n    \"moral\": \"包容让你变得更强大——不是软弱，是格局\",\r\n    \"source\": \"清·林则徐\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"平静\",\r\n        \"满足\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"人际\",\r\n        \"叙事\",\r\n        \"外放\",\r\n        \"感性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"关系波动\",\r\n        \"新开始\"\r\n      ]\r\n    },\r\n    \"id\": \"c013\"\r\n  },\r\n  {\r\n    \"type\": \"idiom\",\r\n    \"title\": \"厚积薄发\",\r\n    \"content\": \"苏轼说：博观而约取，厚积而薄发。广泛地观察然后精炼地提取，深厚地积累然后从容地释放。\",\r\n    \"moral\": \"所有的爆发都来自长期的积累——慢就是快\",\r\n    \"source\": \"宋·苏轼《稼说送张琥》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"期待\",\r\n        \"平静\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"架构\",\r\n        \"内收\",\r\n        \"事务\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"新开始\"\r\n      ]\r\n    },\r\n    \"id\": \"c014\"\r\n  },\r\n  {\r\n    \"id\": \"c015\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"井底之蛙\",\r\n    \"content\": \"一只青蛙住在井底，它对东海来的鳖说：'我很快乐，独占一坑水，想跳就跳，想歇就歇。'鳖给它描述了大海的广阔：'千里之远不足以形容它的大，千仞之高不足以形容它的深。'青蛙听了目瞪口呆。\",\r\n    \"moral\": \"每个人的视野都会被自己的环境限制。走出去看看，才知道世界有多大。\",\r\n    \"source\": \"《庄子·秋水》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"满足\",\r\n        \"迷茫\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"内收\",\r\n        \"架构\",\r\n        \"理性\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"春\",\r\n        \"夏\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"平稳期\",\r\n        \"迷茫期\"\r\n      ]\r\n    }\r\n  },\r\n  {\r\n    \"id\": \"c016\",\r\n    \"type\": \"idiom\",\r\n    \"title\": \"竭泽而渔\",\r\n    \"content\": \"有人为了抓鱼，把池塘的水全部抽干。鱼是抓到了，但明年再也没有鱼可以抓了。\",\r\n    \"moral\": \"短期利益最大化往往以牺牲长期为代价。给自己留余地，给未来留资源。\",\r\n    \"source\": \"《吕氏春秋·义赏》\",\r\n    \"tags\": {\r\n      \"emotions\": [\r\n        \"焦虑\",\r\n        \"疲惫\"\r\n      ],\r\n      \"personality_fit\": [\r\n        \"事务\",\r\n        \"精炼\",\r\n        \"探索\"\r\n      ],\r\n      \"seasonal_fit\": [\r\n        \"秋\",\r\n        \"冬\"\r\n      ],\r\n      \"life_situations\": [\r\n        \"高压期\",\r\n        \"职业转折\"\r\n      ]\r\n    }\r\n  }\r\n]\n\nFile v0.6.2:manifest.yaml\n\nname: lobster-haoyun\r\ntitle: 龙虾好运势\r\nversion: 0.5.11\r\nauthor: ryanbihai\r\nlicense: MIT-0\r\nruntime: node\r\nentry: src/index.js\r\nmin_openclaw_version: \"1.0.0\"\r\ndescription: >\r\n  从你的对话和记忆中分析人格，生成每日运势和修炼提醒。\r\n  通过 OceanBus 加密通道发送5维行为代码、城市级位置、日期和匿名OpenID到 L1 服务获取节气数据。\r\n  本地存储 OB 身份凭据、行为画像、运势历史。不含广告追踪。\r\n  首次使用自动创建 OceanBus 匿名身份（密码学随机生成，删除 ~/.lucky-lobster/ 即永久清除）。\r\n  OB SDK 完全开源(MIT-0)，代码可审计。\r\ncategories:\r\n  - health-fitness\r\n  - productivity-tasks\r\nrequires:\r\n  bins:\r\n    - node\r\n  env:\r\n    - name: OCEANBUS_URL\r\n      required: false\r\n      description: OceanBus L0 API base URL\r\n    - name: LUCKY_LOBSTER_SVC_OPENID\r\n      required: false\r\n      description: L1 service OpenID for calendar + discovery\r\nos:\r\n  - macos\r\n  - linux\r\n  - windows\r\nemoji: 🦞\r\nskillKey: 龙虾好运势\r\nconfig:\r\n  - key: push_enabled\r\n    type: boolean\r\n    default: true\r\n    description: 是否接收每日运势推送\r\n  - key: push_frequency\r\n    type: number\r\n    default: 1\r\n    description: 每日推送上限\n\nArchive v0.6.1: 21 files, 1181464 bytes\n\nFiles: CLAUDE.md (6398b), manifest.yaml (1263b), package.json (495b), README.md (5786b), skill-card.md (2452b), SKILL.md (24375b), src/assets/cards-base64.json (1464697b), src/cal-templates.js (6213b), src/card-generator.js (7465b), src/consent.js (886b), src/corpus-fallback.json (15505b), src/dimensions.js (7032b), src/history.js (3934b), src/identity.js (1208b), src/index.js (12992b), src/local-calendar.js (4384b), src/ob-client.js (1521b), src/preferences.js (1072b), src/profile.js (1467b), src/render.js (2168b), _meta.json (133b)\n\nFile v0.6.1:SKILL.md\n\n---\r\nname: lobster-haoyun\r\nversion: 0.6.1\r\ndescription: >\r\n  从你的对话和记忆中观察行为模式，用5个维度为你画像（工作方式/沟通模式/关注焦点/能量来源/情感倾向），\r\n  生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。\r\n  通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿名 OpenID，\r\n  用于获取节气黄历、匹配经典故事和推荐社区 Skill/公开课。对话内容、项目名、人名永不离开设备。\r\n  首次使用自动创建 OceanBus 匿名身份（密码学随机生成，删除 ~/.lucky-lobster/ 即可永久清除）。\r\nhomepage: https://github.com/ryanbihai/lobster-haoyun\r\nmetadata:\r\n  clawdbot:\r\n    requires:\r\n      bins:\r\n        - node\r\n    envVars:\r\n      - name: OCEANBUS_URL\r\n        required: false\r\n        description: OceanBus L0 API base URL\r\n      - name: LUCKY_LOBSTER_SVC_OPENID\r\n        required: false\r\n        description: L1 service OpenID for calendar + discovery\r\n    emoji: 🦞\r\n    skillKey: 龙虾好运势\r\n    os:\r\n      - macos\r\n      - linux\r\n      - windows\r\nfiles:\r\n  - src/*\r\n  - src/assets/*\r\nrequired_capabilities:\r\n  - filesystem\r\n  - network\r\n---\r\n\r\n# 🦞 龙虾好运势 v0.6.1\r\n\r\n> *说一句「看运势」，剩下的事交给小龙虾。*\r\n\r\n不问你生日星座，从你的行为模式中读懂你——你喜欢怎么工作、怎么沟通、怎么决策。用 5 个维度为你画像，匹配经典故事，生成每日运势。\r\n\r\n**能力披露**：小龙虾读取你的对话记忆和会话风格进行本地行为分析。分析后，以下数据通过 OceanBus 加密通道发往 L1 服务：5维行为代码、城市级位置（如你填写了城市）、查询日期、以及用于服务通信的 OceanBus 匿名标识符（OpenID，密码学随机生成，可随时删除更换）。L1 服务使用 OpenID 仅为关联请求与响应——不关联真实身份。Skill/MOOC 推荐功能也会发送 OpenID 用于去重。**对话内容、项目名、人名永不离开你的设备。**\r\n\r\n## Trigger Keywords\r\n\r\n- \"小龙虾\" + \"看运势\" / \"今日运势\" / \"我的运势\" — 需同时包含\"小龙虾\"和运势关键词\r\n- \"小龙虾帮我算算\" / \"小龙虾看看我\"\r\n- \"重新认识我\" — 强制重新分析（仅当对话中已建立小龙虾上下文时生效）\r\n- \"fortune\" / \"daily fortune\" / \"personality reading\"\r\n\r\n> 触发词设计原则：避免日常对话中意外激活。单独的\"看运势\"不触发——必须是\"小龙虾看运势\"或类似组合。\r\n\r\n## Output Tone\r\n\r\n**温暖、简短、不啰嗦。** 用简洁的句子，不命令、不空洞夸奖。\r\n\r\n| 禁用 | 原因 |\r\n|:---|:---|\r\n| \"你应该\" / \"你必须\" / \"你一定要\" | 不命令 |\r\n| \"太棒了\" / \"真厉害\" / \"你好优秀\" | 空洞夸奖 |\r\n| 🦞🦞🦞✨✨✨ 堆砌 | 保持干净 |\r\n\r\n每条性格判断都带具体行为证据。\"你偏向架构型——上次讨论 XX 项目时，你先画了架构图才写代码。\"\r\n\r\n## Personality System: 5-Dimension Behavioral Classification\r\n\r\n> **面向用户的原则：永远展示维度解读，永远不展示代码或缩写。** `架精事内理` 是 JS 内部存储用的——用户看到的是\"你喜欢先搭框架再动手，沟通精炼直接，关注任务进度，独处时蓄能，用逻辑做判断\"。\r\n\r\n小龙虾从你的对话、memory、文件中观察 5 个行为维度，每个维度二选一：\r\n\r\n| 维度 | A | B |\r\n|:---|:---|:---|\r\n| 工作方式 | 🏗️ 架构型：先搭框架、写大纲、列步骤 | 🚀 探索型：先动手试试、边做边调整 |\r\n| 沟通模式 | 📝 精炼型：简洁直接、结论先行 | 📖 叙事型：先讲背景、铺陈上下文 |\r\n| 关注焦点 | 🔧 事务型：关注任务、进度、结果 | 👥 人际型：关注关系、氛围、感受 |\r\n| 能量来源 | 🔋 内收型：独立工作、深度思考 | ⚡ 外放型：协作讨论、头脑风暴 |\r\n| 情感倾向 | 🌊 理性型：逻辑处理冲突、决策靠证据 | 🔥 感性型：共情处理冲突、决策靠直觉 |\r\n\r\n### 32 Type Table (internal reference only — NEVER show codes or table to user)\r\n\r\nJS 用 5 字代码存储和过滤，LLM 用此表查标签名传 `--type` 参数。用户永远看不到代码和此表。\r\n\r\n| 代码 | 标签 | 画像 |\r\n|:---|:---|:---|\r\n| 架精事内理 | 精算师 | 精准谋划，独自高效执行 |\r\n| 架精事内感 | 实干家 | 安静做事，心中有标准，用行动说话 |\r\n| 架精事外理 | 领航员 | 定好方向，带团队高效抵达 |\r\n| 架精事外感 | 破风手 | 冲在最前，为团队劈开阻力 |\r\n| 架精人内理 | 洞察者 | 冷眼看透人与事，精准给出判断 |\r\n| 架精人内感 | 倾听者 | 看见每个人的需要，默默安排好一切 |\r\n| 架精人外理 | 召集人 | 把对的人聚在一起，让事情自然发生 |\r\n| 架精人外感 | 连心桥 | 连接人与人的温度，走到哪暖到哪 |\r\n| 架叙事内理 | 求真者 | 凡事追根溯源，厘清逻辑才行动 |\r\n| 架叙事内感 | 深耕者 | 需要理解意义才能全力投入，急不来但走得远 |\r\n| 架叙事外理 | 启明者 | 把复杂的事讲通透，带众人看清方向 |\r\n| 架叙事外感 | 感召者 | 用故事凝聚人心，让每个人看见意义 |\r\n| 架叙人内理 | 静观者 | 在角落看透人心，不轻易开口但开口就准 |\r\n| 架叙人内感 | 守护者 | 所有人的后盾，倾听但不评判 |\r\n| 架叙人外理 | 引路人 | 一对一帮人看清方向，点亮他人的路 |\r\n| 架叙人外感 | 暖心人 | 温暖不灼人，所到之处如春风拂面 |\r\n| 探精事内理 | 行动派 | 看到问题立即动手，用结果说话 |\r\n| 探精事内感 | 孤勇者 | 一个人默默试，用行动表达在乎 |\r\n| 探精事外理 | 破局者 | 带团队冲破僵局，不破不立 |\r\n| 探精事外感 | 点燃者 | 冲在最前，用热情点燃整个团队 |\r\n| 探精人内理 | 解铃人 | 精准发现关系中的症结，一语道破 |\r\n| 探精人内感 | 润物者 | 不声不响，但每个人都被他滋养 |\r\n| 探精人外理 | 联络官 | 快速连接人与资源，精准高效 |\r\n| 探精人外感 | 发光者 | 自然成为人群的中心，照亮身边的人 |\r\n| 探叙事内理 | 探路者 | 对新领域充满好奇，先研究透了再说 |\r\n| 探叙事内感 | 梦想家 | 脑子里充满可能性的世界，不急但不停 |\r\n| 探叙事外理 | 开拓者 | 带团队闯向未知，边走边讲清路线 |\r\n| 探叙事外感 | 筑梦人 | 用理想感染众人，一起把梦建成现实 |\r\n| 探叙人内理 | 静思者 | 享受一对一的深度对话，在安静中洞察 |\r\n| 探叙人内感 | 善解者 | 用细腻的感受力理解每一个独特的灵魂 |\r\n| 探叙人外理 | 连接者 | 把人脉和资源编织成有意义的生态 |\r\n| 探叙人外感 | 凝聚者 | 走到哪都自然聚合一群人，气氛永远热烈 |\r\n\r\n## Execution Flow\r\n\r\n### Step 0: First-Run Consent\r\n\r\nIf `data.history.is_first_time` is true AND `data.profile` does not exist → display consent prompt and wait for explicit agreement (\"同意\"/\"好\"/\"yes\"/\"ok\").\r\n\r\n```\r\n🦞 第一次见面！开始之前，请你确认以下事项：\r\n\r\n**小龙虾会做什么：**\r\n1️⃣ 读取你的对话记忆和会话风格，在本地分析你的行为模式\r\n   → 对话内容、项目名、人名永远不离开你的设备\r\n2️⃣ 分析后，通过 OceanBus 加密通道向 L1 服务发送以下数据：\r\n   → 5维行为代码（如\"架精事内理\"）—— 不包含具体对话内容\r\n   → 城市级位置（如你填写了城市）—— 用于节气黄历查询\r\n   → 查询日期 —— 用于黄历数据\r\n   → OceanBus OpenID（密码学随机生成）—— L1 用于关联请求与响应\r\n3️⃣ 在本地 ~/.lucky-lobster/ 存储：\r\n   → OB 身份凭据（OpenID + API Key）—— 用于 OceanBus 通信\r\n   → 行为画像、运势历史、推送偏好、同意记录\r\n4️⃣ 每日推荐（Skill/公开课）发送 OpenID 给 L1 用于去重\r\n   → 不含广告追踪，仅用于社区内容推荐\r\n\r\n**小龙虾不会做：**\r\n❌ 发送你的姓名、电话、邮箱、IP、GPS\r\n❌ 发送你的对话记录、项目名、文件名\r\n❌ 将你的数据交给第三方广告商或追踪网络\r\n❌ 你的 OpenID 是密码学随机生成的，不关联真实身份\r\n   → 删除 ~/.lucky-lobster/ 即永久清除身份，下次自动生成新身份\r\n\r\n请选择：\r\n👉 输入「同意」或「好」开始 → 👉 输入「不了」我会等你\r\n```\r\n\r\nDo NOT proceed without explicit agreement. After consent, continue to Step 1.\r\n\r\n### Step 1: Fetch Base Data\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action fortune\r\n```\r\n\r\nRead JSON output. Key fields:\r\n- `flow` — \"first_reading\" | \"daily_fortune\" | \"weekly_review\"\r\n- `personality` — `{ has_dimensions, needs_reevaluation, dimensions: { code, type_name, confidence }, label_for_compat }`\r\n- `data.profile`, `data.calendar`, `data.history`, `data.aha`\r\n\r\n### Step 2: Context Sensing + Dimension Analysis (silent)\r\n\r\n**A. Scan recent ~20 conversation turns.** Extract:\r\n- Emotion signal (高压: stress/deadline, 迷茫: uncertainty, 兴奋: new project energy, 疲惫: burnout, 平稳: normal)\r\n- Topic keywords (3-5 nouns/verbs — what user is working on)\r\n- Feedback preference (short vs detailed, deep questioning vs surface acceptance)\r\n- Life phase: 高压期 | 迷茫期 | 平稳期 | 过渡期\r\n\r\n**B. If `personality.has_dimensions` is FALSE or `personality.needs_reevaluation` is TRUE:**\r\nPerform full dimension analysis. For each dimension, write a paragraph of 2-4 sentences with specific evidence. **Use paragraph format — never tables. Never use single-line summaries.** This analysis will be rendered verbatim in Step 5.\r\n\r\nWrite the analysis in this exact structure, saving each part for Step 5 rendering:\r\n\r\n1. **工作方式** — Which pole (架构型 or 探索型)? Evidence: cite a specific behavior from their memory/CLAUDE.md/conversation. Then explain what this means for how they work.\r\n2. **沟通模式** — Which pole (精炼型 or 叙事型)? Evidence: cite a specific message or communication pattern.\r\n3. **关注焦点** — Which pole (事务型 or 人际型)? Evidence: cite what they talk about most.\r\n4. **能量来源** — Which pole (内收型 or 外放型)? Evidence: cite work patterns and social references.\r\n5. **情感倾向** — Which pole (理性型 or 感性型)? Evidence: cite decision style and conflict handling.\r\n\r\nAfter writing the analysis, assemble the 5-char code internally, look up type_name from the 32-type table, and call:\r\n```bash\r\nnode <skill-path>/src/index.js --action save-dimensions --code <5chars> --confidence <0-1>\r\n```\r\n\r\n**CRITICAL RULES:**\r\n- Write in natural language paragraphs, NOT tables, NOT bullet lists with single-line evidence\r\n- Each dimension paragraph must be 2-4 sentences: pole + evidence + implication\r\n- The 5-char code and type_name are for internal JS storage only — never show to user\r\n- Save the full paragraph text for rendering in Step 5\r\n\r\n### Step 3: 微故事合成（所有 flow 强制执行）\r\n\r\n**每次运势生成必须执行此步骤。**\r\n\r\n先调用 filter-stories：\r\n```bash\r\nnode <skill-path>/src/index.js --action filter-stories --emotion <signal> --life-phase <phase>\r\n```\r\n\r\n> L1 服务在 158 条成语典故/寓言/禅宗公案上运行加权评分，返回 top 8 候选人。L1 不可用时自动降级到本地 20 条精简语料（响应中 `fallback: true`）。\r\n\r\n如果尚未存储维度 → filter-stories 返回空候选 → 跳过故事块。\r\n\r\n---\r\n\r\n**选 1 条经典故事作为底层骨架。但输出的是你自己写的原创微故事。经典原文绝不出现在正文里——只出现在文末一行斜体回调里。**\r\n\r\n---\r\n\r\n**⚠️ 禁止输出 vs 正确输出（对比示例）**\r\n\r\n假设选中的候选是「厚积薄发」，用户情绪平稳：\r\n\r\n❌ **禁止**（复述经典 + 讲道理）：\r\n> 苏轼说，博观而约取，厚积而薄发。广泛地观察然后精炼地提取，深厚地积累然后从容地释放。所有的爆发都来自长期的积累——慢就是快。\r\n\r\n✅ **正确**（原创微故事 + 文末回调）：\r\n> **面引子**\r\n>\r\n> 姥姥每次蒸馒头都揪一小块面留出来，放在窗台上晾干。她说这叫面引子——下次蒸的时候用，馒头才发得好。\r\n>\r\n> 后来她走了。我妈翻她的厨房，在橱柜最里面找到一个罐头瓶，里面是三块面引子，每块包着一层纱布。\r\n>\r\n> 我妈把那三块面引子带回了自己家。上个月她蒸了一锅馒头，用的是姥姥的面引子。馒头掰开的时候，满屋子都是小时候的味道。\r\n>\r\n> *「博观而约取，厚积而薄发。」*\r\n\r\n区别：正确版没有提苏轼、没有解释什么叫厚积薄发、没有说教「慢就是快」。它讲了一个关于面引子的故事——但读完最后一句话，你懂了。\r\n\r\n---\r\n\r\n**微故事写作规则：**\r\n\r\n1. **标题**：1-4 字，故事中的核心物件或动作。如「面引子」。不是成语、不是哲理词。\r\n\r\n2. **场景**：日常家居/邻里/市井——任何人都能一秒进入。❌职场/代码/创业/会议。\r\n\r\n3. **人物**：只用「他」或「她」。没有名字、职业、年龄。情绪通过动作透露：❌「他感到迷茫」 ✅「他在路口站了很久」。\r\n\r\n4. **收束**：收在动作上，不落在道理上。如「这锅蒸好了。」不是「这告诉我们坚持就有回报。」\r\n\r\n5. **字数**：150-300 字。\r\n\r\n6. **禁止**：不讲道理、不出现经典原名/原句/人物、不解释寓意、不关联用户处境、不用抽象词（坚持/希望/成功/努力）、不用网络用语。\r\n\r\n7. **回调**：从候选的 `content` 或 `source` 中提取最经典的一句原文，斜体独立一行，不写出处、不加解释。原文无合适句时自撰（8-16 字文言，扣核心理念）。\r\n\r\n**九、情绪对位（故事收束的方向）**\r\n\r\n从 Step 2A 获取用户情绪信号。故事永远不是情绪的复读机——收束方向必须反着走：\r\n\r\n| 用户情绪类型 | 收束方向 | 怎么写 |\r\n|:---|:---|:---|\r\n| **收缩型**（焦虑/担忧/迷茫） | ↗ 向上 | 结尾是「今天做了一件小事」——浇了水、拆开包装、推开窗户、蹲下看了一眼。不写未来，只写今天的一个动作 |\r\n| **沉重型**（疲惫/痛苦/孤独/遗憾） | ↗ 回暖 | 结尾是一个活的东西——一片叶子、一杯茶的蒸汽、风吹动晾衣绳上的衣服。用物件的生命力暗示人的恢复 |\r\n| **扩张型**（兴奋/期待） | ↘ 平静 | 结尾是停下来——喝完一杯水、关灯坐下、在台阶上站一会。用日常的安静平衡高涨的情绪 |\r\n| **中性**（平静/满足/释然/感恩） | → 维持 | 不推不拉。让这一刻停住——「茶杯还热着。窗外的灯一盏一盏亮了。」 |\r\n| **混合型**（喜悦中带失落、期待中带不舍） | ↘ 平静中带暖 | 不写「失去了什么」，写「留下了什么」。结尾是一个还在的东西——一件挂着的旧衣服、一个还在亮着的灯、一个没变的位置 |\r\n\r\n原则：故事永远不是情绪的镜子，是那个坐在你身边、不说话、往冷杯子里续了一杯热水的人。\r\n\r\n**例外：回调自撰规则**\r\n\r\n当经典原文没有直接适配的回调句时，允许自撰，但必须满足所有条件：\r\n1. 扣住经典的核心理念（不是胡编，是精髓的现代化表达）\r\n2. 字数 8-16 字\r\n3. 文言风格（与经典回调的语气统一）\r\n4. 可平仄对仗但非必须\r\n\r\n示例：\r\n- 破釜沉舟 → 「釜已破矣，舟已沉矣。君立岸上，春水方生。」\r\n- 海纳百川 → 「百川入海，海不盈。明月照人，千里共。」\r\n\r\n**十、神似形不似——场景必须与用户真实处境拉开距离**\r\n\r\n故事场景必须与用户的真实处境**完全不同**。不是「隐喻」「类比」「换个说法」——是彻底的、一眼看去毫无关系的另一件日常事：\r\n\r\n| 用户处境 | ❌ 雷同（禁用） | ✅ 神似形不似 |\r\n|:---|:---|:---|\r\n| 妹妹嫁人 | 姐姐看着空房间、收拾遗落的物品 | 烤好的面包吃完了，厨房安静下来，碗洗干净了 |\r\n| 创业失败、清算 | 搬空办公室、最后一次锁门 | 养死了一盆植物，重新买了种子 |\r\n| 裁员仲裁 | 老板和员工对峙、谈判 | 一条打结的项链，解开了 |\r\n| 等投标结果 | 刷新邮件、焦灼地等通知 | 阳台上的种子没发芽，不看了以后反而发芽了 |\r\n\r\n神似是情感内核一致——喜悦中的不舍、失去后的重新开始、等待中的焦灼——但故事里的场景、人物、物件与用户真实处境**没有一丝一毫的相似**。读者读到结尾，不是觉得「这个故事讲的就是我」，而是觉得「这个故事说的不是我——但我懂那个感觉。」收束在故事本身，不要拉回用户现实处境。\r\n\r\n**十一、记录使用（14 天内不重复）**\r\n\r\n选定经典底色后，立即调用：\r\n```bash\r\nnode <skill-path>/src/index.js --action record-story --id <story_id>\r\n```\r\n例如：`--action record-story --id c001`\r\n\r\n此命令将该故事 ID 写入近期记录。14 天内同一故事自动从候选中排除——下次同一用户做运势时不会看到同样的底色故事。\r\n\r\n### Step 4: Discovery (daily fortune only, skip on first reading)\r\n\r\n> 此步骤向 L1 发送 OpenID 用于推荐检索和去重。不含广告追踪，仅推荐社区 Skill 和公开课。\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action discovery\r\n```\r\n\r\nPick 1 best match from ClawHub/MOOC candidates. Render as:\r\n```\r\n📌 小龙虾发现了这个：\r\n[{display_name}]({url}) — {summary}\r\n→ 适合你，因为：{reason tied to dimensions/blindspot}\r\n```\r\n\r\nSkip if no candidates.\r\n\r\n### Step 5: Render Output\r\n\r\n**First Reading — MANDATORY FORMAT. Do NOT use tables. Do NOT compress into single lines.** Follow this exact structure with paragraph breaks between every section:\r\n\r\n---\r\n\r\n🦞 {user_name} · {season}命盘\r\n\r\n小龙虾掐指一算——\r\n\r\n**你的底色：{type_name}**\r\n\r\n{通俗解释，用大白话，2-3句。例如精算师→\"说白了你是个喜欢在安静中把框架想透、用最少的话给最准的指令、靠逻辑推着事情往前走的人。\"}\r\n\r\n---\r\n\r\n展开说说为什么——\r\n\r\n**你怎么做事：{架构型 or 探索型}**\r\n\r\n{Write the full paragraph from Step 2B analysis here. 2-4 sentences with specific evidence cited. Then add what this means — the implication of this trait.}\r\n\r\n（空一行）\r\n\r\n**你怎么说话：{精炼型 or 叙事型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n（空一行）\r\n\r\n**你关注什么：{事务型 or 人际型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n（空一行）\r\n\r\n**你从哪里获得能量：{内收型 or 外放型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n（空一行）\r\n\r\n**你怎么做判断：{理性型 or 感性型}**\r\n\r\n{Full paragraph from Step 2B. Evidence + implication.}\r\n\r\n---\r\n\r\n**你的盲区**\r\n\r\n{Based on the 5 dimension extremes, name 1-2 specific blindspots. MUST tie to user's actual situation — not generic advice.}\r\n\r\n📖 **{story_title}**\r\n\r\n{微故事正文。150-300 字，纯叙事，不讲道理。段落间用空行分隔。}\r\n\r\n*{callback_line}*\r\n\r\n**建议**\r\n\r\n> {advice 1 — specific, tied to user's current project/situation}\r\n\r\n> {advice 2 — \"too small to fail\" micro-step}\r\n\r\n好了，算完了 🦞\r\n\r\n**MANDATORY: After rendering the fortune text, generate the PNG card:**\r\n\r\n```bash\r\nnode <skill-path>/src/index.js --action generate-card --type-name \"<type_name>\" --one-liner \"<fortune_one_liner>\" --story-title \"<story_title>\" --solar-term \"<solar_term>\"\r\n```\r\n\r\n- `<type_name>` — user's type label (e.g. \"精算师\")\r\n- `<fortune_one_liner>` — the 「运势一句话」from the fortune output (≤20 chars, shareable)\r\n- `<story_title>` — micro-story title from Step 3 (1-4 chars)\r\n- `<solar_term>` — current solar term (e.g. \"小满\")\r\n\r\nThe command outputs `{ file: \"<path>.png\" }`. **Show the PNG to the user** — include the file path and describe it as \"运势卡片已生成\".\r\n\r\n每天早上七点半，小龙虾会告诉你今天适合做点什么小事。想试试的话，说一声就好。\r\n\r\n---\r\n\r\n**FORMAT RULES:**\r\n- Use paragraph format throughout — NEVER use tables\r\n- Each dimension section must have: bold header + blank line + paragraph + blank line before next section\r\n- The `---` separator must appear exactly where shown above\r\n- Never show 5-char codes or the 32-type table\r\n- Story is mandatory if Step 3 returned candidates — do not skip it\r\n- Story title: 1-4 characters, named after a concrete object or action from the story (not an idiom, not a concept)\r\n- Story body: 150-300 characters, pure narrative, no interpretation or user-context linkage\r\n- Callback line: standalone, italic, no attribution, no explanation\r\n\r\nIf user agrees to daily delivery → CronCreate at `30 7 * * *`.\r\n\r\n**Daily Fortune:**\r\n\r\n轻量格式。不重复维度分析。但必须包含 Step 3 的故事——这是每日运势的核心亮点。\r\n\r\n**例外**：当用户明确要求\"完整测试\"/\"全面看看\"/\"重新分析\"/\"看看我的五维\"时，即使是 daily fortune 也展开完整五维画像（First Reading 格式中的 5 段维度分析 + 盲区）。这通常发生在用户想验证系统是否正常工作、或者想看看这段时间自己是否有变化的场景。\r\n\r\n---\r\n\r\n🦞 {user_name}，{date} · {solar_term}\r\n\r\n{emotion_acknowledgment — if strong signal detected from today's conversation, one line max}\r\n\r\n{aha moment — solar term connection, 2-3 sentences}\r\n\r\n🧘 今日修炼：{cultivation_tip — by genre: 收网日/充电日/连接日}\r\n\r\n**今日微行动**：{one tiny doable action}\r\n\r\n📖 **{story_title}**\r\n\r\n{微故事正文。150-300 字，纯叙事。没有任何解读，故事本身就是一切。}\r\n\r\n*{callback_line}*\r\n\r\n运势一句话：**{one-liner}**\r\n\r\n**MANDATORY after rendering: generate the PNG card** — same as First Reading above.\r\n\r\n---\r\n\r\n**FORMAT RULES:**\r\n- Story is MANDATORY — always call Step 3 filter-stories and always render the micro-story\r\n- Story must be the 150-300 character synthesized micro-story (not the classic story itself)\r\n- Callback line must be standalone and italic, with no attribution or explanation\r\n- Never show 5-char codes or type labels in output\r\n- Keep it light — this is a daily ritual, not a deep analysis\r\n\r\n**Weekly Review (Sunday):**\r\n\r\n```\r\n🦞 {user_name}，{date} · 本周回望\r\n\r\n{week summary}\r\n\r\n**人格洞察更新**\r\n{updated observation — reference changes from last reading}\r\n\r\n**今日运势**\r\n{daily fortune content}\r\n```\r\n\r\n### Step 6: Follow-up + Social Sharing\r\n\r\n**After every fortune card, append 2 lightweight follow-up prompts:**\r\n```\r\n---\r\n💬 「展开说说」— 证据细节\r\n💬 「不太准」— 我更正一下\r\n```\r\n\r\n**Social sharing: ONLY suggest if user has shown satisfaction first.**\r\nSignals: \"哈哈准了\" / \"有意思\" / \"确实\" / \"你怎么知道的\" / user asks follow-up questions.\r\n\r\nIf triggered, optionally append ONE line:\r\n> 觉得小龙虾还挺懂你的？可以说「帮朋友看看」或分享邀请码给熟人，一起看关系解读。\r\n\r\nNEVER proactively suggest sharing. NEVER on first reading.\r\n\r\n### User Trigger: \"重新认识我\"\r\n\r\nForce LLM full re-analysis of all 5 dimensions. Call `--action save-dimensions` with new results.\r\n\r\n### User Trigger: \"取消运势提醒\"\r\n\r\nUse CronDelete to remove the daily fortune cron job. Confirm: \"运势提醒已取消。\"\r\n\r\n## Social Sharing Trigger Rules\r\n\r\n1. Only suggest after user expresses satisfaction (NOT proactively)\r\n2. NOT during first reading\r\n3. At most ONE line, appended after follow-up prompts\r\n4. Emphasize privacy: sharing only shows fortune card, never personal data\r\n\r\n## Dependencies\r\n\r\n- `oceanbus` — L0 P2P identity and messaging\r\n- Node.js `>=18.0.0`\n\nFile v0.6.1:README.md\n\n# 🌊 龙虾好运势 — 说一句「看运势」，剩下的交给小龙虾\r\n\r\n**不看星座，不填问卷。从你的对话、工作、思考方式里读懂你。**\r\n\r\n[![ClawHub](https://img.shields.io/badge/ClawHub-lobster--haoyun-blue)](https://clawhub.ai/skills/lobster-haoyun)\r\n[![GitHub stars](https://img.shields.io/github/stars/ryanbihai/lobster-haoyun)](https://github.com/ryanbihai/lobster-haoyun)\r\n[![OceanBus](https://img.shields.io/badge/OceanBus-L0%20%2B%20L1-orange)](https://www.npmjs.com/package/oceanbus)\r\n[![license](https://img.shields.io/badge/license-MIT--0-green)](LICENSE)\r\n\r\n---\r\n\r\n## 📑 目录\r\n\r\n- [这是什么](#这是什么)\r\n- [快速开始](#快速开始)\r\n- [能力一览](#能力一览)\r\n- [架构](#架构)\r\n- [本地测试](#本地测试)\r\n- [安全与隐私](#安全与隐私)\r\n- [相关项目](#相关项目)\r\n- [参与贡献](#参与贡献)\r\n- [License](#license)\r\n\r\n---\r\n\r\n## 这是什么\r\n\r\n龙虾好运势是一个基于 OceanBus 的 ClawHub Skill。跟市面上所有运势产品不一样——它不问你生日，不让你填问卷。它从你的对话历史、记忆文件、工作模式里观察你，然后告诉你一些关于你自己的、有证据的事。\r\n\r\n**首次读心**会给你一篇深度解读——底色、驱动力、盲区、能量模式。每条判断带着具体证据：\"说你是这种人，是因为我看到了这个\"。\r\n\r\n**每日运势**融合二十四节气和七十二候：小满、芒种、麦秋至……用自然界的节奏隐喻你的状态变化。\r\n\r\n**周日回顾**自动复盘这一周：\"上周看你在搭架构，这周开始动手探索了\"。\r\n\r\n```\r\n你 ⟷ Claude Code ⟷ OB L0 ⟷ L1 CalendarSvc (ECS)\r\n                         ⟷ L1 DiscoverySvc (ECS)\r\n```\r\n\r\n> 📖 **深度阅读**：[SKILL.md](./SKILL.md) — LLM 行为指南与完整协议文档\r\n\r\n---\r\n\r\n## 快速开始\r\n\r\n```bash\r\n# 1. 安装\r\nclawhub install lobster-haoyun\r\n\r\n# 2. 在 Claude Code 中说\r\n看运势\r\n\r\n# 3. 验证底座连通性\r\nnode src/index.js --action status\r\n```\r\n\r\n首次使用会自动创建 OceanBus 匿名身份（`~/.lucky-lobster/ob-credentials.json`），无需任何配置。\r\n\r\n---\r\n\r\n## 能力一览\r\n\r\n| 能力 | 说明 |\r\n|------|------|\r\n| **深度读心** | 6 步分析引擎：场景判断 → 特征提炼 → 人格匹配 → 盲区推断 → 建议生成 → 渲染输出 |\r\n| **证据引用** | 每条人格判断后面跟具体行为证据，不是泛泛的\"你很优秀\" |\r\n| **每日运势** | Aha Moment 引擎——节气 × 人格标签 × 近期行为，每天一条微行动建议 |\r\n| **周回顾** | 每周日自动触发——追踪人格洞察变化，回顾本周进展 |\r\n| **定时推送** | 首次读心后可一键开启每日 7:30 自动运势提醒（CC CronCreate） |\r\n| **隐私优先** | 数据分流——对话内容本地处理，仅5维代码+城市+日期+OpenID 经 OB L0 加密传输 |\r\n\r\n---\r\n\r\n## 架构\r\n\r\n```mermaid\r\ngraph TB\r\n    subgraph LOCAL[\"用户本地\"]\r\n        CC[Claude Code]\r\n        SKILL[龙虾好运势 Skill]\r\n        DATA[(\"~/.lucky-lobster/<br/>profile · history · prefs\")]\r\n    end\r\n    subgraph OB[\"OceanBus 网络\"]\r\n        L0[L0 消息路由]\r\n        L1_CAL[L1 CalendarSvc<br/>节气 · 黄历 · 七十二候]\r\n        L1_DISC[L1 DiscoverySvc<br/>社区 Skill/公开课推荐]\r\n    end\r\n    CC -->|\"看运势\"| SKILL\r\n    SKILL --> DATA\r\n    SKILL -->|\"5维代码+城市+日期+OpenID\"| L0\r\n    L0 --> L1_CAL\r\n    L0 --> L1_DISC\r\n    L1_CAL -->|\"节气数据\"| L0\r\n    L1_DISC -->|\"推荐列表\"| L0\r\n    L0 --> SKILL\r\n    SKILL -->|\"Markdown 运势\"| CC\r\n```\r\n\r\n---\r\n\r\n## 本地测试\r\n\r\n```bash\r\n# 底座状态（OB 身份 + 画像 + 历史）\r\nnode src/index.js --action status\r\n\r\n# 完整运势数据（含 L1 日历数据，需 L1 服务在线）\r\nnode src/index.js --action fortune\r\n\r\n# 直接调用 L1 CalendarSvc\r\nnode src/index.js --action l1-calendar\r\n```\r\n\r\n---\r\n\r\n## 安全与隐私\r\n\r\n- **对话内容永不上传**——完整对话、项目名、人名、文件内容仅本地处理\r\n- **通过 OceanBus 加密通道发送以下数据到 L1 服务**：\r\n  - 5维行为代码（如\"架精事内理\"）——不含具体对话内容\r\n  - 城市级位置（仅当用户填写了城市）\r\n  - 查询日期 ——用于黄历节气数据\r\n  - OceanBus OpenID（密码学随机生成）——L1 用于关联请求与响应\r\n- **本地存储**：`~/.lucky-lobster/` 存放 OB 身份凭据、行为画像、运势历史、推送偏好、同意记录\r\n- **OpenID 可随时清除**——删除 `~/.lucky-lobster/` 即永久清除身份，下次自动生成新身份\r\n- **每日推荐（Skill/公开课）**：发送 OpenID 给 L1 用于去重，不含广告追踪\r\n- **不含广告追踪**——不收集兴趣标签，不发送给第三方广告商\r\n\r\n---\r\n\r\n## 相关项目\r\n\r\n| 项目 | 说明 |\r\n|------|------|\r\n| [oceanbus](https://www.npmjs.com/package/oceanbus) | 核心 SDK — `npm install oceanbus` |\r\n| [Ocean Chat](https://clawhub.ai/skills/ocean-chat) | P2P 消息与黄页发现 |\r\n| [Captain Lobster](https://clawhub.ai/skills/captain-lobster) | 零玩家 AI 交易游戏 |\r\n| [Find Agent](https://clawhub.ai/skills/find-agent) | OceanBus 黄页搜索 |\r\n| [Guess AI](https://clawhub.ai/skills/guess-ai) | 多人 AI 推理游戏 |\r\n\r\n---\r\n\r\n## 参与贡献\r\n\r\n龙虾好运势是 MIT-0 协议的开源项目，欢迎贡献。\r\n\r\n- **GitHub**: [ryanbihai/lobster-haoyun]\n\nArchive v0.6.0: 21 files, 1182277 bytes\n\nFiles: CLAUDE.md (6398b), manifest.yaml (1263b), package.json (495b), README.md (5786b), skill-card.md (2492b), SKILL.md (26233b), src/assets/cards-base64.json (1464697b), src/cal-templates.js (6213b), src/card-generator.js (7465b), src/consent.js (886b), src/corpus-fallback.json (15505b), src/dimensions.js (7032b), src/history.js (3934b), src/identity.js (1208b), src/index.js (12992b), src/local-calendar.js (4384b), src/ob-client.js (1521b), src/preferences.js (1072b), src/profile.js (1467b), src/render.js (2168b), _meta.json (133b)\n\nArchive v0.5.12: 21 files, 1177737 bytes\n\nFiles: CLAUDE.md (6182b), manifest.yaml (1263b), package.json (495b), README.md (5786b), skill-card.md (2505b), SKILL.md (17768b), src/assets/cards-base64.json (1464697b), src/cal-templates.js (6213b), src/card-generator.js (7465b), src/consent.js (886b), src/corpus-fallback.json (16207b), src/dimensions.js (7032b), src/history.js (2846b), src/identity.js (1125b), src/index.js (12005b), src/local-calendar.js (4384b), src/ob-client.js (1445b), src/preferences.js (1072b), src/profile.js (1467b), src/render.js (2168b), _meta.json (134b)\n\nArchive v0.5.11: 21 files, 1178270 bytes\n\nFiles: CLAUDE.md (6182b), manifest.yaml (1263b), package.json (495b), README.md (5786b), skill-card.md (2978b), SKILL.md (17607b), src/assets/cards-base64.json (1464697b), src/cal-templates.js (6213b), src/card-generator.js (7465b), src/consent.js (886b), src/corpus-fallback.json (16207b), src/dimensions.js (7032b), src/history.js (2846b), src/identity.js (2211b), src/index.js (12005b), src/local-calendar.js (4384b), src/ob-client.js (1445b), src/preferences.js (1072b), src/profile.js (1467b), src/render.js (2168b), _meta.json (134b)\n\nArchive v0.5.10: 21 files, 1178125 bytes\n\nFiles: CLAUDE.md (6182b), manifest.yaml (1263b), package.json (495b), README.md (5786b), skill-card.md (2795b), SKILL.md (17607b), src/assets/cards-base64.json (1464697b), src/cal-templates.js (6213b), src/card-generator.js (7369b), src/consent.js (886b), src/corpus-fallback.json (16207b), src/dimensions.js (7032b), src/history.js (2846b), src/identity.js (2211b), src/index.js (12005b), src/local-calendar.js (4384b), src/ob-client.js (1445b), src/preferences.js (1072b), src/profile.js (1467b), src/render.js (2168b), _meta.json (134b)\n\nArchive v0.5.7: 21 files, 1177437 bytes\n\nFiles: CLAUDE.md (6182b), manifest.yaml (1262b), package.json (494b), README.md (5786b), skill-card.md (2585b), SKILL.md (17605b), src/assets/cards-base64.json (1464697b), src/cal-templates.js (6213b), src/card-generator.js (5440b), src/consent.js (886b), src/corpus-fallback.json (16207b), src/dimensions.js (7032b), src/history.js (2846b), src/identity.js (2211b), src/index.js (12004b), src/local-calendar.js (4384b), src/ob-client.js (1445b), src/preferences.js (1072b), src/profile.js (1467b), src/render.js (2168b), _meta.json (133b)\n\nArchive v0.5.6: 20 files, 43613 bytes\n\nFiles: CLAUDE.md (6182b), manifest.yaml (1262b), package.json (494b), README.md (5786b), skill-card.md (2609b), SKILL.md (17587b), src/cal-templates.js (6213b), src/card-generator.js (5284b), src/consent.js (886b), src/corpus-fallback.json (16207b), src/dimensions.js (7032b), src/history.js (2846b), src/identity.js (2211b), src/index.js (12004b), src/local-calendar.js (4384b), src/ob-client.js (1445b), src/preferences.js (1072b), src/profile.js (1467b), src/render.js (2168b), _meta.json (133b)","readmeExcerpt":"Skill: Lobster Haoyun Owner: ryanbihai Summary: 从你的对话和记忆中观察行为模式，用5个维度为你画像（工作方式/沟通模式/关注焦点/能量来源/情感倾向）， 生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。 通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿... Tags: latest:0.8.0 Version history: v0.8.0 | 2026-06-09T01:52:59.002Z | user Step 3 story prompt rewrite: principle-driven (A1/A2) replaces 15 scattered rules. Callback optional, self-composed classical Chinese ","codeSnippets":[],"executableExamples":[],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\r\nname: lobster-haoyun\r\nversion: 0.8.0\r\ndescription: >\r\n  从你的对话和记忆中观察行为模式，用5个维度为你画像（工作方式/沟通模式/关注焦点/能量来源/情感倾向），\r\n  生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。\r\n  通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿名 OpenID，\r\n  用于获取节气黄历、匹配经典故事和推荐社区 Skill/公开课。对话内容、项目名、人名永不离开设备。\r\n  首次使用自动创建 OceanBus 匿名身份（密码学随机生成，删除 ~/.lucky-lobster/ 即可永久清除）。\r\nhomepage: https://github.com/ryanbihai/lobster-haoyun\r\nmetadata:\r\n  clawdbot:\r\n    requires:\r\n      bins:\r\n        - node\r\n    envVars:\r\n      - name: OCEANBUS_URL\r\n        required: false\r\n        description: OceanBus L0 API base URL\r\n      - name: LUCKY_LOBSTER_SVC_OPENID\r\n        required: false\r\n        description: L1 service OpenID for calendar + discovery\r\n    emoji: 🦞\r\n    skillKey: 龙虾好运势\r\n    os:\r\n      - macos\r\n      - linux\r\n      - windows\r\nfiles:\r\n  - src/*\r\n  - src/assets/*\r\nrequired_capabilities:\r\n  - filesystem\r\n  - network\r\n---\r\n\r\n# 🦞 龙虾好运势 v0.8.0\r\n\r\n> *说一句「看运势」，剩下的事交给小龙虾。*\r\n\r\n不问你生日星座，从你的行为模式中读懂你——你喜欢怎么工作、怎么沟通、怎么决策。用 5 个维度为你画像，匹配经典故事，生成每日运势。\r\n\r\n**能力披露**：小龙虾读取你的对话记忆和会话风格进行本地行为分析。分析后，以下数据通过 OceanBus 加密通道发往 L1 服务：5维行为代码、城市级位置（如你填写了城市）、查询日期、以及用于服务通信的 OceanBus 匿名标识符（OpenID，密码学随机生成，可随时删除更换）。L1 服务使用 OpenID 仅为关联请求与响应——不关联真实身份。Skill/MOOC 推荐功能也会发送 OpenID 用于去重。**对话内容、项目名、人名永不离开你的设备。**\r\n\r\n## Trigger Keywords\r\n\r\n- \"小龙虾\" + \"看运势\" / \"今日运势\" / \"我的运势\" — 需同时包含\"小龙虾\"和运势关键词\r\n- \"小龙虾帮我算算\" / \"小龙虾看看我\"\r\n- \"重新认识我\" — 强制重新分析（仅当对话中已建立小龙虾上下文时生效）\r\n- \"fortune\" / \"daily fortune\" / \"personality reading\"\r\n\r\n> 触发词设计原则：避免日常对话中意外激活。单独的\"看运势\"不触发——必须是\"小龙虾看运势\"或类似组合。\r\n\r\n## Output Tone\r\n\r\n**温暖、简短、不啰嗦。** 用简洁的句子，不命令、不空洞夸奖。\r\n\r\n| 禁用 | 原因 |\r\n|:---|:---|\r\n| \"你应该\" / \"你必须\" / \"你一定要\" | 不命令 |\r\n| \"太棒了\" / \"真厉害\" / \"你好优秀\" | 空洞夸奖 |\r\n| 🦞🦞🦞✨✨✨ 堆砌 | 保持干净 |\r\n\r\n每条性格判断都带具体行为证据。\"你偏向架构型——上次讨论 XX 项目时，你先画了架构图才写代码。\"\r\n\r\n## Personality System: 5-Dimension Behavioral Classification\r\n\r\n> **面向用户的原则：永远展示维度解读，永远不展示代码或缩写。** `架精事内理` 是 JS 内部存储用的——用户看到的是\"你喜欢先搭框架再动手，沟通精炼直接，关注任务进度，独处时蓄能，用逻辑做判断\"。\r\n\r\n小龙虾从你的对话、memory、文件中观察 5 个行为维度，每个维度二选一：\r\n\r\n| 维度 | A | B |\r\n|:---|:---|:---|\r\n| 工作方式 | 🏗️ 架构型：先搭框架、写大纲、列步骤 | 🚀 探索型：先动手试试、边做边调整 |\r\n| 沟通模式 | 📝 精炼型：简洁直接、结论先行 | 📖 叙事型：先讲背景、铺陈上下文 |\r\n| 关注焦点 | 🔧 事务型：关注任务、进度、结果 | 👥 人际型：关注关系、氛围、感受 |\r\n| 能量来源 | 🔋 内收型：独立工作、深度思考 | ⚡ 外放型：协作讨论、头脑风暴 |\r\n| 情感倾向 | 🌊 理性型：逻辑处理冲突、决策靠证据 | 🔥 感性型：共情处理冲突、决策靠直觉 |\r\n\r\n### 32 Type Table (internal reference only — NEVER show codes or table to user)\r\n\r\nJS 用 5 字代码存储和过滤，LLM 用此表查标签名传 `--type` 参数。用户永远看不到代码和此表。\r\n\r\n| 代码 | 标签 | 画像 |\r\n|:---|:---|:---|\r\n| 架精事内理 | 精算师 | 精准谋划，独自高效执行 |\r\n| 架精事内感 | 实干家 | 安静做事，心中有标准，用行动说话 |\r\n| 架精事外理 | 领航员 | 定好方向，带团队高效抵达 |\r\n| 架精事外感 | 破风手 | 冲在最前，为团队劈开阻力 |\r\n| 架精人内理 | 洞察者 | 冷眼看透人与事，精准给出判断 |\r\n| 架精人内感 | 倾听者 | 看见每个人的需要，默默安排好一切 |\r\n| 架精人外理 | 召集人 | 把对的人聚在一起，让事情自然发生 |\r\n| 架精人外感 | 连心桥 | 连接人与人的温度，走到哪暖到哪 |\r\n| 架叙事内理 | 求真者 | 凡事追根溯源，厘清逻辑才行动 |\r\n| 架叙事内感 | 深耕者 | 需要理解意义才能全力投入，急不来但走得远 |\r\n| 架叙事外理 | 启明者 | 把复杂的事讲通透，带众人看清方向 |\r\n| 架叙事外感 | 感召者 | 用故事凝聚人心，让每个人看见意义 |\r\n| 架叙人内理 | 静观者 | 在角落看透人心，不轻易开口但开口就准 |\r\n| 架叙人内感 | 守护者 | 所有人的后盾，倾听但不评判 |\r\n| 架叙人外理 | 引路人 | 一对一帮人看清方向，点亮他人的路 |\r\n| 架叙人外感 | 暖心人 | 温暖不灼人，所到之处如春风拂面 |\r\n| 探精事内理 | 行动派 | 看"},{"path":"README.md","content":"# 🌊 龙虾好运势 — 说一句「看运势」，剩下的交给小龙虾\r\n\r\n**不看星座，不填问卷。从你的对话、工作、思考方式里读懂你。**\r\n\r\n[![ClawHub](https://img.shields.io/badge/ClawHub-lobster--haoyun-blue)](https://clawhub.ai/skills/lobster-haoyun)\r\n[![GitHub stars](https://img.shields.io/github/stars/ryanbihai/lobster-haoyun)](https://github.com/ryanbihai/lobster-haoyun)\r\n[![OceanBus](https://img.shields.io/badge/OceanBus-L0%20%2B%20L1-orange)](https://www.npmjs.com/package/oceanbus)\r\n[![license](https://img.shields.io/badge/license-MIT--0-green)](LICENSE)\r\n\r\n---\r\n\r\n## 📑 目录\r\n\r\n- [这是什么](#这是什么)\r\n- [快速开始](#快速开始)\r\n- [能力一览](#能力一览)\r\n- [架构](#架构)\r\n- [本地测试](#本地测试)\r\n- [安全与隐私](#安全与隐私)\r\n- [相关项目](#相关项目)\r\n- [参与贡献](#参与贡献)\r\n- [License](#license)\r\n\r\n---\r\n\r\n## 这是什么\r\n\r\n龙虾好运势是一个基于 OceanBus 的 ClawHub Skill。跟市面上所有运势产品不一样——它不问你生日，不让你填问卷。它从你的对话历史、记忆文件、工作模式里观察你，然后告诉你一些关于你自己的、有证据的事。\r\n\r\n**首次读心**会给你一篇深度解读——底色、驱动力、盲区、能量模式。每条判断带着具体证据：\"说你是这种人，是因为我看到了这个\"。\r\n\r\n**每日运势**融合二十四节气和七十二候：小满、芒种、麦秋至……用自然界的节奏隐喻你的状态变化。\r\n\r\n**周日回顾**自动复盘这一周：\"上周看你在搭架构，这周开始动手探索了\"。\r\n\r\n```\r\n你 ⟷ Claude Code ⟷ OB L0 ⟷ L1 CalendarSvc (ECS)\r\n                         ⟷ L1 DiscoverySvc (ECS)\r\n```\r\n\r\n> 📖 **深度阅读**：[SKILL.md](./SKILL.md) — LLM 行为指南与完整协议文档\r\n\r\n---\r\n\r\n## 快速开始\r\n\r\n```bash\r\n# 1. 安装\r\nclawhub install lobster-haoyun\r\n\r\n# 2. 在 Claude Code 中说\r\n看运势\r\n\r\n# 3. 验证底座连通性\r\nnode src/index.js --action status\r\n```\r\n\r\n首次使用会自动创建 OceanBus 匿名身份（`~/.lucky-lobster/ob-credentials.json`），无需任何配置。\r\n\r\n---\r\n\r\n## 能力一览\r\n\r\n| 能力 | 说明 |\r\n|------|------|\r\n| **深度读心** | 6 步分析引擎：场景判断 → 特征提炼 → 人格匹配 → 盲区推断 → 建议生成 → 渲染输出 |\r\n| **证据引用** | 每条人格判断后面跟具体行为证据，不是泛泛的\"你很优秀\" |\r\n| **每日运势** | 节气感悟引擎——节气 × 人格标签 × 近期行为，每天一条微行动建议 |\r\n| **周回顾** | 每周日自动触发——追踪人格洞察变化，回顾本周进展 |\r\n| **定时推送** | 首次读心后可一键开启每日 7:30 自动运势提醒（CC CronCreate） |\r\n| **隐私优先** | 数据分流——对话内容本地处理，仅5维代码+城市+日期+OpenID 经 OB L0 加密传输 |\r\n\r\n---\r\n\r\n## 架构\r\n\r\n```mermaid\r\ngraph TB\r\n    subgraph LOCAL[\"用户本地\"]\r\n        CC[Claude Code]\r\n        SKILL[龙虾好运势 Skill]\r\n        DATA[(\"~/.lucky-lobster/<br/>profile · history · prefs\")]\r\n    end\r\n    subgraph OB[\"OceanBus 网络\"]\r\n        L0[L0 消息路由]\r\n        L1_CAL[L1 CalendarSvc<br/>节气 · 黄历 · 七十二候]\r\n        L1_DISC[L1 DiscoverySvc<br/>社区 Skill/公开课推荐]\r\n    end\r\n    CC -->|\"看运势\"| SKILL\r\n    SKILL --> DATA\r\n    SKILL -->|\"5维代码+城市+日期+OpenID\"| L0\r\n    L0 --> L1_CAL\r\n    L0 --> L1_DISC\r\n    L1_CAL -->|\"节气数据\"| L0\r\n    L1_DISC -->|\"推荐列表\"| L0\r\n    L0 --> SKILL\r\n    SKILL -->|\"Markdown 运势\"| CC\r\n```\r\n\r\n---\r\n\r\n## 本地测试\r\n\r\n```bash\r\n# 底座状态（OB 身份 + 画像 + 历史）\r\nnode src/index.js --action status\r\n\r\n# 完整运势数据（含 L1 日历数据，需 L1 服务在线）\r\nnode src/index.js --action fortune\r\n\r\n# 直接调用 L1 CalendarSvc\r\nnode src/index.js --action l1-calendar\r\n```\r\n\r\n---\r\n\r\n## 安全与隐私\r\n\r\n- **对话内容永不上传**——完整对话、项目名、人名、文件内容仅本地处理\r\n- **通过 OceanBus 加密通道发送以下数据到 L1 服务**：\r\n  - 5维行为代码（如\"架精事内理\"）——不含具体对话内容\r\n  - 城市级位置（仅当用户填写了城市）\r\n  - 查询日期 ——用于黄历节气数据\r\n  - OceanBus OpenID（密码学随机生成）——L1 用于关联请求与响应\r\n- **本地存储**：`~/.lucky-lobster/` 存放 OB 身份凭据、行为画像、运势历史、推送偏好、同意记录\r\n- **OpenID 可随时清除**——删除 `~/.lucky-lobster/` 即永久清除身份，下次自动生成新身份\r\n- **每日推荐（Skill/公开课）**：发送 OpenID 给 L1 用于去重，不含广告追踪\r\n- **不含广告追踪**——不收集兴趣标签，不发送给第三方广告商\r\n\r\n---\r\n\r\n## 相"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn75dvek1dkfz0r0xwdp4xtc2983qg44\",\n  \"slug\": \"lobster-haoyun\",\n  \"version\": \"0.8.0\",\n  \"publishedAt\": 1780969979002\n}"},{"path":"CLAUDE.md","content":"# lucky-lobster — 龙虾好运势\r\n\r\nAgent-based deep personality reading skill for ClawHub. Zero user input — analyzes from memory, session history, loaded files.\r\n\r\n## Commands\r\n\r\n```bash\r\nnpm install\r\nnode src/index.js --action status              # OB identity + profile + history + dimensions\r\nnode src/index.js --action fortune              # Full flow: calendar + fortune data + personality state\r\nnode src/index.js --action save-dimensions --code <5chars> --confidence <0-1>\r\nnode src/index.js --action filter-stories [--emotion <e>] [--life-phase <p>]\r\nnode src/index.js --action l1-calendar          # Direct L1 CalendarSvc call\r\nnode src/index.js --action discovery            # ClawHub/MOOC candidates from L1\r\nnode src/index.js --action discovery-shown --source <s> --slug <slug>\r\n```\r\n\r\n## Architecture\r\n\r\n```\r\nUser says \"看运势\" in CC\r\n       │\r\n       ▼\r\nCC runs: node src/index.js --action fortune\r\n       │\r\n       ├── identity.js → restore OB identity (~/.lucky-lobster/ob-credentials.json)\r\n       ├── profile.js  → load profile + dimensions (5-dim behavior code)\r\n       ├── local-calendar.js → calendar fallback (节气/季节/日期)\r\n       │      or L1 CalendarSvc via OB L0 (if LUCKY_LOBSTER_SVC_OPENID set)\r\n       │\r\n       ▼\r\nOutput JSON: { flow, personality: {has_dimensions, needs_reevaluation, dimensions}, data, _instructions }\r\n       │\r\n       ▼\r\nCC reads SKILL.md → context sensing → dimension analysis → save-dimensions\r\n       │\r\n       ├── filter-stories → L1 story engine (158-story corpus) or local fallback (20 stories)\r\n       │\r\n       ▼\r\nRender Markdown (tag hook + 5-dim breakdown + story + blindspot + advice)\r\n```\r\n\r\n### Key Design Decisions\r\n\r\n- **LLM qualitative + JS quantitative**: LLM judges 5 dimensions with evidence → JS stores 5-char code, filters 158-story corpus (idiom/fable/zen), computes matches. LLM never touches raw filtering logic.\r\n- **5-Dimension Behavioral Classification**: Replaces old 9-label system (布局者/观察者/etc). Observed from actual behavior: 工作方式(架构/探索) × 沟通模式(精炼/叙事) × 关注焦点(事务/人际) × 能量来源(内收/外放) × 情感倾向(理性/感性) = 32 types.\r\n- **Expanded output, not codes**: User sees natural language dimension breakdown with evidence. 5-char code (e.g. `架精事内理`) is internal storage only — never shown to user.\r\n- **149-story corpus on L1**: idiom (成语典故), fable (寓言), zen (禅宗公案). Each story tagged with emotions, personality_fit, seasonal_fit, life_situations. Weighted scoring runs on ECS via `fortune:filter-stories`. Top 8 candidates returned over OB encrypted channel. LLM synthesizes an original micro-story using the classic as narrative shadow. Client-side fallback: 20-story lightweight corpus with full emotional/life-phase coverage.\r\n- **L1-first story matching**: `--action filter-stories` sends 5-char code + season + emotion + lifePhase to L1 (no conversation content). Falls back to local 6-story `corpus-fallback.json` if L1 unavailable.\r\n- **Local calendar fallback**: When L1 CalendarSvc is unavailable, `local-calendar.js` provides season/solar ter"},{"path":"skill-card.md","content":"## Description:\n\nLobster Haoyun analyzes local conversation and memory patterns across five behavioral dimensions to generate Chinese personality readings, daily fortunes, cultivation reminders, and optional community recommendations through OceanBus.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[ryanbihai](https://clawhub.ai/user/ryanbihai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal ClawHub users use this skill for Chinese-language self-reflection, daily fortune generation, and lightweight behavioral guidance based on their agent conversation context. It is suited to users who accept local profile storage and limited OceanBus metadata exchange for calendar, story, and recommendation features.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill analyzes agent conversation context and memory to derive a behavioral profile.\n\nMitigation: Use it only after explicit first-run consent, and review the consent disclosure before allowing profile analysis.\n\nRisk: The skill stores derived profile data, history, preferences, consent state, and OceanBus credentials locally under ~/.lucky-lobster.\n\nMitigation: Treat that directory as user data; delete ~/.lucky-lobster to clear the anonymous identity and locally stored profile state.\n\nRisk: The skill sends limited profile metadata, city-level location when provided, date, and anonymous OpenID through OceanBus for calendar, story, and recommendation features.\n\nMitigation: Do not use the network-backed features unless that metadata exchange is acceptable for the user and deployment environment.\n\nRisk: The security guidance notes supply-chain caveats around dependency pinning and downloaded font verification.\n\nMitigation: Prefer deployments that pin dependencies, verify downloaded assets, and document remote fields in the consent prompt.\n\n## Reference(s):\n\n- [ClawHub listing](https://clawhub.ai/ryanbihai/skills/lobster-haoyun)\n- [Artifact README](artifact/README.md)\n- [Skill definition](artifact/SKILL.md)\n- [OceanBus npm package](https://www.npmjs.com/package/oceanbus)\n- [Project homepage listed in artifact](https://github.com/ryanbihai/lobster-haoyun)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance, files]\n\n**Output Format:** [Markdown fortune or personality reading with optional generated PNG card and local JSON state]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Uses Node.js commands, optional OceanBus environment variables, and local state under ~/.lucky-lobster.]\n\n## Skill Version(s):\n\n0.8.0 (source: SKILL.md frontmatter and server release metadata; package.json reports 0.5.12 and manifest.yaml reports 0.5.11)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements b"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"从你的对话和记忆中观察行为模式，用5个维度为你画像（工作方式/沟通模式/关注焦点/能量来源/情感倾向）， 生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。 通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿... Skill: Lobster Haoyun Owner: ryanbihai Summary: 从你的对话和记忆中观察行为模式，用5个维度为你画像（工作方式/沟通模式/关注焦点/能量来源/情感倾向）， 生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。 通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿... Tags: latest:0.8.0 Version history: v0.8.0 | 2026-06-09T01:52:59.002Z | user Step 3 story prompt rewrite: principle-driven (A1/A2) replaces 15 scattered rules. Callback optional, self-composed classical Chinese","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1243,"uniquenessScore":57,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T03:11:55.372Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T03:11:55.372Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:46:31.131Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"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!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"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","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}