用一张钉钉表格,统一管理所有 Agent 的定时任务

One DingTalk Table to Rule All Agent Cron Jobs

一个越来越具体的烦恼

给 AI Agent 排定时任务,正在变成一件新的麻烦事。

最早我们写 cron,后来写脚本,再后来各种 Agent 框架自带调度器。结果是:定时配置散落在 crontab、launchd、代码常量、框架配置文件里,改一个执行时间要翻好几个地方;想知道「现在到底有哪些任务在跑、几点跑、跑完发到哪」,没有任何一个地方能一眼看全。

任务本身其实很简单——「每天下午一点,去小红书搜几个关键词,各出一份报告」。难的不是执行,而是管理:谁来记、谁来改、谁来排查。

One DingTalk Table to Rule All Agent Cron Jobs

[Read More]

代码是 AI 写的了,品味住在哪里

Where Engineering Taste Lives When AI Writes the Code

上个月面试一个候选人。他带了一个 GitHub 项目,说「大部分代码是 AI 写的」。

我说没关系,打开看看。

代码确实漂亮。命名规范,类型标注完整,docstring 齐全,错误处理滴水不漏。如果这是三年前,我会觉得这是一个高级工程师的作品。但现在我知道,这些是任何一个会用 Cursor 的人都能产出的。AI 的默认输出就是 80 分——格式正确、风格一致、看起来专业。

我真正想看的东西,不在代码里。

品味住在哪里

[Read More]

好的 Runtime 不挑模型

A Good Runtime Does Not Care Which Model Wrote the Code

上个月我们团队换了一次 agent loop。从 Claude Code 切到 OpenCode。

切换本身很轻——prompt 改改,工作流调调,两天上手。切完第三天,周一早上打开 dashboard,CI 全绿。我松了口气,泡了杯咖啡,随手点开一条 PR 的 review 记录。

空的。

再点开一条。还是空的。咖啡没喝完就放下了。

不是代码质量出了问题。是 pipeline 里有一条规则:检测注释里的 // Generated by Claude Code 标记,命中就触发额外的 AI 代码 review 流程。OpenCode 不打这个标记。于是这条规则永远不触发,review 流程形同虚设。CI 是绿的,但绿得没有意义。

一条规则,把整个团队锁死在一个工具上。不是我们选择了 Claude Code,是基础设施绑架了我们。

我在 代码是 AI 写的了,品味住在哪里 里说,品味从代码搬到了工程系统——CI pipeline、release 节奏、事故响应。但那篇文章用的词是「harness」,而且只讨论了 harness 和 agent loop 的关系。

三个月后我意识到,那个框架已经不够用了。

2026 年的前沿 Agent 系统,不再是「一个模型 + 一个循环」的结构。它是 Foundation Model、Agent Policy、Runtime 三层的协同设计。品味不住在任何一层里,它住在三层之间的契约里。

A Good Runtime Does Not Care Which Model Wrote the Code

[Read More]

AI 操作你的电脑,最大的对手不是防火墙

The Real Adversary of Computer Use Agents Is Not Detection, But Behavioral Biometrics and Cost

上周帮一个朋友调他的 AI Agent。需求很简单:自动登录一个美国政府网站,填三张表,提交。

他选了 VNC 路线——Agent 通过远程桌面连上一台真实 Mac,操作真实的 Chrome 浏览器。逻辑很对:真实浏览器没有 navigator.webdriver 标记,没有 CDP 连接痕迹,TLS 指纹是真的,Canvas 指纹是真的。从浏览器的视角看,就是一个正常用户坐在键盘前。

他很有信心。然后 Agent 在第二步就被拦住了。

不是被防火墙拦的,不是被反爬拦的。是 Cloudflare Turnstile 弹了一个无感验证,Agent 的鼠标 瞬移 到了按钮上, 零毫秒 完成点击。没有移动轨迹,没有加速度变化,没有人类手指的微颤。

一个人类不可能这样操作。而 Cloudflare 知道。

AI 操作电脑的四层对抗

[Read More]

用 Vision + macOS 自动化消灭 Browser MCP 的最后一个手动断点

Eliminating the Last Manual Breakpoint in Browser MCP with Vision-Driven Automation

凌晨两点,我的 Agent 又停了。

不是模型挂了,不是网络断了,不是 Token 用完了。是 Browser MCP 的 WebSocket 连接断了,而那个该死的 Chrome 扩展弹窗里,「Connect」按钮正安静地等着有人去点一下。

我在跑 --watch 模式——Agent 监控一个内部系统,页面一变就自动抓取数据、做分析、写报告。整条链路全自动,唯独 Browser MCP 的连接需要手动点。每次断连,我就得从床上爬起来,点开 Chrome 工具栏那个小图标,点一下 Connect。

Agent 操作浏览器的九条路线 里,我把 Browser MCP 归到「真实浏览器 + 扩展 + CDP + MCP」那一类,给了它四颗星的企业推荐度。但那篇文章没写的是: 它有一个致命的手动断点,而这个断点在自动化场景下足以毁掉整条链路。

这篇文章记录我怎么用 Vision 大模型 + macOS 原生自动化,把这个断点彻底消灭。不是 Demo,是从 v1.0 迭代到 v1.4.2、踩了六个坑之后的生产方案。

