Skip to content

optimus-a1/2026WorldCupPredictions-skill

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚽ WorldCup-2026-Prediction-Skill-Pro

绿茵神算 Pro · 2026 FIFA World Cup AI Prediction Engine

一个引擎 + 一份 SKILL.md,让任意 Agent 算出可复现的世界杯预测 A real Dixon-Coles engine + one SKILL.md. Reproducible World Cup predictions for any agent.

License: MIT Skill Version Engine Python Dependencies

Agents Format Teams Matches Updated


"LLM 负责知道什么,引擎负责算出什么。" — v3 设计原则

📚 目录 · Table of Contents


✨ 核心特性

特性 说明
🧮 真实计算引擎 tools/predict.py 实现 Dixon-Coles-lite:评分差 → 期望进球 λ → 比分网格 → 低比分 τ 修正,概率可复现、可回测
🎯 零依赖 Python 3.8+ 标准库,无第三方包、无网络调用、无 API key,装哪儿都不挂
🔀 双轨制 能跑代码的 agent 走引擎(轨道一);纯对话环境按内置查表回退(轨道二),两轨数值一致
⏱️ 赛中模式 按剩余时间缩放 λ,从当前比分向后条件化 — 比分不倒退由数学保证,红牌/主场均有乘数修正
🧱 资料锁死 48 队评分 + 分组 + 中英别名在 data/ratings.json,定性资料库在 SKILL.md,模型只许引用不许编造
🛂 自动校验 tools/validate_prediction.py:概率总和=100、比分方向一致、比分不倒退、赛前 85% 封顶、违禁词拦截
📦 严格 JSON plus_json(含引擎溯源字段)/ compat_json(兼容 v1 前端)双契约
🛡️ 内置红线 拒绝任何投注 / 赔率 / 下注建议,prompt 红线 + 校验器违禁词双保险

🎯 它解决什么问题

直接问大模型 "墨西哥对南非谁会赢?",你会得到编造的历史交锋、虚构的伤病、飘忽的格式。原版 skill 用资料库 + 权重 + JSON 契约治住了这些 —— 但还剩最后一个病灶:

概率数字本身仍是"凭感觉" — 同一场比赛问两次,可能给出两组不同的数字。无法复现、无法校准、无法回测。

v3 的答案:在四层约束底下,垫一个真正的统计引擎。

┌─────────────────────────────────────────────────────────┐
│      Layer 0 · 🧮 计算引擎 (v3 新增 · 数字的唯一来源)      │
│   ratings.json → λ → Poisson 网格 → Dixon-Coles τ 修正   │
│   赛中条件化 · 红牌乘数 · 85/95/98 封顶 · 总和恒=100      │
└────────────────────────────┬────────────────────────────┘
                             ↓ 数值骨架(LLM 禁止改动)
┌────────────────┬─────────────────┬─────────────────────┐
│  Layer 1       │  Layer 2        │  Layer 3            │
│  📚 资料库     │  📐 方法论      │  📦 输出契约         │
│  48 队锁死     │  定性分析规则    │  严格 JSON + 校验器  │
└────────────────┴─────────────────┴─────────────────────┘
                             +
┌─────────────────────────────────────────────────────────┐
│   Layer 4 · 🔄 每日情报区(已外置 data/daily_brief.md)    │
└─────────────────────────────────────────────────────────┘

