万象棋单排上分 · 自走棋助手小程序
⚠️ 第 0 步:先路由,别硬套
这个 skill 有两条互不相干的路线。判断错会让答案完全跑偏。依据是「用户在问游戏内容,还是在问软件工程」。
| 用户在问 | 走哪条 | 必读 | 输出格式 |
|---|---|---|---|
| 「钻石 1 用什么阵容」「常小娥怎么玩」「版本改了什么」「配一套能打的」 | A | 本文件 §A + mechanics.md conflicts.md |
五段式,必须完整 |
| 「能不能加个筛选功能」「为什么真机白屏」「怎么发布」「隐私协议」「能自动抓对局吗」 | B | miniapp-feature-spec.md |
工程答复:改哪些文件/能不能做/什么坑。禁止套五段式 |
| 「查抖音/公众号有没有新阵容研究」 | A+检索 | multi-platform-search.md |
五段式 + 数据来源段写明覆盖范围 |
| 混合(如「按小程序里的数据给我一套阵容」) | 先 B 后 A | 两边 | 先确认数据口径,再走五段式 |
路线 A · 万象棋单排上分
A.1 铁律(违反即作废)
- 零编造:未在
data/references/留存的数值不得当事实。不确定写「未确认」+ 假设。 - 版本必标:每条推荐带
[适用版本: X | 更新日期: YYYY-MM-DD]。 - 可信度必标:每条来源标 高/中/低,低可信不得作唯一依据。
- 指标诚实:公开渠道不存在「前三率/吃鸡率」官方口径(只有登顶率、累计使用量)。不得把登顶率当吃鸡率。
win_rate字段必须保留可为null,不得因缺数据而省略。 - 区分单双排:18183 等棋手榜含双排数据,不可套用到单排。
- 过期内容机器剔除:正文命中「羁绊/升星/凑人口/三星」等旧机制词一律丢弃,不看写得是否专业(
multi-platform-search.md§4.1 R1)。 - 每条结论可溯源:
source_url+publish_date非空才进推荐清单。 - wxqwiki 没有个人对局数据:只有使用量/评分/赞评数。个人胜率、前三率、吃鸡率不存在于任何公开渠道。
A.2 工作流
Step 1 读 data/version.yaml。距上次 ≤7 天 → 只跑 Step 7;>7 天 → Step 2。
Step 2 版本侦测 → scripts/diff_version.py(curl 解析 wxqwiki 静态 HTML,实测四字段命中)
对比 data/ 基线,输出 新增/削弱/移除/数值调整。
Step 2.5 跨平台增量检索 → multi-platform-search.md(仅 Step 2 有变动时触发)
优先级:wxqwiki(curl) → WebSearch → 浏览器(营地/抖音/快手) → 搜狗微信
命中 R1-R5 丢弃;搬运内容只留权威度最高的一份。
Step 3 校验 → scripts/validate_data.py 【写入前必跑,非零退出即中止】
--migrate 只补 null 占位,绝不编造。
Step 4 可信度分级 → data-sources.md(高/中/中低/低/极低,见 §C.2)
Step 5 筛选评分 → scripts/score_comp.py(8 维,单排权重:抗克制 20%/场面稳定 5%)
结合段位(钻石 1)与常用棋手剪枝。⚠️ 评分是排序信号,不是胜率。
Step 6 冲突解析 → conflicts.md(数据口径冲突 + 机制取舍冲突,两类都要有)
Step 6.5 生成攻略 → templates/guide.md 五段式,每条含 思路/节点/风险/替换/来源
Step 7 回归校验 → known_good.json + memory/match_log.csv(字段语义见 data-schema.md §7)
断言失败 = 数据源变了或抓取有 bug → 中止告警,回滚 data/.bak/
A.3 输出格式(五段式,缺一不可)
①版本概览(版本号+更新日期+距上次天数) → ②冲突解析(数据口径N条+机制取舍M条) → ③推荐阵容清单(棋手名+阶/分阶段过渡/装备·天赋·效果牌/[版本+日期]) → ④运营与站位(逐回合操作+站位要点+风险与替换) → ⑤数据来源(每条标高/中/低+链接+日期+假设清单)
A.4 单排约束
无稳定队友供给(双排羁绊套路不可用)· 信息劣势(阵容须独立成立)· 血量 <40 基本是老八,需第 10 回合前锁主 C · 钻石以上已进入拼技术阶段(官方大数据 2026-09-16),轮椅流优势下降。## A.5 最常被搞错的部分
- 常小娥 = 棋手「常小娥」(技能「小菟助力」)。用户说的「嫦娥」= 此棋手。棋手名与英雄棋子名可能同名但不同(瑶妹/瑶、明先生/明世隐)。
- 「四个冲突」= 两类:数据口径冲突(4 条硬数据打架)+ 机制取舍冲突(5 条玩家必做取舍)。用户常误以为只指后者。
- 常小娥两套体系:「海陆空」(苏烈+裴擒虎+司空震+海月,使用量 526.2w 全库第一,默认推)、「嫦娥四人队」(马超+瑶+苏烈+吕布,仅见于早期攻略)。
- 登顶率 ≠ 吃鸡率 ≠ 前三率。登顶率(29.18% / 24.76% / 22.99%,2026-09-16 全服)仅作棋手上限参考 → 数据见
data-sources.md。
A.6 万象棋机制(⚠️ 仅适用本游戏)
禁止套到其他自走棋:万象棋「英雄牌费用统一 3 能量」,而通用自走棋 player.cost 是 1~5 费。搞混会让用户以为「按费用筛选」在万象棋里没意义。完整机制表(棋盘/等级/阵营/经济)见 mechanics.md。
路线 B · 自走棋助手小程序(auto-chess-helper)
B.1 定位
输入棋手名 → 输出适配阵容 + 上阵站位 + 技能装备 + 完整操作步骤。
微信原生,无框架/无 npm/无构建 · wx.setStorageSync 本地约 5MB · 零 wx.request · 无账号无登录 · 无内购(个人主体不能开微信支付)· 包体 223KB · 78 项测试 · AppID wx63e96213bda7cf86。
B.2 红线:做不到的事,别让用户去试
| 想做 | 能 | 原因 |
|---|---|---|
| 自动抓对局/段位/胜率 | ❌ | 营地 H5 是空壳(实测 64~2,349 字节,真假 ID 字节数相同 → 无公开接口),战绩在 App 内。个人胜率不存在于任何公开渠道 |
| 截图/OCR 识别战绩、抓包逆向营地私有接口 | ❌ | 前者要 OCR 能力与逐场人工校对,后者违反用户协议且接口随时失效 —— 两条都别试 |
| 读游戏内版本号 | ❌ | 无此权限 → 只能手动录入 + 自动标记受影响阵容 |
| 跨设备同步 / 多人共享 | ❌ | 不用云开发 → 换手机须先导出备份再导入 |
| 账号 / 登录 / 支付 | ❌ | 刻意不用 wx.login;个人主体不能开通微信支付 |
getUserInfo/getUserProfile |
❌ | 官方已回收 |
| 自动更新阵容数据 | ❌ | 小程序无浏览器能力,数据全手工录入 |
两条已实现的替代口径(都在小程序里已可用):
1. 手录战绩 → pages/records → Records.add → recalcComp,名次自动换算胜率/前三率/均名次。样本 <10 只进「待验证」区。
2. 群体热度指数 = 0.55×使用量 + 0.25×评分 + 0.20×互动(utils/community.js),winRate 恒 null,UI 必须写「群体数据,反映使用规模而非胜率」。热度 ≠ 胜率,不得混说。
B.3 改代码前必须知道
- 架构铁律:
utils/除storage.js外不碰任何wx.*API —— 这是能在 Node 跑测试的前提,破坏它 = 失去 78 项验证。 - 最隐蔽的坑:缺
lazyCodeLoading: "requiredComponents"→ 真机 iPhone 白屏而模拟器正常。 - wxml 限制:不支持
.some()/.findIndex()(标志位要在 JS 算好);无div/span/img。 - 半成品别重写:费用筛选
Comps.query({costMax,minCost})、棋手模糊搜索Players.search()、环境强度筛选Comps.query({envStrength})逻辑都已实现,只差 UI 接线。
⚠️ 但costMax/minCost筛的是totalCost(一套阵容里所有棋手费用之和),不是单个棋手的cost。 用户说的「费用≤3」八成指棋手费用或「含 ≤3 费棋手」——先跟用户对齐口径,否则接完 UI 筛出来不是他要的。Players.search只匹配 name/alias/前缀,不含技能名与阵营。 - 模块速查表、6 个踩坑、全部功能清单与代码行号 →
references/miniapp-feature-spec.md
B.4 发布
| 目标 | 路径 | 耗时 |
|---|---|---|
| 自己微信能用 | 配隐私协议 → 上传 → 选体验版 → 体验二维码 | 今天,约 15 分钟 |
| 线上可搜索 | 上面 + 备案 + 审核 + 发布 | 备案 1~7 工作日,硬门槛 |
隐私协议(必做,漏了真机白屏):mp 后台「设置 → 服务内容声明 → 用户隐私保护指引」→ 只勾「剪切板」→ 用途写「复制阵容操作步骤与备份数据」→ 提交 → 开发者工具「详情 → 本地设置 → 隐私协议」勾选。
⚠️ 本地存储 wx.*StorageSync 不在官方隐私清单里,不需要勾,多勾反要写多余用途。
其他约束:体验版搜不到只能扫码 · 个人主体不能选游戏类目(选「工具→效率」)· 名称含「王者/万象棋」等商标词几乎必拒 · 上传密钥须配 IP 白名单否则报 invalid ip。完整步骤见项目 docs/导入与运行指南.md 第 7~11 步。
排障顺序:跑 tools/doctor.js → 查隐私协议是否已生成 privacy.json → 查 AppID 是否注册成功 → 看开发者工具 Console 红字。
C. 数据来源与可信度
C.1 平台可达性(2026-10-03 实测)
| 平台 | 实测结论 |
|---|---|
| wxqwiki | ✅ 9,997 字节静态 HTML,四字段全命中 —— 唯一可靠主干。⚠️ 只有使用量/评分/赞评数,无个人胜率 |
| 营地 camp.qq.com | ❌ 2,349 字节空壳,真假 ID 字节数相同 → 无公开接口 |
| 抖音 / 快手 / 视频号 | ❌ 抖音 72KB 壳页「万象棋」命中 0 次;快手 78KB 强制登录墙;视频号无公开入口 |
| 公众号 | ⚠️ 搜狗微信部分可读,命中 44 次。限速 ≤3 次/分 |
判断方法论:看目标关键词在返回内容里有没有命中,不要看 HTTP 码。200+72KB 可能是空壳,200+10KB 反而完整。wxqwiki 的能力边界与「站方自述」警示见 data-sources.md。
C.2 可信度分级
高(wxqwiki/官方公告,唯一可作核心依据)> 中(媒体转述)> 中低(社区数据站,机制可信数值不可信)> 低(自媒体,仅思路不引数值)> 极低(AI 生成文,只能发现关键词)。详见 data-sources.md。
C.3 个人数据用样本量,不用高/中/低
| confidence | 门槛 | 进「达标推荐」? |
|---|---|---|
| VERIFIED | 样本 ≥10 且已过版本复核 | ✅ |
| PROBABLE / THIN / SELF_REPORT | 5~9 / 1~4 / 手动无样本 | ❌ 只进「待验证」,SELF_REPORT 必标「自报」 |
理由:3 场 2 胜(66.7%)是噪声。样本不足的高胜率一律不进达标区 —— 牺牲召回率换掉「3 场赢 3 场就标 100%」的假强方案。
D. 目录
> ⚠️ 下面是本 skill 自身的资产清单,不是任何项目的源码目录。 小程序真实结构(pages/ utils/ config/)见 miniapp-feature-spec.md §6。
references/ miniapp-feature-spec.md ⭐小程序功能清单+平台限制+代码行号(路线B必读)
mechanics.md | conflicts.md | scoring-model.md | data-sources.md
multi-platform-search.md | data-schema.md | daily-update-pipeline.md | comp-cards.md
data/ version.yaml 版本基准 | comps.json 阵容 | players.json 棋手
known_good.json 黄金样本 | sources.json 来源台账 | last_fetch.json 游标
memory/ match_log.csv 对局回填(字段语义见 data-schema §7)| lessons.md 教训
scripts/ diff_version.py 版本侦测 | validate_data.py R1-R10 | score_comp.py 8维评分 | fetch_sources.py
templates/ guide.md 五段式 | match_log.csv 表头
test-prompts.json 测试 prompt(Darwin 维度8 用)
命令:validate_data.py(写入前必跑)|--migrate(补占位)|diff_version.py --check-schedule|score_comp.py --id {id}|fetch_sources.py --comp {id}
测试必须用 node:node tests/run.js。用 python 跑会把 JS 当 py 解析,报 U+2014 SyntaxError。