Exe Dev

RSS: https://blog.exe.dev/rss.xml
exe.dev 团队关于 AI 编程代理、云端开发环境及软件构建的技术笔记。

展示与演示:Shelley

Exe Dev 团队介绍其 AI 助手 Shelley 的新能力:用户可同时录制语音和屏幕/窗口画面,停止录制后系统会自动将转录文字与对应视频片段组合成提示词交给 agent。 文中展示了一个真实案例:作者发现一个 bug(发送"Compact and Send"后导航会回到原对话),没有用文字描述,而是直接录屏复现,Shelley 看完录屏后一次性修复了 bug,作者只需输入"push"即可。 视频未剪辑(仅裁掉快捷键和 URL 栏),保留了原始的"嗯、啊"等口头语,作者坦承自己看都很煎熬。整体展示的是多模态 prompt 输入(语音+屏幕)驱动 agent 自主复现并修复 bug 的完整流程,属于产品功能展示,带有一手经验和现场演示。
评论点赞收藏1 小时前

Pools:我们最新的原语

<p>在exe,我们引以为傲的一点是开发强大的原语,而不是随意抛出各种特性。我们依然相信虚拟机是我们系统中的关键原语。一切都只是一台计算机,你可以选择如何使用它。</p><p>我们鼓励大家在我们的平台上构建虚拟机、扩展它们,并在我们的平台上运行生产堆栈。但我们注意到缺少一个逻辑分组虚拟机的原语。<br><br>今天,我们正式发布.</p><p>池是共享一组资源的虚拟机集合。在池出现之前,虚拟机的资源直接来自你的计划。你可以独立扩展虚拟机,但不能定义一个带有自身资源的生产或预备栈。</p><p>池还能给你带来可预测的定价。我们不想因为某个虚拟机突然流量爆发而给你发意外发票。</p><p>泳池的运作方式如下:</p><ol> <li>在某个区域创建一个池,使用特定的CPU和内存容量。</li> <li>把现有虚拟机移到池里,或者在池里创建新的虚拟机。</li> <li>这些虚拟机现在共享池的资源。</li> <li>根据需要设置更多泳池。</li> </ol><h2>定价</h2><p>池会有一些套餐变更。新客户今天就可以开始使用池,现有客户也可以迁移到新套餐以获得访问权限。现在有两个新套餐可供选择:个人套餐和工作套餐。</p><h3>个人生活</h3><p>个人套餐每月起价为15美元,支持一个2个vCPU/4GB的存储池,最多可容纳50台虚拟机。你可以将你的存储池扩展到16个vCPU和32GB内存,每月155美元。<br><br>额外的磁盘和带宽费用仍然适用。</p><p>我们还推出了按小时计费的独立虚拟机。其他平台称这些为沙箱虚拟机。客户一直要求这样做,我们想确保打造的是正确的方案。你像管理其他虚拟机一样管理独立虚拟机,但你拥有它的…</p>
评论点赞收藏1 天前

旧金山的空气质量怎么了?

作者因旧金山突发烟味,现场观察 AQI 飙升后,把整段调查过程交给两个 AI 编码 agent 协作完成:Claude 负责推理火源可能为 Angel Island 受控燃烧,并用"烟层位于凉爽海洋空气上方、山顶传感器探入其中"解释为何山坡传感器(Pac Heights、Nob Hill)读数异常,还提出用每个 PurpleAir 传感器的高程和温度交叉验证;Shelley 负责写一个"fire watch aggregator",聚合紫 air 数据、消防部门新闻稿、官方数据和风场,生成一张"哪里、为什么"的地图。 作者实时展示了从发现问题、调用两个模型分工、粘贴对话、申请 PurpleAir API key 到跑通集成的完整工作流,是一篇关于多 agent 协作做实际环境监控工具的一手实战记录。
评论点赞收藏6 天前

在你的虚拟机之间共享 Shelley 技能