🧠 架构 · 引擎 + 四层约束

                  用户提问 / Agent 任务
                          │
                          ▼
            ┌──────────────────────────┐
            │   宿主 Agent (任意 LLM)   │
            └────────────┬─────────────┘
                         │ 读取 SKILL.md
            ┌────────────┴─────────────┐
            │      能执行代码吗?        │
            └──────┬───────────┬───────┘
              能 ✅│           │❌ 不能
                   ▼           ▼
   ┌───────────────────┐   ┌──────────────────────┐
   │  轨道一 · 引擎      │   │  轨道二 · 查表回退     │
   │  tools/predict.py  │   │  评分差 → 概率对照表   │
   │  ─────────────────│   │  (由引擎离线生成,     │
   │  概率·比分·晋级倾向 │   │   保证两轨一致)       │
   └─────────┬─────────┘   └──────────┬───────────┘
             │     数值骨架            │
             ▼                        ▼
   ┌─────────────────────────────────────────────┐
   │  LLM 补全定性字段(keyFactors / analysis /    │
   │  playersToWatch)— 资料库 + 实时检索          │
   │  🚫 一个概率数字都不许改                      │
   └────────────────────┬────────────────────────┘
                        ▼
   ┌─────────────────────────────────────────────┐
   │  tools/validate_prediction.py 自动校验        │
   │  → 严格 JSON 预测结果(前端可直接渲染)         │
   └─────────────────────────────────────────────┘

引擎职责:winProb / draw / predictedScore / knockout.advanceProb 等所有数字。 LLM 职责:伤停、状态、战术等定性判断;发现重大事实(核心球员伤退)时,更新 data/ratings.json 重跑引擎,而不是手改数字。


🚀 快速开始 · 全 Agent 安装

通用逻辑只有一步:把整个文件夹复制进宿主 agent 的 skills 目录。各平台目录约定不同,对号入座;找不到时搜你所用平台文档里的 "skills directory"。

Method 1 — Claude Code

mkdir -p ~/.claude/skills
cp -r worldcup2026-prediction-skill-pro ~/.claude/skills/
# 项目级安装放 <项目>/.claude/skills/

重启会话后直接说:预测韩国 vs 捷克,半场 0-0

Method 2 — OpenClaw 小龙虾🦞 / StepClaw / WorkBuddy

# 以你的实际 workspace 路径为准;云端衍生版在技能管理界面上传文件夹即可
cp -r worldcup2026-prediction-skill-pro ~/openclaw-workspace/skills/

推荐加一条 heartbeat 周期任务,情报维护全自动:

- 每天 09:00:如当日有世界杯比赛,检索各场首发/伤停/天气,
  更新 skills/worldcup2026-prediction-skill-pro/data/daily_brief.md;
  有改变实力判断的重大消息时,更新 data/ratings.json 对应评分并注明理由。

Method 3 — Codex / Cursor / 其他编码 Agent

