Open Design 能替代 Claude Design 吗?把编码 Agent 变成设计引擎的工程边界

如果你已经习惯让 Claude Code 或 Codex 写业务代码,那么下一个很自然的问题是:能不能让同一个 Agent 顺手把产品原型、落地页、PPT、甚至一段演示视频也做出来? 我以前对这类“AI 做设计”的项目比较警惕。原因很简单:很多工具只是把 prompt 包了一层漂亮 UI,最后产物看起来像模板站,改两轮就塌。但最近 Hacker News 上的 Open Design 让我多看了几眼。它不是另一个单点生成器,而是把 Claude Code、Codex、Cursor Agent、Gemini CLI、Qwen、Copilot CLI 等命令行编码 Agent 当成“设计引擎”,再叠一层本地优先的技能、设计系统、沙盒预览和导出链路。项目 README 直接把自己定位成 Claude Design 的开源替代。 这句话听起来很大,但工程上真正有意思的不是“替代 Claude Design”,而是它暴露了一个更具体的搜索问题:设计工作流到底应该由专门的设计模型驱动,还是由已经会读文件、改代码、跑命令的 Coding Agent 驱动? 我的判断是:Open Design 不一定会马上成为生产级设计平台,但它代表了一条很值得关注的路线——把设计从“生成一张图”拉回到“生成一个可运行、可审查、可导出的工程项目”。 它不是文生图工具,而是把设计任务工程化 Open Design 的 README 里有几个关键词很关键:local-first、BYOK、agent CLI auto-detect、Skills、Design Systems、sandboxed preview、HTML/PDF/PPTX/MP4 export。翻成人话就是:它不试图自己训练一个万能设计模型,而是把你机器上已有的 Agent CLI 调起来,让 Agent 在一个受控项目里生成和修改设计资产。 这和很多 AI 设计产品的差别很大。后者通常是“输入一句话,得到一个不可解释的视觉结果”;Open Design 更像是“给 Agent 一个设计系统、任务说明和预览环境,让它持续修改文件,直到产物可运行”。 说白了,它把设计任务变成了一种软件工程任务。 这件事的价值在于可迭代性。一个登录页、一份销售 deck、一个移动端交互原型,本质上不只是图片,而是一组结构、样式、文案、资源和导出规则。Coding Agent 已经擅长处理这些东西:读项目、改组件、运行构建、根据错误日志修复。Open Design 做的是把这些能力迁移到设计场景。 这里我会联想到之前写过的 Claude Code Routines:真正稳定的 Agent 工作流,很少靠一次神奇 prompt,而是靠可复用步骤、上下文约束和反馈循环。Open Design 的 Skills 和 Design Systems,本质上也是在给 Agent 建立可复用的“套路”。 ...

May 4, 2026 · 2 min · Hypho

PyTorch Lightning 供应链攻击复盘:AI 训练依赖为什么不能只靠 pip install

