DevTrendsDeveloper trends
Accent color

DEV TRENDS / DAILY DISCOVERIES

May 19, 2026 · What developers are building

Daily discoveries from developer communities, independent makers, and open source.

憩连

项目整理工具,按「空间→项目→时刻→事件→子事件」结构管理事件、文件和讨论,可按时间、主题或重要性灵活排列

Original
—

Z3r0

基于多Agent协同的红队协作平台,内置安全领域专家团队和可控沙盒环境,自动化完成情报、渗透、逆向等工作

Original
DTSecurity & testingDTAgent evaluation & safety
—

NotchNote 把 Macbook 刘海展开为清爽的便签工具

为了解决自己 Vibe coding 时 ADHD 做的一个小便签工具,日常情况下隐藏在 Macbook 的刘海里面,鼠标 Hover 时展开,支持类似 Typora 的markdown 实时编辑渲染,支持上传图片。左上角可以为便签分组,整体设计清爽简约,无感记录。项目完全开源。

Original
DTSoftware developmentDTContent / resource
—

免费GPT Image 2生图工具

推荐一款基于GPT Image 2模型搭建的免费生图工具,可以完全免费体验GPT Image 2模型: Mini GPT Image 2 如果人多,使用上会需要排队,但是好处是完全不用注册

Original
—

Vogen:免费 AI 语音合成与声音克隆工具

最近用过一个叫 Vogen 的工具,做播客和短视频配音挺好用的。 主要两个功能:文字转语音,以及声音克隆(上传一段音频就能复刻那个声线)。比较特别的是支持情感控制,同一句话可以用高兴、难过、愤怒等不同情绪输出,听起来比较自然。 目前完全免费,没有注册门槛。适合内容创作者、播客主和独立游戏开发者。

Original
DTContent creationDTLifestyle & entertainment
—

Z3r0:基于多Agent协同的红队协作平台

Z3r0 是一个面向企业授权红队行动、授权安全评估、代码审计和安全研究场景的多 Agent 工作台。 平台以主控安全 Agent、专业 Agent 和 Docker 执行边界组织任务,使计划制定、证据收集、漏洞验证、人工接管和过程复盘保持在同一套受控工作流中。内置的安全沙盒环境集成了常用的安全工具,为 Agent 团队提供安全可靠的测试环境,并允许人工通过终端、noVNC和文件管理器进行接管交互。 部分截图如下: 工作台 解决 CTF Web 题 解决 CTF Reverse 题 网站地址:

Original
DTSecurity & testingDTResearch & learningDTAgent orchestration
—

我们用Codex手搓了一个用AI帮你找人的工具

推荐一个自己手搓的项目——AgentMe 敲代码的兄弟们应该都经历过求职、找实习、找兼职的焦虑 —— 海投几十份简历石沉大海,好不容易收到回复,却要花几小时和 HR 反复确认岗位细节;想找兼职,筛选信息就要翻遍各种社群,沟通后才发现需求不匹配。很多低效的筛选、沟通环节,耗光了本该用来聚焦核心能力的精力。 这就是我们做 AgentMe 的初衷。产品的核心功能是根据你的需求帮你自动进行匹配、筛选和沟通的全流程,用户只需要确定最终的沟通结果。 你只要设置好你的需求,它会自动筛选匹配的机会,还能代替你和招聘方 / 合作方沟通基础信息 —— 比如岗位职责、工作时间、报酬细节,甚至帮你预约面试。 不用再手动筛选几百条无效信息,不用反复回复 “是否接受远程”“实习期多久” 这类重复问题,AI 会把筛选后的精准机会、沟通结果整理好推给你,让你直接聚焦核心:比如准备面试、打磨作品,或是和对方深入聊合作细节。 如果有关于创业的一些想法也欢迎大家和我一起沟通交流! agentme.cn

Original
DTBusiness & growthDTSoftware developmentDTVertical agent
—

AI 越省力,人越累:从帕金森定律到 Token 浪费

