惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
Netflix TechBlog - Medium
大猫的无限游戏
大猫的无限游戏
爱范儿
爱范儿
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Register - Security
The Register - Security
IT之家
IT之家
博客园_首页
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
I
InfoQ
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
M
MIT News - Artificial intelligence
博客园 - Franky
C
Check Point Blog
T
The Blog of Author Tim Ferriss
V
Visual Studio Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Tailwind CSS Blog
Recent Announcements
Recent Announcements
云风的 BLOG
云风的 BLOG
美团技术团队
The Cloudflare Blog
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MyScale Blog
MyScale Blog
The GitHub Blog
The GitHub Blog
D
DataBreaches.Net
Google DeepMind News
Google DeepMind News
V
V2EX
aimingoo的专栏
aimingoo的专栏
GbyAI
GbyAI
G
Google Developers Blog
S
SegmentFault 最新的问题
Hugging Face - Blog
Hugging Face - Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
U
Unit 42
罗磊的独立博客
量子位
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
D
Docker
人人都是产品经理
人人都是产品经理

V2EX

我用 AI 写代码,但终端管理反而成了累赘——于是我做了 codux - V2EX [调研] 各位在公司都用什么 ide 和 agent 写代码? 老运维 share 一个运维平台 新电脑 brew install node 之后,一个小设置可以提升对供应链投毒的防御 - V2EX GLM-Coding 调用持续报错: z.ai 的 Lite 套餐几乎无法使用,官方 Pro/Max 是否稳定? - V2EX 上海漕河泾内推,本组有 2 个 hc,一个后端,一个前端,预算都是 20k 左右,不打卡,氛围好 如果 V2EX 上有一组不永久保存聊天记录(比如只保存 7 天或者 24 小时)的聊天室,那么会开启哪些有用或者有趣的可能? - V2EX gemini cli 貌似挂了,一直返回 403 - V2EX 第一次在自媒体上赚到钱 收集了最近在使用的低价 GPT, Gemini,邮箱等 AI 会员的小店合集 讨论个大实话:现在企业还在说 AI 编程提效 20%, 30%的,真的太落后,没用懂 AI。因为包括很多前沿公司,已经狂奔到提效 200%-500%的情况 [招聘][远程][币安] 前端/后端/QA/iOS/Android 至少 3 年以上经验 目前有大量 HC 欢迎投递 Chatgpt Pro 用量用不完的可以开这些设置 面试的时候好像遇到钓鱼了,给各位避个坑 cursor 年续费 22 号到期, 自动续费是否还是老的计次套餐呢 - V2EX 被两件破事毁掉的一下午,琐碎的内耗消磨人的精力 使用 Planet 存储 Codex 的会话或者重要信息 - V2EX 如果业务部门领导不要你开发功能,而是要求你教会它用 claude code 开发功能,你会怎么做? 分享一个 MacOS 接绿联 CM818 USB 转 DP 转接器使用感受 - V2EX 我的 HR 朋友 10 年老 Java ,非全大专,大家帮忙看看简历 开源了一个 AI 口语练习工具,音素级发音评分,完全免费可自部署 V2EX 上有哪些你觉得很有趣、印象深刻的妹纸? 字节为啥不出个国内版 Vercel? 有在大马的朋友吗? 问个运营商问题 你们在有领导的公司大群发过的最大胆的消息是什么 公司裁员,目前没有工作。想试试摆摊,做一个移动鲜啤打酒车 我的硬盘 Memblaze Pblaze 5 Linux 下不识别,给 Linux 内核提交了补丁, AI 说有望被合并 - V2EX 只有我一个人觉得 codex 不好用? 做了个 AI + 真人专家监督的广告投放平台 Auxora, 7 个品牌跑出 6x ROAS 如何走出至亲的离世 Claude Web 端貌似 claude-opus-4-7 偷偷上了? 现在 Apple 开发者帳號應該是用哪个地区会更好? - V2EX 用回测筛选因子的一点经验分享 给女儿 vibe 了一个故事类的 app,做完发现,这类应用似乎上线难度极大? - V2EX 手机格式化 bitget 钱包没了,里面开通的银行卡还有机会拿到吗 - V2EX [送码] TransVoice - 我的第一款 App 上架啦!实时转写+翻译+字幕,会议听课好助手! PictureHub 高清摄影作品的画廊 Planet 的第一个使用 macOS 26 SDK 构建的 Insider 版本 20260416-1 - V2EX 成都二手房是不是在涨价,有点坐不住了 - V2EX claude 生态(skill mcp plugin)等 Studio Display XDR VESA 适配器脱落 有在用印度区 applestore 的大哥嘛,请教一下礼品卡去哪里买呢 - V2EX 我好像知道京东家政爆火的原因了 - V2EX 薅了公司的 a 家 api key,用机场 ip 做代理容易被封吗 如何在初期就识别 HR 在刷 KPI,没打算招你? [分享]精心打造一个 AI 编程知识库(算法/设计模式/提示词/Skills),助力程序员转型 港版 iPhone 在国内支持联通 5GA 吗?在广东用 想办港卡 AI 对 it 行业影响太大了 我做了个把照片变成 iOS 小组件贴纸的 App ChatGPT Pro 5x 套餐 量真的很足! I have found a method to directly generate advertising video materials using scripts 在小城市开个店,给人写软件,有前途吗 chrome 最新的 147 版直接卡爆炸了 - V2EX 为什么厂家不在 skill/mcp 这类的工具中塞广告呢?这样不是可以大赚嘛? minimax 真是脸都不要了,工作日下午 14:00 定时开启 529,脸都不要了。训练模型居然占用用户使用时间 外资非核心部门 vs 另一家外资的核心部门,该跳吗? iTad 标签 扩展 加小动作 ? - V2EX 去年 H200 能买,不让买是代替快出来了? - V2EX AI 赛事通 - 2026 年 4 月中国区新增 AI 竞赛和黑客松汇总 - V2EX V2EX › 登录 现在安卓开发都在做啥 - V2EX 浏览器插件 沉浸式翻译 是不支持自定义模型了吗? - V2EX Codex 里的 GPT5.4 也能降智?上午让它改两个问题,改了一个小时了, plus 额度用了一半了还是没改好,和前几天用的体感完全不一样。要它改的问题也不复杂。服了。 目前有使用 claude code 的收到人脸认证的吗 - V2EX 分享一个自己做的 Nginx 管理工具,实时请求动态预览!(无奈市面上实在找不到好用的,自己撸了个) - V2EX claude code 崩了么? 今天在反重力上用 claude 一点都不丝滑,有同样的感受吗? opencode 消息周知插件 今天 claude opus 和前两天比,质的飞跃 - V2EX 999 包月价? - V2EX 一个版本, 50 项更新:我们几乎重做了整个播放页 本地大模型多大显存够用? GOGDNS 一款简易的私人 DNS 服务器 - V2EX API key (GLM) 怎么使用 claude code desktop ? Claude 这样订阅有问题吗 - V2EX 帮我爸找回了一篇赛博兰亭集序 求推荐稳定、高性价比使用 Claude Opus 4.6 的渠道/平台 搞个云端 claude code 防止 封号 - V2EX 用 Claude 要实名了,内地用户怎么办? OpenAI Plus 和 Team 都缩水了吗 海外 Android 手机有什么好用的国内第三方应用市场推荐吗 - V2EX 把电脑伪装成电视,用 DLNA 投屏拿到视频号直播流地址 - V2EX claude 认证莫慌 北京互联网法院有什么攻略么?起诉北京智谱华章科技股份有限公司退款可行么? - V2EX Claude 开始引入身份验证 求 vscode 做笔记软件的插件推荐 - V2EX 讯飞星辰的 Coding Plan 如何? Anthropic 宣布在 Claude 平台推行身份验证机制 科普一下低价 gpt 是怎么来的 有没有长期关注 Claude 的朋友,我建了一个 Channel 自动抓取 Claude Team 的推文 啃了那篇 54 页的 Agent Harness 综述, 给大伙讲个省流版 现在那家的 coding plan 还能买到 是不是最近会有什么更聪明的大模型要发布了呀? 用多了 AI 后,有没有觉得 AI 生成的文章有很强的既视感? 如何 实践 Harness 工程? 今日份 GPT 5.4 笑话 如何建一个自己的号池,让 cursor 真正实现 token 自由 写了三个月 Agent Harness,我终于敢让 Claude Code 全自动写代码了
开源一个翻翻棋 ai
igofreely · 2026-03-22 · via V2EX