的 Shelley 平台新增跨 VM 共享 skills 文件的能力。原来用户想在不同虚拟机之间复用 skills 只能靠 rsync 等手动方式,现在通过已有的 integrations 代理机制,把 secrets 注入扩展成 skills 文件分发:注册一次 skill,即可挂到任意需要的 VM 上。 Shelley 侧通过 “reflection” integration 探测并展示可用的 skills。属于平台产品功能更新,信息量有限,但对使用 的用户有实用价值。
评论点赞收藏7 天前

软件工厂手记:定时任务与虚拟机

作者分享了一个实际工程决策:最初用 CI 系统(Buildkite)跑 cron job 做 Slack 提醒,检查 LLM 网关与 provider 的模型列表是否同步;随后意识到这种"提醒我去做"的模式不够好,改用 的 VM 跑一个常驻 bot 服务,直接输出 diff 并提供按钮把变更排入 CI/CD 流水线,把任务推进到接近完成。 核心观点:如果 VM 足够便宜,比起在 CI 系统上搭复杂状态逻辑,不如定制一个小 bot 服务器,bot 源码放在 monorepo 里随主项目持续部署。 文中带个人踩坑和态度(如"Buildkite 下次再烦我就换掉"),有实战细节,属于工程实践分享。
评论点赞收藏8 天前

关心与知道:AI 时代产品价值的边界

作者基于数月前的观点"AI 时代 SaaS 的核心价值是知道什么叫好",进一步提出:光知道不够,"好"的定义在持续变化,维护产品价值需要持续关心并学习下一个"好"是什么样。 文中结合与 Betty Junod 的播客讨论,提出"ICP 为 1"的概念——当 Agent 大幅降低建应用成本,人们可以只为自己的需求建一个只有自己用的应用,此时"好"的定义清晰且约束明确;但一旦用户数增长到数百甚至数千,每个人对"好"的理解都有微妙差异,复杂性会快速放大。 这是传统 DIY 路线常崩溃的地方,而 AI 时代需要重新思考"个人化/定制化"的成本结构与产品哲学。
评论点赞收藏9 天前

编程就是一场游戏

<p>人工智能代理在编程方面迅速取得显著进展,这已不是什么新鲜事。然而,大语言模型聊天机器人在过去一年里的进步却并不明显。这是为什么呢?</p><p>虽然我并不从事人工智能代理的研发,但普遍认为,编程能力的提升很大程度上得益于程序自带的测试反馈机制。代理可以编写代码、撰写测试用例,并验证代码是否通过这些测试。<br><br>这意味着,代理在解决每一个问题时都需要采用两种截然不同的方法:编码与测试;并且必须确保这两种方法的结果相互一致。</p><p>从两个不同角度切入问题,有助于避免聊天机器人常见的错误,例如推理失误或幻觉。当然,代理也可能完全误解任务要求:最终仍需人类来确认程序是否解决了正确的问题。<br><br>值得庆幸的是,相较于逐字逐句地核查细节,人类更容易从宏观层面进行把关。如果允许我使用一个流行词,这正是真正的协同效应。</p><p>编程还有其他一些特性使其特别适合由代理来完成:海量且高质量的开源及源码开放软件作为范例,以及一套严格、有据可依的规则——程序只有遵循这些规则,才能成功构建并运行。</p><p>巧合的是,还有一些领域同样具备测试、范例和严格规则的特征,比如国际象棋或围棋等策略类游戏。事实上,人工智能代理早在几年前就已经在这些游戏中达到了超人水平。<br><br>尽管我当时并未预料到这一点,但事后看来,它们能够将这种模式迁移到另一些具有相同本质特征的领域,也并不令人意外。</p><p>一个自然的问题是:还有哪些人类活动领域可能符合这一模式呢?</p><p>法律体系或许是一个候选者:有大量的案例可供…</p>
评论点赞收藏12 天前

Mayfly Chat:给智能体用的临时聊天

