
说实话,这个项目能做出来,我自己都挺意外的~


起因很简单——玩洛克王国的时候需要找矿找宝箱,网上的地图又要开个页面手动去找,又不想在电脑上下太大的python库,就想做个工具实时识别小地图位置。本来以为是个小周末项目,结果越做越上头,最后搞出了一个完整的前后端系统。
而且整个过程,我几乎没手写什么代码,全是靠 WorkBuddy 一句一句聊出来的。
一句话概括:你打开浏览器捕获游戏画面 → 后端用视觉算法识别小地图 → 悬浮窗实时标点。
听起来简单,但我后续还额外塞了不少东西:
功能 | 干嘛用的 |
|---|---|
🔍 实时识别 | 浏览器抓画面,SIFT/AI 三引擎并行算 |
🗺️ 大地图展示 | Canvas 渲染超大地图,箭头标记你的位置 |
📍 标记点系统 | 2000+ 个 NPC/宝箱/传送点,分块加载 |
🛣️ ****路线规划 | TSP 最短路径,22 条预设跑图路线 |
📺 展示室直播 | 一人操作,多人围观 |
🥚 孵蛋提醒 | OCR 自动检测孵化完成 |
🖼️ 画中画悬浮窗 | 悬浮窗模式,覆盖原本游戏地图 |
技术上是前端浏览器画面捕获 + 后端 Python OpenCV 视觉计算的轻量架构。一台普通电脑就能跑。
坦白讲,单靠自己干这个项目,大概率会半途而废:
WorkBuddy 刚好全接住了。它不只是写代码,而是真的能理解你在说什么,然后帮你把想法变成现实。
这部分是重点。整个项目的开发历程,其实就是我怎么跟 WorkBuddy 对话的过程。
刚开始我只丢了一段很朴素的需求:
我要做一个洛克王国游戏的地图识别工具。
技术要求:
1. 前端用原生 JavaScript,通过浏览器的 Screen Capture API 获取游戏画面
2. 后端用 Python + Flask + Flask-SocketIO,使用 OpenCV 的 SIFT 算法进行图像识别
3. 通过 WebSocket 实时传输截图到后端,后端返回识别坐标
4. 整体架构要轻量,能在一台普通电脑上运行
请帮我设计整体项目结构,包括目录划分、前后端通信协议、数据流设计。
重点关注:如何保证实时性?如何处理低纹理场景的识别失败?WorkBuddy 没有直接甩代码,而是先给了我一个清晰的分层架构:
最让我惊喜的是它主动提了低纹理兜底链的设计思路——SIFT 失效时依次降级:放宽参数 → ECC 对齐 → 相位相关 → 哈希粗定位 → 惯性导航。这个后来成了鲁棒性的核心。

接下来是重头戏——SIFT 引擎开发。我的提示词长这样:
实现一个基于已有 SIFT 的小地图识别引擎:
输入:
- 大地图预计算的特征点索引文件 (map_feats.npy, map_coords.npy)
- 实时捕获的小地图圆形区域图像(已裁剪)
输出:
- 玩家在大地图上的绝对坐标 (x, y)
- 匹配置信度
- 是否检测到场景切换(传送等)
实现要点:
1. 使用 cv2.SIFT_create() 提取特征
2. FLANN KD-Tree 进行快速近邻搜索(k=2)
3. Lowe's ratio test 过滤误匹配(阈值 0.82)
4. RANSAC 估计单应性矩阵(最小匹配数 5,重投影阈值 5.0)
5. CLAHE 自适应直方图均衡化增强对比度
6. 支持色温补偿(游戏画面偏暖色问题)
7. 结果经过卡尔曼平滑后再输出
注意:代码要模块化,方便后续切换 ORB 和 AI 引擎。这段直接产出了 tracker_engines.py 的核心逻辑(约 77KB)。WorkBuddy 最强的地方在于——它能把论文级的算法描述直接转成工程代码。Lowe's Ratio Test、RANSAC 鲁棒估计这些细节全都一次到位。

