Junqi Dark Layout
by @imcaptor
使用大模型生成中国军棋双人 25 格暗棋阵型,再用 Python 做硬规则校验与图片渲染。用于用户想要军棋暗棋摆阵、想按风格生成更有策略感的布局、想输出图片卡片、或需要先生成再严格验合法性的场景。
clawhub install junqi-dark-layout📖 About This Skill
name: junqi-dark-layout description: 使用大模型生成中国军棋双人 25 格暗棋阵型,再用 Python 做硬规则校验与图片渲染。用于用户想要军棋暗棋摆阵、想按风格生成更有策略感的布局、想输出图片卡片、或需要先生成再严格验合法性的场景。
军棋暗棋摆阵 V2
本技能采用 大模型生成阵型 + Python 严格校验 + Python 渲染图片 的流程。
目标不是让 Python 负责“想阵”,而是:
核心原则
1. 阵型优先由大模型生成,不由 Python 随机生成器主导。 2. Python 只负责两件事:校验合法性、渲染图片。 3. 任何未通过 Python 校验的阵型,一律禁止返回给用户。 4. 如果第一次生成不合法,应根据校验错误让大模型重试,而不是硬着头皮输出。
工作流
第一步:大模型生成阵型
这是唯一推荐的主生成路径。不要再调用 Python 生成器代替大模型摆阵。
根据用户要求的风格(如稳健、激进、阴阵、均衡)直接生成一个完整 30 格布局数组。
要求:
禁第二步:Python 校验
用 scripts/validate_layout.py 校验大模型输出的阵型。
如果校验失败:
第三步:Python 渲染图片
校验通过后,再用 scripts/render_layout.py 生成最终图片卡片。
推荐输出格式
优先让大模型按下面结构输出,且除了 JSON 之外不要附加解释性文本:
{
"style": "阴阵",
"focus": "迷惑",
"layout": ["连长", "师长", "排长", "团长", "司令", "炸弹", "禁", "工兵", "禁", "旅长", "连长", "工兵", "禁", "军长", "营长", "师长", "禁", "炸弹", "禁", "旅长", "地雷", "地雷", "团长", "营长", "排长", "工兵", "军旗", "连长", "排长", "地雷"],
"notes": ["左侧示弱", "中后场藏核心大子", "保留一个较活工兵"]
}
如果无法输出完整对象,至少要输出 layout 数组。
推荐字段约束:
style:字符串,可选,例如 稳健 / 激进 / 阴阵 / 均衡focus:字符串,可选,例如 均衡 / 保旗 / 中攻 / 侧攻 / 迷惑layout:长度必须为 30 的字符串数组notes:可选,0 到 3 条简短说明标准 25 格棋盘模型
己方区域按 6 行 × 5 列表示,共 30 个位置,其中 25 个可摆棋,5 个固定禁摆位。
可摆位置:
固定禁摆位:
大本营位置:
地雷合法位置:
棋子集合
除非用户明确要求其他变体,否则使用以下标准 25 子:
硬规则(必须由 Python 校验)
违反任意一条即为非法阵型:
1. 布局长度必须为 30。
2. 5 个固定禁摆位必须为 禁。
3. 25 个合法格必须全部填满,不得留空。
4. 军旗必须且只能放在大本营(第 6 排第 2 列或第 4 列)。
4.1 两个大本营必须且只能分别放:军旗、排长。因为大本营棋子不能动,排长是最小牺牲。
5. 地雷只能放在后两排合法雷区。
6. 地雷不得进入大本营。
7. 炸弹不得出现在第一排。
8. 每种棋子的数量必须完全正确。
9. 重要的子(至少司令、军长、师长、旅长、团长、营长、工兵)不能被封死,尤其不能夹在地雷和大本营棋子之间。因为地雷不能动,大本营棋子也不能动;而工兵一旦被封死,后续排雷能力会被直接废掉。
10. 由于另一个大本营固定放排长,所以不要再把“连长也可放大本营”当成可接受方案。此规则已废止,统一改为“军旗 + 排长”。
给大模型的生成要求
在生成阵型时,优先追求这些目标:
失败处理
如果 validate_layout.py 返回不合法:
推荐重试规则:
1. 第一次生成后立即校验。
2. 如果失败,把 errors 原样反馈给大模型。
3. 要求大模型保留原风格目标,只修正违规点和必要位置。
4. 最多重试 2 到 3 次。
5. 如果仍不合法,明确告诉用户本次生成失败,不要输出非法阵型。
例如校验结果可能是:
{
"valid": false,
"errors": [
"炸弹不能放在第一排",
"军旗必须且只能位于大本营(第6排第2列或第4列)"
]
}
输出要求
scripts/render_layout.py工具文件
scripts/validate_layout.py:校验阵型是否合法scripts/render_layout.py:把阵型渲染成图片卡片