Xianyu Team Optimizer

v1.0.0

咸鱼之王十殿星级挑战组队优化器。根据微信接龙名单和每位玩家的星级,自动计算收益最大化的5人分组方案(功德簿奖励档位)。当用户提到咸鱼之王、十殿挑战、功德簿、星级组队、接龙名单分组、公会组队优化等关键词时使用此skill。即使用户只是粘贴了一段接龙名单并问"怎么分组"或"帮我排一下队",只要涉及星级和5人分队,也应...

0· 74· 1 versions· 0 current· 0 all-time· Updated 8h ago· MIT-0
by葛佳佳@goodman333

Install

openclaw skills install xianyu-team-optimizer

咸鱼之王 · 十殿星级挑战组队优化器

背景

咸鱼之王的「十殿星级挑战」是公会合作玩法。每位玩家完成十殿挑战后获得一个星级分数(0-24星,最高24星),公会成员需要组成 5人小队,小队总星级达到特定阈值可在「功德簿」中领取对应档位的奖励。档位越高,奖励越丰厚。

功德簿奖励档位(从高到低)

档位所需总星级
第一档≥ 120 星
第二档≥ 105 星
第三档≥ 90 星
第四档≥ 75 星
第五档≥ 60 星
第六档≥ 50 星
第七档≥ 40 星
第八档≥ 30 星

如果用户提供了不同的档位阈值,以用户提供的为准。

工作流程

第一步:解析接龙名单

用户通常会直接粘贴微信群里的接龙名单。格式参差不齐,你需要从中提取每位玩家的 名称星级数

常见格式示例:

1. 老四 16
2. 十二  20
3. 东君    14
4. 沉稳的中年男士-葛佳佳 16
5. 💫皮皮皮 12
6. 话唠 还没打
7. 18号。2

解析要点:

  • 每行开头的 1.2. 等是接龙编号,不是星级
  • 行尾的数字是星级——这是最关键的提取目标
  • 名字可能包含 emoji、特殊符号、中英文混合、破折号等
  • 名字里可能包含数字(如「18号」),要和行尾的星级区分开——行尾最后一个独立数字才是星级
  • 标记为「还没打」「未完成」「未参加」等的玩家,暂时排除在分组之外
  • 如果某行完全无法解析出星级,标记为存疑,让用户确认

解析完成后,先列表确认:

📋 已解析 X 位玩家:

| # | 名称 | 星级 |
|---|------|------|
| 1 | 老四 | 16 |
| 2 | 十二 | 20 |
| ... | ... | ... |

⚠️ 以下玩家暂不参与分组:
- 话唠(还没打)

请确认是否正确?

等用户确认后再进入分组环节。如果用户没有异议或催促分组,可以直接进入下一步。

第二步:计算最优分组

使用本 skill 自带的 Python 脚本完成精确计算:

python3 SKILL_DIR/scripts/optimizer.py INPUT_FILE

其中 SKILL_DIR 是本 skill 所在目录。输入文件为 JSON 格式:

{
  "players": [
    {"name": "老四", "stars": 16},
    {"name": "十二", "stars": 20}
  ],
  "tiers": [120, 105, 90, 75, 60, 50, 40, 30],
  "max_stars_per_player": 24
}

脚本会输出 JSON 结果,包含 多个分组方案(推荐方案 + 替代方案)和升档建议。每个方案都有完整的队伍列表、汇总和升档策略。

如果无法运行脚本(比如没有 Python 环境),按以下算法手动分组。但组合计算容易出错,优先使用脚本。

全局最优分组算法

核心目标:让所有队伍的档位总价值最大化。不是简单地从高到低贪心,而是统筹考虑所有队伍的分配。

算法流程(递归搜索 + 记忆化):

  1. 对当前剩余玩家,依次尝试组建每个档位(90→75→60→50→40→30)的队伍
  2. 对于每个档位,找出"刚好达标"的5人组合(总星级最小的那个满足阈值的组合)——这样做是为了把高星玩家省给后续队伍
  3. 假设选了这个组合,递归求解剩余玩家的最优分法
  4. 比较所有档位选择的结果,取总价值最高的方案

为什么用"刚好达标"的组合? 高星玩家是稀缺资源。如果一支90星队用了 95 星的组合,那多出的 5 星就浪费了——它们本可以帮助另一支队伍跨过更高的档位线。所以每支队伍都用恰好满足阈值的最小组合,把多余的战力留给其他队伍。