如果你在训练脚本里写过 pip install lightning,这次事件就不只是安全圈的新闻。它提醒的是一个更难听的事实:很多 AI 团队的“训练基础设施”,其实建立在一条几乎没人认真审计的依赖链上。模型代码、数据集、实验追踪、云端凭证都在同一个环境里跑,任何一个热门 Python 包被污染,攻击面都会比普通 Web 服务更肥。 HN 上这条 Semgrep 披露 很快冲到前排,原因也不复杂:被点名的是 Lightning 生态里的 lightning 包。Semgrep 的研究文章称,PyPI 上 lightning 2.6.2 和 2.6.3 在 2026 年 4 月 30 日被发布为恶意版本,导入时会执行隐藏在 _runtime 目录里的混淆 JavaScript payload,尝试窃取凭证、认证 token、环境变量和云端 secret,并带有 Shai-Hulud 风格的仓库投毒行为。原文细节见 Semgrep: Shai-Hulud Themed Malware Found in the PyTorch Lightning AI Training Library。 我不想把这篇写成“某某包又中招了”的快讯。快讯今天看完,明天就忘。更值得拆的是:为什么 AI/ML 工程里的同类事故破坏力特别大?以及,一个现实团队到底应该改哪几件事。 先把边界说清楚。PyTorch Lightning 本身是一个真实、活跃且规模很大的开源项目,GitHub 仓库 Lightning-AI/pytorch-lightning 有 3 万级 stars,近期仍有提交;PyPI 上当前可见的 lightning 项目页 也显示稳定版本和维护者信息。这类事件的重点通常不是“项目没价值”,而是“发布链路或账号链路被污染后,价值越大的包越适合被当成入口”。 说白了,热门依赖就是最好的投递渠道。 AI 训练环境为什么更危险?第一,它天然带 secret。为了拉数据、写 S3、连实验平台、访问模型 API、推送镜像,训练机里经常有 AWS_ACCESS_KEY_ID、Hugging Face token、Weights & Biases key、GitHub token、数据库只读账号,甚至还有企业内部对象存储凭证。普通后端服务至少还会被平台团队逼着走 secret manager;很多研究环境则是 .env、notebook、shell history 混着来。 ...

May 1, 2026 · 2 min · Hypho

VibeVoice 能做生产级语音 AI 吗?我更关心它的工程边界

VibeVoice 在 HN 上冲到三百多分时,我第一反应不是“又一个开源 TTS 火了”。真正值得看的是另一个问题:语音 AI 开始从 demo 音质竞争,转向能不能被塞进真实产品链路。 这件事对做 AI 应用的人很现实。文字 Agent 已经卷到上下文工程、工具调用、评测和成本优化;但一旦加上语音,系统复杂度会立刻翻倍:ASR 要处理长音频、说话人、时间戳和热词;TTS 要处理首包延迟、流式输入、语气一致性和滥用风险。VibeVoice 这次之所以值得写,不是因为微软给了一个“声音很像真人”的玩具,而是因为它把 ASR、实时 TTS、长文本合成和 vLLM/Transformers 集成都放在一个开源项目里,让我们能更清楚地判断:开源 Voice AI 到底离生产系统还有多远。 先说我的结论:VibeVoice 很适合做研究原型、内部工具、长音频转写和语音 Agent 的技术验证;但如果你准备直接把它当成商业级语音生成服务,我会非常谨慎。 不是它不强,而是语音系统的生产风险和文本 LLM 完全不是一个量级。 它真正解决的不是“会说话”,而是语音链路的三个断点 从 VibeVoice GitHub README 看,项目现在不是单一模型,而是一组语音 AI 组件:VibeVoice-ASR-7B、VibeVoice-TTS-1.5B,以及 VibeVoice-Realtime-0.5B。README 里明确提到,ASR 可以处理 60 分钟长音频,输出包含 Who、When、What 的结构化转写;实时 TTS 则强调 streaming text input 和约 200ms 的首次可听延迟。 这几个关键词放在一起,含义很明确:它瞄准的不是“输入一句话,生成一段 wav”这种 demo,而是更接近真实业务里的语音流水线。 比如会议纪要系统,难点通常不是识别一句英文,而是 40 分钟会议里谁说了什么、什么时候说的、专有名词有没有错、跨语言夹杂会不会崩。再比如语音 Agent,用户希望模型一边生成答案一边开口说话,而不是等 LLM 完整吐出 800 字后再合成音频。技术上看,这就是 ASR 的长上下文与说话人结构化、TTS 的流式合成、以及中间 LLM 的 token streaming 能不能顺滑拼起来。 ...

April 29, 2026 · 2 min · Hypho

Chrome Prompt API 能把本地 LLM 带进生产吗?浏览器内置 AI 的工程边界

