Feiyu's Technical Blog
Notes on software, systems, and things I am learning.
上古纪元(Heroes of Might and Magic: Olden Era)
一个读懂游戏画面、推断对手构筑并模拟战斗的长期项目。第一次来,从下面任一总览读起; 两个系列都按阅读顺序编号:S = 模拟器与 AI,P = 视觉理解与战斗记录。
游戏设计、模拟器与 AI · 上古纪元
S 系列:战斗规则怎样实现、测试和回放,AI 怎样公平决策;其后是稳定模块接口与交互流程等设计文档。
这里记录现在有意义的设计。当前采用不等于整个系统已实现;每篇都写明范围和下一步。实验结果仍在下方的视觉理解系列中。
s00:从游戏规则到可用的战斗助手
Simulator、资料库、界面与 AI 各负责什么;一次规则修正怎样传到决策,以及 S 系列如何维护设计。
阅读设计 →s20:一次攻击怎样正确结算并回放
为什么双击不能把第一击乘二;按伤害包更新状态,记录处决与死亡归因,并用规则版本门控让旧存档按自己的规则逐字节回放。
阅读设计 →s21:让生物和魔法共用机制,而不是共用一串特例
从反伤触发天堂之刃,到把 157 个生物导出成一份可核验的定义:Simulator 怎样用强类型配置、注册表和共享机制减少重复修补,又怎样诚实地列出仍写死在代码里的特例。
阅读设计 →s22:怎样测试一个规则会相互触发的战斗模拟器
用受控场景、预览差分、带复现存档的崩溃模糊测试、机制组合与行覆盖统计及并行成对测试,寻找规则组合中的错误,并区分程序自洽与真实规则一致。
阅读设计 →s40:AI 怎样公平比较普攻、猛攻和等待
只用玩家可见信息比较行动:公开攻击情景查询、不确定性与4秒预算,以及怎样用足量配对排位和独立留出来源判断一个新策略是否真的更好。
阅读设计 →s41:规则型 AI 的独立验证:从威胁圈到英雄无敌三式
从 v59 错题诊断、题库与排位的背离、排位噪声底,到威胁圈 T 与“打得到就打”的 H3:用冻结协议、随机对照和新来源留出,判断一条简单规则是否真的让 AI 变强。
阅读设计 →s50:学习型 AI:从行为克隆到结构化动作特征
回顾此前 PPO、行为克隆与交叉熵搜索为什么都没有通过独立验收,再用生物配置导出和每动作 351 维的结构化特征重新检验:一个小模型能否学会规则 AI 的落点选择。
阅读设计 →游戏智能体的模块边界:稳定接口,独立实现
Perception、Simulator、AI 如何各自改进;哪些变更必须共同讨论,以及设计文档怎样保持有效。
阅读设计 →Perception 薄观察接口:只传看见的证据
已实现的 v1 如何保存对象、数值、来源、坐标和时间,又如何防止未知值、旧帧和内部数据混进 AI。
阅读设计 →已经看见的属性,怎样真正进入战斗分析
从漏掉英雄贡献、错误推断施法费用,到把整场减员接成时间线:一条贯穿图像读取、历史关联、公开规则与保存回看的修复链。
阅读设计 →让 AI 主动查看界面:查询也要一步一步执行
完整流程仍在设计中;已有顺序探查、条件耗蓝分析和空闲窗口内的付费日志读取,保留成本与信息缺口。
阅读设计 →
已弃用的设计 · 1 篇(保留原因与替代入口)
- P02:一段录像怎样变成可审核的观察
仅旧跨模块总合同已被替代;本篇仍是录像观察导读,保留原实验与历史测量。当前能力看P00,现行接口看替代文档。
查看替代设计 →
游戏视觉理解与战斗记录 · 上古纪元
P 系列,像读一本书一样:从视频选帧出发,逐步读懂文字、生物、界面和前后变化,再交给状态推断与战斗记录 App。
先读当前交付报告
最后核对:2026-10-14。p00 是总报告,其余组页逐项说明做到哪、缺什么;p900 单独保留未采用研究。下面的方法章节已按 P 任务归组,历史测量仍保留原来的范围与日期。
- p00 · 总设计与总进度先知道哪些画面能读、哪里仍缺,再决定下一项工作。
- p20 · 输入与选帧从录像留下清楚、少重复的画面,特别注意短暂悬浮。
- p40 · 场景与布局先找到页面和面板,再决定哪些区域可读。
- p60 · 文字与数值读出实际可见文字和数字,不用游戏规则替它补答案。
- p80 · 图标与视觉对象找出身体、卡片、小牌与图标;身份和位置分开评估。
- p100 · 对象与空间关系回答哪个数字属于哪个对象,不把同类生物当同一支部队。
- p120 · 组合与观察输出让各组输出有来源、未知项和时间边界,成为可检查的整帧记录。
- p140 · 数据、验收与交付工具保存可审核的数据,保证重跑、安装和清理都有依据。
- p900 · 未采用实验保留试过的方法与失败原因,不混入生产能力。
导读 · p00
先知道要看什么
一段录像最终应该留下哪些观察?先看目标,再沿处理流程往下读。
第一部 · p20
从视频挑出清楚的帧
减少重复工作,也保留短暂出现的文字与面板。
第二部 · p40
判断页面,找到可读区域
先确定这是什么画面、面板在哪里;文字怎么读,在下一部展开。
第三部 · p60
读出文字和数字
共用文字读取方法,再分别检查时钟、属性、日志、预览和状态回合。
第四部 · p80
找到并认出图像中的对象
文字之外,图标、部队身体和数量牌也需要自己的位置与身份判断。
第五部 · p100
把内容配回正确对象
名称属于哪张卡?面板对应谁?高亮位于哪些格子?这些关系单独检查。
第六部 · p120
组合前后画面的观察
多帧可以提供变化线索,但不能把后来才看见的信息提前使用。
研究附录 · p900
未采用的方法与对照
正文无需依赖这些研究。这里保留图标检索、检测器比较,以及身体—数量牌融合的有效与失败尝试。
游戏概率与数据 · 上古纪元
根据已核对的游戏数据计算竞技场概率,说明抽取事件、版本与证据范围。
Interactive study guide
LeetCode Java: Problems 1–500
Read the problem, reveal interview hints, compare solutions, and step through visual explanations alongside runnable Java code.
Agents & Automation
Local models, tool-using agents, and practical information-extraction workflows.
Three Ways I Tried to Automate 1Point3Acres Daily Check-In and Quiz Answering
Direct Codex browser control, a supervised WebContentAgent library, and a fully local LLM workflow—what failed, what I use now, and what I am still exploring.
[2/2] How I Made a Codex-to-ChatGPT Bridge Verifiable
A local bridge sends one authorized request and brings back a checked answer. Its failures explain what message identity, durable state and realistic tests must get right.
[1/2] (Deprecated) How I Let Codex Talk to ChatGPT Through My Signed-In Chrome
The first prototype made the round trip work. Its failures taught me why browser mechanics need a smaller, testable home.
Local LLM + Agent for Web Information Extraction
A local agent architecture for semantic web extraction, browser automation, bounded model context, and durable task state.