目标就是能在天天象棋的翻翻棋里当外挂使,但是奈何本人水平有限,只能在新手场赢,普通场就打不过了。抛砖引玉,欢迎提 PR 或提供加强 AI 的思路。

翻翻棋 AI 项目说明

这是一个基于原生 HTML 、CSS 、JavaScript 实现的浏览器版翻翻棋项目,包含完整的棋局规则、血量结算、候选棋子池、棋谱记录与复盘,以及多版本本地 AI 和可切换的远程 AI 接口。

项目目标不是只做一个可玩的棋盘,而是围绕“暗棋信息不完全 + 吃子博弈 + AI 决策”构建一个可持续迭代的实验场。

项目特点

纯前端实现,打开即玩,核心逻辑集中在少量脚本文件中。

棋盘为 4 列 × 8 行,包含暗子翻开、走子、吃子、炮跳吃等规则。

引入 HP 机制,不以“将死”判胜,而以“扣空对方总血量”判负。

支持本地 AI 与远程 AI 两种来源,并在远程失败时自动回退到本地策略。

本地最高版本 AI 支持 Web Worker 异步计算,避免阻塞主线程。

内置棋谱导出、导入、逐步复盘、自动播放等功能。

目录结构

项目当前结构如下:

darkchess/ ├─ index.html # 页面结构、控制区、规则展示 ├─ style.css # 棋盘、侧栏、状态面板、复盘区样式 ├─ game.js # 棋盘状态、规则判断、回合推进、快照与撤销 ├─ ai.js # AI 基类、本地多版本策略、远程 AI 适配 ├─ ai_worker.js # Worker 内运行的 AI 推理入口 ├─ gamelog.js # 棋谱记录、导出、导入与复盘引擎 └─ main.js # UI 渲染、交互事件、AI 调度、模式切换