值得一提的是:整个项目的所有代码——从第一行 screencapture 调用到最后的 LaunchAgent plist——都是 Opus 4.8 写的。我做的事情是描述需求、测试、报错、再描述。这个过程本身就是一个有趣的发现:当你把「我需要一个能自动点击 Chrome 扩展按钮的脚本」这种模糊需求扔给一个足够强的模型,它给出的第一版方案往往方向正确但细节全错——而每一处「错」的背后,都藏着一个 macOS 平台特有的坑。

Vision + macOS 自动化消灭 Browser MCP 手动断点

[Read More]

Agent 时代的权限:从 RBAC 到五层信任架构

Five Layers of Trust for Agent-Era Access Control

一个人类员工一天审批 20 单、发 50 封邮件、访问 10 个系统。如果权限有漏洞,损害上限是 20 单。

一个 Agent 一秒调 100 次 API。一分钟 6000 次,十分钟 60000 次。如果权限有漏洞,你甚至来不及发现,损害就已经是 指数级 的。

这不是量变,是质变。传统权限模型(RBAC / ABAC)有一个隐含假设: 操作者是人,操作速度是人的速度。 这个假设在 Agent 时代彻底失效了。

再加上三个新问题:委托链(人委托 Agent A,A 调用 Agent B,B 访问系统 C)、上下文依赖(同一个 Agent 在不同群里有不同权限)、可被操纵(Agent 可能被 prompt injection 劫持)——传统权限模型不是「需要升级」,而是 需要重新设计

[Read More]

Agent 是一等公民:下一代协同办公的三个重设计

Three Redesigns for Agent-Native Collaboration

晚上 10 点,纽约的产品经理在 Linear 上建了一个竞品分析的 ticket,在群里 @ 了东京的工程师,又发了一封邮件给伦敦的设计师。三个渠道,三种状态,没有一个地方能看到全貌。

第二天早上,产品经理问:「进度怎么样了?」东京说:「刚看到群消息,还没开始。」伦敦说:「邮件?我昨天没在线。」Linear 上的 ticket 状态还是 To Do——因为没人记得去更新它。

这个场景每天都在全球化团队里上演。我们用了二十年时间解决「人怎么跨时区协作」——异步文档、录屏、standup 录音、follow-the-sun 排班。但本质上,所有方案都在做同一件事: 让不在场的人也能跟上进度。

如果有一种同事,它没有时区、不需要睡觉、7×24 在线、能在你下班后继续推进工作呢?

这种同事已经存在了。它叫 Agent。但我们的协同办公产品——通讯录、IM、邮件——还没有为它做好准备。

[Read More]

Agent 操作浏览器的九条路线:从 Playwright 到 Computer Use

Nine Tiers of Browser Automation for AI Agents — and the Layered Architecture That Actually Works

上个月一个团队来找我,说他们要做企业内部的 AI Agent,需要操作浏览器。

第一个问题就是:「用 Playwright 还是 Browser Use?」

我说这个问题本身就问错了。就像你问「盖楼用钢筋还是混凝土」——答案是都用,但用在不同的层。

Browser Automation 在 AI Agent 语境下,已经不是一道单选题。它是一张技术地图,九个梯队,各有适用场景。而真正在生产环境里跑通的企业 Agent,几乎都是 分层架构——API 优先,结构化浏览器控制居中,Vision 兜底。

Agent 浏览器自动化八梯队

[Read More]

Agent 进入企业,还差一个工位

What Agents Need Is Not More Intelligence, But an Onboarding Process

七月的 WAIC 展馆,人声鼎沸。

大模型展台前挤满了人,Demo 屏幕上的 Agent 行云流水——自动写代码、自动做报表、自动回客户邮件。观众鼓掌,媒体拍照,投资人交换名片。

然后你回到公司,打开内部系统,发现你的 Agent 连个工号都没有。

它没有账号登录 CRM,没有权限查数据库,没有工位接收任务,出了错不知道找谁。它站在企业大门外,能力满分,但进不来。

阿里巴巴资深技术专家谢吉宝在 WAIC 2026「从大模型到智能体:迈向自主智能新纪元」论坛上说了一句大实话: 绝大多数 Agent 还站在企业门外,瓶颈已从模型能力转向组织兼容性。

他的解法是:给 Agent 一个工位。

Agent 工位五层模型

[Read More]

模型正在吞噬 Agent 框架

Models Are Eating Agent Frameworks — Thin the Layer or Pay the Debt

昨晚十一点半,我盯着自己那个钉钉数字员工项目里的一段代码发呆。

那是 core 模块里的轮询逻辑——每隔 3 秒去 serve 端拉一次会话状态,判断任务是否完成、是否超时、是否需要 abort。旁边是 session 管理:维护一个内存里的 Map,记录每个会话的生命周期、重试计数、上下文快照。再往下是 abort 清理:当用户取消任务时,要优雅地终止正在执行的工具调用、回收资源、把中间状态写回。

加起来大概 200 行。写得挺漂亮,有状态机、有超时退避、有异常兜底。我三个月前写它的时候,serve 端还没有原生的会话生命周期管理,没有 SSE 事件流推送,没有内置的 abort 语义。这 200 行是当时唯一的选择。

但昨晚我突然意识到: 这些代码的保质期,可能只剩一年。

不是因为它们写错了,而是因为它们正在被模型和运行时从两端同时吞噬。

[Read More]