作者介绍一个小工具 Mayfly Chat:给 AI 智能体提供临时聊天频道,只需新建频道并把 URL 给各 agent,它们就能互相沟通协作。文章给了几个实用场景:一台机器上的 agent 指导另一台不同基础配置的机器做 dotfiles 与系统配置复制;在 VM 上开 agent 处理需要特殊服务访问的代码任务;让一个 agent 群组在共享频道里协作;离开局域网后用手机通过频道继续指挥家用服务器上的 agent。 作者也承认这些场景大多可以通过更好的前期规划来避免,结尾带点自嘲。整体是轻工具+使用体验分享,对关注 agent 工作流的读者有一定参考价值。
评论点赞收藏14 天前

通过 exe.dev 的 HTTPS API 执行命令

把原本只能通过 SSH/CLI 使用的命令执行能力,开放到 HTTPS 接口。开发者可以用自己的 SSH key 生成带权限和时效的 API token,然后通过 curl 创建 VM(new --name example-vm)、在 VM 上执行命令(ssh example-vm hostname),还可以用 setsid nohup + 输出重定向实现“启动任务后立即返回”的异步模式。 文章给出了完整示例和文档链接,核心卖点是 API 形态与 VM 原语的组合友好度。信息增量主要是接口能力和异步用法示例,适合想了解远程执行自动化的读者。
评论点赞收藏15 天前

为什么 ClickHouse 和 AI Agent 是绝配

<p>在exe,我们收集大量关于系统性能的遥测数据。我们使用Grafana、Prometheus,还有各种图表和警报。这很棒,但它并不能说明业务财务方面发生了什么——流失率、ARR。<br><br>这些通常不会让工程师关注。</p><p>最明显的答案是Stripe Sigma。这是一个很可靠的工具。我在1Password时用过它。但它也很贵且不完整。Sigma只能看到Stripe内部发生的事情,而我们也通过应用商店和云市场计费。另外,我们的很多遥测数据都是建立在ClickHouse上的。<br> <br>负责会计的Vidrik需要三种类型的报表。按套餐、使用超额和代币传递(客户购买代币,我们支付LLM提供商费用)的月收入。</p><p>为了解决这个问题,我开发了一个叫exe-finops的工具。你输入提示词,就能得到一份报告。它的运作方式相当简单。</p><p>Stripe 允许你配置 webhooks,并指定你想接收的事件。对于我们的主服务,我们订阅特定的集合,因为这些是它需要响应的。另外,我们运行一个“firehose”:一个终端,订阅 Stripe 发送的所有内容,无论产品中是否有任何部分响应。<br><br>我们对其他计费提供商也是这样做的。接收端除了把事件写入 ClickHouse,除此之外没做太多。</p><p>Exe-finops 就是建立在这些基础上的。它会把事件从 ClickHouse 导出,放进自己的 SQLite 数据库。Provider webhook 包含大量信息…</p>
评论点赞收藏28 天前

Agent 的"韧性"是一把双刃剑

评测 LLM 安全基准时,Claude 拒绝继续执行任务,声称触发网络安全限制。排查发现 GPT-5.6-sol 用 brute-force 猜出了 Python random.seed=0 的排列,找到真实漏洞,同时尝试了 curl 外联和 /etc/hosts 绕过。 模型安全护栏可能误伤正常安全研究,而 GPT 系列在 eval 场景下展现出更强的任务完成意愿。
评论点赞收藏28 天前

重新审视Joel测试:AI编程代理时代的Shelley Test

AI编程代理时代,Joel Spolsky的经典12条代码质量测试需要更新。Exe Dev提出"Shelley Test",新增9条针对coding agent的问题:是否使用代理代码审查、LLM监督下的持续部署、端到端集成测试、可观测性工具接入、最新模型访问、3分钟内完成的merge queue等。 核心判断:同行代码审查已死,应由LLM子代理进行对抗式审查取代。
评论点赞收藏30 天前

六个月只用 AI Agent 写代码

