⭕ 六度怎么才好玩 —— Sixlogy Play
Jeff 2026-08-17 早上派的题:「我们讨论六度学说…我正在想如何让它变得好玩」。 这一页是玩法设计,不是 as-built —— 地基那三根轴的现状在仓库版 docs/CONTACTS_SIXLOGY.mddocs/BOND.md,冲突以那两份为准。 本页所有玩法一律「未开工」,标 待做 的就是还没有一行代码。
🧭 三根轴:长度·宽度·深度 🎯 先给"哇",再给系统 🚧 两条红线先定死 ✍️ Vega8 · 2026-08-17

① 地基:我们的六度不是概念,是三根轴(已建成)

是什么已经有的东西用户今天看得见吗
长度(隔几度)你和某人之间要经过几个人 好友/羁绊的边已经在库里(friends + bonds) 看不见 —— 一次都没露过面
宽度(认识多少人)登巴数 150 分四环:至亲5 / 密友15 / 好友50 / 朋友150 登巴环页 dunbar_rings_screen.dart,联系人 chips 右侧 ⭕ 进 看得见
深度(多熟)关系温度 0~1000,按互动累积、按比例衰减 conversation_warmth;握手亲人/挚爱 +300 看得见(环上的光晕)

我们最值钱的地方:边是"双向握手"换来的事实,不是单方面贴的标签 (微信那种标签贴完就腐、没人维护)。这决定了下面所有玩法都建立在真关系上 —— 也决定了它们刷不动(刷一条边要另一个人点头)。

② 为什么现在不好玩 —— 三个"哇"一个都没给到

人对六度上头,只有三种时刻:

时刻用户心里那句话我们现在
看见路径「原来我跟他就隔两个人?!」没有任何入口
够得着「那能不能帮我介绍一下」没有
看见网在长「我这张网今年长这样了」只有静态的登巴环,没有"变化"
判据:先给"哇",再给系统。 六度的乐趣是发现,不是统计。任何一版设计,先问一句: 用户在第几秒会"咦"一下? 答不出来,那一版就是仪表盘,不是玩法。

待做 · P1 玩法一:度数与路径「你 ↔ 陈七妹 ↔ TA · 2 度」

打开任何一个人的资料页,顶上一行就告诉你隔几度。这是最便宜的"哇" —— 数据全是现成的。

怎么算

双向 BFS(从我和从他同时往外扩),深度上限 3(= 最多显示"3 度以内")
· 边 = 好友关系(双向已确认);羁绊握手过的边**权重更高**,优先作为展示路径
· 每层扩展上限 N(比如 500 个)—— 超了就停,返回"3 度以上"而不是硬算
· 结果缓存 Redis `sixdeg:{minUid}:{maxUid}`,TTL 6h;任一方加/删好友时删掉与他相关的缓存

接口草案

GET /v1/social/path?to={uid}
→ 200 {
    "degree": 2,                  // 1=直接好友 · 2/3=中间隔人 · null=3 度以上/算不出
    "via_count": 1,               // 中间隔了几个人(不含两端)
    "via": [                      // ⚠️ 默认**空数组**:名字要中间人同意才给(见红线一)
      {"user_id":"…","name":"陈七妹","avatar":"…"}
    ],
    "can_intro": true             // 这条路上有人开着"可被引荐"
  }

三个不许

待做 · P1 玩法二:请求引荐(看得见 → 够得着)

看见"隔一个人"之后,人第一反应是「那帮我说一声?」。这一步把好玩变成有用, 也是六度唯一能变成增长的地方 —— 而且我们的边比 LinkedIn 干净(握过手的)。

三方流程

我            → 「请陈七妹引荐」+ 一句话(限 60 字,给她好开口)
陈七妹(中间人) → 收到卡片:引荐 / 婉拒 / 忽略        ← 她永远有"什么都不做"这条路
对方           → 只有中间人点了"引荐"才知道这件事    ← 被拒的人不会尴尬,他压根没被打扰
引荐成立       → 后端建一个三人临时会话(或直接互加请求),中间人可以随时退出