帕金森定律讽刺的是人:人会用无效的工作填满时间;安迪比尔定律揭露的是产业:软件会用臃肿的身躯吃掉硬件的进步。两条定律相隔数十年,揭示的却是同一种荒诞——资源不会被节约,只会被消耗。节约不会带来奖励,只会让下次的预算变少。挥霍,反而成了证明存在感的唯一方式。 如今,这场循环悄然进入了第三个时代,主角变成了我们和AI。 2026年,中国日均Token调用量突破140万亿次,是2024年初的一千多倍。大语言模型的推理成本看似不断下探,但每个用户的消耗账单却不降反升。经济学家有一个词叫“杰文斯悖论”:技术进步提高了资源使用效率,总消耗量反而暴涨。Token正是这条悖论的最新祭品。我们本可以用一句精炼的提示词完成的任务,却被拆解成多个高配模型参与的多智能体协作流程。一个简单的需求,先让模型A总结,再让模型B规划,再让模型C润色,最后让模型D来“挑战”。每一个中间环节都在正当地、高效地消耗Token,而最终输出和最初版本可能毫无差异。帕金森笔下那些为了显得忙碌而制造出来的无效工作,如今换上了一件科技感十足的外衣——它的名字叫“多智能体协作”。 摘要自

Original
DTAgent orchestration
—

设计稿自己会说话:我用 Claude 给 Figma 做了个 AI 上下文插件

