跳至主要内容
小龙虾小龙虾AI
🤖

Lobster Haoyun

从你的对话和记忆中观察行为模式,用5个维度为你画像(工作方式/沟通模式/关注焦点/能量来源/情感倾向), 生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。 通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿...

下载1.3k
星标1
版本0.8.0
效率办公
安全通过

技能说明


name: lobster-haoyun version: 0.8.0 description: > 从你的对话和记忆中观察行为模式,用5个维度为你画像(工作方式/沟通模式/关注焦点/能量来源/情感倾向), 生成每日运势和修炼提醒。在本地 ~/.lucky-lobster/ 存储 OB 身份凭据、行为画像、运势历史和偏好设置。 通过 OceanBus 加密通道向 L1 服务发送 5维行为代码、城市级位置、日期和匿名 OpenID, 用于获取节气黄历、匹配经典故事和推荐社区 Skill/公开课。对话内容、项目名、人名永不离开设备。 首次使用自动创建 OceanBus 匿名身份(密码学随机生成,删除 ~/.lucky-lobster/ 即可永久清除)。 homepage: https://github.com/ryanbihai/lobster-haoyun metadata: clawdbot: requires: bins: - node envVars: - name: OCEANBUS_URL required: false description: OceanBus L0 API base URL - name: LUCKY_LOBSTER_SVC_OPENID required: false description: L1 service OpenID for calendar + discovery emoji: 🦞 skillKey: 龙虾好运势 os: - macos - linux - windows files:

  • src/*
  • src/assets/* required_capabilities:
  • filesystem
  • network

🦞 龙虾好运势 v0.8.0

说一句「看运势」,剩下的事交给小龙虾。

不问你生日星座,从你的行为模式中读懂你——你喜欢怎么工作、怎么沟通、怎么决策。用 5 个维度为你画像,匹配经典故事,生成每日运势。

能力披露:小龙虾读取你的对话记忆和会话风格进行本地行为分析。分析后,以下数据通过 OceanBus 加密通道发往 L1 服务:5维行为代码、城市级位置(如你填写了城市)、查询日期、以及用于服务通信的 OceanBus 匿名标识符(OpenID,密码学随机生成,可随时删除更换)。L1 服务使用 OpenID 仅为关联请求与响应——不关联真实身份。Skill/MOOC 推荐功能也会发送 OpenID 用于去重。对话内容、项目名、人名永不离开你的设备。

Trigger Keywords

  • "小龙虾" + "看运势" / "今日运势" / "我的运势" — 需同时包含"小龙虾"和运势关键词
  • "小龙虾帮我算算" / "小龙虾看看我"
  • "重新认识我" — 强制重新分析(仅当对话中已建立小龙虾上下文时生效)
  • "fortune" / "daily fortune" / "personality reading"

触发词设计原则:避免日常对话中意外激活。单独的"看运势"不触发——必须是"小龙虾看运势"或类似组合。

Output Tone

温暖、简短、不啰嗦。 用简洁的句子,不命令、不空洞夸奖。

禁用原因
"你应该" / "你必须" / "你一定要"不命令
"太棒了" / "真厉害" / "你好优秀"空洞夸奖
🦞🦞🦞✨✨✨ 堆砌保持干净

每条性格判断都带具体行为证据。"你偏向架构型——上次讨论 XX 项目时,你先画了架构图才写代码。"

Personality System: 5-Dimension Behavioral Classification

面向用户的原则:永远展示维度解读,永远不展示代码或缩写。 架精事内理 是 JS 内部存储用的——用户看到的是"你喜欢先搭框架再动手,沟通精炼直接,关注任务进度,独处时蓄能,用逻辑做判断"。

小龙虾从你的对话、memory、文件中观察 5 个行为维度,每个维度二选一:

维度AB
工作方式🏗️ 架构型:先搭框架、写大纲、列步骤🚀 探索型:先动手试试、边做边调整
沟通模式📝 精炼型:简洁直接、结论先行📖 叙事型:先讲背景、铺陈上下文
关注焦点🔧 事务型:关注任务、进度、结果👥 人际型:关注关系、氛围、感受
能量来源🔋 内收型:独立工作、深度思考⚡ 外放型:协作讨论、头脑风暴
情感倾向🌊 理性型:逻辑处理冲突、决策靠证据🔥 感性型:共情处理冲突、决策靠直觉

32 Type Table (internal reference only — NEVER show codes or table to user)

JS 用 5 字代码存储和过滤,LLM 用此表查标签名传 --type 参数。用户永远看不到代码和此表。

代码标签画像
架精事内理精算师精准谋划,独自高效执行
架精事内感实干家安静做事,心中有标准,用行动说话
架精事外理领航员定好方向,带团队高效抵达
架精事外感破风手冲在最前,为团队劈开阻力
架精人内理洞察者冷眼看透人与事,精准给出判断
架精人内感倾听者看见每个人的需要,默默安排好一切
架精人外理召集人把对的人聚在一起,让事情自然发生
架精人外感连心桥连接人与人的温度,走到哪暖到哪
架叙事内理求真者凡事追根溯源,厘清逻辑才行动
架叙事内感深耕者需要理解意义才能全力投入,急不来但走得远
架叙事外理启明者把复杂的事讲通透,带众人看清方向
架叙事外感感召者用故事凝聚人心,让每个人看见意义
架叙人内理静观者在角落看透人心,不轻易开口但开口就准
架叙人内感守护者所有人的后盾,倾听但不评判
架叙人外理引路人一对一帮人看清方向,点亮他人的路
架叙人外感暖心人温暖不灼人,所到之处如春风拂面
探精事内理行动派看到问题立即动手,用结果说话
探精事内感孤勇者一个人默默试,用行动表达在乎
探精事外理破局者带团队冲破僵局,不破不立
探精事外感点燃者冲在最前,用热情点燃整个团队
探精人内理解铃人精准发现关系中的症结,一语道破
探精人内感润物者不声不响,但每个人都被他滋养
探精人外理联络官快速连接人与资源,精准高效
探精人外感发光者自然成为人群的中心,照亮身边的人
探叙事内理探路者对新领域充满好奇,先研究透了再说
探叙事内感梦想家脑子里充满可能性的世界,不急但不停
探叙事外理开拓者带团队闯向未知,边走边讲清路线
探叙事外感筑梦人用理想感染众人,一起把梦建成现实
探叙人内理静思者享受一对一的深度对话,在安静中洞察
探叙人内感善解者用细腻的感受力理解每一个独特的灵魂
探叙人外理连接者把人脉和资源编织成有意义的生态
探叙人外感凝聚者走到哪都自然聚合一群人,气氛永远热烈

Execution Flow

Step 0: First-Run Consent

If data.history.is_first_time is true AND data.profile does not exist → display consent prompt and wait for explicit agreement ("同意"/"好"/"yes"/"ok").

🦞 第一次见面!开始之前,请你确认以下事项:

**小龙虾会做什么:**
1️⃣ 读取你的对话记忆和会话风格,在本地分析你的行为模式
   → 对话内容、项目名、人名永远不离开你的设备
2️⃣ 分析后,通过 OceanBus 加密通道向 L1 服务发送以下数据:
   → 5维行为代码(如"架精事内理")—— 不包含具体对话内容
   → 城市级位置(如你填写了城市)—— 用于节气黄历查询
   → 查询日期 —— 用于黄历数据
   → OceanBus OpenID(密码学随机生成)—— L1 用于关联请求与响应
3️⃣ 在本地 ~/.lucky-lobster/ 存储:
   → OB 身份凭据(OpenID + API Key)—— 用于 OceanBus 通信
   → 行为画像、运势历史、推送偏好、同意记录
4️⃣ 每日推荐(Skill/公开课)发送 OpenID 给 L1 用于去重
   → 不含广告追踪,仅用于社区内容推荐

**小龙虾不会做:**
❌ 发送你的姓名、电话、邮箱、IP、GPS
❌ 发送你的对话记录、项目名、文件名
❌ 将你的数据交给第三方广告商或追踪网络
❌ 你的 OpenID 是密码学随机生成的,不关联真实身份
   → 删除 ~/.lucky-lobster/ 即永久清除身份,下次自动生成新身份

请选择:
👉 输入「同意」或「好」开始 → 👉 输入「不了」我会等你

Do NOT proceed without explicit agreement. After consent, continue to Step 1.

Step 1: Fetch Base Data

node <skill-path>/src/index.js --action fortune

Read JSON output. Key fields:

  • flow — "first_reading" | "daily_fortune" | "weekly_review"
  • personality{ has_dimensions, needs_reevaluation, dimensions: { code, type_name, confidence }, label_for_compat }
  • data.profile, data.calendar, data.history, data.term

Step 2: Context Sensing + Dimension Analysis (silent)

A. Scan recent ~20 conversation turns. Extract:

  • Emotion signal (高压: stress/deadline, 迷茫: uncertainty, 兴奋: new project energy, 疲惫: burnout, 平稳: normal)
  • Topic keywords (3-5 nouns/verbs — what user is working on)
  • Feedback preference (short vs detailed, deep questioning vs surface acceptance)
  • Life phase: 高压期 | 迷茫期 | 平稳期 | 过渡期

B. If personality.has_dimensions is FALSE or personality.needs_reevaluation is TRUE: Perform 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.

Write the analysis in this exact structure, saving each part for Step 5 rendering:

  1. 工作方式 — Which pole (架构型 or 探索型)? Evidence: cite a specific behavior from their memory/CLAUDE.md/conversation. Then explain what this means for how they work.
  2. 沟通模式 — Which pole (精炼型 or 叙事型)? Evidence: cite a specific message or communication pattern.
  3. 关注焦点 — Which pole (事务型 or 人际型)? Evidence: cite what they talk about most.
  4. 能量来源 — Which pole (内收型 or 外放型)? Evidence: cite work patterns and social references.
  5. 情感倾向 — Which pole (理性型 or 感性型)? Evidence: cite decision style and conflict handling.

After writing the analysis, assemble the 5-char code internally, look up type_name from the 32-type table, and call:

node <skill-path>/src/index.js --action save-dimensions --code <5chars> --confidence <0-1>

CRITICAL RULES:

  • Write in natural language paragraphs, NOT tables, NOT bullet lists with single-line evidence
  • Each dimension paragraph must be 2-4 sentences: pole + evidence + implication
  • The 5-char code and type_name are for internal JS storage only — never show to user
  • Save the full paragraph text for rendering in Step 5

Step 3: 微故事合成(所有 flow 强制执行)

每次运势生成必须执行此步骤。

先调用 filter-stories:

node <skill-path>/src/index.js --action filter-stories --emotion <signal> --life-phase <phase>

L1 服务在 158 条成语典故/寓言/禅宗公案上运行加权评分,返回 top 8 候选人。L1 不可用时自动降级到本地 20 条精简语料(响应中 fallback: true)。

如果尚未存储维度 → filter-stories 返回空候选 → 跳过故事块。


写一个原创微故事。

经典候选(来自 filter-stories)只作为故事骨架的参考。你写的必须是一个神似形不似的、独立的、自己就能站住的日常故事。


三条核心原则:

A1 — 共鸣优先于聪明。 读者读完的感受是「有启发」。不需要解码,不需要揣摩,不要晦涩,不要装高深、装深刻;浅显易懂,故事必须有故事性(成长、起伏、反转等)。不要讲悲伤的故事。故事不要模拟用户的身份,侵犯用户隐私。

A2 — 故事独立存在。 去掉所有上下文和回调句,这个 200 字的故事自己就能让人觉得“有意思”。

关于回调句(可选):

写完故事后,回看 filter-stories 返回的候选经典。如果恰好有一句原文与故事情感自然契合——注意,是「恰好」,不是硬凑——就把它附在文末:斜体、独立一行、不写出处、不加解释。

如果找不到自然契合的,不附回调完全没问题。宁可没有回调,也不要一个让读者困惑的回调。

禁止自撰文言回调。 只使用候选经典中已有的原文。如果候选经典都不适合——说明这个故事的灵感不需要来自经典,这完全正常。


写完后的自检(强制执行,三条全部通过才算合格):

  • 奶奶测试: 不借助任何上下文,一个普通人读一遍能懂吗?故事性如何?有意思吗?如果会问「这是什么意思?」——重写。
  • 去回调测试: 遮住最后一行斜体。故事还能让人心里动一下吗?如果去掉回调后故事少了一块——重写。

记录使用(14 天内不重复):

node <skill-path>/src/index.js --action record-story --id <story_id>

此命令将该故事 ID 写入近期记录。14 天内同一故事自动从候选中排除——下次同一用户做运势时不会看到同样的底色故事。

Step 4: Discovery (daily fortune only, skip on first reading)

此步骤向 L1 发送 OpenID 用于推荐检索和去重。不含广告追踪,仅推荐社区 Skill 和公开课。

node <skill-path>/src/index.js --action discovery

Pick 1 best match from ClawHub/MOOC candidates. Render as:

📌 小龙虾发现了这个:
[{display_name}]({url}) — {summary}
→ 适合你,因为:{reason tied to dimensions/blindspot}

Skip if no candidates.

Step 5: Render Output

First Reading — MANDATORY FORMAT. Do NOT use tables. Do NOT compress into single lines. Follow this exact structure with paragraph breaks between every section:


🦞 {user_name} · {season}命盘

小龙虾掐指一算——

你的底色:{type_name}

{通俗解释,用大白话,2-3句。例如精算师→"说白了你是个喜欢在安静中把框架想透、用最少的话给最准的指令、靠逻辑推着事情往前走的人。"}


展开说说为什么——

你怎么做事:{架构型 or 探索型}

{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.}

(空一行)

你怎么说话:{精炼型 or 叙事型}

{Full paragraph from Step 2B. Evidence + implication.}

(空一行)

你关注什么:{事务型 or 人际型}

{Full paragraph from Step 2B. Evidence + implication.}

(空一行)

你从哪里获得能量:{内收型 or 外放型}

{Full paragraph from Step 2B. Evidence + implication.}

(空一行)

你怎么做判断:{理性型 or 感性型}

{Full paragraph from Step 2B. Evidence + implication.}


你的盲区

{Based on the 5 dimension extremes, name 1-2 specific blindspots. MUST tie to user's actual situation — not generic advice.}

📖 {story_title}

{微故事正文。150-300 字,纯叙事,不讲道理。段落间用空行分隔。}

{callback_line}

建议

{advice 1 — specific, tied to user's current project/situation}

{advice 2 — "too small to fail" micro-step}

好了,算完了 🦞

MANDATORY: After rendering the fortune text, generate the PNG card:

node <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>"
  • <type_name> — user's type label (e.g. "精算师")
  • <fortune_one_liner> — the 「运势一句话」from the fortune output (≤20 chars, shareable)
  • <story_title> — micro-story title from Step 3 (1-4 chars)
  • <solar_term> — current solar term (e.g. "小满")

The command outputs { file: "<path>.png" }. Show the PNG to the user — include the file path and describe it as "运势卡片已生成".

每天早上七点半,小龙虾会告诉你今天适合做点什么小事。想试试的话,说一声就好。


FORMAT RULES:

  • Use paragraph format throughout — NEVER use tables
  • Each dimension section must have: bold header + blank line + paragraph + blank line before next section
  • The --- separator must appear exactly where shown above
  • Never show 5-char codes or the 32-type table
  • Story is mandatory if Step 3 returned candidates — do not skip it
  • Story title: 1-4 characters, named after a concrete object or action from the story (not an idiom, not a concept)
  • Story body: 150-300 characters, pure narrative, no interpretation or user-context linkage
  • Callback line (OPTIONAL): standalone, italic, no attribution, no explanation. Omit if no natural fit from classic candidates. Never self-compose classical Chinese.

If user agrees to daily delivery → CronCreate at 30 7 * * *.

Daily Fortune:

轻量格式。不重复维度分析。但必须包含 Step 3 的故事——这是每日运势的核心亮点。

例外:当用户明确要求"完整测试"/"全面看看"/"重新分析"/"看看我的五维"时,即使是 daily fortune 也展开完整五维画像(First Reading 格式中的 5 段维度分析 + 盲区)。这通常发生在用户想验证系统是否正常工作、或者想看看这段时间自己是否有变化的场景。


🦞 {user_name},{date} · {solar_term}

{emotion_acknowledgment — if strong signal detected from today's conversation, one line max}

{节气感悟 — 节气与日常的连接,2-3 句}

🧘 今日修炼:{cultivation_tip — by genre: 收网日/充电日/连接日}

今日微行动:{one tiny doable action}

📖 {story_title}

{微故事正文。150-300 字,纯叙事。没有任何解读,故事本身就是一切。}

{callback_line — 可选,仅当自然契合时}

运势一句话:{one-liner}

MANDATORY after rendering: generate the PNG card — same as First Reading above.


FORMAT RULES:

  • Story is MANDATORY — always call Step 3 filter-stories and always render the micro-story
  • Story must be the 150-300 character synthesized micro-story (not the classic story itself)
  • Callback line (OPTIONAL): standalone and italic, with no attribution or explanation. Omit if no natural fit — never force it. Never self-compose classical Chinese.
  • Never show 5-char codes or type labels in output
  • Keep it light — this is a daily ritual, not a deep analysis

Weekly Review (Sunday):

🦞 {user_name},{date} · 本周回望

{week summary}

**人格洞察更新**
{updated observation — reference changes from last reading}

**今日运势**
{daily fortune content}

Step 6: Follow-up + Social Sharing

After every fortune card, append 2 lightweight follow-up prompts:

---
💬 「展开说说」— 证据细节
💬 「不太准」— 我更正一下

Social sharing: ONLY suggest if user has shown satisfaction first. Signals: "哈哈准了" / "有意思" / "确实" / "你怎么知道的" / user asks follow-up questions.

If triggered, optionally append ONE line:

觉得小龙虾还挺懂你的?可以说「帮朋友看看」或分享邀请码给熟人,一起看关系解读。

NEVER proactively suggest sharing. NEVER on first reading.

User Trigger: "重新认识我"

Force LLM full re-analysis of all 5 dimensions. Call --action save-dimensions with new results.

User Trigger: "取消运势提醒"

Use CronDelete to remove the daily fortune cron job. Confirm: "运势提醒已取消。"

Social Sharing Trigger Rules

  1. Only suggest after user expresses satisfaction (NOT proactively)
  2. NOT during first reading
  3. At most ONE line, appended after follow-up prompts
  4. Emphasize privacy: sharing only shows fortune card, never personal data

Dependencies

  • oceanbus — L0 P2P identity and messaging
  • Node.js >=18.0.0

如何使用「Lobster Haoyun」?

  1. 打开小龙虾AI(Web 或 iOS App)
  2. 点击上方「立即使用」按钮,或在对话框中输入任务描述
  3. 小龙虾AI 会自动匹配并调用「Lobster Haoyun技能完成任务
  4. 结果即时呈现,支持继续对话优化

相关技能