架构概览

整个项目采用“界面层 + 游戏状态层 + AI 决策层 + 棋谱层”的轻量分层:

index.html / style.css | v main.js | +--> game.js 负责规则、状态、合法动作、胜负判断 | +--> ai.js 负责本地 AI / 远程 AI 决策 | | | +--> ai_worker.js 负责 Worker 异步推理 | +--> gamelog.js 负责棋谱记录、导出导入、复盘

  1. 界面层

index.html 定义棋盘区域、HP 血条、AI 状态面板、候选棋子区、剩余棋子池、操作按钮和规则说明。

style.css 负责:

棋盘格与棋子视觉效果

选中、高亮、合法走法提示

AI 状态面板与来源切换按钮

候选棋子面板和复盘控制条

  1. 游戏核心层

game.js 是项目最关键的状态中心,主要职责包括:

初始化 8 × 4 棋盘

构造红黑双方完整棋子池

管理 4 个固定开局放置点

判断翻棋、走子、吃子的合法性

处理炮的隔子跳吃规则

记录每一步后的快照,用于悔棋和 AI 搜索

按 HP 变化判断胜负

Game 类同时提供了 AI 依赖的关键能力:

getAllActions():返回当前回合的所有可行动作

getValidMoves(row, col):返回指定棋子的合法走法

createSnapshot() / restoreSnapshot():给搜索和回放使用

getState():导出给远程 AI 的序列化局面

  1. AI 决策层

ai.js 里定义了整个 AI 体系:

AIPlayer:统一接口,所有 AI 都实现 getMove(game)

SimpleAI:基础启发式 AI

StrategicV2AI 到 StrategicV14AI:逐代增强的本地策略 AI

RemoteAI:通过 HTTP 调用外部 Python 服务获取动作

ai_worker.js 负责将部分本地 AI 放到 Web Worker 中执行。当前实现中,StrategicV14AI 被配置为 Worker 优先运行,以降低复杂搜索对界面流畅度的影响。

  1. 棋谱与复盘层

gamelog.js 提供两个主要能力:

GameLogger:记录开局、翻棋、移动、吃子、悔棋、胜负等事件,并导出 JSON 棋谱

