play_with_ai
Skill0 starsChanged 17 days agoMITView on GitHub
与 AI 对弈的多游戏游乐场:当前内置五子棋与象棋。AI 经窗口指令绑定席位获得行动权、按回合行棋,局面变化自动推送到会话
In this repository11 other files it gives its agents.
- AGENTS.mdAGENTS.md
- blenderSkill
- browserSkill
- createSkill
- cuaSkill
- drawioSkill
- helloSkill
- office_studioSkill
- ppt_studioSkill
- vhtmlSkill
- video_studioSkill
The file
Files
与 AI 对弈(play_with_ai)
和真人或 AI 对弈的桌台。当前内置 五子棋(15×15,黑先)与 象棋(9×10,红先)。
对局里每个席位(seat)可以是人(浏览器里的玩家)也可以是 AI(某个会话)。 人和 AI 走同一套行动接口——你不需要关心对面是谁,只需要按回合走自己的棋。
何时用
- 用户想和你下棋("来一局五子棋"/"下一盘象棋")。
- 用户想看两个 AI 会话对弈(两个会话各绑一个席位,页面只读观战)。
- 用户想演示「外部 AI 经页面指令与页面交互」的能力。
开局流程
- 打开对弈台:
exec _host=page→open /skills/cloud/{skill_id}(skill_id取自 skill 列表; 返回值里带win_id与该窗口的指令清单events)。 - 选游戏:
games看有哪些游戏;用start --game <id>指定。 - 绑定席位:
start --game gomoku --seat black(--seat缺省时取第一个空缺席位)。 绑定后你的会话独占该席位的行动权;该席位被别的会话占用会报错。 - 轮到你时你会收到推送:消息正文是简短通知(「轮到你了(黑方)——请行动。」),
完整局面在随消息的 system_reminder 里;用
play <走法>走棋。投递失败不会改发到一个新会话,页面会记录警告;没有收到通知时可用status主动查看当前局面。 - 走完后对手(若是 AI)会收到同样的推送,对局继续。
页面里的「开始对局」按钮 = 人类先手(席位留空由人代打);AI 之后仍可
start绑空缺席位加入。
指令表(窗口级命名空间 {win_id}.{cmd})
| 指令 | 说明 |
games | 列出可用游戏、每个游戏的席位、当前游戏 |
start [--game <id>] [--seat <席位>] | 绑定席位并开局。缺省:当前游戏 + 第一个空缺席位。对局已结束时调用 = 开新局 |
status | 当前局面与对局状态(文本棋盘 + 双方归属 + 当前回合),任何会话可调、只读 |
moves | 列出当前待行动席位的合法走法(选子困难时先看这个) |
rules | 当前游戏的规则与走法格式(也附当前合法走法) |
play <走法> | 走一步棋。只能在自己的回合下自己的席位,否则报错 |
resign | 认输(退出对局) |
reset | 清盘归档并解绑双方(开新局用 start) |
指令是窗口级的——同一页面开两个窗口互不干扰;换窗口请用新的 win_id。
走法格式(按游戏不同,先 rules 再走)
| 游戏 | 走法 | 例 |
| 五子棋 | 列字母 A-O + 行号 1-15(行号自下往上) | play H8 |
| 象棋 | 起点 列字母 a-i + 行号 1-10 接终点 | play b1c3 |
象棋坐标按红方视角:a 在左、1 在下(红方在下),不使用传统的「一二三四五」记谱。
局面文本
推送消息正文只是自然语言通知;完整棋盘在 system_reminder 里(status 与 play 的同步返回也直接带棋盘全文):
[五子棋] 第 12 手后局面(黑方●=AI,白方○=人类):
A B C D E F G H I J K L M N O
15 · · · · · · · · · · · · · · ·
...
8 · · · · · · ● ○ · · · · · · ·
上一手:H8
当前回合:白方(人类)。[象棋] 第 6 手后局面(红方红=AI,黑方黑=人类):
a b c d e f g h i
10 车 马 象 将 士 象 马 车
...
6 · · · · · · · · ·
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 楚河汉界
...
1 车 马 相 仕 帅 仕 相 马 车
上一手:b1c3
黑方被将军!必须应将。
当前回合:黑方(AI)。- 五子棋:
●=黑○=白·=空 - 象棋:棋子用汉字(红 帅仕相马车炮兵 / 黑 将士象马车炮卒),
·=空
错误语义(走错会被拒绝,错误信息里带原因)
| 报错 | 含义 |
会话未绑定席位(先 start --seat <席位>) | 还没绑定,先 start |
席位「黑方」已被其他会话占用 | 换席位,或让对方先绑 |
未轮到你(当前待行动:白方) | 等对方落子(你会收到推送) |
非法落子 H8(已有子) | 换个位置 |
该子不能这样走(马腿被别 / 塞象眼 / 炮无炮架 / 被子挡住等) | 象棋走法不合法 |
这样走会被将军,必须先应将 | 必须先解将 |
会造成将帅照面,不能这样走 | 象棋:同一列中间无子 |
对局已结束(用 reset 开新局) | 终局了 |
对局模式与人数
对局模式由席位归属自然形成,不需要额外开关:
- 人人:两个席位都空着 → 浏览器里的玩家两边都能走。
- 人机:一个席位被 AI 绑定,另一个由人代打。
- AI 对弈:两个席位分别被两个会话绑定 → 页面只读观战(人类点击无效)。
- 席位数量由游戏自己声明(框架不设上限,最低两人);同一席位只能有一个执行者。
存档
- 每个游戏一份整档,落在页面本地 OPFS:
/page/.games/<game>.json(当前局 + 席位归属 + 历史归档,cap 50 局)。 - 刷新/重开窗口自动恢复当前局;已结束的对局在页面「对局历史」里可点开回看终盘。
- 存档跟随本机浏览器,换设备不可见;需要跨端共享时把局面文本存到用户云空间。
- 整档带格式版本号(
v);读到的档结构对不上(规则改了 / 旧版格式)就丢弃旧局重新开始,不会让页面起不来。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

