AI原生个人工作副驾DoWhat:基于屏幕感知的自动化工作流实践
1. 项目概述你的AI原生个人工作副驾最近在折腾一个挺有意思的开源项目叫DoWhat做啥。这玩意儿不是什么普通的待办清单或者时间追踪器它更像是一个住在你电脑里的“数字双胞胎”一个真正意义上的AI原生个人工作代理。简单来说它通过每15秒自动截取一次屏幕利用AI视觉模型来分析你正在做什么然后自动帮你整理工作活动、提取待办任务甚至还能通过内置的OpenClaw代理去帮你执行一些自动化任务。整个过程你几乎不用管它它就默默地在后台观察、理解、规划帮你把一天的工作脉络理得清清楚楚。我自己用了快一个月最大的感受是它确实帮我省去了大量手动记录和复盘的时间。以前一天下来经常想不起自己到底在几个会议、几段代码、几份文档之间切换了多少次时间都花哪儿了。现在打开DoWhat的仪表盘AI已经把活动按15分钟一个时段归纳好了还生成了摘要哪些是有效产出哪些是沟通协调一目了然。对于追求效率、希望量化自己工作状态或者单纯想拥有一个“第二大脑”来辅助记忆和规划的开发者、知识工作者来说这工具值得一试。它的核心价值在于“被动感知”和“主动代理”。被动感知是指它不打扰你通过屏幕内容理解你的意图主动代理则是它能将识别出的任务通过集成的OpenClaw去连接即时通讯工具如微信、飞书并尝试自动化执行。所有数据都存储在本地隐私性有保障只需要你提供一个OpenAI兼容的API密钥来驱动AI分析。接下来我就从设计思路、实操部署、核心功能使用到深度定制带你完整地走一遍。2. 核心设计思路与架构拆解2.1 为什么是“屏幕感知”而非“手动记录”市面上时间管理工具很多但大多需要你主动去点击“开始”、“停止”或者手动输入任务描述。这本身就构成了一个巨大的“摩擦成本”——当你沉浸在心流状态时打断自己去记录本身就是一种效率损耗。DoWhat的设计哲学是反其道而行之完全被动完全自动化。它的理论基础是你的屏幕内容是你工作意图最直接、最丰富的载体。你正在使用的IDE、打开的浏览器标签、终端里的命令、文档里的光标位置所有这些像素信息对于现代的多模态大语言模型LLM来说是可以被“理解”的。通过周期性地捕捉屏幕快照并发送给视觉模型如GPT-4oAI可以推断出你当前的核心活动例如“正在VSCode中调试userService.ts文件的第45行”、“正在Chrome中阅读关于Rust所有权机制的博客”并自动打上标签#编程、#调研。这种方式的优势显而易见零认知负担你完全不需要改变现有工作流。上下文丰富截图包含了应用窗口、部分文本、界面布局等丰富信息比手动输入的几个关键词包含更多细节。客观真实记录的是你实际做了什么而不是你计划做什么或事后回忆做了什么避免了记忆偏差。当然挑战也存在对隐私的担忧、API调用的成本、以及AI理解的准确性。DoWhat通过“本地存储可配置API”的方式回应了前两点而准确性则随着视觉模型能力的提升在不断改善。2.2 技术栈选型背后的考量DoWhat是一个Electron桌面应用这选择非常务实。我们来看看主要技术选型的原因Electron (v39): 核心框架。选择Electron意味着可以用Web技术HTML/CSS/JS快速构建跨平台macOS、Windows、Linux的桌面应用。对于DoWhat这种需要调用操作系统原生截屏API、访问本地文件系统、并常驻后台的应用来说Electron提供了完美的平衡——开发效率高且能获得足够的系统权限。相比用Python的Tkinter或PyQtElectron的生态和现代前端工具链更成熟。React (v19) TypeScript: 前端层。React的组件化非常适合构建DoWhat这种拥有多个视图仪表盘、待办列表、统计、设置的复杂交互界面。TypeScript的静态类型检查对于维护一个涉及IPC进程间通信、数据库操作和AI API调用的项目至关重要能极大减少运行时错误。SQLite (better-sqlite3): 数据存储。所有截图、分析结果、任务数据都需要持久化。SQLite是一个轻量级、无服务器的嵌入式数据库它将数据库作为一个文件存储在本地如~/Library/Application Support/DoWhat/dowhat.db完美契合“本地优先”和隐私保护的理念。better-sqlite3是Node.js中一个性能优异的同步SQLite驱动比默认的异步驱动在某些场景下更简单高效。Tailwind CSS: 样式方案。用于快速构建美观、响应式的UI。对于个人或小团队项目使用这种功能类优先的CSS框架能避免在样式设计上耗费过多时间。OpenAI SDK 兼容API: AI能力引擎。项目没有绑定死OpenAI一家而是设计为兼容任何提供OpenAI格式接口的服务如Azure OpenAI、Ollama本地模型、Cloudflare Workers AI等。这给了用户最大的灵活性和成本控制空间。OpenClaw集成: 代理执行层。这是DoWhat从“记录仪”升级为“代理”的关键。OpenClaw是一个开源AI智能体框架可以连接IM工具并执行自动化任务。DoWhat将其内置使得从“识别任务”到“执行任务”的闭环成为可能。整个架构是典型的主进程-渲染进程分离的Electron应用。主进程Node.js环境负责“脏活累活”定时截屏、调用AI API、读写数据库、管理OpenClaw子进程。渲染进程Chromium环境则负责展示漂亮的React界面。两者通过Electron的IPC机制进行通信。注意由于涉及频繁的屏幕捕获和图像处理虽然Electron应用本身不算特别轻量但DoWhat的优化重点放在了后台逻辑的效率上比如使用sharp库可能对截图进行压缩以及合理的数据库索引以确保长期运行不卡顿。3. 从零开始部署与深度配置指南3.1 方案选择直接安装 vs 源码构建对于绝大多数用户我强烈推荐直接从项目的GitHub Releases页面下载预编译的安装包。这是最快捷、最无痛的方式尤其适合非开发者用户。目前根据项目READMEv1.0.0版本提供了macOSApple Silicon的DMG安装包和便携式ZIP包。Windows和Linux的版本在v1.1.0中会提供。对于macOS用户安装后如果遇到“无法打开因为开发者身份无法验证”或“App已损坏”的提示这是macOS Gatekeeper安全机制导致的。别慌不需要去系统设置里降低安全等级。更优雅的解决方法是打开终端Terminal输入以下命令sudo xattr -cr /Applications/DoWhat.app然后输入密码。这个命令会清除应用扩展属性中的一些可能引发警告的标签之后就能正常打开了。如果你是一名开发者或者想体验最新功能、进行二次开发那么从源码构建是更好的选择。这需要你本地有Node.js 18的环境。3.2 源码构建与开发环境搭建首先把代码克隆到本地git clone https://github.com/Laworigin/DoWhat.git cd DoWhat安装项目依赖。这里有个小坑需要注意因为项目依赖了better-sqlite3这样的原生Node模块需要编译所以确保你的系统有Python和C编译工具链。在macOS上通常安装了Xcode Command Line Tools就行。npm install如果npm install过程中编译better-sqlite3失败可以尝试先全局安装node-gyp或者检查Python版本是否为3.x。安装完成后运行开发模式npm run dev这会同时启动Electron主进程和Vite开发服务器并开启热重载。你会看到应用窗口弹出。如果要打包成可分发应用则运行对应的构建命令npm run build:mac # 构建macOS应用 # 或 npm run build:win, npm run build:linux3.3 核心配置详解让AI开始理解你首次启动DoWhat最关键的一步是配置AI。点击侧边栏的齿轮图标进入设置Settings页面。这里有几个核心配置项API Key Base URL这是DoWhat的“大脑”接入点。API Key填入你的OpenAI API密钥或者任何兼容OpenAI API的服务的密钥例如如果你用Azure OpenAI这里的格式通常是你的密钥。Base URL这是API端点地址。对于官方OpenAI留空或填写https://api.openai.com/v1。对于Azure OpenAI格式类似https://你的资源名.openai.azure.com/openai/deployments/你的部署名。如果你在本地用Ollama运行了视觉模型如llava可以设置为http://localhost:11434/v1。重要提示费用发生在这一环。每次截图分析都会消耗AI API的token。选择gpt-4o-mini会比gpt-4o便宜很多且对于屏幕内容理解任务gpt-4o-mini通常已经足够。务必关注你的API用量和费用。Vision Model选择用于分析截图的视觉模型。gpt-4o和gpt-4o-mini是目前OpenAI官方支持视觉输入的主力模型。确保你选择的模型支持视觉功能。Capture Interval (Seconds)截屏间隔默认15秒。这个值需要权衡间隔太短如5秒记录更细腻但API调用频率激增成本高且可能产生大量冗余信息比如你盯着同一段代码思考的10秒内截图都差不多。间隔太长如60秒可能错过一些快速的任务切换。我的经验对于以代码、写作等深度工作为主的场景25-30秒是一个不错的平衡点既能捕捉到任务切换成本也可控。对于会议、沟通等场景15秒默认值可能更合适。你可以根据一天的工作类型动态调整。Data Directory所有数据截图、数据库的存储路径。默认在系统的用户应用支持目录下不建议修改除非你有特别的存储规划。配置完成后回到主界面点击左下角的“Start AI Sensing”按钮。你会看到状态指示器开始闪烁这意味着DoWhat已经开始在后台默默观察和记录了。实操心得在首次配置后可以先让DoWhat运行半天然后去设置里的“Stats”页面查看Token消耗和成本估算。这能帮你快速建立对使用成本的直观感受从而调整截屏间隔或更换为更经济的模型。4. 核心功能实战与日常使用流4.1 主仪表盘你的工作“时光机”DoWhat的主界面是其价值最直观的体现。它主要由三部分组成时间线Timeline位于顶部以条形图形式展示你过去24小时的活动密度。颜色越深表示该时间段内的活动越集中截图数量多或AI判断的任务切换频繁。点击条形图上的任何区域下方的主区域会快速定位到那个时间点。活动快照网格Snapshot Grid这是核心区域。屏幕被划分为以15分钟为单位的“时间槽”Slot。每个槽显示一张该时间段内AI认为最具代表性的截图缩略图以及AI生成的一段简短摘要例如“Reviewing pull request #42 in GitHub and responding to comments”。双击任何一个时间槽可以展开查看该15分钟内所有的原始截图按时间顺序排列。这是复盘细节的神器你能精确看到自己在某个问题上的思考路径。AI生成的摘要质量取决于提示词Prompt和模型能力。DoWhat内置的聚合提示词会要求模型总结该时间段内的“主要意图”和“关键产出”而不是简单描述画面。当前意图卡片Current Intent Card实时显示AI对你最近一次截图的解读告诉你它认为你“正在做什么”。这是一个有趣的实时反馈你可以检验AI的理解是否准确。使用技巧不要试图去“美化”你的时间线。它的价值在于真实反映你的工作状态。如果你发现某个下午时间线很“稀疏”那可能正是你效率低下或频繁分心的时刻这正是需要复盘和改进的地方。4.2 待办清单与智能流水线这是DoWhat从“记录”走向“管理”的关键模块。它分为两个面板待办事项Backlog一个简单的清单列表。神奇之处在于这里的任务很多是AI自动提取并添加进来的。当AI分析截图时如果从你的屏幕内容中识别出类似任务的信息例如IDE中打开的TODO注释、文档中提到的“下一步需要完成XX”、聊天窗口中承诺的“我晚点发你”它就会尝试将其结构化作为一个待办项添加到Backlog中。你也可以手动添加任务。今日流水线Today‘s Pipeline这里展示的是从Backlog中筛选出来AI认为你今天应该关注或优先处理的任务。AI会根据任务的创建时间、上下文关联度以及一些简单的启发式规则比如从你正在写的代码文件中提取的任务优先级更高来进行排序。操作流接收任务你基本不用管AI会自动填充Backlog。处理任务当你开始处理某个任务时由于DoWhat在持续截图AI可能会检测到你的屏幕内容与Backlog中的某个任务描述匹配从而在界面上给出微妙的提示比如高亮相关任务。完成任务你手动勾选Backlog或Pipeline中的任务将其标记为完成。这个动作也会被记录形成“任务-活动”的闭环。注意事项AI自动提取任务目前还处于早期阶段准确率并非100%。有时它会误将一些参考信息或过往对话记录当作待办项。因此定期花一两分钟快速浏览和清理Backlog是必要的删除那些无效条目或者将AI提取的模糊描述如“完成那个功能”手动编辑成更明确的任务如“实现用户登录模块的密码重置接口”。4.3 统计与复盘量化你的工作“Stats”视图提供了数据化的复盘工具每日摘要总结当天总工作时长、活动时段分布、API调用次数和估算成本。活动分类基于AI打上的标签#编程#会议#文档等以图表形式展示你在不同类型活动上的时间投入。AI洞察这里会显示一些由AI生成的、关于你工作模式的文本性观察。例如“你今天下午有连续2小时的深度编程时间效率很高”或者“上午在会议和邮件间切换频繁上下文切换成本可能较高”。这些洞察虽然简单但能提供一个外部的、数据驱动的视角。我的复盘流程每天下班前我会花5分钟做三件事快速扫一眼时间线回顾一天的整体节奏。检查Backlog把已完成的任务勾掉把明天要做的任务拖到Pipeline或做好标记。看一眼Stats里的AI洞察作为一个反思的引子。这个过程本身也是一种仪式感帮助大脑从工作状态切换到休息状态。5. 进阶玩法集成OpenClaw实现任务自动化DoWhat最令人兴奋的部分莫过于与OpenClaw的深度集成。这将它从一个“观察者”和“记录者”变成了一个潜在的“执行者”。5.1 OpenClaw是什么它能做什么OpenClaw是一个开源的AI智能体框架它最大的特点是能作为“中间人”连接你的AI比如GPT和常见的即时通讯软件如微信、飞书。通过自然语言你可以向OpenClaw下达指令它能够理解并操作这些IM软件来完成一些任务比如“把今天下午3点的会议纪要发到‘项目群’里。”“问一下张三他昨天说的那个API文档链接是什么”“在飞书群里收集大家对方案A和B的投票。”在DoWhat中集成OpenClaw意味着Backlog里的任务有可能被自动委托给OpenClaw去执行。例如AI从你的聊天记录中提取出任务“需要把项目进度同步给李四”这个任务进入Backlog后你可以一键将其发送给OpenClaw由它去操作你的微信给李四发消息。5.2 在DoWhat中配置与使用OpenClaw配置出奇地简单因为DoWhat已经帮你做好了大部分集成工作启动OpenClaw在DoWhat侧边栏点击“OpenClaw”图标。首次进入时DoWhat会自动检查并引导你完成OpenClaw的初始化。它会复用你在Settings里配置的AI API Key和Base URL。连接IM工具根据OpenClaw界面提示你需要扫码登录你的微信或飞书账号。请注意此操作存在一定风险务必使用小号或工作专用账号进行测试并了解相关平台的使用条款。所有操作都在你本地电脑上完成理论上比一些云机器人服务更安全但仍需谨慎。委托任务在Backlog视图中对于一个合适的任务通常是沟通、信息收集类你会看到多出一个“发送至OpenClaw”的按钮或选项。点击后你可以用自然语言进一步编辑指令然后发送。监控执行在OpenClaw视图内你可以看到任务队列和执行日志。OpenClaw会尝试理解指令操作IM界面去完成任务并将结果反馈回来。重要限制与风险提示能力边界OpenClaw并非万能。它通过模拟用户操作点击、输入来工作对于复杂的、需要深度逻辑判断或跨多个非标准应用的任务成功率有限。最适合的是标准化、重复性的IM内操作。隐私与安全你需要将IM账号的权限授予一个自动化程序。务必在可控的环境下使用并密切关注其行为。平台风险频繁的自动化操作可能违反微信、飞书等平台的使用协议导致账号被限制。请绝对不要用于营销、刷屏等灰色用途仅作为个人效率工具小范围使用。尽管有这些限制将任务识别与任务执行尝试连接起来这个思路代表了AI智能体发展的一个方向。即使你暂时不用OpenClaw的自动执行功能把它当作一个通过自然语言操作IM的快捷工具也很有价值。6. 常见问题排查与性能优化实录在实际使用中你可能会遇到一些问题。以下是我和社区里遇到的一些典型情况及其解决方法。6.1 AI相关问题问题现象可能原因排查与解决步骤截图一直显示“等待分析”或分析失败1. API密钥或Base URL错误。2. 网络问题无法访问API端点。3. 账户余额不足或额度用完。4. 所选模型不支持视觉输入。1.检查设置确认API Key无误Base URL格式正确特别是Azure的URL格式复杂容易出错。2.测试连通性在终端用curl命令测试你的API端点是否可访问。3.检查额度登录OpenAI或你的API提供商后台查看用量和余额。4.更换模型尝试切换到确认支持视觉的模型如gpt-4o-mini。AI生成的摘要或意图识别完全不准确1. 截图内容模糊或过于杂乱。2. 当前活动超出模型常见训练数据范围如非常小众的专业软件。3. 提示词Prompt可能对某些场景不友好。1.质量检查展开时间槽查看原始截图是否清晰可辨。确保屏幕分辨率设置正常。2.提供上下文对于专业软件AI可能不认识。可以尝试在任务描述中手动添加更明确的标签来辅助。3.反馈循环目前DoWhat不支持自定义聚合提示词但这是一个未来的优化方向。你可以将不准确的案例反馈给项目开发者。API调用费用过高截屏间隔太短或使用了昂贵的模型如gpt-4o。1.调整间隔在Settings中将“Capture Interval”从15秒调整为30秒或更长。这是控制成本最有效的手段。2.降级模型对于日常记录gpt-4o-mini的性价比高很多。3.使用本地模型如果你有足够的GPU资源可以搭建本地视觉模型服务如Ollama LLaVA并将DoWhat的Base URL指向本地服务实现零API成本。6.2 应用性能与稳定性问题问题现象可能原因排查与解决步骤应用运行一段时间后变卡顿内存占用高1. 截图累积过多未自动清理。2. 数据库文件dowhat.db膨胀。3. Electron应用本身的内存泄漏较罕见。1.清理旧数据DoWhat目前似乎没有自动清理截图的功能。可以定期手动清理~/Library/Application Support/DoWhat/snapshots/目录下的旧图片文件比如保留最近7天的。操作前请备份2.优化数据库可以尝试使用SQLite命令对数据库进行VACUUM操作来压缩空间但这需要一定的数据库操作知识。3.重启应用最简单的临时解决方法。无法启动或启动后立即崩溃1. 原生模块如better-sqlite3在系统升级后不兼容。2. 配置文件损坏。3. 权限问题无法写入数据目录。1.重装依赖如果是源码运行尝试删除node_modules和package-lock.json重新npm install。2.重置配置退出应用重命名或移走~/Library/Application Support/DoWhat/目录再次提醒备份然后重新启动应用会生成全新配置。3.检查权限确保当前用户对应用的数据目录有读写权限。截屏功能在特定应用如全屏游戏、视频播放器中失效这是操作系统层面的隐私保护机制。macOS等系统会禁止普通应用截取某些安全窗口或全屏窗口的内容。1.检查系统权限在macOS的“系统设置”-“隐私与安全性”-“屏幕录制”中确保已授予DoWhat权限。2.接受局限对于受保护的内容截屏可能只能得到黑屏或空白。这是正常现象出于安全考虑通常无法解决。6.3 隐私与安全考量这是所有屏幕记录工具无法回避的问题。DoWhat采取了“本地优先”的策略来应对数据本地存储所有截图和数据库文件都在你的电脑上除非你主动分享否则不会离开。API调用可控截图只发送给你配置的AI服务提供商。如果你使用OpenAI的官方API那么图像数据会传输到他们的服务器进行处理。如果你对此敏感有两条路使用本地模型如前所述搭建Ollama等本地服务数据不出局域网。选择可信的替代API一些提供OpenAI兼容接口的厂商可能承诺数据不出境或更严格的隐私条款可以酌情选择。开源透明代码完全开源你可以审查它到底做了什么有没有偷偷上传数据。给你的建议在使用前花点时间阅读项目的隐私说明。首次使用时可以先在非工作环境下比如用个人电脑浏览一些非敏感信息试用一段时间观察其行为和资源占用建立信任感后再用于正式工作场景。7. 自定义与二次开发探索如果你不满足于现有功能DoWhat的开源特性给了你很大的折腾空间。7.1 修改提示词PromptsAI生成摘要和提取任务的质量很大程度上取决于发送给模型的提示词。DoWhat的提示词模板位于源码的src/main/prompts/目录下。例如aggregation提示词负责生成15分钟时间槽的摘要pipeline_optimization提示词负责从上下文中提取和优化任务。你可以修改这些提示词文件来让AI更符合你的语言习惯或关注重点。比如你希望摘要更侧重于“遇到了什么困难”而不是“做了什么”就可以调整提示词的侧重点。修改步骤找到src/main/prompts/aggregation.ts或类似文件。修改system或user角色的提示文本。注意保持JSON结构。重新打包或运行开发模式使修改生效。提示修改提示词是一门艺术。建议每次只做小的调整然后观察一段时间内AI输出的变化逐步迭代。7.2 扩展数据存储与分析DoWhat使用SQLite存储所有数据。数据库结构相对清晰你可以直接使用SQLite浏览器工具如DB Browser for SQLite打开dowhat.db文件进行自定义查询和分析。例如你可以写SQL查询过去一周每天在#编程标签上花费的平均时间。哪个时间段上午、下午、晚上你的任务完成率最高。AI提取的任务中最终被标记为完成的比例。这些自定义分析能给你带来比内置Stats视图更深入的洞察。7.3 贡献代码与功能如果你有新的功能想法或发现了Bug欢迎向项目提交Pull Request。项目结构清晰主要逻辑在src/main/capturer.ts截屏与分析循环、src/main/database.ts数据操作和src/renderer/src/components/views/各个前端视图中。一些可能的贡献方向实现截图自动清理策略比如只保留最近30天的截图。增加更多图表类型在Stats视图里加入每周趋势图。支持更多IM平台为OpenClaw集成添加更多适配。开发插件系统让社区可以贡献自定义的分析器或导出器。参与开源项目不仅是贡献也是深入学习一个优秀项目架构的绝佳机会。经过这一番深度探索DoWhat对我来说已经从一个新奇玩具变成了一个融入日常工作流的得力助手。它不会替你工作但它像一面冷静的镜子让你更清晰地看到自己的时间流向和工作模式它集成的自动化潜力又为未来的人机协作打开了一扇窗。任何工具的价值都取决于你如何使用它。我的建议是不要追求100%的自动化或准确率而是把它当作一个“增强感知”的副驾驶利用它提供的数据和提醒来辅助你做出更好的决策和调整。