GameReplay:基于棋谱重建局面快照,实现逐步回放和自动播放

游戏规则

当前实现的规则可以概括为:

棋盘与棋子

棋盘尺寸为 4 列 × 8 行。

双方棋子类型包括:将、仕、象、车、马、炮、兵。

数量配置为:将 1 、仕 2 、象 2 、车 2 、马 2 、炮 2 、兵 5 。

大小关系

将 > 仕 > 象 > 车 > 马 > 炮

兵可以吃将

将不能吃兵

这里的大小关系体现在普通棋子的吃子判定上:非炮棋子只能吃已翻开的敌方棋子,且满足大小比较规则。

炮的特殊规则

炮不能像普通棋子那样直接移动到空格。

炮只能“隔一个子”进行跳吃。

炮可吃已翻开的敌方棋子。

炮也可吃未翻开的暗子,但被吃暗子的真实身份需要从剩余棋子池中确定。

开局阶段

对局开始时并不是满盘布子。

系统固定 4 个开局放置点。

玩家在这 4 个位置依次从剩余棋子池中选择要放出的棋子。

红黑数量不受限制,属于当前玩法设计的一部分。

4 个位置放置完成后,游戏进入正式对局阶段。

回合行动

正式阶段每回合只能做一件事:

翻开一个暗子

或移动一个己方明子

或执行一次吃子

HP 机制与胜负

本项目不是传统“吃光棋子”或“将死”判定,而是采用总血量机制:

双方初始 HP 均为 60

各棋子 HP:将 30 、仕 10 、象/车/马/炮 5 、兵 2

吃掉一个棋子时,直接扣除该棋子的 HP

任一方 HP 先降到 0 或以下,则该方失败

这个设计让高价值棋子的重要性非常高,也直接影响 AI 的估值函数。

游戏流程

一次完整对局的流程如下:

玩家选择阵营,红方先手,黑方后手。

进入开局放置阶段,玩家依次确定 4 个固定点的明子。

放置结束后进入正式对局。

玩家和 AI 轮流进行翻棋、移动或吃子。

主界面实时展示血量、当前回合、上一步动作和剩余棋子池。

对局结束后可导出棋谱,后续也可以重新导入进行复盘。

AI 设计

AI 总体思路

这个项目的 AI 并不是单一算法,而是一套逐步演化的策略体系。

核心挑战在于:

局面存在不完全信息,暗子尚未翻开

翻子行为本身就是一种带概率性质的决策

HP 机制让“吃子收益”不等同于普通象棋中的单纯子力交换

炮、兵、将之间存在特殊克制关系

因此本项目的 AI 采用“启发式评分 + 战术覆盖 + 有限深度搜索”的混合思路。

SimpleAI

SimpleAI 是最基础的本地策略版本,特点是:

遍历所有合法动作

对翻棋、移动、吃子分别打分

对对手下一步进行浅层响应估计

选出综合评分最高的动作

它的启发式会考虑以下因素:

吃子获得的 HP 收益

子力价值差

是否会被反吃

炮架、空翻、邻近敌我棋子等局面因素

落后时的搏命翻子倾向

这类策略计算量小,响应快,适合作为基线和回退方案。

Strategic 系列

StrategicV2AI 到 StrategicV14AI 是持续增强的策略版本。虽然 README 不逐个展开每个版本的内部细节,但可以把它们理解为一条演化路线:

从单步启发式评分,逐步加入更多局面特征

强化对将、仕、兵、炮等关键子种的特殊战术判断

细化“是否安全”“是否互换有利”“是否保护重要棋子”等判断

在中后期减少纯随机性,提高确定性和稳定性

最终引入搜索,而不只是静态评分

StrategicV14AI

当前默认本地模型是 StrategicV14AI ,也是现阶段最强的本地 AI 。它的关键特征包括:

将 flip 和“炮吃暗子”的 poolIndex 纳入动作定义

使用 deterministic negamax + alpha-beta 剪枝

使用 transposition table 降低重复局面计算

使用局面评估函数代替早期版本偏随机的动作打分

保留高优先级战术覆盖逻辑,用于紧急防御或强制战术场景

