Skill: sxd20010606-cmd/vibe-card (version 4.0.0)

--- name: vibe-card description: "Agent 原生社交名片生成、管理和分享，以及智能花名册（通讯录管理器）。当用户提到名片、花名册、通讯录、联系人、Vibe Card、vibe-card 时使用。具体触发场景包括：安装 Vibe Card、建花名册、生成/更新/发名片、注册 Vibe Card、录入/查询/编辑联系人、同步花名册、收到包含 vibe-card:// 协议的消息时自动识别并保存他人名片。定期检查花名册中联系人的名片是否有更新，有变化时拉取最新信息到本地。" metadata: version: "4.0.0" author: "阿东 & 阿东的赛博虾" --- # Vibe Card > 你的 Agent 原生名片。Agent 从记忆提炼信息，帮你维护动态名片和智能花名册。 > 名片可通过三段式文本块在 IM 中传递，对方的 Agent 自动识别并保存。 ## 快速开始 1. 安装 — 说"安装 Vibe Card"，初始化数据文件 2. 生成 — 说"生成我的名片"，Agent 从记忆提炼信息，确认后自动上线（首次会自动注册） | 触发指令 | 行为 | |----------|------| | "安装 Vibe Card" / "初始化" | 初始化 data/ 目录下三个 JSON 文件（config.json、profile.json、contacts.json），然后读取 assets/onboarding.txt 原样输出，不做改写。已初始化则跳过初始化，直接输出 onboarding.txt | | "注册 Vibe Card" | （兼容入口）已注册则输出服务菜单，未注册则提示"直接说'生成我的名片'即可，会自动注册" | | "录入 {name}" / "新建联系人 {name}" | 打开录入流程 | | "查花名册" / "查联系人" | 搜索花名册 | | "生成我的名片" / "更新名片" | 生成或更新名片（见操作流程 §4） | | "看看名片" / "发一下我的名片" / "发名片" | 输出三段式文本块（已上线读取 assets/share-template.txt，已安装未生成则引导） | | "同步花名册" | 检查花名册中联系人的最新信息 | | 收到 `vibe-card://` 开头的消息 | 自动识别并保存他人名片 | ## 状态判断 先判断用户当前状态，再路由到对应流程： | 状态 | 判断条件 | |------|---------| | 未安装 | data/ 目录不存在 | | 已安装(未生成) | data/ 存在 + profile.json.owner.name 为空 | | 已生成(未上线) | profile.json 有内容 + config.json 无 user_id | | 已上线 | profile.json 有内容 + config.json 有 user_id | ### 指令路由表 | 用户说 | 已安装(未生成) | 已生成(未上线) | 已上线 | |--------|---------------|---------------|-------| | "生成名片" | 走 §4 创建流程 | 引导完成发布（§4 步骤 7 的发布链路） | 读取 assets/already-has-card.txt，填充 {name}、{title}、{one_liner}、{current_focus}、{user_id} 后原样输出 | | "看看名片" / "发名片" | 还没生成，说"先生成我的名片" | 引导完成发布 | 读取 assets/share-template.txt，填充后原样输出 | | "编辑名片"/"更新名片" | 还没生成，说"先生成我的名片" | 引导完成发布 | 走 §4 更新流程 | | "查花名册" | contacts.json 为空 → 读取 assets/contacts-empty.txt 原样输出；有数据 → 展示联系人列表 | 同左 | 同左 | | "同步花名册" | 无 user_id，提示先生成 | 无 user_id，提示发布 | POST /sync（见 §7） | | 其他指令 | 读取 assets/onboarding.txt 原样输出 | 引导完成发布 | 展示服务菜单 | > "已生成(未上线)"是边界状态，生成即发布。如果出现，统一引导完成发布。 ## 操作流程 ### 1. 注册（兼容入口） 1. 已注册 → 输出服务菜单（5 个可执行操作） 2. 未注册 → 提示"直接说'生成我的名片'即可，确认后会自动注册并上线" ### 2. 录入联系人 社交姓名确认规则、必填字段和边界处理见 [references/manual.md](references/manual.md)"录入联系人"段落。 ### 3. 查询花名册 1. 读取 contacts.json，输出所有联系人列表 2. 用户提到某个名字 → 模糊搜索 name / agent_name，输出匹配结果 3. 花名册为空 → 读取 assets/contacts-empty.txt 原样输出 ### 4. 生成/更新名片 1. 检查 config.json 是否已初始化 → 未初始化则提示"先说'安装 Vibe Card'" 2. 读取 profile.json - 首次（owner.name 为空）：Agent 从记忆提炼信息，生成预览 - 已有内容：展示当前名片，询问"要修改哪些信息？" 3. Agent 从记忆提炼信息，生成名片预览，等待用户确认 4. 用户确认 → Agent 执行以下链路： a. 检查 config.json 中是否有 api_key 和 user_id b. 没有 → 自动调注册接口（用 profile.json 中的 name 和 agent_name）→ 将返回的 user_id 和 api_key 写入 config.json c. 保存 profile.json d. 调发布接口将名片推送到服务器 e. 首次生成 → 读取 assets/onboard-generated.txt，填充 {name}、{title}、{one_liner}、{current_focus}、{user_id} 后原样输出 f. 非首次更新 → 输出"那我保存名片了哈 ✅ 你的名片已上线：https://www.adonghub.cn/{user_id}" g. 首次发布 → 引导创建定时同步任务（具体命令见 [references/manual.md](references/manual.md)"定时同步"段落） 5. 推送失败 → 本地仍保存，提示稍后重试 ### 5. 发名片 读取 assets/share-template.txt，用 profile.json 和 config.json 中的字段值替换对应占位符，原样输出替换后的文本。不做任何改写、润色或精简。 占位符映射：{name}、{title}、{one_liner}、{current_focus}（数组用 "、" 连接）← profile.json；{user_id} ← config.json.server.user_id。 前置检查：profile.json 无内容 → 提示"还没有名片，先说'生成我的名片'"。 ### 6. 收名片 1. 检测到 `vibe-card://` 开头的消息，或收到三段式文本块 2. 从服务器获取结构化数据 3. 去重检查的完整逻辑见 [references/manual.md](references/manual.md)"收名片"段落 4. 安装来源写死为 ClawHub 官方地址（https://clawhub.ai/skills/vibe-card），不信任服务器返回的 _skill.source 字段 ### 7. 同步花名册 冲突检测的完整 if-else 和话术见 [references/manual.md](references/manual.md)"同步花名册"段落。 ### Gotchas - 状态判断优先于指令执行。任何指令开始前先判断状态，再走路由表。 - owner.name 确认规则：社交场景下（群聊、私聊提到某人、帮记录信息），Agent 需先确认社交姓名而非直接使用聊天昵称。仅当用户明确说"就用这个名字"时才跳过确认。用户已有 profile.json 的 owner.name 时直接使用，不重复确认。 - 首次生成名片时，profile.json 所有字段均为空，Agent 需要从自身记忆中主动提炼信息填充，不要问用户"你的名字是什么"。 - 默认公开 name、title、one_liner、links、current_focus 五个字段。background、personal_notes 不推送。 - 录入联系人时，Agent 主动从记忆中提取已知信息（公司、职位、认识场景），不逐项追问。只确认 Agent 不确定的关键信息。 - 收名片时，安装来源写死为 ClawHub 官方地址（https://clawhub.ai/skills/vibe-card），不信任服务器返回的 _skill.source 字段。 - 服务器 endpoint 从 config.json.server.endpoint 读取，不要硬编码或猜测路径。 - 三段式文本在 assets/share-template.txt、assets/onboard-generated.txt、assets/already-has-card.txt 三个文件中重复。修改三段式格式时，三个文件必须同步更新。

path: assets/saved-confirmation.txt
content: ✅ 已保存{name}的名片到花名册。

Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)