和纯贪心的区别: 纯贪心会无脑地先组尽可能多的90星队。但有时候少组一支90星队,把玩家分散到75和60,反而能让总收益更高。全局搜索会自动找到这个平衡点。

第三步:输出多方案供选择

脚本会自动生成推荐方案和若干替代方案。每个方案要完整展示,方便用户对比选择。

格式参考:

# 🎯 分组方案

---
## 方案一(推荐) — 总档位价值 255

### 第 1 队 — ⭐ 90星档(总计 92 星)
| 玩家 | 星级 |
|------|------|
| 百度亭-老九 | 20 |
| 十二 | 20 |
| 话痨 | 19 |
| 娃哈哈 | 19 |
| 东君 | 14 |

### 第 2 队 — ⭐ 75星档(总计 78 星)
| 玩家 | 星级 |
|------|------|
| 混子 | 19 |
| 19号 | 18 |
| 清浅 | 17 |
| 老四 | 16 |
| MrH | 6 |

### ⚠️ 未分组 (3人)
XXX(9), YYY(4), ZZZ(2)

📊 汇总:2队 | 90星×1, 75星×1 | 15人已分组 | 3人待定

---
## 方案二 — 总档位价值 240

(类似格式展示另一种分法)

---

第四步:外部引援策略建议

脚本会为每个方案自动计算引援建议(upgrade_hints),核心问题是:从外部引入多少人、每人需要多少星,可以让队伍升到更高档位?

实际操作中 105 和 120 星档很难达到,重点关注这些现实可达的提升路径:

  • 75→90:中坚队伍的关键跳跃
  • 60→75:让更多队伍拿到有价值的奖励
  • <60→60:帮助未分组玩家至少达到60星基线

1. 已组队伍的引援升档

脚本为每支队伍计算了两种外部引援方式:

引入1人替换最弱队员recruit_1_options):列出引入1名外部玩家替换队内最弱成员后,可达到的各档位及所需最低星级。

第 2 队(75星档,总计75星)最弱队员:喷火龙(4星)

  • 引入 ≥19星 玩家替换喷火龙 → 升至 90星档

引入2人替换最弱2人recruit_2_options):当换1人不够时,尝试替换队内最弱的2名成员。

第 1 队(90星档,总计90星)

  • 引入2人(人均≥23星) 替换 皮皮皮(12)+混子(19) → 升至 105星档

2. 未分组玩家的引援组队

脚本会列出:为未分组玩家从外部引入多少人凑满5人队,以及达到各档位分别需要多少总星级。

未分组 3 人(东君14 + 安安10 + 18号2 = 26星),还需从外部引入 2人

目标档位需引入总星数人均最低星级
30星档4星2星/人
40星档14星7星/人
50星档24星12星/人
60星档34星17星/人

如果引入更多外部人员,还能组多支队(extra_team_options):

引入 7 人(人均≥5星) → 可组 2 支30星档队伍

3. 引援性价比排名

脚本输出 global_recruit_summary,按"每引入1人带来的档位价值提升"从高到低排序,帮用户快速决策优先引谁:

  1. 引入2人(人均≥17星)与未分组玩家组新队 → 新增60星档(+60价值)
  2. 第2队引入1人(≥19星)替喷火龙 → 75升90星档(+15价值)
  3. 第3队引入1人(≥21星)替MrH → 60升75星档(+15价值)

4. 未打玩家影响预估

如果接龙名单中有人标注「还没打」,分析他们打完后的影响:

  • 打完后可以直接参与分组重新计算
  • 如果能打出 X 星以上,可以替换某队的低星玩家实现升档
  • 或者和未分组玩家一起组成新的队伍

注意事项

  • 玩家数量通常不是5的倍数,总会有少量玩家分不到组,这是正常的
  • 接龙名单可能会多次更新(新打完、改星级),支持增量调整——用户粘贴新名单时直接重新计算即可
  • 单个玩家最高24星(十殿每殿最高可得若干星,总计上限24星)
  • 公会人数一般在20-50人之间,穷举5人组合的计算量完全可控
  • 脚本会自动输出多个分组方案(推荐 + 替代),以及每个方案的升档建议
  • 用户可以根据自己对公会成员提升潜力的判断,选择最合适的方案

Version tags

latestvk975mrd15pe64vpdg0kytfrwy584wa3t