# Codex
mkdir -p ~/.codex/skills/worldcup2026-prediction-pro
cp -r worldcup2026-prediction-skill-pro/* ~/.codex/skills/worldcup2026-prediction-pro/

Cursor / Windsurf:文件夹放进项目,在 .cursorrules(或等价物)加一行:

预测足球比赛时,遵循 skills/worldcup2026-prediction-skill-pro/SKILL.md,
并优先执行其中的 tools/predict.py 获取概率。

Method 4 — 通用 function-calling / 纯对话 LLM

无原生 skill 体系:SKILL.md 全文注入 system prompt + 授予执行 tools/predict.py 的 shell 权限。 连工具都没有:只注入 SKILL.md,模型自动走轨道二查表回退(confidence 上限"中")。

Method 5 — 脱离 Agent 单独用引擎

# 赛前
python tools/predict.py --teamA 韩国 --teamB 捷克 --stage 小组赛
# 赛中(半场=45)· 比分不会倒退
python tools/predict.py --teamA 韩国 --teamB 捷克 --minute 45 --score 0-0
# 淘汰赛 + 红牌 + 校验管道
python tools/predict.py --teamA 英格兰 --teamB 克罗地亚 --stage 16强 \
  --minute 60 --score 1-1 --red-card B | python tools/validate_prediction.py -

🌐 兼容环境

宿主环境 执行代码 轨道 体验
Claude Code / Claude Cowork 引擎 ⭐⭐⭐⭐⭐
OpenClaw 小龙虾🦞 及衍生(StepClaw / WorkBuddy) 引擎 + heartbeat 自动情报 ⭐⭐⭐⭐⭐
Codex / Cursor / Windsurf / Gemini CLI 引擎 ⭐⭐⭐⭐
Claude.ai 网页(开启代码执行) 引擎 ⭐⭐⭐⭐
任意 OpenAI 兼容 API(注入 system prompt) 查表回退 ⭐⭐⭐

唯一硬依赖:Python 3.8+,仅标准库。引擎完全离线;实时情报检索依赖宿主 agent 自身的搜索能力。


📦 输出契约

默认输出 plus_json(含引擎溯源),需要对接旧前端时注明 compat_json 只输出 v1 七字段。

{
  "teamA":          { "name": "韩国", "winProb": 38 },
  "draw":           39,
  "teamB":          { "name": "捷克", "winProb": 23 },
  "predictedScore": "0-0",
  "confidence":     "",
  "mode":           "in_play",
  "stage":          "小组赛",
  "currentState":   { "minute": "HT", "score": "0-0", "knownEvents": [], "estimated": false },
  "engine": {
    "model": "dixon-coles-lite v3",
    "ratings": { "韩国": 1780, "捷克": 1730 },
    "lambda90": { "韩国": 1.55, "捷克": 1.09 },
    "rho": -0.10, "capApplied": 92
  },
  "dataQuality":    { "level": "medium", "sourcesUsed": ["engine_ratings", "user_state"], "notes": "" },
  "keyFactors":     ["半场低节奏", "韩国创造力略优", "捷克定位球威胁"],
  "analysis":       "…(LLM 结合资料库与实时检索撰写,不改引擎数字)",
  "playersToWatch": [
    { "team": "韩国", "player": "李刚仁", "reason": "组织与最后一传" },
    { "team": "捷克", "player": "希克",   "reason": "禁区终结支点" }
  ],
  "safeUse": "仅供球迷讨论,不构成任何决策建议。"
}

字段约束(由校验器强制执行)

字段 约束 校验方式
winProb × 2 + draw 整数 · 总和 == 100 🤖 自动
predictedScore ^\d{1,2}-\d{1,2}$ · 方向与最高概率一致 · 赛中不得低于当前比分 🤖 自动
赛前单队胜率 ≤ 85(赛中按 92/95/98 分级封顶) 🤖 自动
knockout.advanceProb 淘汰赛输出 · 总和 == 100(draw=90分钟战平进加时/点球) 🤖 自动
keyFactors 3-5 条 🤖 自动
playersToWatch 每队各 1 人 🤖 自动
违禁词 投注/赔率/盘口/倍投/Kelly… 出现即 INVALID 🤖 自动

🇲🇽 分组与赛程

赛事:2026 FIFA World Cup(美国 · 加拿大 · 墨西哥三国联办) 日期:2026 年 6 月 11 日 — 7 月 19 日 · 48 队 · 104 场 晋级规则:每组前两名 + 8 个成绩最好的第三名 → 32 强淘汰赛

👉 点击展开 12 个小组完整分组表(对照 2025-12-05 官方抽签核实)
球队
A 🇲🇽 墨西哥 · 🇿🇦 南非 · 🇰🇷 韩国 · 🇨🇿 捷克
B 🇨🇦 加拿大 · 🇧🇦 波黑 · 🇶🇦 卡塔尔 · 🇨🇭 瑞士
C 🇧🇷 巴西 · 🇲🇦 摩洛哥 · 🇭🇹 海地 · 🏴󠁧󠁢󠁳󠁣󠁴󠁿 苏格兰
D 🇺🇸 美国 · 🇵🇾 巴拉圭 · 🇦🇺 澳大利亚 · 🇹🇷 土耳其
E 🇩🇪 德国 · 🇨🇼 库拉索 · 🇨🇮 科特迪瓦 · 🇪🇨 厄瓜多尔
F 🇳🇱 荷兰 · 🇯🇵 日本 · 🇸🇪 瑞典 · 🇹🇳 突尼斯
G 🇧🇪 比利时 · 🇪🇬 埃及 · 🇮🇷 伊朗 · 🇳🇿 新西兰
H 🇪🇸 西班牙 · 🇨🇻 佛得角 · 🇸🇦 沙特 · 🇺🇾 乌拉圭
I 🇫🇷 法国 · 🇸🇳 塞内加尔 · 🇮🇶 伊拉克 · 🇳🇴 挪威
J 🇦🇷 阿根廷 · 🇩🇿 阿尔及利亚 · 🇦🇹 奥地利 · 🇯🇴 约旦
K 🇵🇹 葡萄牙 · 🇨🇩 刚果金 · 🇺🇿 乌兹别克斯坦 · 🇨🇴 哥伦比亚
L 🏴󠁧󠁢󠁥󠁮󠁧󠁿 英格兰 · 🇭🇷 克罗地亚 · 🇬🇭 加纳 · 🇵🇦 巴拿马

🔄 每日情报与评分维护

核心设计:规则与数据彻底分离。 SKILL.md 永远不动,日常只维护 data/ 两个文件:

┌──────────────────────────────────────────────┐
│  SKILL.md          规则 + 资料库 · 🔒 锁死     │
├──────────────────────────────────────────────┤
│  data/ratings.json   48 队评分 · ✏️ 可热更新   │
│    └─ 改评分 → 引擎即时生效,无需改任何代码     │
│  data/daily_brief.md 每日情报 · ✏️ 可热更新    │
│    └─ 首发/伤停/天气,优先级高于资料库          │
└──────────────────────────────────────────────┘
方式 适用场景
🦞 小龙虾 heartbeat 每天定时自动检索 → 写 daily_brief → 重大消息改 ratings → 重跑引擎
🤖 GitHub Action 定时拉新闻 → LLM 提取要点 → PR 到 data/
✍️ 人工值守 大赛期间每日 5 分钟,参考 eloratings.net / FIFA 排名微调

💡 适用场景

  • 🤖 Agent 数字员工 — 小龙虾每天早上自动备好当日所有比赛的预测简报
  • 📱 球迷应用 / 网页 — plus_json 直接渲染预测卡片(合规提示见下方声明)
  • 💬 微信群 / Discord 机器人 — 群友提问即出预测
  • 📊 数据可视化看板 — 引擎批量跑 104 场 · 蒙特卡洛模拟夺冠概率树
  • 🎙️ 内容创作辅助 — 解说稿 / 短视频脚本的结构化数据底座
  • 🧪 教学样本 — "LLM + 确定性引擎"协作架构的教科书案例

🛣️ Roadmap

  • v1.0 — 48 队资料库 + 4 层约束 + 严格 JSON(原版 · TradingAi666)
  • v2.0 — 赛前+赛中双模式 · 反幻觉规则 · 数据质量字段 · 校验脚本(Plus)
  • v3.0 — 可执行 Dixon-Coles 引擎 · 双轨制 · 全 Agent 适配 · 校验器强化(Pro · 本版)
  • v3.1tests/backtest.py:小组赛实战回测(Brier / log-loss),用真实结果调 ratings
  • v3.1tools/update_ratings.py:从公开 Elo 数据自动更新评分
  • v3.2 — 蒙特卡洛整届模拟:夺冠概率 / 出线概率 / 对阵树一键生成
  • v4.0 — 抽象为"赛事预测 Skill 模板",支持欧洲杯 / 美洲杯 / 俱乐部赛事

❓ FAQ

Q1: 这是机器学习模型吗?需要训练吗?

是统计模型,但不需要训练。 v3 的引擎是 Dixon-Coles 风格的解析模型:评分差直接映射期望进球,泊松网格算概率。评分基线是编辑维护的(可热更新),不依赖训练流程。想更进一步,Roadmap 里的回测脚本可以用真实赛果校准评分。

Q2: 和 v1/v2 比,预测会更准吗?

更可信,且可验证。 v1/v2 的概率是 LLM 凭语感给的,同一问题两次回答可能不同;v3 的概率由引擎确定性计算,可复现、可回测、可校准。准确率本身取决于评分质量——所以维护 data/ratings.json 是日常运营的核心。足球的偶然性谁都消不掉,85% 封顶就是对这一点的敬畏。

Q3: 我能拿这个做付费应用 / 上架小程序吗?

MIT 协议,代码层面可以。但合规自负,几条硬提醒:仅限娱乐与球迷讨论;严禁接入任何投注、博彩、赔率业务(skill 红线 + 校验器双重拦截,但绕过红线的后果由使用者承担);在中国大陆上架小程序时注意"竞猜"类目审核风险,纯展示型比互动竞猜型安全;"世界杯/FIFA"为注册商标,商用命名请规避。

Q4: 赛中预测靠谱吗?比分会不会"倒退"?

不会,这是 v3 的硬保证。赛中模式按剩余时间缩放期望进球,从当前比分向后做条件化——最终比分 = 当前比分 + 剩余进球,数学上不可能倒退;校验器还会再拦一道。红牌(被罚下方 ×0.65 / 对手 ×1.25)、75 分钟后追分节奏、东道主主场都有量化修正。

Q5: 评分 / 情报怎么自动更新?

短期:手动编辑 data/ 下两个文件,引擎即时生效。 推荐:小龙虾 heartbeat 任务(本 README 安装节有现成配置)。 规划:v3.1 的 update_ratings.py + GitHub Action,全自动闭环。

Q6: 淘汰赛的"平局"是什么意思?

draw 表示 90 分钟战平进入加时/点球。v3 额外输出 knockout.advanceProb(基于评分差的 logistic),直接告诉你谁更可能笑到最后,不用再从 analysis 里猜。


🤝 Contributing

  • Star 本项目 — 最简单的支持方式
  • 🐛 报 Issue — 预测离谱、校验失效、文档错漏
  • 📝 修订评分 / 资料库 — 编辑 data/ratings.json 或 SKILL.md 资料库,请附信息来源
  • 💡 二次创作 — 做了预测站 / 机器人 / 小龙虾工作流?来 Issues 里炫一下
git clone https://github.com/optimus-a1/worldcup2026-prediction-skill-pro.git
cd worldcup2026-prediction-skill-pro
git checkout -b feature/your-update
# 修改后提交 PR

⚠️ 声明

  • 🎯 本项目仅供娱乐、球迷讨论与数据研究
  • 🚫 内置红线 + 校验器违禁词 — 拒绝输出任何投注、赔率、下注建议;严禁接入涉及真实资金的自动化流程(自主执行类 agent 风险尤甚)
  • 🧠 预测为概率估计,不构成任何决策依据,请理性看球
  • 🔍 本包代码全部透明、离线、无外联,可自行审计
  • ⚖️ 所有球队、球员信息均为公开资料;仅供 2026 FIFA World Cup 一届使用

📜 License

MIT License © 2026 optimus-a1


🙏 致谢

  • TradingAi666 / 柱子哥 — 原版「绿茵神算」作者。资料库锁死、四层约束、严格 JSON、反投注红线的奠基设计全部来自原版,v2/v3 是站在这套骨架上的演进
  • Dixon & Coles (1997)Modelling Association Football Scores and Inefficiencies in the Football Betting Market,引擎方法论的学术源头
  • FIFA — 赛程与分组信息
  • 所有 ⭐ 本项目的朋友

⚽ 让我们拭目以待 · See You at the Pitch ⚽

Made with ⚽ by @optimus-a1 v1 open-sourced on the opening day · v3 engine-powered since June 12, 2026.