Focus67Dumby:纯离线视觉便签,用本地小模型识别教程与摸鱼

Focus67Dumby 用本地开源小模型加工程技巧,把防摸鱼 AI 做成 100% 离线的浮动便签。
Focus67Dumby 是 Hacktoberfest 开源 AI 挑战赛的参赛作品,试图在「大锤式网站拦截器」和「每月 15 美元以上的云端活动追踪器」之间开出第三条路。它是一个 350x530 的深琥珀色浮动便签,基于 Python 3.11 与 CustomTkinter 构建,通过 Ollama 调用 gemma4、gemma3、qwen3-vl 等本地开源模型,对活跃窗口标题和降采样截图进行离线判断,数据不落盘也不上云。其可用性依赖若干工程细节:3% 阈值的感知差分缓存、30 秒工作区校准、两振出局的逐级干预,以及在无头 Linux Docker 中 0.75 秒跑完的 15 项 pytest 测试。作者论证该品类在闭源云 API 上无法成立——每用户每天约 2880 次多模态调用对应每月 20 至 40 美元以上的 token 成本,而本地推理边际成本为零,因而支撑得起 19 美元一次性终身授权。
开发者打开 YouTube 想查一段系统设计讲解,四十五分钟后却发现自己正陷在 Shorts 信息流里——这种经历几乎人人都有。市面上已有两类工具试图解决它,但都各有硬伤:传统网站拦截器(Cold Turkey、Freedom)只会用大锤砸核桃,一刀切封掉整个 YouTube 或 Reddit,真需要看教程时反而卡住工作流;云端 AI 活动追踪器(Rize、Reclaim)则按每月 15 美元以上的价格,把窗口标题、私有仓库名和屏幕活动持续上传到第三方服务器,对在意隐私或在 NDA 下工作的工程师来说根本无法接受。
Hacktoberfest 开源 AI 挑战赛第二周提交的作品 Focus67Dumby,给出了第三条路:一个 350x530 的深琥珀色浮动便签,100% 离线运行,用 Ollama 调度的本地开源小模型判断你当前是在干活还是在摸鱼。

产品形态:便签即界面
Focus67Dumby 的交互被压缩到极简:锁定当前目标(例如"修复 Express 认证中间件")、选择冲刺时长(如 25 分钟)、从下拉框里挑一个本地 Ollama 模型,然后开始。便签安静地待在屏幕角落,后台观察活跃窗口的切换和降采样到 512x288 的内存截图,区分生产性工作、相关教程与离题娱乐。整个过程不向云端发送任何一个字节。
模型下拉框通过 Ollama 的 GET /api/tags 实时发现本地已安装的模型,用户可以按硬件条件热切换,这一点在原文的多个技术段落中被反复强调。
Ollama 是一个开源的本地大模型运行时,它把模型权重的下载、量化格式管理、GPU/CPU 调度和统一的 HTTP 接口封装在一起,开发者只需 ollama pull <model> 拉取模型,即可通过 127.0.0.1:11434 上的 REST API 调用。相比自行用 PyTorch 或 llama.cpp 加载权重,Ollama 解决了显存分配、模型热切换和请求队列等问题,并支持 keep_alive 参数控制模型在显存中的驻留时长。这正是 Focus67Dumby 能在下拉框中实时枚举本地模型、按硬件条件热切换的底层依赖;也是它做到「零云端调用」的前提——推理全程发生在用户自己的机器上。
技术架构:小模型 + 感知差分
应用建立在 Python 3.11 之上(CustomTkinter + Win32 ctypes + Pillow),通过 Ollama 的本地 REST API(127.0.0.1:11434)调用开源权重模型。原文列出的主力模型分工如下:
- gemma4:e2b / gemma4:e4b:多模态视觉与文本主引擎,同时评估前台窗口标题和压缩后的 base64 截图载荷,以严格 JSON 模式返回结果。
- gemma3:270m / gemma3:1b:超边缘文本模式,其中 270m 版本内存占用约 290MB,在电池供电的低配笔记本上可在 50 毫秒内完成窗口标题判断。
- qwen3-vl:2b / qwen3.5:2b:可替换的开源视觉方案,用于读取分屏浏览器标签里的小字号 UI 文本。

