Install
openclaw skills install @zhangbin2025/weiqi-move智能提取并生成围棋实战选点题,支持恶手检测、实战对比、交互答题、试下演练及保存SGF功能。
openclaw skills install @zhangbin2025/weiqi-move从带AI分析数据的SGF棋谱中提取选点题,生成交互式做题网页。
weiqi-move/
├── SKILL.md # 本文件
├── scripts/
│ ├── sgf_parser.py # SGF解析器
│ └── quiz.py # 主脚本
└── templates/
└── quiz.html # 做题网页模板
# 生成选点题(默认5道,恶手题优先)
python3 scripts/quiz.py game.sgf
# 指定输出文件
python3 scripts/quiz.py game.sgf -o quiz.html
# 生成更多题目
python3 scripts/quiz.py game.sgf -n 20
# 只生成恶手题
python3 scripts/quiz.py game.sgf -t blunder
# 只生成中盘题
python3 scripts/quiz.py game.sgf --phase middle
# 组合筛选
python3 scripts/quiz.py game.sgf --phase middle -t easy -n 10
| 参数 | 说明 | 默认值 |
|---|---|---|
-n, --number | 最大题目数量 | 5 |
-t, --type | 题目类型 (blunder/easy/medium/hard) | 全部 |
--phase | 阶段筛选 (layout/middle/endgame) | 全部 |
-o, --output | 输出文件路径 | 输入文件名.html |
| 类型 | 说明 |
|---|---|
blunder | 恶手题:实战落子胜率比AI推荐低20%以上 |
easy | 简单题:最优胜率 > 次优15% |
medium | 中等题:胜率差 5%-15% |
hard | 困难题:胜率差 < 5% |
| 阶段 | 手数范围 |
|---|---|
layout | ≤ 60手 (布局) |
middle | 60-180手 (中盘) |
endgame | > 180手 (官子) |
恶手题是本技能的核心特色,指实战棋手下出了AI认为的低胜率着法。
识别标准:
通过恶手题可以:
黑65.3%、白48.2%B 65.3%、W 48.2%胜率:黑 65.3%生成的单文件HTML包含:
$ python3 scripts/quiz.py example.sgf -n 10
正在解析: example.sgf
棋局: 卞相壹 vs 朴廷桓
主分支手数: 215
变化图数量: 555
检测到的格式: foxwq
正在提取选点题...
提取到 10 道题目
- 布局: 7, 中盘: 3, 官子: 0
- 简单: 4, 中等: 1, 困难: 5
- 恶手题: 3
正在生成做题网页...
已生成做题网页: /path/to/example.html
在 quiz.py 中添加新的适配器类:
class MyFormatAdapter(FormatAdapter):
"""自定义格式适配器"""
PATTERNS = ['特征字符串1', '特征字符串2']
WINRATE_PATTERN = re.compile(r'胜率[:\s]*([黑白BW])\s*(\d+\.?\d*)%')
def detect(self, sgf_content: str) -> bool:
for pattern in self.PATTERNS:
if re.search(pattern, sgf_content):
return True
return False
def parse_winrate(self, comment: str) -> Optional[Dict]:
match = self.WINRATE_PATTERN.search(comment)
if match:
color_str = match.group(1)
rate = float(match.group(2))
color = 'B' if color_str in ['黑', 'B'] else 'W'
return {'color': color, 'rate': rate}
return None
def get_name(self) -> str:
return 'myformat'
然后将适配器添加到 FORMAT_ADAPTERS 列表。