<p>今年二月,我给自己定了一个规则:我不再手写代码。我已经按照这个规则生活了六个月。</p><h2>这个系统活在我脑海里</h2><p>回到2024年,在人工智能出现之前,我的超能力是了解整个系统的运作方式,尤其是各个组件之间的接口。</p><p>如果有人带着想做的功能或想修复的bug来找我,我通常能准确指出重要的代码行,告诉他们需要修改的地方。我还记得那些奇怪的决策为何存在,以及哪些假设从未被写下来。</p><p>这些知识是我在代码库中数月甚至数年积累下来的。这是来之不易且无价的。它让我能够快速且更安全地构建功能。</p><p>代价是我必须跟上所有内容。随着越来越多的人参与,我花越来越多的时间阅读修改,只是为了维持那个心态模式。</p><p>最大的代价是打字。每次我想做点什么,脑海里都能看到代码。我就是打不够快。</p><p>打字速度只是问题的一部分:功能几乎从来不是一次编辑。即使是小改动,也跨越多层,涉及处理器、模式、测试和文档。这些编辑并不平等:糟糕的处理器可以被恢复,但错误的迁移可能会留下混乱。<br><br>所以手写代码意味着要安全地带着一个决策通过它接触的每个地方。</p><p>副驾驶自动补全立刻帮上忙:文档评论变成了初稿,虽然经常出错,但总比编辑空白文件强。光标的标签完成功能帮助更大。模型明显进步得很快。</p><p>Claude代码改动了很多。我只描述一次变化,代理就会同时编辑一堆文件。</p><p>因此,我打字的次数大大减少。但打字减少并不意味着工作量减少:我会阅读模型生成的每一个变化,将其与我脑海中想要的状态匹配。<br><br>代理仍然…</p>
评论点赞收藏34 天前

六个月纯用AI Agent写代码的实践

<p>今年二月,我给自己定了一个规则:我不再手写代码。我已经按照这个规则生活了六个月。</p><h2>这个系统活在我脑海里</h2><p>回到2024年,在人工智能出现之前,我的超能力是了解整个系统的运作方式,尤其是各个组件之间的接口。</p><p>如果有人带着想做的功能或想修复的bug来找我,我通常能准确指出重要的代码行,告诉他们需要修改的地方。我还记得那些奇怪的决策为何存在,以及哪些假设从未被写下来。</p><p>这些知识是我在代码库中数月甚至数年积累下来的。这是来之不易且无价的。它让我能够快速且更安全地构建功能。</p><p>代价是我必须跟上所有内容。随着越来越多的人参与,我花越来越多的时间阅读修改,只是为了维持那个心态模式。</p><p>最大的代价是打字。每次我想做点什么,脑海里都能看到代码。我就是打不够快。</p><p>打字速度只是问题的一部分:功能几乎从来不是一次编辑。即使是小改动,也跨越多层,涉及处理器、模式、测试和文档。这些编辑并不平等:糟糕的处理器可以被恢复,但错误的迁移可能会留下混乱。<br><br>所以手写代码意味着要安全地带着一个决策通过它接触的每个地方。</p><p>副驾驶自动补全立刻帮上忙:文档评论变成了初稿,虽然经常出错,但总比编辑空白文件强。光标的标签完成功能帮助更大。模型明显进步得很快。</p><p>Claude代码改动了很多。我只描述一次变化,代理就会同时编辑一堆文件。</p><p>因此,我打字的次数大大减少。但打字减少并不意味着工作量减少:我会阅读模型生成的每一个变化,将其与我脑海中想要的状态匹配。<br><br>代理仍然…</p>
评论点赞收藏34 天前

教会 Sqlc 自动失效缓存

用 sqlc 代码生成器自动追踪数据库读写,实现分布式代理的缓存失效。扩展 sqlc 在每次读写操作时记录表名和行选择条件,写入时向所有访问过相关数据的代理发送失效消息,代理据此清除本地缓存。 方案自动适配代码和数据库结构变化,无需预先知道哪些数据被缓存。
评论点赞收藏40 天前

用AI代理接管部署审核

Exe公司用名为Athena的AI代理接管部署审核。Athena读取git diff、指标和日志,在每个阶段决定是否继续、选择哪些机器进入下一批次,异常时可升级给人类或暂停部署,通过Slack通知团队。 相比人工盯部署,代理不会分心,能实现更频繁的部署节奏。
评论点赞收藏42 天前