如果你做过 Web 端 AI 功能,大概率踩过同一个坑:用户只是想总结一段文字、给评论纠错、从页面里问几个问题,你却要把内容发到云端 LLM,承担 token 成本、排队延迟、隐私合规和数据出境解释。 所以我看到 Hacker News 上 The Prompt API 这条讨论冲到两百多分时,第一反应不是“浏览器终于也有 AI 了”,而是:这东西如果真能稳定落地,会改变一类低风险 AI 功能的默认架构。 Chrome 的官方文档把 Prompt API 描述得很直接:网页或 Chrome Extension 可以把自然语言请求发给浏览器内置的 Gemini Nano。换成人话说,就是以前你在前端调用 fetch('/api/ask'),后端再转发给 OpenAI、Gemini 或自建 vLLM;现在有些场景可以直接在浏览器里问本地模型。 这听起来很香,但我不建议现在就把它当成“云端 LLM 替代品”。它更像一块新的系统拼图:适合放在用户设备边缘,处理轻量、局部、对隐私敏感、失败代价不高的任务。 它真正解决的不是“更聪明”,而是“更靠近数据” Prompt API 背后的标准化工作在 Web Machine Learning Community Group 的 prompt-api 仓库 里。这个 Explainer 说得很清楚:今天 Web 开发者要用语言模型,通常只有两条路:调用云端 API,或者自己把模型用 WASM/WebGPU 之类的方式塞进浏览器。前者简单但有隐私和成本问题,后者灵活但工程负担很重。 浏览器内置模型想走第三条路:模型由浏览器或操作系统提供,Web 应用只拿到一个标准 API。 说白了就是:模型不属于你,运行环境也不完全属于你,但调用入口变简单了。 这件事的工程价值不在于 Gemini Nano 一定比你后端的大模型强。恰恰相反,它大概率不会更强。它的价值在于位置:模型离用户输入、页面 DOM、临时草稿、聊天记录更近。很多数据本来就停留在浏览器里,如果只是做摘要、标签、轻量问答、辅助改写,非要绕一圈云端并不总是合理。 Chrome 的 built-in AI 入门文档 也强调了这个方向:内置 AI 让 Web 应用在不部署、不管理自有模型的情况下完成 AI 任务。这个表述很克制,它没有承诺“最强模型”,而是在强调部署和管理成本。 ...

April 28, 2026 · 2 min · Hypho

每个 AI Agent 都在重复昨天的自己:一个开源记忆层想要改变这个

你有没有这种感觉:每天早上醒来,前一天学的东西大部分都忘了? LLM 就是这样工作的。 每个对话 session,模型都是从零开始。它不记得你是谁,不记得你上次做了什么决定,更不记得那个方案三个月前就试过并且失败了。你花 20 分钟解释背景,下一个 session 又得重来一遍。 这不是 AI 的 bug——这是架构限制。大多数 Agent 的"记忆",就是把整段对话历史塞进 prompt,靠上下文窗口撑着。贵、慢,而且换一个新 session 照样失忆。 Stash 想要解决这个问题。它的 slogan 很直接:Your AI has amnesia. We fixed it. 这个项目是做什么的 Stash 是一个开源的持久化记忆层,专门给 AI Agent 用。它不是一个聊天机器人,而是一个基础设施——在 Agent 和外部世界之间加了一层认知处理管道。 核心思路:Episodes become facts. Facts become patterns. Patterns become wisdom. AI 的每一次对话、每一个决定、每一次成功和失败,都被记录下来,经过一个 8 阶段的管道,转化成结构化的知识。事实与事实之间建立关联,关联形成模式,模式沉淀为真正的理解。 原始对话 ↓ Episode 记录(原始事件) ↓ Fact 提取(去掉了时间戳和情绪的事实) ↓ Relationship 建立(事实之间的连接) ↓ Pattern 检测(反复出现的模式) ↓ Goal Tracking(目标状态) ↓ Failure Pattern(失败教训) ↓ Hypothesis & Confidence(假设与置信度衰减) ↓ Wisdom(长期知识) 这个管道是增量的——每次运行只处理新数据,不会重复劳动。 ...

April 27, 2026 · 2 min · Hypho