要落的表(迁移号做的时候再取,现在不占号)

intro_requests(id, from_uid, via_uid, to_uid, note, state, created_at, decided_at)
  state: pending | forwarded | declined | expired
  · 同一对 (from,to) 7 天内只允许一条 pending —— 防骚扰
  · 中间人 24h 不处理 → expired(**不通知发起人"她拒绝了"**,只说"这次没成")
判据:引荐是"请人帮忙",不是"系统撮合"。 所有措辞都要让中间人觉得不回也没关系 —— 一旦她感到被系统逼着回应, 她会关掉"可被引荐",那条路就永远断了。

待做 · P2 玩法三:每周「链到 TA」挑战

活动层,不动地基:每周公布一个目标(某个官方账号 / 某个游戏高手 / 某位创作者), 用最少的人链到他。它天然裂变,而且不需要新的数据模型。

待做 · P2/P3 玩法四、五:让"网在长"这件事看得见

握手要有仪式感

现在握手成功只是一行状态变了。应该给一次短动画 + 温度 +300 的可见跳动 —— 关系是这个 App 的主角,主角出场要有音乐。

我的星图能拿出去

登巴环之外,给一张能分享的图:我的四环 + 今年新长出的边 + 最深的三个人(名字可隐去)。这是用户主动帮我们宣传的唯一自然理由。

收集癖(便宜又上瘾)

「你是第 3 个和 TA 握手的人」          ← 稀有度
「你的网里有 4 个国家 / 7 座城市」      ← 广度(不排名,只陈述)
「你和 3 个人互为『至亲』」            ← 深度
「有 12 个人通过你认识了别人」          ← 你是别人的桥(这条最动人)

🚨 ⑦ 两条红线(建议现在就定死,别等做出来再改)

红线一:路径暴露的是别人的关系

「你 ↔ 陈七妹 ↔ TA」这行字,泄露的是陈七妹和 TA 认识这件事 —— 那不是我的信息。

红线二:不做"人脉广"排行榜

一排名,人就会去刷握手 —— 而握手一旦被刷,三根轴同时脏掉:分类不准、登巴环失真、温度失去意义。

判据:我们比的是关系的"深",不是"多"。 任何一个会让人想"多加几个人"的设计,先假设它会被刷,再问"刷了之后我们还剩什么"。

⑧ 性能:不预计算全图,只算"两点之间"

做法取舍
要查才算(双向 BFS + 缓存) 只在资料页触发;深度封 3、每层封上限;算不出就诚实说"3 度以上"
预计算全图 / 存所有人两两距离 N² 爆炸,而且关系一变就全脏 —— 这条不做
图数据库(Neo4j 之类) 现在这个量级不值当;真到瓶颈再说(铁律 10:MVP 先能跑)

缓存失效的判据:加/删好友、握手/解除羁绊这四个动作,清掉与该用户相关的缓存 —— 别用"定时清空"糊过去,那会让用户看到明明加了好友却还显示 3 度。

⑨ 分阶段(按"他能先感觉到什么"排,不按施工难度)

阶段做什么用户第一眼看到的变化
P1-a资料页那一行度数(③)「咦,我跟他隔一个人」
P1-b请求引荐(④)+ 中间人卡片「那帮我说一声」——第一次真的用它办成事
P2-a每周挑战(⑤)有理由回来玩
P2-b握手仪式 + 可分享星图(⑥)愿意截图发出去
P3收集式成就 / 「你是别人的桥」长期黏性

⑩ 待 Jeff 拍板(四件)

  1. 路径显名的默认值:默认只给度数(我建议),还是默认显示中间人名字?
  2. 引荐的入口摆哪:资料页那一行点开,还是单独一个"六度"页?
  3. 挑战奖励用绿能量吗,还是先不发奖、只上榜?
  4. 度数上限显示到几度:我建议 3(再远的关系用户没有感觉,算力也贵)。

拍完我这边按 P1-a → P1-b 的顺序开工,每一刀都能单独上线、单独看得见。