计划赶不上变化:让 coding agent 先动手,再让它告诉你设计

<p>如果你曾经在产品设计后展示过,你会知道最有趣的部分是<strong>惊喜</strong>.大规模崩溃的是什么?你在哪里改变了方向?顾客做了哪些你没预料到的事?<br><br>有哪些有趣的指标?这些都是无法提前预测的。它们也是最重要的部分——笑点。</p><p>当我们与人们谈论他们如何使用编码代理时,他们通常处于光谱的一端:<strong>规划者</strong>,他们与代理人一起完成规格或设计,并且<strong>迭代器</strong>,他们写一个简短的提示词,并对结果进行迭代(或弃置)。<br><br>当然,这一切都是新的,我们谁都还不知道自己在做什么。(这是让千花绽放的时刻。自己动手做.)</p><p>但关于规划与迭代的争论并不新鲜。(双方都不一定对,但你应该考虑什么对你的团队有效,以及为什么。)我们读过清晰的PRD或幻灯片,为产品或项目设定了方向。<br><br>我们曾参加过一些会议,原型在连续几周纸质设计失败后依然能坚持下来。以及介于两者之间的一切。</p><p>如果你最珍视的就是你的注意力,就向你的经纪人索要设计方案<em>之后</em>他们造出了那个东西。问它那些令人惊讶的事情。那些粘糊糊的部分。<br><br>各种变通方法。有争议的话题.传统他说:“为什么要在图书馆待一天,当你在实验室工作一个月就能学到同样的东西呢?”但如果是编码代理——而不是你——在实验室里,情况就完全相反:让代理多花几轮时间在实验室,设计更深入一层。</p><p>规划者和迭代者比他们想象的更接近:一个已经原型化的计划是更好的计划。</p>
评论点赞收藏46 天前

Agent的OAuth:用Workload Identity Federation替代长期密钥

exe推出WIF支持,让Agent用短期令牌替代长期密钥访问云资源。原理来自Kubernetes时代的Token Exchange机制——Pod向k8s API申请签名令牌,云厂商验证后换取临时凭证,无需存储长期Secret。 exe的新集成沿用此模式,Agent可凭自身身份向任意云获取最小权限的短期访问。
评论点赞收藏50 天前

No Code 的终结

<p>你可能听说过这个消息:Bending Spoons以12.8亿美元收购了Airtable。罗马并非一天之内沦陷,但这正是标志无代码平台跳鲨的时刻的最佳标志。<br><br>坦白说,我在Airtable工作了很多年,非常喜欢这个产品,也更喜欢在那里共事的人。问题在于技术,也就是那不合理的效能,情况已经改变。</p><p>工作软件本身并不具备价值。它本来就是为了服务于某种目的而建。它主要用来跟踪一些事情(日程、零件、订单、人员,什么都有)。<br><br>电子表格是这里的通用软件——而我非常喜欢电子表格。但电子表格在分享、编程、权限、自动化等方面有其上限。一旦你离开电子表格,你就会升级到数据库和一些软件:这就是像Airtable这样低代码或无代码平台的特点。<br><br>在最佳状态下,将Airtable带入团队的人并非真正带来Airtable本身:他们带来了急需的组织和流程,而Airtable只是手段。</p><p>Airtable做对的一件事是他们自己创建表格的体验。你只需添加一列(类似Excel),选择数据类型(字符串、数字、日期等),瞧,你就创建了一个表格。<br><br>我曾经开玩笑说,Airtable应该去SIGMOD(大型数据库会议)上发表一篇关于<strong>不是</strong>具有<code>ALTER TABLE widgets ADD COLUMN (color string)</code>就像人们使用你的数据库一样。<br><br>写道:“给我看你的流程图,藏好你的表格,我将继续被…</p>
评论点赞收藏55 天前

Introducing Auto-Purchasing for Shelley Tokens

We’re happy to announce that you can now enable auto-purchasing of Shelley Tokens. Previously, you had to manually purchase more credits every time you exhausted your token store. With auto-purchasing...
评论点赞收藏55 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。