Agent Vault:用代理模式堵住 AI Agent 的凭证泄露风险

如果你在生产环境跑过 AI Agent,大概率遇到过一个头疼的问题:Agent 怎么安全地访问那些需要 API Key 的服务? 传统方案很简单:把密钥配置在环境变量里,Agent 启动时读取。但这套逻辑是给"确定性程序"设计的——程序行为可预测,不会被外部指令诱导去做你没想过的事。 AI Agent 不一样。它们是非确定性的,能被 prompt injection 诱导,能被恶意网页操纵,能在 RAG 流程里接收有害指令。密钥一旦进了 Agent 的上下文,就等于随时可能被抽走。 这是一个真实存在的威胁,不是理论推演。Infisical 最近的博客详细描述了攻击路径:攻击者通过文档注入、恶意网页或工具调用让 Agent “主动"把环境里的密钥发到攻击者控制的端点。哪怕你上了多层 guardrails,也没有办法保证 Agent 绝对不泄露。 传统解法为什么不够用 业界的应对思路大概分三类: ① 短命凭证(Short-lived Tokens) OAuth2 的 access/refresh token 模式,API 返回临时凭证,过期自动失效。配合自动化密钥轮换,攻击者拿到的那串字符很快变成废纸。 听起来合理,但本质上只是降低窗口期,没有解决根本问题——凭证依然会泄露,攻击者只要在失效前用完就赚了。 ② 防火墙和网络隔离 只允许 Agent 访问特定 IP 段,不允许出站直连。攻击者通过 Agent 发起请求,同样会经过那些被允许的端点,该泄露还是泄露。 ③ 自行实现凭证代理 Anthropic 的 Managed Agents 架构、Vercel 的 credential brokering、Cloudflare 的 outbound workers,都走了同一条路:Agent 的请求经过一个代理层,由代理负责在请求发出前把凭证注入,Agent 自己从不直接接触密钥。 这条路是对的,但每家公司都得自己造轮子。 Agent Vault 的思路 Infisical 新开源的 Agent Vault 把这条路做成了通用产品。它的核心设计原则只有一条:Agent 永远拿不到金库里的密钥,只能通过代理间接使用。 ...

April 24, 2026 · 2 min · Hypho

GoModel:一个人用 Go 写的高性能 AI 网关,511 Stars,LiteLLM 的替代方案

如果你在生产环境里接入了两个以上的 LLM 提供商(OpenAI、Anthropic、Gemini、Groq……),大概率已经踩过这些坑:供应商的 API 格式不统一、重试逻辑要写 N 份、想把 Claude 和 GPT 的调用日志合并看也做不到、换个供应商代码要改一大坨。 这就是 AI Gateway 存在的意义——在你和所有模型供应商之间加一层抽象,对外暴露统一的 OpenAI 兼容 API,你改供应商只需要改配置,不用动业务代码。 这个赛道最知名的是 LiteLLM(Python),今天要聊的是一个用 Go 写的竞争方案——GoModel,4 个月时间,511 Stars,GitHub 最后一次提交就在昨天。 背景:多供应商困境 先说个真实的场景。 你做 AI 产品,接入了 GPT-4o 做主力、Claude Sonnet 做复杂推理、Gemini 2.5 Flash 做快速摘要。三个供应商,三套 SDK,三套错误处理,三套重试策略,三套计费逻辑。然后产品经理说:「能不能把这个月各模型 token 消耗做个报表?」 你翻了三天日志,发现各家日志格式完全不一样,计量单位都不统一。这就是为什么需要一个 AI Gateway——它把所有调用收敛到一个统一的接口,同时帮你把日志、计费、缓存这些事情做好。 LiteLLM 是这个方向最成熟的开源方案,但它是 Python 写的,GIL 限制了并发能力,而且配置相对复杂。 GoModel 是什么 GoModel 是来自波兰华沙的独立开发者 Jakub(GitHub @santiago-pl)的作品,2024 年 12 月开始开发,定位是高性能 AI Gateway,用 Go 编写,对外暴露完整的 OpenAI 兼容 API。 核心特性: 11 家供应商支持:OpenAI、Anthropic、Google Gemini、xAI Grok、OpenRouter、Z.ai、Azure OpenAI、Oracle Cloud AI、Ollama、vLLM OpenAI 兼容端点全覆盖:/v1/chat/completions、/v1/embeddings、/v1/files、/v1/batches 双层响应缓存:精确匹配缓存 + 语义缓存(基于向量相似度),官方案例中语义缓存将命中率从 18% 提升到 60-70% Guardrails:可配置的请求/响应过滤管道 Provider Passthrough:原生端点透传(/p/{provider}/...),绕过网关直接访问供应商特性 Admin API:用量统计、Token 消耗追踪、审计日志 说白了就是:LiteLLM 能做的 GoModel 基本都能做,但用 Go 写的,高并发下性能更好,内存占用地更低。 ...