作为一个室内设计师,做 UI 一直是AI弱项。但 WorkBuddy 的表现完全超出预期。
我只用了自然语言描述风格,没有写一行代码:
请为"地图识别工具"的识别台页面设计并实现 UI。
页面布局:
- 左侧:视频预览区(显示捕获的游戏画面),带一个小地图圆形高亮 overlay
- 右侧上:状态面板(当前坐标、匹配点数、置信度、FPS、引擎状态)
- 右侧下:控制按钮区(开始/停止捕获、切换引擎、重置、打开地图页、展示室模式)
- 底部:日志滚动区域,显示识别过程的 debug 信息
设计风格:
- 暗色主题,类似游戏 HUD 风格
- 主色调:深灰底色 (#1a1a2e) + 青色强调色 (#00d4ff) + 橙色警告色 (#ff6b35)
- 圆角卡片式布局,带微妙的玻璃拟态效果(backdrop-filter: blur)
- 状态数字用等宽字体,坐标变化时有平滑过渡动画
- 按钮 hover 时有发光效果(box-shadow glow)
交互要求:
1. 点击"开始"后请求屏幕捕获权限,显示选择源界面
2. 捕获开始后自动通过 socket.io 发送帧到后端
3. 收到坐标更新后,状态面板数字要有跳动动画
4. 响应式设计,最小支持 1024x768 分辨率
请生成完整的 HTML + CSS + JS 代码。
注意看——我全程在说感受:"暗色主题"、"HUD 风格"、"玻璃拟态"、"发光效果"。WorkBuddy 把这些模糊的形容词变成了精确的 CSS:
backdrop-filter: blur(10px) 搞定玻璃效果box-shadow: 0 0 20px rgba(0, 212, 255, 0.5) 实现发光transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) 流畅动画它的审美是在线的。 圆角、阴影、微交互、色彩搭配……全部到位。对于一个不会前端的人来说,这体验简直像魔法。
大地图页面的提示词也类似:
实现大地图浏览页面:
核心功能:
1. 显示一张超大地图图片(约 15000x12000 像素),支持拖拽平移和滚轮缩放
2. 在地图上渲染一个表示玩家位置的箭头(根据朝向旋转)
3. 显示标记点(POI)图标,按分类筛选显示(NPC、传送点、宝箱、任务等)
4. 支持点击标记点查看详情
5. 支持绘制路线(TSP 最短路径可视化)
视觉要求:
- 地图容器占满整个视口
- 标记点用不同颜色和图标区分类别
- 玩家位置箭头带脉冲动画效果
- 路线用渐变色线条 + 箭头方向指示
- 缩放时有惯性效果(momentum zoom)
- 标记点聚合:缩小时自动合并附近标记,显示数量气泡
性能要求:
- 使用 Canvas 2D 渲染(不用 DOM)
- 视口外的标记点不渲染(空间索引裁剪)
- 地图图片用分块加载(虚拟化)最后是通信协议和配置热更新:
设计前后端的 WebSocket 通信协议:
场景特点:
1. 前端以 ~10fps 发送 JPEG 图像帧(每帧约 50-100KB)
2. 后端处理后需要 <80ms 内返回坐标
3. 支持多个浏览器标签页同时连接(多会话隔离)
4. 支持展示模式:一人推流,多人观看
协议设计要求:
- 帧数据用二进制传输,不要 base64(省 33% 带宽)
- 坐标返回用紧凑 JSON 格式
- 服务端实现节流:如果处理不过来,自动丢弃旧帧
- 双模式推送:Plan A 处理完主动推 / Plan B 客户端拉缓存
- 会话用 token 绑定,每个 token 独立的 tracker 实例
- 展示室用 room 概念,10fps 节流广播以及运行时配置热更新:
实现运行时配置热更新功能:
需求:
1. 所有算法参数集中在 config.py 中定义(200+ 个参数)
2. 后端启动后在控制台可以输入命令动态修改参数
3. 不重启服务,修改立即生效
4. 参数变更时相关模块自动重新初始化(如 SIFT 参数变了要重建特征检测器)
5. 支持命令:help / show / set KEY=VALUE / reset到这里,整个项目基本成型了。从零到能跑,前后也就三四天。
我只是随口提了一句"能不能让别人看到我的识别过程"。结果 WorkBuddy 不仅实现了基础广播,还设计了完整的展示室系统:
这些细节我一个字都没提,是它基于对"展示室"的理解自己补上的。
WorkBuddy 生成的界面让我刮目相看——圆角卡片、玻璃拟态、微交互动效、语义化配色(成功绿/警告橙/错误红)、键盘无障碍支持、CNB一键启动……
它知道什么是"现代感"。
有一次定位结果系统性右偏 30-40 像素,只在特定角度出现。我自己查了两天没找到原因。
我跟 WorkBuddy 说:"小地图中心点转换到大地图坐标后,系统性右偏 30-40px,只在特定角度出现"
它分析后直接指出:OpenCV 的 SIFT 特征点坐标原点是左上角,而透视变换假设的是几何中心,差了一个半圆半径的 offset。
两行代码修好。这个问题我排查了两天。
截至 2026 年 6 月:
指标 | 数值 |
|---|---|
⭐ Stars | 105 |
🍴 Forks | 6,505 |
给 WorkBuddy 讲功能时,按数据流动的方向说比按步骤说效率高很多:
每次开发新功能前,我会先用提示词定好输入输出格式。这样生成的代码天然满足约束,前后端联调成本几乎为零。
复杂功能别试图一次说完。我的节奏通常是:
轮次 | 目标 | 产出 |
|---|---|---|
第 1 轮 | 基础流程 MVP | ~200 行能跑 |
第 2 轮 | 加增强和容错 | ~350 行 |
第 3 轮 | 性能优化 | ~550 行 |
第 4 轮 | 鲁棒性兜底 | ~800 行 |
第 5 轮 | 架构重构 | 最终版 1200+ 行 |
每轮在上轮基础上增量修改,WorkBuddy 能完美理解上下文。
这个项目从想法到落地,WorkBuddy 扮演的角色远不止"代码生成器":
它是架构师——帮我设计了分层解耦的系统;
它是算法专家——将 CV 论文知识转化为工程代码;
它是UI 设计师——把模糊的风格描述变成精致的界面;
它是调试伙伴——通过现象描述快速定位问题;
它是文档作家——生成了完善的 README 和注释。

如果你也在用 WorkBuddy 做了有趣的项目,欢迎来分享季投稿交流,一起聊聊你的"神仙用法" 🎉
本文基于「地图跟点助手」真实开发经历整理。感谢 WorkBuddy 团队,也感谢所有 Star/Fork 的朋友们!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。