Cursor 扣费惊魂:用户称已禁用 Claude 模型仍被扣 33 美元,疑后台“偷跑”
一位 V2EX 用户爆料称,其新注册的 Cursor 账号在...
一位 V2EX 用户爆料称,其新注册的 Cursor 账号在...
随着 AI 技术的演进,开发者正尝试将 AI 编程工具(如 ...
随着以 Cursor、Kiro 为代表的 AI 编程工具普及...
MIT计算机科学神课《Missing Semester》20...
近日,技术社区热议AI编程工具Cursor的订阅支付问题。尽...
一位开发者分享了令人震撼的编程经历,利用AI工具antigr...
在使用 GPT/Codex 等 AI 模型辅助编程时,模型常...
一款名为 Golutra 的独立开发工具近日亮相。该工具定位...
近日,部分开发者在社区反馈 Anthropic 推出的 AI...
社区开发者发现 AI 编程工具 oh-my-opencode...
随着 AI 辅助编程工具的普及,前端开发者面临新的技术抉择:...
本文汇总了当前开发者社区关于“Vibe Coding”(AI...
独立开发者 pphboy 在 V2EX 分享了新项目 Pi-Work,一个基于 MicroVM 的 AI 工作环境,目前 MVP 已完成并开放 Demo。项目的出发点在于:当前多数 AI Agent 依赖宿主机运行环境,更换设备后需重新安装依赖、配置工具,环境迁移成本高。Pi-Work 通过 MicroVM 为 AI 提供可执行命令、操作文件和使用工具的独立运行环境,用户以自然语言提出需求,由 AI 在隔离环境中完成任务。项目支持将整个工作环境导出为 .work 文件,在其他机器上导入后继续使用,实现环境的打包、迁移与复用。技术层面,底层采用 QEMU MicroVM,围绕 KVM/WHPX 等虚拟化能力构建,在环境隔离、运行效率和可迁移性之间寻求平衡,当前面向 x86-64 平台,后续计划支持 macOS 与 Apple Silicon。产品提供 GUI 和一键安装流程,目标是让用户无需掌握 Docker、Linux 等知识也能使用 AI 完成实际工作。开发者表示将采取公开构建的方式,依据真实用户反馈迭代产品,并希望了解用户在 Agent 环境配置、迁移、复用方面的痛点及潜在使用场景,长期目标是让 AI 不仅回答问题,还能借助可复用、可分享的工作环境真正完成工作。
核心观点:AI Agent 的竞争正从模型能力下沉到运行环境层,谁把'工作现场'标准化成可迁移资产,谁就占据 Agent 基础设施入口。
原文链接:V2EX 分享发现
一位用户在Linux.do论坛分享了自己维护两个Claude Pro付费账号长期存活的实践经验。据其介绍,两个账号分别已存活一个多月和一周左右,核心策略可总结为’少做少错’四个字。在网络层面,该用户采取了网络隔离与固定IP出口的措施,两个账号分别通过美国伪家宽IP和新加坡机房IP接入,且这是其唯一采取的主动防护手段。在设备与使用习惯上,该用户坚持最小化登录原则:一个账号固定在Mac电脑上使用,另一个部署在NAS设备上;Mac端账号通过iOS手机登录后从未更换设备;工作时通过SSH远程连接公司电脑操作,避免多设备频繁登录。此外,该用户还总结了多项规避行为:从不点击Claude官方邮件、除授权登录外不使用网页端、不在Windows设备上使用。其特别强调Windows端的风险,称几个月前观察到大量账号在Windows端使用后随即被封禁。其他方面,该用户表示并未采取特殊措施:充值通过淘宝代充完成,日常使用中文与Claude沟通,Claude甚至知晓其所在地址,但账号至今未触发KYC实名验证,也无封号迹象。该用户同时保持谨慎态度,坦言不排除存活属于侥幸,或Pro账号风控相对宽松,认为最重要的因素是使用设备的稳定性,并表示将持续观察未来几个月的账号状态再做结论。
核心观点:账号存活经验本质是用户与平台风控的持续博弈,折射出AI服务全球化供给与地域限制政策之间的结构性矛盾。
原文链接:Linux.do
同一件事——让模型在故障诊断里给出一个能用的结论——一位算法研究者和我团队写出了两份气质完全不同的 Skill。把它们的差异摊开看,会发现分歧不在严谨程度,而在「验证」这个词各自指什么。
本文基于两份诊断 Skill 的规格文档、规则集、门禁脚本与一次沙盒执行记录做对比。已隐去参与者、项目名与业务标识,保留可复核的方法与数字;涉及准确率的数字均为原实验口径,未做二次加工。
一份 483 行、两万六千字,把「什么结论可以从证据中合法推出」写成了一套类型系统;另一份 130 行,解决的是「什么东西可以交付、并且能持续运行」。这两份东西放在一起看,第一反应往往是「严谨程度差太多」,全篇九十几条禁令对二十几条,几乎是两个物种。
但继续往下读,会发现问题不是严谨不严谨。两边都把验证当成瓶颈,只是验证的对象不同:一边验证的是推理的合法性,一边验证的是系统的可用性。前者关心「这个结论有没有资格被说出来」,后者关心「这条链路明天早上还能不能跑起来」。
这个分野一旦确立,后面所有具体选择都变得可以预测。删功能用什么标准、要不要给「不知道」开一个正式出口、预算拿来干什么、降级算不算作弊——两个阵营给出的答案截然不同,而且各自在自己的目标函数下都是对的。
要点:差的不是严谨程度,是那套推理本身的类型系统。补严谨可以靠加规则,补类型系统只能靠换视角。
工程里删代码的依据通常是「没有调用方」,或者「线上没人报错」。算法里删规则的依据是「它在拟合噪声」。这两句话听起来相似,实际指向完全不同的动作:前者只需要一次调用关系扫描,后者需要先设计一个能让规则自己认输的实验。
那次实验的规模小到不像实验:30 个人工金标样本,两类容易混淆的故障(打滑与过流),要求判断每一条属于哪一类。三种做法各跑一遍。

三条柱子并不在同一场比赛里:交叉验证的那条低于基线,说明单特征在拟合噪声;训练集内的 80% 没有留出样本,不能与另外两条并列比较。
关键的一步在后面:最优单特征的留一交叉验证只有 43%,低于「全判同一类」的 60% 基线。于是整条规则被删掉,脚本改成「只呈现测量,不下机理标签」。
工程师的本能是「再加个特征试试」。43% 不理想,那就找第二个特征,80% 看着不错。但 80% 是训练集内的数字,样本 30 条、特征 2 个,这个数的方差比它本身还大;把它当成绩写进规格,等于给自己埋了一个永远不会被触发的失败。
更值得学的是他往下追问的那一层:标注里带着日志之外的现场信息——人当时在现场看见了什么。这意味着任何只看日志的模型都有一个天花板,而且这个天花板不是模型能力决定的,是数据里根本没有那个信息。想清楚这点之后,问题被改派给采集侧:先让日志能采到区分两类故障所需的量,再谈模型。
先算天花板,再决定要不要做。这一条在工程文档里几乎不会出现,因为工程文档默认「做不出来是排期问题」。但天花板一旦算出来,最省力的方案其实是承认它,并且把缺口派给唯一能补的地方。
要点:一个规则的删除依据,如果是「交叉验证不如多数类基线」,那么这条规则从一开始就不该被写进生产路径。它带来的不是准确率,是准确率的幻觉。
在一张因果图里,causes 和 enables 都要求源证据与目标落在同一个 attempt 内,并且源证据在时间上严格早于目标;protective_response 是被触发的响应,不能当作 trigger 使用;reports 这条边是反向存储的——终局结果指向被它报告的那个响应。
工程日志只记录「A 之后 B」。这套类型系统问的是另一个问题:「B 有没有可能只是 A 的报告动作,而不是 A 的后果?」这个问题一旦问出来,很多看起来确定的因果链会当场松动。
| 边的类型 | 语义要求 | 日志不做区分时会被读成 |
|---|---|---|
| causes | 同一 attempt 内,源证据严格早于目标 | A 之后 B,所以 A 导致 B |
| enables | 同一 attempt 内,提供的是条件而非原因 | 直接并进上一条因果 |
| protective_response | 被触发的响应,不能当 trigger | 被当成故障原因 |
| reports | 反向存储:终局结果指向被它报告的响应 | 被当成事件发生的顺序 |
左边是类型系统要求的语义,右边是工程日志不做区分时的默认读法。差别不在数据,在是否允许自己把顺序当因果。
责任强度只有三档:single、one_of、unknown。机理强度也只有三档:confirmed、partial、unknown。置信度拆成五个维度分别打分,并且有一条硬约束——校准没开就禁止写成百分比,只能写「未校准因果支持分 N/100」。
配置文件里老老实实写着 n=1、enabled=false。评测说明里写的是:这套东西只能称「内部合同回放」,不能称盲测准确率。也就是说,作者宁可对外承认自己没测过,也不肯把一个漂亮的数字放到会被人引用的地方。
工程交付很少这么做。遇到说不清的样本,通常的处置是兜底:用最可能的那一类填上,让下游拿到一个确定值。填完之后流程通了,错误也被抹平了——没有人知道这一单其实没有结论。
裁决分两轮。第一轮要求 Agent 盲写假设,规则候选封存在压缩包里禁止读取;第二轮才披露,而且披露时明确写着「规则候选只表示必须比较,不拥有选因优先级」。
这是在防锚定效应。工程把 LLM 当一个有接口的组件,给输入、取输出;他把 LLM 当一个会被诱导的陪审员,所以连「什么时候给它看什么」都要设计。门禁脚本里还有一条扣分项叫「疑似照抄规则原文」——这条规则不是技术约束,是人性洞察。
两条规则:连续两次无信息增益就熔断;同一错误指纹累计不超过 6 次。
工程里的超时和重试次数只看资源——花了多少时间、烧了多少 token、够不够本。这两条规则看的是另一件事:这一轮还值不值得继续。把检索当成采样过程看,信息增益为零就意味着后面每一轮都在重复同一个分布,继续跑只是把钱换成更长的日志。
这个视角切换很便宜,但很少有人做。原因是它需要一个前提:你得知道「这一轮有没有带来新信息」,而这件事工程上几乎没有度量。多数重试循环连「上一次和这一次的输入有没有差别」都不记录。
注意:重试次数是成本参数,熔断条件是信息参数。两者混用的时候,系统会在最没有价值的地方花最多的钱。
原版规格两万六千字,近百条禁令。每一条禁令背后大概都是一次被模型坑过的经历,这和我文档里的「铁律」本质相同,都是疤。区别在于承载方式:我把约束放进 hook 和验证脚本,文档里只留一句带根因的提醒;他在门禁代码里已经强制了同样的东西,却又在文档里重复了一遍。
| 情态动词 | 原版(483 行) | 瘦身后(130 行) |
|---|---|---|
| 禁止 | 18 | 5 |
| 不得 | 16 | 5 |
| 必须 | 42 | 7 |
| 不能 | 21 | 4 |
行数从 483 压到 130,情态动词的密度下降得更快。约束并没有变少,只是从文档搬进了脚本。
重复的代价是可测的:沙盒实测里,一个小尺寸模型连续吃了 16 次 invalid_final_diagnosis,把轮次直接耗尽。规范写得越全,单次调用的有效注意力越少,模型越容易在格式上摔跤——而格式恰恰是最该由代码保证、最不该由文档保证的部分。
有个输入补充环节硬性要求下载工具可用,而执行环境永远不出网。两个都正确的前提凑在一起,结果是整单死锁——不是报错,是卡住,而且看不出卡在哪。
工程侧的修法是加一层输入降级。但平台侧后来追加的要求才是真正的补刀:降级可以,但必须计数——跳过了哪些数据包、兜底了多少行,都要上报。因为静默降级会改变错误分布,让下游的指标看起来一切正常,而实际上样本已经悄悄换了一批。
这条追加要求暴露了一个更普遍的问题:把人工兜底伪装成系统能力。兜底跑通了,成功率好看,但那份成功率里混着手工填的值。不计数,就永远分不清哪些是系统算出来的,哪些是人补上去的。
每遇到一个线上卡点就加一条规则,这就是「堆条件」的完整生命周期。单个条件的理由都很充分,几百个条件叠在一起,就没人能说清系统整体在保证什么了。
| 指标 | 数值 | 说明 |
|---|---|---|
| 代码规模 | 6.7 万行 | 单文件最大 2,596 行,次大 2,197 行 |
| JSON schema | 28 个 | 两代规则引擎同时存活,靠 shim 兼容 |
| 专家评测集 | 21 条 | 全部指向包外路径,不在交付物里 |
| 校准样本 | n=1 | confidence_calibration 里 enabled=false |
最后一行是最诚实的:验证闭环没有跟着交付物一起发货。输出目录里唯一的执行历史是两次诊断、两次全 error。这套系统的内部一致性极高,但它在真实环境里一次都没有走完。
注意:通过率如果不是门禁设计出来的,就会变成门禁要防的东西。一个 8/8 的全绿结果,在一套没有校准、没有留出样本的门禁里,说明的是门禁太松,不是系统太好。
一边是完美主义的独立研究者:单人署名,宁可不交付也不交付可疑结论。失败模式是「在脑子里能证明正确的事」压过了「周五之前要有一条可以看的结论」。
一边是交付导向的编排者:先跑通再收紧,每条铁律后面跟着一次事故。失败模式是指标被当成目标本身——通过率、成功率、覆盖率,这些数字一旦变成考核项,就会以最快速度失去信息量。
这两种人格谁也说服不了谁,因为它们优化的不是同一个东西。但可以互相拿走一部分,而且不需要改任何代码。
一、每个兜底配一个计数器和一个基线问题。这个 fallback 吃了多少行?不加它的多数类基线是多少?两个数放在一起,兜底的价值立刻从「流程通了」变成「比瞎猜好多少」。
二、新规则先分类再落地。它是推理不变量(时序先于因果),还是事故记忆(某个排序在某个版本上害过一次)?前者进代码的类型系统,后者进一行带根因的铁律。分类错了,两种都会腐化:不变量写成铁律会被绕过,事故记忆写进类型系统会把架构焊死在一个补丁上。
三、让 unknown 成为合法交付。现有的 source: heuristic 已经是这个方向,再往前一步是把「证据不足」从「降一点 confidence」升级成独立的 verdict。降 confidence 的下游会照常消费,独立 verdict 的下游必须显式处理——前者是委婉,后者才是约束。
四、验证全绿之后多问一句:它测不到什么?确定性断言测的是契约,不是泛化。全绿说明交付物没有撒谎,不说明它有用。
反过来的账也一样清楚。算法那边能从工程这边拿走的,是给有限注意力的读者写接口、给真实环境写降级、给文件设长度上限、先发货再校准。这四件事没有一件需要牺牲严谨性,它们只影响严谨性被不被看见。
两个方向最后会撞在同一句话上:验证是瓶颈。一个在证明结论配不配被说出来,一个在证明系统能不能活到明天。前者决定天花板,后者决定地板。缺了任何一边,另一边都会显得很有道理但没人用。
下面几份材料支撑了文中的几个外围判断:校准为什么必须显式声明、指标为什么会自我腐化、锚定效应为什么需要在协议层防、以及信息增益为什么可以当停机条件。
别人家的 AI 桌面端是这样工作的:ChatGPT 按 ⌥Space 弹出一条浮动输入框,问完 Esc 走人;Claude 直接双击 Option 就能说话,主窗口一辈子不用打开。WorkBuddy 是另一套动作——切到它、找到输入框、点新建,三个动作做完,刚才那个念头已经凉了。
数据取自本机 WorkBuddy 5.9.3 客户端:快捷键定义从 app.asar 内 main / renderer 产物解析,内存与进程数由 ps 实测,采集时间 2026-11-03 23:00(UTC-8)。
我用一个 29.5 MB 的后台进程,给 WorkBuddy 补上了它缺的那块:按 ⌘⇧K,窗口到前台、落在空白新对话、光标在输入框里,直接打字就行。
但这不应该是外挂能干的事。所以我顺手把它每个快捷键的作用域数了一遍,结果比预想的更直接——28 个快捷键,只有 1 个能在 WorkBuddy 之外生效,而那唯一的一个,在我这台机器上压根没注册成功。
| 指标 | 数值 | 说明 |
|---|---|---|
| 快捷键总数 | 28 | 全部可自定义,覆盖导航、编辑、窗口、通用四类 |
| 能在应用外生效 | 1 | 唯一的全局项 toggle-window,默认 Shift+Alt+W |
| 实测该全局项可用 | 0 | 两种方式触发均无响应,注册路径被跳过 |
| 补上这一步的代价 | 29.5 MB | Hammerspoon 常驻内存,空闲 CPU 为 0 |
先算一笔小账:假定一天要问 30 次,每次切窗口、找输入框、点新建平均 3 秒,一天 90 秒,一年不到 9 小时。按这个口径,做不做这个优化都无所谓,谁都不缺这 9 小时。
真正的成本不在秒数。我在用 ChatGPT 和 Claude 的时候有个明显习惯:想到什么立刻按一下就能问,问题倾向于当场问完;换成要切窗口的工具,同一个问题会被我记成一句备忘,攒到晚上一起问。攒起来的那批问题,十个里有七个最后没问——不是不重要,是当时的上下文已经散了。
所以入口延迟影响的不是效率,是使用频率本身。一次交互超过两秒,人就会开始给自己找理由跳过它。这也是为什么 ChatGPT 和 Claude 都把这件事做成了系统级的默认能力,而不是藏在设置里的一个可选项。

ChatGPT 的入口是一条浮条。问完就走,主窗口可以一直不打开。

WorkBuddy 的入口是整扇窗。切过来、找到输入框,才轮到打字。
要点:把 AI 当工具用的人,衡量的是「这一次省了多少」;把 AI 当同事用的人,衡量的是「我愿不愿意随时开口」。前者看功能,后者看入口。
WorkBuddy 的快捷键设置页分四类:窗口、编辑、任务、通用。看起来挺完整,但真正决定「能不能在任何地方按下就用」的不是分类,是作用域(scope)。
我把应用包里那份快捷键定义抽出来统计了一遍:app 作用域 21 个,context 作用域 6 个,global 作用域 1 个。也就是说,只要你不在 WorkBuddy 窗口里,27 个快捷键全部失效。

28 个快捷键中只有 1 个(toggle-window)是 global 作用域,其余 27 个都要求 WorkBuddy 已在前台或输入框已聚焦。
| 动作 | 默认按键 | 作用域 | 能不能在别的应用里按 |
|---|---|---|---|
| 新建对话 | ⌘N | app | 不能 |
| 新建快速问答 | ⌘⇧N | app | 不能 |
| 唤起/隐藏主窗口 | ⇧⌥W | global | 理论上能,实测未注册 |
那个 global 项就是 toggle-window。它的定义写得很清楚:窗口可见且聚焦时隐藏,其余情况恢复并聚焦。语义是对的,问题出在注册时机。
我把主进程代码翻出来看了一遍:注册函数被放在「主窗口尚不存在时才创建窗口」的分支里。而正常启动流程里,窗口在那之前就已经建好了,于是这个分支被短路,注册被跳过——不报错、不提示、设置页里照常显示快捷键已启用。
我用两种方式验证过:程序合成按键、系统级脚本发送。窗口都没有任何反应。这不是我按错了,是这个键从头到尾没注册上。

这是 5.9.3 里的真实代码。getMainWindow() 一旦有值就 return false,后面那串注册语句永远等不到执行。
既然自带的用不了,就自己补。我先想到的是对标 Claude 的手感:双击修饰键,不占字母键,肌肉记忆成本最低。
| 方案 | 结果 | 失败原因 |
|---|---|---|
| 双击 Option | 撞车 | WorkBuddy 把单独按 Option 绑成了语音输入,双击等于连发两次语音指令 |
| 双击 Command | 事件全丢 | 我拿按键码做过滤,但它在这类事件里恒为 0,自己把事件筛没了 |
| ⌘⇧K | 可用 | 与 WorkBuddy 现有快捷键零冲突,走系统级热键注册 |
第一个坑值得展开说,因为它不是我的问题。WorkBuddy 把「单独按 Option」的默认绑定给了语音输入——这跟 Claude 双击 Option 唤起输入框的设计直接对撞。两个功能抢同一个键,表现出来就是「偶尔能生效、偶尔逻辑很奇怪」,因为一半的事件被语音吃了。
第二个坑是我的:Hammerspoon 里监听修饰键变化的事件回调,返回的按键码在任何情况下都是 0。我用它区分左右 Command,等于给所有事件加了一个永远不成立的条件,于是监听器挂着,日志一条不进。这个 bug 掩盖得很好,因为热键列表里我的绑定看起来一切正常。
最后落到 ⌘⇧K。理由很朴素:系统级热键注册不依赖事件监听,不受语音快捷键干扰,也不会被输入法的组合键吃掉。查过 WorkBuddy 现有的 28 项,⌘K 是全局搜索、⌘⇧N 是快速问答、⌘N 是新建对话,⌘⇧K 空着。
注意:想在 macOS 上做「双击修饰键」触发,先查清楚目标应用有没有把这个修饰键单独绑走。修饰键双击天然脆弱:系统可能合并事件、输入法会抢、你自己的逻辑还容易写错。能用组合键就别用双击。
补这个功能有两类工具可选:Hammerspoon 这种配置式脚本引擎,或者 Raycast 那种带界面的启动器。功能上都能做,差别在代价。
Hammerspoon 是原生 Objective-C 外壳 + Lua 脚本,实测常驻 29.5 MB,空闲 CPU 为 0,不建索引、不同步、不联网。Raycast 第一代是原生 Swift,现在已经重写成 WebView + Node 后端,官方拆解里光 WebView 就 120–200 MB、Node 后端 150–200 MB。为了一个快捷键装一个启动器,不划算。

作为参照:WorkBuddy 单次运行 18 个进程、合计 1792 MB。最大的单个渲染进程 457 MB,已是 Hammerspoon 整个进程的 15 倍。
这不是说 WorkBuddy 内存占用有问题——Electron 应用多进程是这个量级,Chrome 也一样。问题是当它连「按一下就问」这种基础入口都要靠第三方补时,那 1792 MB 里有一块是白花的。
把这件事归到「产品没做」并不准确。它做了:有快捷键设置页、有 global 作用域的字段、有 toggle-window 这个动作,代码里连「被其他应用占用时打警告日志」都写了。这是一个知道该做什么、并且动手做了的团队。
问题出在收尾。功能写完了,但没验证它在真实启动路径上是否生效;注册失败只写进日志,界面上照样显示「已启用」;用户按了没反应,唯一能得到的解释是自己去翻设置。这不是能力问题,是交付标准的问题。
| 产品 | 默认全局唤起 | 唤起后是什么 | 需要主窗口吗 |
|---|---|---|---|
| ChatGPT macOS | ⌥Space | 浮动输入条,可直接提问/截图/传文件 | 不需要 |
| Claude Desktop | 双击 Option | 快速输入框 | 不需要 |
| WorkBuddy 5.9.3 | ⇧⌥W(实测未注册) | 把主窗口切到前台,停在原对话 | 需要 |
三点具体差距,按严重程度排:
一是「唤起」和「新对话」被拆成了两个动作。竞品的全局唤起进去就是一个空白输入框,WorkBuddy 唤起的是你上次那个对话,要新开还得再按 ⌘N。这两个动作在产品逻辑上是独立的,但在用户意图上是一件事——我按快捷键的那一刻,想的是「我要问个新问题」,不是「我要看看上次聊到哪」。
二是快捷键的能力边界没有暴露。设置页列了 28 项,看不出哪些只在窗口内有效。用户很容易以为是自己设置错了,实际上那 27 项本来就不该期待跨应用生效。一个 scope 标签、一句「仅应用内生效」,能省掉用户半小时的困惑。
三是状态不可见。全局热键注册失败是硅谷式静默失败:日志里有 warn,界面上一切正常。这类失败必须让用户看见——设置页那一行应该直接标红「注册失败,可能被其他应用占用」。
要点:这三个问题指向同一个设计惯性:把 WorkBuddy 当成一个「应用」,而不是「随时可用的能力」。一旦按应用来设计,入口就自然长在窗口里;按能力来设计,入口必须先于窗口存在。ChatGPT 和 Claude 的差距不在模型,在这一层。
全局入口不是锦上添花,是这类工具的第一优先级。判断标准很简单:用户在其他应用里想到要问的时候,能不能不离开当前窗口就问出口。做不到这一条,其余功能再强,使用频率也会被入口卡死。
另外两条:全局热键注册失败必须可见,不要只写日志;快捷键列表要标出作用域,别让用户猜。这两件事的开发成本都以小时计,但对信任的伤害是长期的。
别碰修饰键双击,直接上组合键。选键之前先翻一遍目标应用已有的快捷键定义,避开它的保留键——尤其注意它有没有把某个修饰键单独绑给了别的功能(语音输入是重灾区)。
启动类操作要留出足够的等待时间。冷启动时窗口画出来了不代表界面准备好接快捷键,那中间还有一两秒,早发的按键会被吞掉,表现出来就是「有时候行有时候不行」。
-- 唤起 WorkBuddy 并落到空白新对话
local BUNDLE = "com.tencent.workbuddy.mac"
local function mainWindow()
local app = hs.application.get(BUNDLE)
if not app then return nil end
for _, w in ipairs(app:allWindows()) do
local f = w:frame()
-- 只认足够大的标准窗口,避开启动闪屏
if w:isStandard() and f.w >= 600 and f.h >= 300 then return w end
end
end
hs.hotkey.bind({ "cmd", "shift" }, "K", function()
-- 未运行:先拉起,轮询等窗口
if not hs.application.get(BUNDLE) then
hs.execute('open -a "WorkBuddy"')
end
local tries = 0
local timer
timer = hs.timer.doEvery(0.5, function()
tries = tries + 1
local w = mainWindow()
if w then
timer:stop()
w:raise(); w:focus()
-- 等渲染器挂稳,否则 ⌘N 会被吞
hs.timer.doAfter(2.5, function()
hs.eventtap.keyStroke({ "cmd" }, "n", 0)
end)
elseif tries > 120 then
timer:stop()
end
end)
end)
开发者社区 Linux.do 上有用户分享了一款开源的 macOS 菜单栏工具 ThreadLight,用于监控 Codex 与 Claude Code 对话的运行和完成状态。作者作为 Mac 用户,长期使用 Codex 积累了大量对话,希望有一个简洁的工具随时查看对话状态,而 Codex 自带的宠物功能占用空间大且不够直观,因此自行开发了这款工具并分享给社区。在设计思路上,ThreadLight 将状态直接集成到顶部状态栏,用户一眼即可查看有多少任务正在运行、哪些已完成;点击后可唤出一个前置的极小窗口,展示对话列表,点击列表项能直接打开对应的客户端和对话。工具强调读取速度,避免像多数插件那样读取完整对话数据,保证轻量流畅。项目同时兼容 Claude 客户端。目前作者已发布 v0.1.0 预览版,源码托管在 GitHub 并完整开源。由于作者手头没有 Windows 设备,暂不支持 Windows 平台,欢迎社区开发者基于源码自行适配 Windows 或兼容其他 AI 编程客户端。该项目帖子已按社区开源推广规范打标,声明完整开源、无未开源部分,并已链接认可来源社区,接受社区监督。
核心观点:AI编程进入多Agent并行时代,会话状态监控正从可有可无的周边功能变成开发者工作流的新入口。
原文链接:Linux.do
开发者在使用大模型 API 时,常面临本机与服务器需要分别配置模型和密钥的问题,任一端改动都要重复操作。近日,Linux.do 社区用户分享了利用 magpie 工具实现服务器与本机统一调用模型的方案。magpie 的定位类似 ccswitch,核心思路是在本机运行一个网关,将所有模型请求汇聚到统一入口。具体实现分为几步:首先通过组网工具 Tailscale 创建虚拟网络,服务器和本机分别下载客户端并扫码登录,即可组成虚拟局域网;随后在本机的 magpie 中配置好一系列模型和供应商信息,选择该网关(即 Tailscale 建立的虚拟网络),并获取网关密钥;最后在服务器的 providers 配置中添加该网关信息,即可完成接入。配置完成后,服务器端的模型请求和 token 消耗都能在本机网关界面实时显示,便于统一监控用量。这一方案省去了在两端重复维护 API 配置的麻烦,模型增删、供应商切换只需在本机网关处修改一次,服务器端无需变动,对同时在本机和远程服务器使用 AI 编程或模型服务的开发者而言,提供了一种轻量的统一管理思路。
核心观点:模型调用走向多端常态后,统一网关加虚拟组网正成为开发者管理密钥与用量的轻量解法。
原文链接:Linux.do