设计稿自己会说话:我用 Claude 给 Figma 做了个 AI 上下文插件 读完这篇文章,你会了解如何用 Figma Plugin API 提取设计稿的结构化信息,并通过 Claude 将其转化为开发者可读的自然语言描述。 背景:设计稿交付的信息断层 做前端的都经历过这种场景:设计师丢过来一个 Figma ,你打开一看——嗯,好看。然后呢? 这个间距是固定的还是响应式的? 这组卡片是横向滚动还是换行? 这个组件在不同状态下长什么样? 这些信息藏在设计师的脑子里,靠评审会口头传达,靠 Figma 批注零散记录。结果就是:开发凭感觉还原,设计反复走查,双方都在做低效沟通。 我想解决的问题很简单:让设计稿自己说话。自动从 Figma 节点中提取布局、样式、组件关系,然后用 AI 生成一段开发者能直接看懂的上下文描述。 方案设计 整体架构分三层: mermaid graph LR A[Figma Plugin UI] B[Plugin Main Thread] B C[节点树遍历 & 信息提取] C D[结构化 JSON] D E[Claude API] E F[自然语言描述] F A 核心流程: 1. 用户在 Figma 中选中一个 Frame 或组件 2. 插件递归遍历选中节点的子树,提取布局、样式、组件元信息 3. 将提取结果组织成结构化 JSON 4. 把 JSON 作为上下文发送给 Claude,让它生成面向开发者的描述 5. 描述结果展示在插件面板中,支持复制 选择在插件端做信息提取而不是直接截图丢给多模态模型,原因有两个:一是结构化数据比截图更精确(像素级的间距、具体的 token 名称这些截图看不出来);二是 token 消耗可控,一个中等复杂度的页面提取出来大概 23K tokens,远比图片便宜。 实现:节点树遍历与信息提取 Figma Plugin API 的节点树结构和 DOM 类似,每个节点有 type、布局属性、样式属性。核心是一个递归遍历函数,针对不同节点类型提取不同信息: typescript interface NodeContext { type: string; name: string; layout?: LayoutInfo; style?: StyleInfo; children?: NodeContext[]; componentMeta?: ComponentMeta; } function extractNodeContext(node: SceneNode, depth = 0): NodeContext | null { if (!node.visible || depth 8) return null; const context: NodeContext = { type: node.type, name: node.name, }; if ('layoutMode' in node && node.layoutMode 'NONE') { context.layout = { direction: node.layoutMode, gap: node.itemSpacing, padding: { top: node.paddingTop, right: node.paddingRight, bottom: node.paddingBottom, left: node.paddingLeft, }, sizing: { width: node.primaryAxisSizingMode, height: node.counterAxisSizingMode, }, }; } if ('fills' in node || 'strokes' in node) { context.style = extractStyleInfo(node); } if (node.type === 'INSTANCE') { context.componentMeta = { componentName: node.mainComponent?.name ?? 'unknown', overrides: getOverrideProperties(node), }; } if ('children' in node) { context.children = node.children .map(child = extractNodeContext(child, depth + 1)) .filter(Boolean) as NodeContext[]; } return context; } 几个关键决策: 深度限制设为 8 层。Figma 设计稿嵌套可以非常深(尤其是用了 Auto Layout 嵌套的复杂布局),但超过 8 层的细节对开发者理解整体结构帮助不大,反而会让 token 爆炸。 跳过不可见节点。隐藏图层通常是设计师的草稿或废弃方案,没必要描述。 组件实例只记录 override。如果一个 Instance 没有任何覆盖属性,说明它和主组件完全一致,只需要引用组件名即可。 实现:Prompt 工程与 Claude 调用 拿到结构化 JSON 后,需要让 Claude 理解这些数据并生成有用的描述。直接把整棵 JSON 树丢进去效果不好——Claude 会逐字翻译 JSON 字段,产出一堆"该节点的 layoutMode 为 VERTICAL"这种废话。 最终的 prompt 策略是角色 + 约束 + 示例: typescript function buildPrompt(context: NodeContext): string { return 你是一个资深前端开发者的助手。下面是从 Figma 设计稿中提取的结构化信息。 请基于这些信息,生成一段面向前端开发者的上下文描述,帮助他们理解: 1. 整体布局结构和响应式策略 2. 关键组件的用途和状态 3. 需要注意的间距、对齐、层级关系 4. 与设计系统组件的对应关系(如果有) 要求: 用开发者熟悉的术语(flex、grid、gap、padding) 指出哪些值是固定的、哪些应该是响应式的 如果发现设计系统组件,说明组件名和传入的 props 不要逐字翻译 JSON,要提炼有价值的信息 控制在 300 字以内 设计稿结构数据: ${JSON.stringify(context, null, 2)}; } 调用 Claude API 时用的是 claudesonnet46,在速度和质量之间取了平衡。对于一个中等复杂度的 Frame,响应时间大概 23 秒,可以接受。 typescript async function generateDescription(context: NodeContext): Promise<string { const response = await anthropic.messages.create({ model: 'claudesonnet4620250514', maxtokens: 1024, messages: [{ role: 'user', content: buildPrompt(context) }], }); return response.content[0].type === 'text' ? response.content[0].text : ''; } 踩坑与优化 坑 1:大页面 token 超限 一个完整的落地页可能有上百个节点,提取出来的 JSON 轻松超过 10K tokens。解决方案是分块处理:先对顶层子节点做一次概览描述,再允许用户点击具体区域获取详细描述。这样每次请求控制在 3K tokens 以内。 坑 2:Figma Plugin 的 sandbox 限制 Figma 插件的 main thread 跑在 sandbox 里,不能直接发网络请求。需要通过 figma.ui.postMessage 把数据传给 UI 层(一个 iframe),由 UI 层调用 Claude API。这个通信模型一开始让我绕了弯路——在 main thread 里写了半天 fetch 才发现根本跑不通。 typescript // main thread: 提取完数据后发给 UI figma.ui.postMessage({ type: 'contextready', payload: context }); // UI thread: 收到数据后调用 API window.onmessage = async (event) = { if (event.data.pluginMessage.type === 'contextready') { const = await generateDescription(event.data.pluginMessage.payload); // 展示结果... } }; 坑 3:描述质量不稳定 早期版本生成的描述时好时坏,有时候会输出"这是一个漂亮的设计"这种没用的话。加了 fewshot 示例后明显改善——在 prompt 里放了两个好的描述样本,Claude 就能稳定输出结构化、有信息量的内容。 快速上手 项目已发布到 npm,推荐用 npx 直接使用,无需安装: json { "mcpServers": { "figma": { "command": "npx", "args": ["y", "figmaaicontext"], "env": { "FIGMATOKEN": "figdyourtoken" } } } } 把这段配置加到你的 MCP 客户端配置文件中即可。不同客户端的配置路径: | 客户端 | 配置路径 | ||| | Claude Desktop | ~/Library/Application Support/Claude/claudedesktopconfig.json (macOS) | | Claude Code | .claude/settings.json 中的 mcpServers 字段 | | Cursor | Settings → MCP → Add Server | | VS Code (Copilot) | .vscode/mcp.json | 获取 Figma Token:登录 Figma → Settings → Personal Access Tokens → 创建新 token,复制 figd 开头的字符串。 配置完成后,你的 AI 编辑器就能直接调用这些工具了: getnode — 获取 AI 友好格式的节点数据(比原始 JSON 节省 60%+ token) getpageforcodegen — 一次性获取完整的代码生成上下文 getnodecss — 直接输出 CSS 或 Tailwind 类名 searchnodes — 按名称/类型快速定位节点 diffnodes — 对比节点差异,追踪设计变更 也支持全局安装或从源码构建,详见 GitHub README。 效果与总结 目前这个插件在团队内部使用,覆盖了日常 80% 的设计交付场景。几个数据: 平均每个 Frame 的描述生成时间:23 秒 设计走查中"这里是什么意思"类问题减少约 60% 开发者反馈最有用的信息:响应式策略和组件 props 映射 适用场景:设计系统成熟、组件化程度高的项目效果最好。如果设计稿本身就是一堆绝对定位的矩形,提取出来的结构信息价值有限。 后续规划: 支持批量处理整个页面的所有 Frame 接入设计系统 token 映射,直接输出 CSS 变量名 探索多模态方案作为补充(截图 + 结构数据一起给 Claude) 如果你也在做设计开发协作相关的工具,欢迎交流。项目已开源:github.com/xiehuan123/figmaaicontext