真正让这个工具可用的是几个系统层面的工程细节,原文对此有较详细的拆解:
感知差分缓存。 窗口标题本身会骗人——Chrome 只显示 "LinkedIn" 时,你其实可能在玩 LinkedIn 的拼图小游戏。视觉模式会抓取内存截图、缩放到 512x288(JPEG 质量 65)、计算 16x9 灰度感知签名。如果像素变化低于 3% 且窗口标题相同(比如在阅读静态文档),直接命中本地会话缓存,0 毫秒延迟、0 次 GPU 调用。
30 秒工作区校准。 真实工程任务会跨多个窗口(VS Code、终端、localhost 浏览器、OAuth 弹窗)。冲刺开始的头 30 秒内,应用进入校准阶段,把你触碰过的窗口自动加入信任工作区,实现 0 毫秒即时切换,同时维护一个滚动 4 窗口的面包屑轨迹,让模型理解某个登录弹窗是由主任务派生的。
两振出局与逐级干预。 快速 Alt-Tab 不会触发误报。如果连续两次检查都停留在偏离任务的窗口上(第 2、4、6 次……),便签会按你选定的级别升级干预:从原生 Windows 通知(带自动生成的自定义 .ico 图标),到通知加系统音效,再到弹窗接管加音效——通过 Win32 的 WS_EX_APPWINDOW 强制置顶、边框闪红,并让便签在屏幕上左右摇晃,直到你回到工作。
无头 Linux 与 Docker 确定性。 所有 GUI、截屏和 Win32 导入都被懒加载守卫包裹,应用可以在干净的无头 Linux Docker 容器里跑确定性离线 CLI 模拟(python -m src.main --headless --demo),并在 0.75 秒内通过全部单元测试。
感知签名(perceptual signature)借鉴了感知哈希(pHash)的思路:对图像做灰度化和降采样后,把像素强度压缩成一个固定长度的低维向量,使视觉上几乎相同的画面映射到相近的签名。Focus67Dumby 把截图缩放到 512x288 再计算 16x9 灰度签名,本质上是把「这张屏幕和上次那张是不是同一画面」变成一个廉价的数值比对问题,而非重新跑一次视觉推理。3% 的像素变化阈值则用来容忍光标闪烁、时钟走动、光标悬停高亮等无关噪声,避免在阅读静态文档时被反复判定为「画面变化」而触发无谓的 GPU 调用。
为什么必须是本地开源模型
原作者的核心论点很直接:这个品类在闭源云 API 上根本无法作为一门可持续、可信赖的生意存在。
第一是数据主权。要判断你在看 React 教程还是刷梗图,AI 必须看到窗口标题和屏幕上下文。每 10 秒把开发者桌面截图发往闭源云 API,意味着 .env 文件、公司专有源码、私信和银行页面全部外泄。在 127.0.0.1 上跑 gemma4:e2b 或 gemma3:270m,截图甚至不会落盘,在内存/显存中评估后立即丢弃。
第二是单位经济学。按 10 秒一次轮询、8 小时工作日计算,每个用户每天是 2880 次多模态 API 调用。按闭源 API 定价,一个重度用户每月仅 token 成本就要烧掉 20 到 40 美元以上,只能倒逼出臃肿的订阅制 SaaS。而本地推理的边际成本是永久性的 0.00 美元,这正是 19 美元一次性终身授权(Pro 桌面版)能够成立的底层原因,同时核心仓库保持 100% 开源。
第三是零供应商锁定。8GB 显存 GPU 可以跑视觉模式,老笔记本可以只用 CPU 跑 gemma3:270m,火车上没 Wi-Fi 也能用;即便 Ollama 没有运行,还有确定性启发式规则兜底。

