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

推荐订阅源

Forbes - Security
Forbes - Security
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
Y
Y Combinator Blog
Recorded Future
Recorded Future
博客园 - Franky
I
InfoQ
T
The Blog of Author Tim Ferriss
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
Cyberwarzone
Cyberwarzone
The Register - Security
The Register - Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
P
Palo Alto Networks Blog
G
GRAHAM CLULEY
Cloudbric
Cloudbric
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
F
Full Disclosure
Google DeepMind News
Google DeepMind News
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
Check Point Blog
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
T
Threat Research - Cisco Blogs
U
Unit 42
N
Netflix TechBlog - Medium
The Cloudflare Blog
Spread Privacy
Spread Privacy
Microsoft Azure Blog
Microsoft Azure Blog
美团技术团队
T
Troy Hunt's Blog
Engineering at Meta
Engineering at Meta
H
Heimdal Security Blog
TaoSecurity Blog
TaoSecurity Blog
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tenable Blog
B
Blog
S
Securelist
H
Hacker News: Front Page
Google Online Security Blog
Google Online Security Blog
G
Google Developers Blog

Yi's Blog

Solving Jane Street's 'Dropped a Neural Net' Puzzle HRM Explained: A 27M Parameter Model That Reasons Without Chain-of-Thought BrushNet & BrushEdit Explained: From Inpainting Architecture to Intelligent Editing U-Net Explained: A Visual Guide for Beginners Building an Image Captioning Transformer from Scratch Building a Language Transformer Step by Step Reverse Engineering Guitar Pro 8's Locked Files Vibe Coding - Extracting Pet Sprites from Cross Gate Breaking Up with Evernote: Building a Custom Migration Tool for Apple Notes 《世上为什么要有图书馆》读书笔记 - Yi's Blog 《纳瓦尔宝典》推荐阅读 - Yi's Blog 与冰山交谈 - Yi's Blog Claude Code Complexity: Safety, Safety, Safety Working on Moonshot Projects - Yi's Blog Vibe Coding - Baby Sleep Tracker 独立思考的人 - Yi's Blog Magic Moment - Yi's Blog 《思辨力35讲:像辩手一样思考》读书笔记 - Yi's Blog Daily Watched YouTube Videos - Yi's Blog
微信读书:LLM 自动化问答 PK - Yi's Blog
Yi · 2025-06-22 · via Yi's Blog
  • 技术难点与观察
    • OCR 错误率导致的复杂度
    • 反馈机制的设计
    • 工具效率与资源消耗
    • Vibe-Coding

为了增加用户活跃度,微信读书团队开发了一个微信小游戏——问答 PK。这是一个双人对决形式的知识问答天梯,题目内容主要基于常识,比如成语填字,古诗词接上下句。

玩了几天后发现,光靠我的知识储备和记忆力,很难持续提升段位。答案在网上一搜就能找到,但是 10 秒钟的答题时间来不及搜索,于是我想到借助 DeepSeek 来自动答题。说干就干,Vide-Coding 了一个 Python 脚本,自动化了整个答题过程,并最终达到了最高等级。本文记录在开发过程中,遇到的问题与一些观察。

技术难点与观察

OCR 错误率导致的复杂度

我首先想到的是将窗口截图转为文字,这一步涉及图片到文字的模态转换:

  • macOS 自带的 OCR 中文识别准确率并不完美。有些中文字符在不同帧中会被错误识别为相似字形。
    • 为了判断题目是否更新,程序需要实现较复杂的题目刷新检测逻辑。
    • 在存储与提取已答题目上,也因此增加了额外复杂度。
  • 后来想到可以利用 macOS 的 Accessibility API 来获取小程序窗口的文字信息,实现起来就简单多了。
  • 结论:
    • 如果可以获取文本内容,应当优先使用文本内容,尽量避免不必要的复杂度。
    • 第一个想到的方法不一定是最好的方法,实现之前可以再多花一点时间比较一下其他方法。

反馈机制的设计

LLM 并不能保证每道题都能准确回答,因此,需要设计一种反馈机制,用于处理错误回答,并逐步提高系统表现:

  • 每次答题后,程序会记录实际答案与 LLM 输出是否一致。
  • 若识别为错误,会将题目及正确答案保存进本地题库,供后续匹配使用。
  • 随着题库积累,LLM 的回答可以逐步退居辅助角色,以“已知题目匹配”为主、生成式回答为辅。
  • 在实践中,这种混合策略显著提高了答题准确率,也使系统更加可控。

工具效率与资源消耗

这类依赖模态转换和实时反馈的程序在效率上也面临挑战,尤其当一方发生变化、但未提供明确的推送机制时,工具只能通过“轮询”方式不断查询变化状态:

  • 本例中,为了判断题目是否已经刷新,程序只能定期抓取小程序里的文字内容,并比对,轮询带来了显著的资源消耗。这种“拉取式”的检测逻辑效率低下,不适合长期运行。
  • 本质上,这类问题的根源在于缺乏变化触发的事件通知机制。如果 macOS 或目标应用能提供“题目变动事件”的观察接口,将显著提高系统效率。期待苹果在接下来的几年持续进化 macOS 来帮助第三方软件加入更多 AI 驱动的功能。
  • 实现的过程中用到了 MacPaw 开源的 macapptree 来抓取应用的 Accessibility Tree。估计 MacPaw 团队在开发 Envy 的 actions 也依赖 Accessibility API 来实现各种软件的自动化。
  • 结论:在系统设计中,应尽量选择或构建具备事件驱动机制的组件,避免盲目轮询所带来的能耗与复杂度。

Vibe-Coding

作为一个 Weekend Fun Project,没有 Vibe-Coding,我无论如何也无法在两三天里快速迭代实现各种预想中的功能,修复各种 bug,并最终把程序跑起来,自动化整个答题过程的。不得不说,有了 Cursor 以后,没有办法回到一行一行写代码的日子了。Vibe-Coding is fun and the future for everyone。

– EOF –