Original
DTData & operationsDTSoftware developmentDTAgent extension
—

Poplingo:AI 原生驱动的浏览器翻译工具

我是一个开发者,日常有大量阅读英文文档、刷 X 和看 YouTube 视频的需求。市面上的翻译工具要么内置固定的翻译引擎,质量不可控,要么附加了很多学习功能,让翻译这件事变得很重。 为了让翻译这件事变得简单轻量,而且交互符合我心意,于是我做了 Poplingo。 它解决的问题很简单: 用 AI 把网页内容翻译成你的母语,并让这个过程尽可能流畅自然。 具体功能: 划词翻译: 选中文本即显示翻译,无多余交互。 全文双语翻译: 一键将整页内容转为双语或纯译文,排版对齐,方便对比阅读。 YouTube 字幕翻译: 在视频中同时显示原文和译文字幕。 和其他工具的主要区别: 不内置翻译模型: 你需要自行配置 API(支持 OpenAI / Gemini / Claude 等兼容接口),翻译质量完全由你选择的模型决定,数据也留在你自己信任的服务端。 不做语言学习功能: 没有单词本、生词提醒、记忆曲线。它的定位是一个阅读工具,不是教学工具。 花了不少精力在视觉和交互的细节上: 字重、间距、阴影、动画曲线等都做了反复调整,为的是让插入的翻译内容尽量像是页面原生的一部分,而不是一块突兀的补丁。 目前是浏览器插件,Chrome 和 Edge 可用。 商店:Poplingo AI 翻译 & 沉浸阅读 产品官网: 功能效果 | 官网功能介绍 | 选项设置 | ||| | width="100%" | width="100%" | | 划词翻译 | X 翻译效果 | ||| | width="100%" | width="100%" | | 全文翻译 | YouTube 字幕翻译 | ||| | width="100%" | width="100%" |

Original
DTResearch & learningDTSoftware developmentDTWeb app
—

: Github star过的仓库太多,该项目助你批量取消star过的仓库

其它 Github star过的仓库太多,该项目助你批量取消star过的仓库 StarSweep 是一款网页应用,用于审查、筛选并安全地批量取消星标 GitHub 。它专为拥有数百个星标项目、希望以从容方式判断哪些仍值得保留的用户而设计。 亮点 按推送日期、星标数或名称排序 逐个选择仓库,或全选当前可见结果 批量操作后显示成功与失败的仓库 markdown 截图或演示视频

Original
DTSoftware developmentDTWeb appDTWeb
—

Crayotter:可一句话搜索视频并剪辑的Agent

Python 一句话搜索视频并剪辑 Crayotter 是一个多模态、Agent 驱动的视频自动编辑系统,可以把一条文本需求转化为完整成片。 Crayotter 工作流由 规划(planning)、深度剪辑研究(deep editing research) 和 工具执行(toolbased execution) 三阶段组成,同时支持基于完整日志与可视化轨迹的调试与迭代功能。 亮点 Agent比较麻烦可观测性难以debug,这里着重对AI剪辑全流程做了记录。 markdown 截图或演示视频

Original
DTContent creationDTResearch & learningDTAgent observability
—

LearnHouse

The modern way to teach what you build

DTResearch & learningDTSoftware development
100

imgproxy v4

A fast and secure self-hosted image processing server

DTSecurity & testingDTData & operationsDTWeb app
137

Haystack

Review the pull requests that actually need human attention

DTAgent extensionDTAgent observability
120

Lyricly

Live lyrics in your dynamic Notch & floating on your desktop

DTDesktop productivityDTLifestyle & entertainmentDTDesktop app
74

calog.cc

Chat-based calorie tracker that actually knows desi food

DTData & operations
86

Thinnest AI

Build Voice AI Agents in 100+ languages for ₹1.5/min

DTData & operationsDTBusiness & growthDTAgent extension
96

DEV TRENDS / COMMUNITY

Discuss this edition

Sign in with GitHub to share a thought, question, or useful follow-up.

Open discussions ↗