十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

baoyu-wechat-summary 群友画像系统(Profiles)完整指南:文件格式、更新规则与回溯流程

baoyu-wechat-summary 群友画像系统(Profiles)完整指南:文件格式、更新规则与回溯流程 AI 技能AI 插件【免费下载链接】baoyu-skills项目地址https://gitcode.com/gh_mirrors/ba/baoyu-skills点击查看免费下载微信群的精华简报若要“越写越懂这群人”靠的正是 per-user 画像Profiles体系。本文基于 baoyu-skills 仓库中 baoyu-wechat-summary 技能的画像参考文档 references/profiles.md完整拆解画像文件的结构规范、frontmatter 字段语义、normal/roast 双版本隔离机制、摘要落盘后的更新流程Step 8.5、回溯画像流程Step 9以及贯穿始终的隐私护栏。读完你既能直接按规范手工维护一套画像目录也能理解该技能在生成每期“群聊精华”时如何利用历史画像实现跨期连续性例如“蛙总今天罕见地没提空头”这类对比表达的底层原理。一、画像系统要解决什么问题微信群聊摘要有天然的碎片化问题每期简报都从零开始读者很难感知某位群友的长期特征、惯用话术与反复出现的“名场面”。画像系统的核心目标就是把跨多天的观察沉淀下来让每期新摘要中的“群友画像”小节能够体现连续性——比如蛙总今天罕见地没提空头——而不是每期都从头刻画一个人。为此每个群的摘要目录旁边会并排维护两个画像目录profiles/—— 从普通版摘要中沉淀的观察profiles-roast/—— 从**毒舌版roast**摘要中沉淀的观察。这两个目录被严格隔离普通版生成只读取profiles/毒舌版生成只读取profiles-roast/。这样做的目的是防止毒舌版的花式吐槽污染正经摘要的客观记录反之亦然——普通版的克制观察也不会稀释毒舌版的锐度。在该技能的整体工作流SKILL.md中画像文件在三个环节被加载或更新Step 3.7加载活跃用户的画像作为背景上下文Step 8.5摘要文件落盘后更新画像Step 9用户主动触发“回溯画像 / 初始化画像 / backfill profiles”时的批量回填。二、画像文件格式规范2.1 路径与命名每个群一个画像目录文件按群分组存放普通版wechat/{group_id}-{group_name}/profiles/{wxid}-{nickname}.md毒舌版wechat/{group_id}-{group_name}/profiles-roast/{wxid}-{nickname}.md其中{group_id}-{group_name}是群的目录名例如12345678901chatroom-相亲相爱一家人完整目录结构见 SKILL.md 的 Storage layout 小节。命名上有两个关键设计wxid前缀是稳定标识符这是索引键一切查找都以{wxid}-*.md前缀匹配进行绝不依赖昵称。-{nickname}后缀仅为人工浏览便利昵称变了就重命名文件{wxid}-{old_nickname}.md→{wxid}-{new_nickname}.mdwxid前缀保持不变。2.2 文件名净化规则无论群名、昵称还是文件名只要进入文件系统路径都必须做净化将/、\、:、*、?、、、、|、NUL 及控制字符全部替换为_去除末尾的点和空白文件名总长度上限 200 字符有些罕见昵称可以非常长。注意净化只针对上述字符不剥离 emoji 和中文——因此onlytiancai-胡浩.md这样的文件名是合法且被鼓励的参见 SKILL.md 中的存储布局示例。2.3 YAML frontmatter 字段详解每个画像文件顶部都有一份 YAML frontmatter承载结构化元数据--- name: current display name wxid: wxid group_nicknames: [历史群昵称 1, 历史群昵称 2] aliases: [群友给的称呼 1, 群友给的称呼 2] tags: [标签 1, 标签 2] first_seen: YYYY-MM-DD last_seen: YYYY-MM-DD total_messages: N digest_appearances: N avg_messages_per_digest: N.N ---各字段语义与写入规则字段含义与规则name最近的显示名取自消息的from_nickname本人即self_wxid时取self_display。wxid稳定标识符一旦写入永不改变。group_nicknames只追加的历史群昵称列表。当name发生变化时把旧的name压入这里。去重、保持时间顺序旧→新。不包含当前name。aliases其他群成员对该用户的称呼如蛙总、老王、X 哥。在本批观察到时去重追加。不包含当前name也不与group_nicknames重复——后者记录的是用户自己用过的昵称前者是群友如何称呼他。tags自由标签独立于正文的“角色标签 / 人设标签”小节。用于承载不属于角色/人设框架的横向属性地区、职业、社群、长期兴趣等。观察到稳定模式时可追加或精炼无上限。first_seen/last_seen首次/最近一次出现在摘要中的日期格式YYYY-MM-DD。total_messages该画像被更新以来累计的消息数。digest_appearances该用户达到“3 条以上消息”门槛的摘要文件数量。avg_messages_per_digesttotal_messages / digest_appearances保留一位小数。向后兼容规则早期版本的技能曾用aliases承载现在group_nicknames的职责。读取一个缺少group_nicknames或tags的旧画像时把缺失字段当作[]处理并在下一次写入时补上。但不要自动迁移非空的旧版aliases值——Agent 无法可靠地区分“历史显示名”和“群友给的昵称”硬迁移会把两类数据混在一起。正确做法是保持aliases原值不动由用户在有需要时手动把历史显示名挪进group_nicknames。2.4 正文自由格式 —— 普通版normal正文是小节标题独占一行、顺序固定的纯文本结构不使用 Markdown 标题语法角色标签 • {4-6 短语标签} 关注领域 • {领域 1} • {领域 2} 发言风格 {1-3 句描述可以多段} 互动模式 • {与某某的互动模式} • {另一种互动模式} 经典金句 • [YYYY-MM-DD] 「{直接引用}」 • [YYYY-MM-DD] 「{直接引用}」 标志性事件 • [YYYY-MM-DD] {事件描述} • [YYYY-MM-DD] {事件描述}要点角色标签为 4–6 个短语标签是一行式的人物速写经典金句必须带日期且逐字引用是后续“callback 金句”的素材库标志性事件每条带日期与事件描述。2.5 正文自由格式 —— 毒舌版roast毒舌版采用同样的纯文本小节标题风格但小节完全不同人设标签 • {4-6 放大版标签} 核心槽点 • {可吐槽点 1} • {可吐槽点 2} 毒舌语录库 • [YYYY-MM-DD] 「{该用户说过的话} — {简短毒舌点评}」 • [YYYY-MM-DD] 「{...}」 经典翻车现场 • [YYYY-MM-DD] {翻车描述 引用 / 证据} • [YYYY-MM-DD] {...}这里的毒舌语录库与普通版的经典金句互为镜像但每条都附带一句毒舌点评经典翻车现场则记录那些“在群里翻车”的公开名场面带引用或证据。三、更新规则哪些可改写哪些只能追加画像更新的总原则是只追加的小节永远不能丢失历史可合并的小节可以随认知加深而重写。具体按版本分列如下。3.1 普通版各小节更新模式小节更新模式备注角色标签Merge合并上限 4–6 个。可以用更有代表性的标签替换较弱的标签。始终保留“被最稳定支持”的标签。关注领域Merge 去重增加新领域按语义去重而非按字符串精确匹配。发言风格Refine精炼只有出现明显的新模式时才更新避免每期都改写。互动模式Merge合并新增模式可用更细节的内容精炼既有条目。经典金句Append-only只追加永不删除无上限。每条必须带日期、逐字引用。标志性事件Append-only只追加永不删除无上限。每条带日期。3.2 毒舌版各小节更新模式小节更新模式备注人设标签Merge合并上限 4–6 个随模式重复出现可不断锐化。核心槽点Append-only只追加永不删除反复出现的槽点在此累积。毒舌语录库Append-only只追加永不删除无上限。每条带日期且同时包含原话与毒舌点评。经典翻车现场Append-only只追加永不删除无上限。每条带日期。3.3 每次更新时 frontmatter 的处理无论哪一版每次更新画像都必须同步处理 frontmatter昵称变更如果当前显示名与记录的name不同——将旧的name压入group_nicknames若尚未存在去重且保持时间顺序将name更新为当前显示名把文件从{wxid}-{old_nickname}.md重命名为{wxid}-{new_nickname}.md。扫描群友称呼在本批消息中扫描其他成员称呼该用户的方式区别于其当前name去重追加进aliases。判定信号包括mention解析到该wxid直接称呼该用户且名称与name不同的问候如蛙总你怎么看、老王说得对摘要正文中引用该用户时用了非当前name的名称。仅在归属明确时添加不确定的匹配一律跳过。tags 更新如果本批暴露了不属于角色/人设框架的稳定横向属性地区、职业、社群、长期兴趣等追加或精炼tags。tags独立于正文的标签小节不要镜像。数值更新last_seen更新为当前摘要的结束日期total_messages累加本批该用户的消息数digest_appearances加 1重新计算avg_messages_per_digest。四、Step 8.5摘要落盘后的画像更新流程这一步在摘要文件写完之后执行遍历本批消息数 ≥ 3 条的每一位用户共 6 个步骤查找画像扫描profiles/毒舌版为profiles-roast/按文件名{wxid}-前缀匹配。找到则打开找不到则按 frontmatter 模板新建文件group_nicknames []、aliases []、tags []、first_seen last_seen 当前摘要结束日期、total_messages 本批数量、digest_appearances 1然后按 §2.3 用本批观察补充初始的 aliases/tags。为新用户解析 wxid新用户出现时wxid已可直接从 wx-cli 消息数据中取得。若只能拿到昵称则运行wx contacts --query {nickname} --json解析命中多个匹配时优先选择当前在群内的那个必要时用wx members group交叉验证。更新 frontmatter按 §2.3 规则执行。更新正文小节可合并小节普通版角色标签、关注领域、发言风格、互动模式毒舌版人设标签读取既有内容把本批新观察整合进去后重写该小节只追加小节普通版经典金句、标志性事件毒舌版毒舌语录库、经典翻车现场、核心槽点追加新条目每条带日期、逐字引用。绝不编辑或删除既有条目。写回文件覆盖写入。来源隔离普通版运行只写profiles/毒舌版运行只写profiles-roast/。即使两个版本在同一次技能调用中生成也必须跑两遍独立的更新流程互不交叉。需要说明的是该技能没有内置脚本目录依赖外部 wx-cli 二进制提供数据画像的读写完全由 Agent 按上述流程在文件系统上完成。这与技能文档中 Completion checklist 相互印证——该清单要求每期运行结束前逐项确认profiles/{wxid}-*.mdinclude_normal时与profiles-roast/{wxid}-*.mdinclude_roast时已为每个 3 条以上消息的用户更新画像更新是“摘要落盘后最容易漏掉、但绝不能漏”的一环。五、Step 9回溯画像Backfill流程当用户说出回溯画像、初始化画像、backfill profiles等触发词时技能执行回填流程直接基于已写好的历史摘要文件批量构建初始画像而无需重新从 wx-cli 拉取消息。完整流程共 8 步列出输入列出wechat/{group_id}-{group_name}/顶层不含profiles/、profiles-roast/内部所有*.md摘要文件按文件名后缀分区*-roast.md归入毒舌通道其余归入普通通道。可选地先读history-digests.jsonl快速获取日期、消息数等元数据避免逐个打开文件。决定是否回填毒舌版仅当存在至少一个*-roast.md文件时才运行毒舌通道。分批处理每批 10–15 个摘要文件一次全读会撑爆上下文。对每批读取摘要对在排行榜或“群友画像”小节中出现的用户累积每期消息数来自统计块、角色标签与观察来自群友画像小节、金句来自正文中的「」引用、带日期的事件来自正文分类中提到的具体事件通过wx contacts --query {nickname} --json为累积到的用户解析 wxid未缓存时并在回填余下流程中缓存 wxid↔昵称映射。门槛只为在语料中出现于 3 个及以上摘要的用户生成画像文件低于此门槛者跳过大概率是一次性访客。写画像文件普通通道写入profiles/{wxid}-{nickname}.md毒舌通道写入profiles-roast/{wxid}-{nickname}.md。用最近的昵称作为文件名后缀把更早的显示名压入group_nicknames。经典金句、标志性事件、毒舌语录库、经典翻车现场按日期时间顺序排序。回填时只追加小节不设上限——让历史尽量完整地流进来。计算 frontmatterfirst_seen 用户出现的最早摘要日期last_seen 用户出现的最近摘要日期total_messages 各期数量之和digest_appearances 用户跨过 3 条消息门槛的摘要数group_nicknames 尽力而为。若同一wxid在历史摘要中出现在多个不同显示名之下例如排行榜行X — N 条中 X 变化按时间顺序填入较早的显示名最新的留在name时间顺序不明时去重留给后续运行修正aliases 尽力而为。扫描历史摘要正文中其他成员用非当前name称呼该用户的形式提及、直接问候不确定的匹配跳过无可靠结果则留[]tags[]。回填不播种 tags交给后续正常运行的观察累积。报告两个通道都完成后打印简短汇总Backfilled {N} normal profiles from {M} digests.Backfilled {K} roast profiles from {L} roast digests.仅当毒舌通道运行时列出因 wxid 解析失败而跳过的用户便于用户手动修复。重复运行安全如果用户跑两次回填把既有画像文件视为先前状态并按 Step 8.5 的规则合并——不要清空既有只追加条目。值得注意的是回填与增量更新共享同一套“只追加不删除”的语义这保证了无论历史多长、无论重跑几次金句与事件这类高价值内容都不会丢失。六、隐私护栏Privacy Guardrails画像是一种持久化记忆因此隐私约束比单期摘要更严格。规则适用于普通版与毒舌版毒舌版另有额外一层红线。6.1 禁止写入两版皆禁真实姓名群里只用昵称时不得写入真实全名。若本人自我介绍说“我叫王二”王二可以记从其他渠道推断出的王晓明不可以。联系方式与身份信息电话号码、邮箱、身份证号、家庭住址、雇主地址、精确出生日期——即使在群里提过也不得搬进画像文件。健康与心理信息即使本人自述如“我最近有点抑郁”也不得固化进长期画像。私人感情/家庭细节除非本人公开在群里讨论其他成员顺带一提不算。尴尬的私人失败公开翻车在群里当众被打脸的观点可以记私人失败顺带一提的求职被拒不可以。从时间戳推断作息/时区服务器时间 ≠ 接收者本地时间且这本质上是一种监视行为。6.2 允许写入公开群行为——说了什么、怎么争论、分享了什么群里说过的直接引语对群成员而言已属公开信息群讨论中表达的兴趣、爱好、工具偏好与其他群成员的互动模式本人公开提过的消费如“蛙总今天又分享了买了什么书”——前提是本人自己提过本人向群里公开分享的旅行/生活轶事。6.3 毒舌版额外红线在 §6.1 之上毒舌画像不得包含任何关于外貌、体重、身材、长相的内容任何关于家庭成员的内容孩子、父母、伴侣——只针对本人心理健康猜测即使是玩笑如“这位需要看医生”、“典型 ADHD”身份属性向的嘲讽——性取向、宗教、民族、国籍、性别。毒舌可以嘲讽的是愚蠢的观点、自相矛盾、事实错误重复性行为如“第 47 次预测见顶”自我拆台时刻“昨天说 X今天说 not X”没立住脚的表演式炫技。一句话准则嘲讽观点本身不嘲讽人roast the take, not the person。这与 output-formats.md 中毒舌版的写作红线一脉相承——毒舌但不恶毒调侃但不人身攻击目标是让群友看了会笑而不是生气。七、生成摘要时如何读取画像Step 3.7画像既是写入的产物也是生成的输入。在生成新一期摘要时技能按如下方式加载画像遍历本批活跃用户消息数 ≥ 3 条普通通道为每人读取profiles/{wxid}-*.md缺失则跳过若本次同时生成毒舌版在毒舌生成通道中另行读取profiles-roast/{wxid}-*.md将画像压缩成一个精简的工作记忆块包含用户当前的name、group_nicknames和aliases用于在旧显示名或群友昵称下仍能认出该用户tags横向属性——地区、职业、社群——便于在“群友画像”中做点题角色标签 / 人设标签用于延续或对比最近 3–5 条经典金句/毒舌语录用于检测 callback 与重复最近 3–5 条标志性事件/翻车现场用于发现反复出现的主题。不要把整个画像倒进摘要——画像是“背景”摘要属于“今天”。关键的使用原则只加载本批活跃用户的画像绝不预先加载所有人画像是背景而非模板当期消息仍是主要素材用历史标签做连续性表达“又双叒叕化身空中直播员”或对比性表达“一向省钱的 XX 今天居然……”严格隔离普通通道只读profiles/毒舌通道只读profiles-roast/绝不交叉加载。一个值得注意的细节如果画像与当期观察矛盾比如画像写着“从不主动发起话题”今天该用户却连开三个话题技能要求在当天“群友画像”里明确点出这种反差——这正是让摘要变得有趣的内容来源。八、与整体工作流的衔接画像系统不是孤岛它与其他持久化组件配合构成群聊记忆体系组件职责文件profiles/与profiles-roast/按人沉淀长期画像本文主题wechat/{group_id}-{group_name}/profiles/memory.md群级事实记忆被指正/确认的客观事实事实只有一份两版共用{folder}/memory.mdhistory.json最近一期摘要指针供增量模式定位起点{folder}/history.jsonhistory-digests.jsonl只追加的摘要归档供回填与历史查询{folder}/history-digests.jsonl从实现角度看画像系统完全基于约定式文件格式运行不依赖任何打包脚本所有读写动作由 Agent 依据本文档的字段规则与更新模式执行。这也意味着只要严格遵循“wxid 前缀索引、frontmatter 字段语义、只追加/可合并的更新模式、隐私护栏”这套约定任何人或任何兼容工具都可以直接维护这套画像目录并与 baoyu-wechat-summary 的每期摘要生成流程无缝衔接。赞分享AI 技能AI 插件【免费下载链接】baoyu-skills项目地址https://gitcode.com/gh_mirrors/ba/baoyu-skills点击查看免费下载相关推荐baoyu-wechat-summary 输出格式全解群聊精华简报的排版规范、毒舌版风格与红线清单baoyu wechat summary 输出格式全解群聊精华简报的排版规范、毒舌版风格与红线清单 导读 本文深入解析 baoyu wechat summarAI 技能AI 插件3天搞定流媒体服务器自动化管理alist-strm终极指南3天搞定流媒体服务器自动化管理alist strm终极指南 你是否也曾为手动创建strm文件而烦恼每次添加新剧集都要重复繁琐的操作媒体库管理变成了一场永无MyBatis-Flex高级特性逻辑删除、乐观锁、数据脱敏MyBatis Flex高级特性逻辑删除、乐观锁、数据脱敏 MyBatis Flex作为一款优雅的MyBatis增强框架提供了丰富的高级特性来简化开发流程并后端ORM上一篇万岳教育系统后端架构设计MVC模式与依赖注入实践下一篇JetMoE常见问题解答开发者必知的100个知识点创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表