April 23, 2026 · 2 min · Hypho

Kimi K2 API厂商精度大考:有人100%,有人76%

你选了一个Kimi K2的第三方API提供商,省了30%的成本。结果线上agent跑着跑着开始乱调用工具——你以为模型有问题,实际是API供应商的工程实现挖的坑。 这不是段子,是真实发生的。MoonshotAI最近开源的 K2 Vendor Verifier(551 Stars)干了一件事:他们对市面上的Kimi K2第三方API做了套标准化精度测试,结果发现同样一个模型,经不同厂商分发后,toolcall精度可以从100%掉到76%。 背景:K2的核心能力就是toolcall Kimi K2是MoonshotAI发布的专注于Agent场景的LLM。什么叫"专注Agent"?说白了就是它的核心能力不是聊天,而是toolcall——让模型学会调用外部工具完成复杂任务。 这类能力对精确度要求极高。一次toolcall失败,可能导致整个agentic loop崩溃: 工具ID格式错误 → 解析异常 JSON Schema不匹配 → 调用参数丢失 触发时机错误 → 该调工具时模型"停了" 所以K2的toolcall精度不是"体验问题",是"能不能用"的问题。 测试方法:和官方API同题作答 K2VV的测试思路很直接:用同一套4000条测试请求,分别走官方MoonshotAI API和各第三方厂商API,对比toolcall结果。 核心指标就两个: ① tool_call_f1(触发精度) 模型该不该调用工具、该调用哪个工具。用F1分数衡量,和官方API对比。 ② schema_accuracy(Schema符合度) 模型决定调用工具了,但它生成的JSON参数对不对。用通过schema验证的比例衡量。 结果?差异触目惊心。 数据说话:同卷不同分 K2-thinking版本(temperature=1.0,max_tokens=64000)的成绩单: 厂商 schema_accuracy MoonshotAI(官方) 100% Fireworks 100% InfiniAI 99.89% SiliconFlow 98.96% GMICloud 95.95% vLLM(自托管) 87.22% DeepInfra 86.91% GoogleVertex 85.76% Together 84.63% vLLM自托管版本,schema精度只有87%——意味着每100次toolcall,13次生成的参数过不了schema校验。这在生产环境里是什么概念?你的agent每天跑1000次toolcall,有130次会在运行时崩溃。 K2-0905-preview版本(temperature=0.6)的数据更明显: 厂商 schema_accuracy MoonshotAI(官方) 100% SGLang(自托管) 73.13% vLLM(自托管) 76.00% Volc 72.86% SGLang和vLLM这两个最流行的开源推理框架,精度都没过80%。 根因分析:三个工程坑 K2VV的维护者直接点名了三个最常见的问题: ...

April 22, 2026 · 1 min · Hypho

单卡 207 tok/s:DFlash + DDTree 让 Qwen3.5-27B 在 RTX 3090 上跑出推理新纪录