这意味着 AI 不只是看“这一步值不值”,而是会在有限深度内搜索“走完这一步之后,接下来会发生什么”。

本地 AI 与 Web Worker

在 main.js 中,本地 AI 有两种运行方式:

普通模式:直接在主线程中实例化 AI

Worker 模式:通过 LocalWorkerAI 将计算委托给 ai_worker.js

这样做的目的很直接:

避免高阶搜索阻塞 UI

在较重的 AI 版本上保持棋盘动画与交互响应

在 Worker 失败时自动回退到主线程本地 AI

远程 AI 模式

项目还支持通过 RemoteAI 调用远程 Python 服务。

默认端点为:

http://127.0.0.1:8000/web/ai/move

健康检查: http://127.0.0.1:8000/health

远程模式的工作方式:

前端将当前局面 game.getState() 序列化后发送给后端。

后端返回 AI 动作。

如果远程服务不可用,前端自动回退到当前选择的本地 AI 。

UI 的 AI 状态面板会展示当前来源、服务状态和模型信息。

这个设计让前端既可以独立运行,也可以作为更复杂模型的可视化对战界面。

棋谱系统

项目内置完整棋谱能力,适合调试 AI 和复盘对局。

支持记录的内容

开局放置

翻棋

移动

吃子

悔棋

胜负与最终 HP

导出格式

棋谱导出为 JSON ,包含:

对局 ID

开始/结束时间

玩家与 AI 阵营

AI 模型与 AI 来源

最终胜者与剩余 HP

全部动作序列

复盘功能

导入棋谱后可进入复盘模式,支持:

回到起点

上一步

下一步

跳到结尾

自动播放

退出复盘

这部分能力对于分析 AI 行为和验证规则实现非常有价值。

关键文件说明

game.js

核心职责:

规则实现

局面状态维护

悔棋支持

AI 搜索快照支持

如果要修改玩法规则、棋子数值、合法行动范围,通常应先从这里入手。

ai.js

核心职责:

定义 AI 基类与所有策略版本

提供远程 AI 适配器

实现启发式评分与搜索逻辑

如果要增强 AI 强度、调整估值函数或接入新的后端模型,这里是主战场。

main.js

核心职责:

渲染棋盘与侧栏信息

响应点击、选择棋子、按钮操作

切换 AI 来源与本地模型

驱动 AI 回合调度

管理复盘模式

如果要改交互流程或 UI 行为,这里影响最大。

gamelog.js

核心职责:

棋谱记录

导出下载

导入重建

复盘快照生成

如果要做“对局分析面板”“胜率统计”“训练数据导出”,通常会以这里为基础扩展。

如何运行

仅运行前端版本

这是一个前端项目,但建议不要直接双击 HTML ,而是通过本地静态服务器运行。原因是:

Web Worker 在部分浏览器/安全策略下对 file:// 支持不稳定

远程 AI 接口需要通过 HTTP 调用

可选方式示例:

方式 1:使用 VS Code Live Server

直接在编辑器中启动 index.html

方式 2:使用 Python

python -m http.server 8080

然后访问

http://127.0.0.1:8080

启用远程 AI

如果你有对应的 Python AI 服务:

确保后端监听 http://127.0.0.1:8000

提供 /web/ai/move 和 /health 接口

在游戏界面的 “AI 来源” 中切换到 “远程 AI”

如果后端未启动,前端会自动回退到本地 AI 。

适合继续扩展的方向

如果后续继续演进,这个项目比较自然的扩展方向包括:

将更多 Strategic 版本统一整理成可配置搜索框架

为远程 AI 增加请求耗时、日志和错误细分展示

在复盘模式中加入局面评估、关键手标注和胜负转折点

把规则参数化,支持不同翻翻棋变体

为 AI 对局记录增加统计维度,用于自动评测不同版本强度

总结

这个项目的价值在于三点:

它是一个可玩的翻翻棋前端

它是一个可试验多种 AI 策略的对战平台

它已经具备对局记录和复盘能力,适合后续做分析与训练闭环

如果你准备继续开发,建议优先关注 game.js 、ai.js 和 main.js 这三个文件,它们共同构成了规则、决策和交互的主干。