多模态视觉模型(如 gemma4、qwen3-vl)与纯文本模型的关键差别在于存在视觉编码器:图像先被切成图块(patch)编码成视觉 token,再与文本 token 一起送入语言模型。这意味着一次带截图的推理,其 token 消耗远高于纯文本,并且与图像分辨率正相关——这也是为什么把截图降到 512x288、JPEG 质量 65 对成本控制至关重要。反过来,gemma3:270m 这类超小纯文本模型没有视觉分支,只能读取窗口标题字符串,但显存占用仅约 290MB、单次判断可压到 50 毫秒以内,适合作为电池供电场景下的降级方案。理解这一分工,才能理解原文中「视觉模式 / 文本模式」双轨设计的经济学动机。
首个真实用户的反馈
作者把成品交给了第一位真实用户——一位常年困在"打开 YouTube 看讲座、一小时后在刷随机视频"循环里的大学同学。
立即打动他的是形态:不是沉重的浏览器扩展,也不是全屏仪表盘,就是一张浮动便签。当便签识别出合法任务窗口与离题浏览的区别,并用"弹窗接管加摇晃"模式让便签在屏幕上物理晃动时,他确实兴奋起来。
测试中也暴露了现实摩擦:真实工作流需要在多个窗口间跳转(打开二级登录弹窗、在浏览器小任务和终端之间切换),而在无边框 Windows 便签上取消"始终置顶"后,它可能被浏览器盖住。这些反馈直接催生了 30 秒工作区校准功能和 Win32 任务栏持久化修复。至于付费意愿,对学生和独立开发者来说月度订阅是红线,这也验证了"打包桌面安装包一次性低价 + 核心仓库开源"的定位。
工程流程与评审维度
这个项目是用代理驱动的工作流构建并验证的,靠 AGENTS.md、ARCHITECTURE.md、MISTAKES.md 和自定义的 focus67dumby-master 技能规范来约束,避免编码代理产出单体意大利面代码。规范强制了线程安全的 queue.Queue() / root.after() UI 调度、为小模型定制的 60 词以内结构化 JSON 提示词、Win32 前台窗口检测,以及由 15 个测试的 pytest 套件把关的 8 点干净 Linux Docker 重建门禁。

项目同时投递了三个评审方向:最佳 Gemma 应用(围绕 Gemma 家族构建本地多模态视觉与标题分类,配合 JSON schema 校验和 keep_alive 显存管理)、最佳 Entire 应用(完整共享代理驱动的工程工作流与仓库记忆产物)、最佳 Render 应用(在 Render 上托管交互式产品前端、便签状态模拟器和许可证结算门户,GitHub 持续部署)。
值得关注的启示
Focus67Dumby 的价值不只是一张会晃动的便签。它展示了一类正在成形的产品模式:把过去必须依赖云端的持续感知型 AI 功能,拆解成能在消费级硬件上运行的小模型组合,用工程手段(感知差分、缓存、校准、分级干预)弥补单次推理能力的不足,从而换来实现隐私承诺和一次性定价的可能。对独立开发者和副业项目而言,19 美元终身授权不一定能撑起大生意,但它至少证明了一个方向——当推理成本归零时,订阅制不再是唯一答案。
代码与可交互落地页均已公开,桌面应用与源码托管在 GitHub 的 Thrizzio/Focus67Dumby 仓库。
相关推荐

3分钟看懂DeepSeek:从量化私募到开源AI领跑者的崛起之路
3分钟看懂DeepSeek发展史:从幻方量化的算力积累,到V2的MLA推理降本、V3的557.6万美元训练账单、R1开源引爆全球,再到V4与70亿美元A轮融资,梳理深度求索的关键节点与技术路线。

本地文学创作模型PK:Qwen3.8 27B微调版胜出,DeepSeek v4.1表现平淡
B站UP主横向测评七款本地文学创作模型:海明威、HumanLike Chat基于Qwen3.8 27B微调表现最佳,DeepSeek v4.1叙事平淡,东方朔角色混乱垫底。附三道测试题评分与使用建议。

梁文锋的三次豪赌:DeepSeek为何将82%毛利开源?
DeepSeek为何把82%毛利的推理框架DeepInfer开源,又启动千亿融资?从技术路线、国产芯片到组织纯粹性,解析梁文锋的三次豪赌与开源战略背后的商业与理想逻辑。