一个 27B 参数的大模型,在一张 2021 年买的游戏显卡上能跑多快? Lucebox 团队给出了一个让很多人没想到的数字:207.6 token/s。用的还是 Qwen3.5-27B 官方模型,不是蒸馏,不是 INT8 量化残血版——就是 Q4_K_M 量化版本,目标加草稿模型全部加载在一张 24 GB VRAM 的 RTX 3090 上。 这个成绩靠的不是等英伟达下一代消费级显卡,而是对解码算法本身动刀子。 为什么自回归解码是瓶颈 大多数人聊 LLM 推理优化,会先想到量化、KV cache 压缩、batch 并行。但对单卡消费级 GPU 来说,这些都已经做到头了——Q4_K_M 量化能压缩到约 16 GB,再压下去效果肉眼可见地降。 问题出在自回归解码本身。每生成一个 token,GPU 要完整跑一遍 27B 参数的前向传播。27B 参数在 Q4_K_M 下大约 16 GB,VRAM 带宽是 936 GB/s——每次解码都要把这 16 GB 从显存读一遍,理论带宽利用率撑死不到 20%。这是机械式的物理限制,不是软件优化能绕过去的。 speculative decoding(投机解码)解决的就是这个问题:用一个小草稿模型一次生成多个候选 token,再用大模型一次验证整串。如果草稿猜得准,大模型只跑一次就能吐出五六个 token,GPU 计算资源用得更充分。 DFlash:块扩散草稿,比 Chain EAGLE 更容易命中 主流投机解码方案是 EAGLE(及其 chain 版),草稿模型做自回归预测,每步大约能接受 3 个 token。DFlash(2026) 换了个思路:用块扩散(block diffusion) 做草稿——一个 5 层非因果的去噪网络,同时预测多个位置,而不是逐个生成。 ...

April 21, 2026 · 2 min · Hypho

TRELLIS.2 移植到 Mac:没有 NVIDIA 也能跑图片转 3D 模型

如果你只有一台 Mac 电脑,想从单张图片生成 3D 模型——直到今天,这基本上是个伪需求。市面上最好的开源图片转 3D 技术,几乎全部围绕 NVIDIA CUDA 构建,买不到合适的硬件就等于玩不了。 这个局面正在被打破。 TRELLIS.2 是微软 2025 年发表在 CVPR 的论文提出的图片转 3D 方法,在 GitHub 上有 1.2 万星,官方仓库清一色 CUDA 代码。近日有个开发者把它完整移植到了 Apple Silicon,M4 Pro 上 3.5 分钟就能生成一个 40 万顶点的网格模型,全程跑在苹果自研芯片上,不需要半块 NVIDIA 显卡。 移植的核心思路:替换掉 CUDA 依赖 TRELLIS.2 依赖好几个 CUDA 专用的库,官方版本开箱即用但根本不支持 Metal。这不是简单的编译选项问题,而是代码里大量硬编码了 .cuda() 调用和 CUDA 核函数。 移植的思路很直接:找到每一个 CUDA 依赖,用 PyTorch 原生功能或纯 Python 实现替换。 主要替换关系如下: 原始(CUDA) 移植版本 用途 flex_gemm backends/conv_none.py 子流形稀疏 3D 卷积,通过 gather-scatter 实现 o_voxel._C hashmap backends/mesh_extract.py 从双体素网格提取网格面 flash_attn PyTorch SDPA 稀疏变换器的注意力机制 cumesh Stub(跳过) 网格孔填充与简化 nvdiffrast Stub(跳过) 可微分光栅化(仅影响纹理导出) 稀疏 3D 卷积的替换是个技术亮点。原始 flex_gemm 做的是子流形稀疏卷积——3D 生成任务中只有物体表面有数据,不需要对整个空间做卷积。移植版本用 Python 构建空间哈希表,对每个活跃体素收集邻域特征,通过矩阵乘法应用权重,再把结果 scatter 回去。neighbor maps 做了缓存避免重复计算。 ...

April 20, 2026 · 2 min · Hypho