普通视图

发现新文章,点击刷新页面。
昨天 — 2025年7月2日独立博客

提高效率的终极秘诀是说“不”

作者 雅余
2025年7月2日 14:53

经济学家蒂姆·哈福德(Tim Harford):“每当我们对一个请求说‘是’的时候,我们同时也在对这段时间可能完成的其他事情说‘不’。” 一旦你承诺了某件事,你就已经决定了未来这段时间将如何度过。

浪费在无关紧要的事情上的努力,比浪费在效率低下的事情上的努力要多。如果是这样的话,消除任务是比优化任务更有用的技能。

彼得·德鲁克(Peter Drucker):“没有什么比高效地完成根本不应该做的事情更没用的了。” 说“不”并不意味着你永远不会做任何有趣的、创新的或自发的事情。它只是意味着你以一种专注的方式说 YES。一旦你排除了干扰,你就可以对任何可能让你朝着正确方向前进的机会说“是”了。

—— James Clear [原文链接]

活人感

作者 ONO
2025年7月2日 11:03

这个博客建立之初,就认识了第一个一起写博客的朋友,到现在已经差不多有 3 年多了,他最近聊起了一件事,让我有些意外,他看到了我一点「正常人」的模样。这家伙也是对我使用「疑点管理系统」的人,即通过收集聊天内容确立内在矛盾和疑点的系统。

我并不反感这件事,甚至觉得有些好玩,但是他要付出的「代价」就是我会通过反向利用疑点管理系统给出一点点小小的「污染数据」。所以又必须要定期修正一下我的「活人感」,我并不是一个希望藏着掖着的人,大部分时间我都会对值得真诚袒露的人行知合一地表达自己,所以后来我跟这家伙玩过一个「游戏」,就是让他问我三个他最关心的问题,我们彼此保证如实回答问题。当然,这些内容很有可能又会变成「疑点管理系统」的一部分,不过我不介意。

但是,我也很好奇,为什么他会突然觉得我有了「正常人」的活人感,他大概提到的是我在《催产素之战》里描写的家庭琐碎,让他觉得我是一个「也会脱了裤子拉屎的人」。所以回想起来,责任也在我,我刚出现的时候,确实是一个「异类」。在 2022 年的时候我还在进行每日写作,当时也遭到很多不理解的质疑,认为我是在洗稿别人的文章增加博客的曝光度。也有人努力想要和我建立友情链接,但是我都「高高在上」地拒绝了,可能这样的人设一开始对他来说本就是一个「活人感」很低的人。


活死人和死活人

虽然没有在鼓吹「死亡」,但确实是我经历过一次濒死体验后,我的性格和想法发生了巨大的转变。我跟别人开玩笑说,我当时被 120 拖走的时候,是在 5 点半放学的时间,救护车停在幼儿园旁边,当我像一坨摊开的死肉被推上救护车时,所有的小朋友都惊叫着「哈哈哈那个人被拖走了耶」。

人在死亡进程面前,就是一坨等待腐烂的肉。

当你意识到生命会以一种毫无尊严的方式维系着最后的体征时,确定了死亡就是最终每个人的结局,也是任何人事物的结局时,一切就变得不那么可怕了。而且在那个时候你就会明白,每个人努力营造的人设、隐藏的秘密、被旁人胡乱猜测的真相都会变得不受控制。

最可悲的是,说了一千遍的谎话,最终相信的只可能是自己,而那些被揭露的真相,一句真话也可以毁掉一千句谎言。

因为死亡而被卷入到所谓的真相世界里的人,就是所谓的「死活人」,他们的生理或是在关系中已经死亡,但是作为符号还存在于流言蜚语之中,他们精心搭建的关于自我的包装,最终都会被一层一层地拆掉,他没有解释的权利,所有既往的事实都可能会被篡改成另一个版本,解读出另一个更可恶可恨可悲的真相。

我知道这是必然发生的事实,所以我尽量做到表里合一,当流言蜚语想要拆穿所谓的「包装」时,我就是我,我已经让我身边的人知道那就是我,包装纸无论怎么撕,内核都是一个稳定的自己。

所以从那一次死亡体验之后,我懒得再营造自己的「朋友圈」,我注销了所有的简中社交媒体,仅仅保留了定期删减只维持 100 个好友的微信及朋友圈、这个博客、用来碎片式记录的 Telegram 频道,和我跟老婆与朋友们做的播客。这几个对外窗口都是行知合一的状态,不会因为平台不同而包装成不同的自己。比如有人讽刺我的声音难听,我总不可能为了维护形象在未来的播客里都使用变声器吧。

我在尽量避免自己成为「活死人」,就是朋友圈里那些没到周末都过得光鲜亮丽,但是周末都销声匿迹,见面只会抱怨工作感情和孩子,但朋友圈永远都在风和日丽岁月静好的人,哪一个才是真实的自己?

他们活在精装修的朋友圈里,却死在了日复一日的齿轮之中。


无法穿脱的外套

我并没有在嘲讽那些精装修朋友圈的人,只是这样的谎言他们比谁都清楚,但又比谁都相信。这便是主体性的事:

简单来说,大部分时间我们活在关系和人设里,因为这是社会关系所要求的「社会属性」,在这些身份之下,我们确实有很多话很多事是不被允许的,这个身份就像是包裹住主体性内核——客观我的「外套」。因为越来越多的正向反馈来自于人设或是关系里的他人,于是幻想我的部分渐渐占据了主体性的部分,为了得到更多的好评,人们开始不再愿意脱下那件「外套」,甚至说服和压制自己真实的想法,以顺从幻想我在别人眼里活着的样子和要求。

有一天,他累了,想要脱下外套时,发现它已经和肉长在了一起,再想要顺利地脱下来,就意味着要把自己撕得血肉模糊,所以干脆就穿好这件衣服,认为这就是自己最本来的样子,继续去追求那些幻想我所带来的好处。但是人言可畏,每个人不可能永远被他人所喜欢,总有一天,那些负评、质疑、否定会开始出现,为了自己的华丽外套不被嘲笑,他只能顺着别人的评价,修正自己的模样,以追求那个最完美的人设,直到自己已经完全忘记了外套下面的自己——当然,这个时候有一个非常完美的外归因——「这都是他们想要的,我为了做好一个父亲,我必须做出这样的牺牲……」

意识到那是一件「外套」已经不是件容易的事,更别说要试着脱下「外套」以袒露真实。比如那些网红靠着自己「外套」已经获得了如今的资源,再想要让他们做自己,已经不是容易事,因为他们必须要背负更多的骂名,人们都爱看神像从神坛上被拽下的桥段。当初的 Papi 酱,当她被发现自己的孩子随父姓时,她当初建立的「女性独立」的形象就变成了反噬她的利刃——但这是她的生活,是她自己的选择,但人们只能看到她穿上「外套」的模样。好在她一直是一个表里如一的人,所谓的人设对她而言并不是唯一赚钱的能力,她到现在还能做自己,也是一件幸事。

但是有多少人愿意真正地脱下「外套」呢?真实的自己往往被大量的自卑、羞耻、不可告人的秘密、无法摆脱的欲望所勾连,仿佛是各种穿皮刺骨的钩子,把皮囊勾拉成丑陋的模样。但谁又在乎呢?他人的评价永远在造神和毁神的游戏里来回摆荡,无论做什么最终都会变成他人用来刺向自己的利刃。

那还不如告诉对方,你刺我哪里最痛,因为你也必须要明白,当你真的做出了这样的决定,我也知道如何伤害你是最残忍的。所谓的「晒太阳」就是将「外套」脱掉,笑着自嘲、把羞耻变成故事,别人就再没有了攻击的机会,因为你自己已经化解了最接近死亡的「羞耻感」。


他人即地狱

既然他人拥有绝对的评判权,无论真是与否,在他们看来都可能是「虚伪」——就像这位朋友对我做出的「正常人」的评价,或许一开始我们认识的时候,他觉得我是个高高在上的人,不应该会如此直白地表露自己「人」的部分——但最开始那就是没有穿外套的我。

所以无论如何,我们都很难改变自己在别人评价系统里的初始与希望角色,那就不如做好自己,发生在他人的地狱里,任何一句话一件事都可能成为被审判的证据。

地狱有几层,凭什么没有你。

其实很难说保持自己的「活人感」会带来什么好处,因为外界的评价是不为我们所控的,但回到主体性的三个圆环,内核越稳定,其实就获得了更强大的面对外部评价的能力,这样做会避免大量的内耗。

然而,「活人感」本身没有标准,所以大部分的人仍然会以「合群」作为一个参考标准,就拿简中博客圈为例,比如一些人积极地到处建立友情链接、积极与他人互动,是个非常合群的活人感十足的人,按照这个标准没有多错,但认定标准仍然在他人;但并不意味着「不合群」的人就没有「活人感」了。

合群对你来说很重要的话,那就祝福你在下油锅的时候能跟着朋友一块炸吧。

我真的是在祝福。

HTTPie:重塑 API 调试体验的人性化工具

2025年7月1日 08:00

在后端开发的日常工作中,API 调试几乎占据了开发时间的三分之一。curl 命令功能强大,语法却很复杂。Postman 功能丰富,界面变得臃肿,订阅策略也让人困惑。HTTPie 为这个领域带来了新的选择。

HTTPie 最打动人的地方是对「人性化」的追求。它让复杂的 HTTP 请求变得简单直观。

  1. 可视化构建请求:通过界面点击构建 HTTP 请求,支持认证、请求头、请求体等所有参数,支持 REST、GraphQL 和传统 HTTP 协议。。

  2. 导出多种格式:一键导出为 curl、HTTPie CLI 等代码格式,方便分享和文档编写。

  3. 响应内容高亮:自动格式化 JSON,支持语法高亮和内容搜索。

  4. 离线使用:无需注册即可使用全部功能,支持跨设备数据同步。

picture-2025-07-01-14-57-36

快速上手

安装配置

HTTPie 提供两种使用方式。Web 版本可直接访问 https://httpie.io/app 或使用简短别名 https://req.new。桌面版本支持 macOS、Windows 和 Linux 三大平台,从 https://httpie.io/download 下载对应版本即可。

对于 Linux 用户,需要注意的是该版本使用 AppImage 格式,建议配合 AppImageLauncher 使用以获得更好的体验。

基础操作

创建请求只需两个必要元素:HTTP 方法和 URL。HTTPie 会根据请求内容智能切换方法(添加请求体时自动从 GET 切换为 POST)。

HTTPie 支持直接导入 curl 命令。在 URL 输入框中粘贴任何 curl 命令,工具会自动解析并填充相应的请求参数。这对从 Chrome 开发者工具或其他平台迁移过来的开发者很友好。你也可以通过侧边栏的「+」菜单选择「Import」功能批量导入 curl 命令。

请求头设置通过专门的表单完成,支持自动补全和重复头部的智能合并。认证方式涵盖 Basic、Bearer Token 和 API Key 三种主流方案。

请求体支持文本、表单、文件上传和 GraphQL 四种类型,每种类型都有针对性的编辑器和预览功能。

5021e38f31ecb411b0e075fc97d83666.gif

设计理念

降低认知负荷

传统的 API 调试工具追求功能的完备性。HTTPie 选择了相反的路径。它将复杂的 HTTP 协议抽象为几个核心概念:方法、URL、头部、认证和请求体。这种抽象降低了用户的认知负荷。

工作流整合

HTTPie 的变量系统和环境管理功能体现了对真实开发场景的理解。开发者需要在不同环境(开发、测试、生产)之间切换。传统工具不支持或操作繁琐。HTTPie 的环境系统允许用户定义变量,在不同环境间快速切换。

集合(Collections)功能优化了团队协作体验。相关的 API 请求可以组织在同一集合中,支持继承认证信息和环境变量,避免重复配置。

picture-2025-07-01-15-04-50

HTTPie 在数据管理方面充分考虑了现代开发者的工作模式。工具支持完全离线使用。在网络不稳定或安全要求较高的环境中,开发者仍能正常进行 API 调试工作。不愿意注册账户的用户可以在本地使用所有核心功能。

需要跨设备协作时,实时同步功能确保了数据的一致性。在办公室台式机上创建的请求集合,在家中笔记本上修改的环境配置,都能自动同步到所有设备。这种灵活性让 HTTPie 能够适应不同团队的工作习惯和安全要求。

AI 辅助功能

HTTPie 最近引入的 AI 辅助功能展现了其前瞻性思维。用户可以用自然语言描述需求,AI 会生成对应的 HTTP 请求。例如,输入「获取 GitHub 用户列表」,AI 会自动构建相应的 GitHub API 请求。

这种功能降低了 API 文档的查阅成本,为不熟悉特定 API 的开发者提供了快速入门的途径。

picture-2025-07-01-15-02-44

最后

选择 HTTPie 意味着选择了一种开发哲学:工具应该服务于人,不是让人适应工具。这种理念在快速迭代的开发环境中很重要。

HTTPie 的跨平台特性和数据同步功能确保了团队成员可以在不同设备和操作系统上保持一致的体验。这种一致性对于分布式团队来说至关重要。

HTTPie 重新定义了 API 调试工具的标准。它告诉我们,真正优秀的开发工具不是功能的堆砌,而是对用户需求的深度理解和极致的体验优化。在 API 优先的时代,这样的工具值得每个开发者尝试。

4.2MB 的域名重定向服务

2025年6月29日 08:00

手头囤了一堆闲置域名,想做跳转服务却被 Caddy 的配置文件搞得头疼?这个 4.2MB 的 Go 服务可能正是你需要的解决方案。

domain-redirect 是一个专门解决域名重定向需求的轻量级服务。它把复杂的配置变成几行环境变量。这样既简单又灵活,能满足生产环境的需求。

项目地址: https://github.com/nexmoe/domain-redirect

三分钟上手

最简单的部署方式是使用 Docker:

docker run -d \
  -p 8080:8080 \
  -e DOMAIN_MAPPING_1=example.com->https://target1.com,https://target2.com \
  nexmoe/domain-redirect

这条命令会启动一个重定向服务,将访问example.com的请求轮询转发到两个目标地址。

如果需要更复杂的配置,创建一个docker-compose.yml文件:

version: '3'
services:
  domain-redirect:
    image: nexmoe/domain-redirect
    ports:
      - "8080:8080"
    environment:
      - DOMAIN_MAPPING_1=blog.example.com->https://blog.target.com
      - DOMAIN_MAPPING_2=shop.example.com->https://shop1.com,https://shop2.com
      - PRESERVE_PATH=true
      - INCLUDE_REFERRAL=true
    restart: unless-stopped

现在,所有域名都按配置规则重定向。路径会保留,来源信息会添加到 URL 中用于统计。

完整配置说明

域名映射配置

服务通过环境变量进行配置,每个域名映射规则使用 DOMAIN_MAPPING_* 格式:

DOMAIN_MAPPING_<任意名称>=<域名>-><目标地址1>,<目标地址2>,...

例如:

DOMAIN_MAPPING_1=example.com->https://target1.com,https://target2.com
DOMAIN_MAPPING_BLOG=blog.example.com->https://myblog.com
DOMAIN_MAPPING_SHOP=shop.example.com->https://shop1.com,https://shop2.com,https://shop3.com

功能配置参数

  • PORT: 服务监听端口,默认为 8080
  • PRESERVE_PATH: 是否保持原始路径,默认为 false。设置为 "true" 时,重定向会保留原始请求路径
  • INCLUDE_REFERRAL: 是否携带来源域名信息,默认为 false。设置为 "true" 时,重定向会添加 ref 参数
  • ENABLE_TIMESTAMP: 是否启用时间戳参数,默认为 false。设置为 "true" 时,重定向会添加 _t 参数防止缓存

使用示例

假设配置了完整的参数:

DOMAIN_MAPPING_1=example.com->https://target1.com,https://target2.com
PRESERVE_PATH=true
INCLUDE_REFERRAL=true
ENABLE_TIMESTAMP=true

当访问 http://example.com/api/users 时,可能会重定向到:

https://target1.com/api/users?ref=example.com&_t=1672531200

轻量化

镜像只有 4.2MB,内存占用 1.277MB。轻量化设计带来成本优势,部署和扩展也更方便。

传统的 Web 服务器如 Nginx 或 Apache 镜像有几十 MB。对于重定向需求来说太重了。domain-redirect 用 Go 语言开发。Go 编译后的二进制文件小,运行时开销低。

更重要的是环境变量配置方式的选择。相比配置文件,环境变量在容器化部署中具备天然优势:

  • 容器编排平台(如 Kubernetes)对环境变量有原生支持
  • 配置变更无需重构镜像,只需重启容器
  • 敏感信息可以通过 Secret 管理,避免明文存储

多目标轮询的实际应用场景

多目标轮询是负载均衡的简化版本。它在特定场景下有独特价值。

内容分发是一个典型例子。你有一个域名指向多个 CDN 节点,轮询可以在某个节点出问题时自动切换到备用节点。这比专业负载均衡器更适合小规模项目。

A/B 测试是另一个场景。配置不同的目标地址,将用户流量分配到不同版本的应用,观察用户行为差异。这种方式比专业 A/B 测试平台功能有限,但简单对比测试够用了。

来源追踪与数据分析

INCLUDE_REFERRAL参数启用后,重定向 URL 会自动添加ref参数,值为来源域名。

这个功能解决了跳转服务的关键痛点:流量来源追踪。传统的 HTTP Referer 头经常被浏览器过滤或修改。URL 参数更可靠。

配合 Google Analytics 等统计工具,你能精确知道哪些域名为目标站点带来流量,评估不同域名的价值。这对拥有多个域名的站长很实用。

KISS (Keep It Simple, Stupid)

domain-redirect 的设计不试图成为全能的反向代理。它专注于重定向这一核心功能。

Go 语言的选择值得思考。Go 是编译型语言,部署更一致。你不需要担心目标环境的运行时版本问题。Go 的并发模型天然适合处理大量 HTTP 重定向请求。

轮询状态保存在内存中,重启后重置到第一个目标。这种设计牺牲了状态持久化,但简化了架构复杂度。对重定向服务来说这是合理的权衡。

Firestarter:一键将网站转化为 RAG 聊天机器人

2025年6月29日 08:00

Web 内容的价值正在被重新定义。当我们还在讨论如何优化 SEO、提升页面加载速度时,一个名为 Firestarter 的开源项目却在悄然改变游戏规则:它能在不到一分钟内将任何网站转化为一个可编程查询的知识接口。

picture-2025-06-29-22-24-12

项目地址:https://github.com/mendableai/firestarter

这不仅仅是又一个聊天机器人工具。Firestarter 的真正革命性在于,它将互联网上分散的静态内容转化为了结构化、可编程的数据源。想象一下,你可以用标准的 OpenAI SDK 直接查询任何网站的内容,就像查询一个训练好的模型一样。

核心功能

一键生成 AI 助手:输入任意网址,1 分钟内自动生成专属聊天机器人 RAG 智能检索:基于 Firecrawl + Upstash 构建的高效语义搜索系统 双重访问模式:提供聊天界面 + OpenAI 兼容 API,满足不同使用需求 多模型支持:兼容 OpenAI、Anthropic、Groq 等主流 LLM 提供商 富内容理解:支持表格、代码、图表等复杂格式的检索和问答 灵活配置:支持自定义爬取深度(10-1000 页)和部署方式 完全开源:GitHub 380+ stars,支持本地部署和深度定制 适用场景:开发文档、产品手册、知识库、客服支持、内容问答

快速上手

在深入技术原理之前,让我们先快速体验一下这个工具的威力。

环境准备

你需要三个 API 密钥:

本地部署

git clone https://github.com/mendableai/firestarter.git
cd firestarter
npm install

创建 .env.local 文件:

FIRECRAWL_API_KEY=your_firecrawl_key
UPSTASH_SEARCH_REST_URL=your_upstash_search_url
UPSTASH_SEARCH_REST_TOKEN=your_upstash_search_token
OPENAI_API_KEY=your_openai_key

启动项目:

npm run dev

打开 http://localhost:3000,输入任意网站 URL,等待索引完成。几十秒后,你就拥有了一个该网站的专属 AI 助手。

编程访问

更令人兴奋的是,你可以通过 OpenAI SDK 直接编程访问:

import OpenAI from 'openai';

const firestarter = new OpenAI({
  apiKey: 'any_string_works_here',
  baseURL: 'http://localhost:3000/api/v1/chat/completions'
});

const completion = await firestarter.chat.completions.create({
  model: 'firecrawl-example-com-12345', // 自动生成的模型名
  messages: [{ role: 'user', content: '这个网站的主要功能是什么?' }],
});

技术架构

Firestarter 的技术选型体现了对现代 Web 开发生态的深刻理解。它没有重新发明轮子,而是巧妙地组合了几个顶级工具。

数据流设计

整个系统的数据流动极其简洁:URL → Firecrawl → Markdown → Upstash → 向量索引 → LLM 查询。每一个环节都选择了该领域的最佳工具,避免了常见的技术债务陷阱。

Firecrawl 负责将复杂的 HTML 转化为干净的 Markdown,这个看似简单的步骤实际上解决了网页抓取中最棘手的问题:如何从充满广告、导航栏、侧边栏的现代网页中提取有价值的内容。

向量工程化

Upstash Search 的选择展现了项目作者对实际部署需求的深度思考。相比于本地部署的向量数据库,Upstash 提供了真正的 serverless 体验:无需管理基础设施,按使用量付费,自动扩缩容。这让 Firestarter 可以轻松部署到 Vercel 这样的平台上。

更重要的是,Upstash 的 API 设计与 Firestarter 的使用场景完美契合。每个网站被映射为一个独立的 namespace,实现了完美的数据隔离,同时支持快速的语义搜索。

OpenAI 兼容层

最令人印象深刻的设计是 OpenAI 兼容的 API 层。这不是简单的模仿,而是对开发者体验的深度优化。

当你为 docs.react.dev 创建聊天机器人时,系统会生成一个模型名如 firecrawl-docs-react-dev-12345。这个命名规则既保证了唯一性,又具备良好的可读性。开发者可以立即明白这个模型对应哪个网站。

// 这样的代码完全符合直觉
const reactDocs = new OpenAI({
  baseURL: 'https://your-firestarter.vercel.app/api/v1/chat/completions'
});

const answer = await reactDocs.chat.completions.create({
  model: 'firecrawl-docs-react-dev-12345',
  messages: [{ role: 'user', content: 'React 18 的并发特性如何工作?' }]
});

开源

Firestarter 的开源选择背后有着清晰的商业逻辑和技术判断。

技术民主化的实现

RAG(检索增强生成)系统的实现复杂度一直是中小团队的技术门槛。从文档处理、向量化、索引构建到查询优化,每个环节都需要专业知识。Firestarter 通过开源将这套完整的技术栈标准化,让任何开发者都能在 30 分钟内搭建一个生产级的 RAG 系统。

这种技术民主化的意义远超工具本身。它改变了知识获取的模式:从「搜索」转向「对话」,从「浏览」转向「查询」。

商业生态的构建

更深层的逻辑在于生态构建。Firestarter 依赖 Firecrawl 和 Upstash,但它通过开源扩大了这些服务的使用场景。这是典型的平台战略:通过免费的工具层增加付费服务层的价值。

对于 Firecrawl 团队而言,每一个使用 Firestarter 的开发者都是潜在的 API 付费用户。这种模式比传统的 SaaS 更具扩展性。

使用场景

企业内部知识管理

将 Firestarter 部署在企业内网中,可以快速为内部文档系统、Wiki、产品手册创建 AI 助手。相比于购买昂贵的企业级 RAG 解决方案,这种方式成本可控且完全自主可控。

技术文档的交互化

对于开源项目维护者,Firestarter 提供了一种全新的文档体验。用户不再需要在大量文档中搜索答案,而是可以直接提问。这种交互方式特别适合复杂的技术文档。

内容创作者的护城河

博客作者、知识付费创作者可以将 Firestarter 作为增值服务。读者不仅可以阅读文章,还能与内容进行对话,获得个性化的解答。这为内容创作提供了新的变现模式。

未来的想象空间

Firestarter 当前的功能已经足够实用,但它的潜力远不止于此。

多模态内容处理

随着多模态 AI 的发展,未来的版本可能支持图片、视频内容的索引和查询。想象一下,你可以向一个电商网站的 AI 助手询问「展示所有红色的连衣裙」。

实时内容同步

当前的实现是一次性索引,未来可能支持实时监控网站更新,自动同步内容变化。这将让 AI 助手始终保持最新的信息。

知识图谱的融合

结合知识图谱技术,AI 助手不仅能回答单一网站的问题,还能进行跨网站的关联分析和推理。

Firestarter 代表了 Web 内容利用方式的根本性变革。它不仅降低了 RAG 技术的使用门槛,更重要的是,它展示了开源如何推动技术创新的民主化。在 AI 时代,像 Firestarter 这样的工具将重新定义我们与信息交互的方式。

从某种意义上说,Firestarter 正在将整个互联网转化为一个巨大的、可查询的知识库。这种转变的深远影响,或许需要时间才能完全显现。

边缘容器时代:Cloudflare Container 如何重构云计算的边界

2025年6月26日 08:00

云计算正在经历第三次革命。第一次是虚拟化解决了硬件资源浪费,第二次是容器化解决了环境一致性问题,第三次则是边缘原生容器——让任何 Docker 镜像都能在全球按需启动,并实现毫秒级精确计费。

Cloudflare Container 于 2025 年 6 月正式进入公测,它不仅仅是又一个容器托管服务,而是对「计算应该在哪里发生」这一根本问题的重新定义。当你的 AI 推理容器可以在用户请求到达的瞬间于距离最近的边缘节点启动,当 FFmpeg 视频处理可以就近处理减少传输延迟,当原本需要包月付费的应用可以按毫秒计费时,整个云计算的经济模型都在被重写。

全新的开发体验

  1. 使用 Container 的工作流程异常简单:只需几行代码定义容器,然后执行 wrangler deploy,就像部署 Worker 一样。无需复杂的 YAML 配置文件或容器编排。

  2. Container 天然全球化:与 Workers 一样,你只需部署到「Region:Earth」——无需为全球应用在 5 个不同区域管理配置文件,一次部署即可覆盖全球 300+ 城市。

  3. 合适的工具组合:在 Workers 和 Containers 之间路由请求变得轻而易举。需要超轻量级和极限扩展性时使用 Worker,需要更强大的计算能力和灵活性时使用 Container。

  4. Container 完全可编程:容器实例按需启动,由 Workers 代码控制生命周期。需要自定义逻辑时,只需编写 JavaScript 代码,而不是花时间串联 API 调用或编写 Kubernetes 操作符。

打破容器与边缘的传统界限

长期以来,容器和边缘计算被视为两条平行线——容器提供灵活性、可移植性和熟悉的开发模型,但需要复杂的编排和区域部署规划;边缘计算带来全球分布和无缝扩展能力,却在运行时支持、编程语言和执行模型上存在明显约束。

Cloudflare 的创新在于彻底消除了这种二元对立。通过将容器平台构建在 Durable Objects 之上,而非改造 Kubernetes 等传统编排系统,实现了既全球分布又与边缘网络深度集成的容器服务。工作负载能够在最佳位置运行,摆脱了传统多区域容器部署的复杂性束缚。

这种架构选择的深远意义在于:开发者不再需要在「容器的灵活性」和「边缘的性能」之间做出权衡,两者第一次实现了真正的统一。

计算模式重构

重新定义容器的时空概念

传统容器技术建立在「长期运行」和「地理固定」两个核心假设上。Container 彻底打破了这些假设:

时间维度重构:容器可以在毫秒级完成状态保存和恢复。冷启动从「需要避免的问题」转变为「可以利用的特性」——2-3 秒的启动时间变得可预期,开发者可以通过 sleepAfter 精确控制实例生命周期,让资源利用效率最大化。

空间维度重构:容器根据请求来源和网络状况动态选择最优执行位置。用户在东京发起的视频处理请求会在东京节点执行,同一应用的代码可能同时在伦敦、旧金山、新加坡运行,彼此之间通过 Workers 协调。

这种变化让分布式系统的一致性问题、缓存策略、会话管理等传统架构模式都需要重新审视。状态恢复与冷启动解耦,开发者需要将状态持久化外置到 Durable Objects 或其他存储服务。

持久化策略的多样化选择

Container 的数据持久化策略颠覆了传统「有状态」与「无状态」的二元对立。通过 Durable Objects 作为状态管理的 Sidecar,实现了一种全新的混合模式:容器本身保持无状态,但应用逻辑可以拥有持久化的状态。

这种架构的核心优势在于状态生命周期与容器生命周期的解耦。当容器因为资源优化或故障转移而重启时,业务状态通过 Durable Object 得以延续。

这种模式特别适合需要会话状态但不需要复杂数据库的应用场景。比如 AI 对话系统可以将对话历史保存在 Durable Object 中,每次用户交互时容器从中恢复上下文,处理完成后再次保存。整个过程对用户透明,但避免了传统有状态容器的管理复杂性。

Container 提供了灵活的状态管理选项,开发者可以根据数据特性选择不同的持久化策略:

轻量级状态: 直接使用 Durable Objects 存储,适合会话数据、用户偏好、临时计算结果等小型数据集。支持 SQL 和 KV 两种存储模式,满足不同查询需求。

结构化数据: 集成 D1 数据库实现关系型数据持久化。容器可以在启动时建立数据库连接,利用 Cloudflare 的全球数据库网络确保低延迟访问。

大文件存储: R2 对象存储处理媒体文件、模型文件、数据集等大容量数据。容器可以按需下载和上传,避免长期占用本地存储空间。

跨地域同步: 利用 Durable Objects 的强一致性特性,实现跨边缘节点的状态同步。当用户从不同地区访问时,状态会自动同步到最近的执行节点。

这种多层次的持久化架构让开发者可以实现精细化的状态管理策略,在性能、成本和一致性之间找到最佳平衡。

行业影响与展望

Container 的真正威力不在于技术创新程度,而在于对云计算商业模式的根本性冲击。

传统云服务商的护城河建立在数据中心规模和企业级功能完整性上。Cloudflare 选择了截然不同的路径:不是要替代这些服务,而是在它们之上构建更高效的分发和执行层。这种策略重新定义了竞争维度——当企业习惯按实际使用量付费、按地理位置动态调度资源时,传统的「区域化部署」和「预留实例」模式就显得过于粗糙。

更深层的影响体现在开发范式转变。当容器可以无感知地在全球范围内迁移和调度时,开发者需要重新思考状态管理、数据一致性和错误处理策略。这不仅是技术问题,更是架构哲学的根本转变。

从宏观视角看,Container 代表了云计算从「资源导向」向「需求导向」的演进。计算资源不再是需要预先规划和管理的固定资产,而是按需调用的动态服务。这种转变的最终受益者是那些能够重新设计应用架构、充分利用边缘计算优势的开发者和企业。

边缘原生的时代已经到来,Container 只是开始。

参考

  • https://sliplane.io/blog/cloudflare-released-containers-everything-you-need-to-know
  • https://blog.cloudflare.com/cloudflare-containers-coming-2025/
  • https://lord.technology/2025/04/13/cloudflare-containers-reimagining-global-compute-at-the-edge.html
  • https://blog.cloudflare.com/containers-are-available-in-public-beta-for-simple-global-and-programmable/

Kubernetes 控制器(Controllers)对比表格

2025年6月26日 08:00

在 Kubernetes 中,控制器(Controllers)是用于管理 Pod 生命周期的核心组件。每种控制器都有其特定的使用场景和功能特点。以下是主要控制器类型的详细对比。

控制器对比表格

特性维度 Deployment StatefulSet DaemonSet Job
核心用途 管理无状态应用(Web 服务,API) 管理有状态应用(数据库,消息队列) 在每个节点运行守护进程(监控,日志) 运行一次性批处理任务
应用状态 无状态 有状态 通常无状态 通常无状态
Pod 身份 无固定身份,可任意替换 无论怎么调度,每个 Pod 都有一个永久不变的 ID 与节点绑定 临时身份
存储管理 不需要持久化存储,可使用临时卷 需要稳定的持久化存储(通过 PV/PVC 动态或静态供应) 可选,通常访问主机路径(HostPath)或使用临时存储 通常不需要,可按需挂载卷
部署与扩缩容 无序部署,支持水平扩缩容 有序、逐一地部署、扩缩容和删除(0, 1, 2...) 自动部署到新加入的节点,随节点数增减 控制并行度(parallelism)和完成次数(completions),运行至完成
更新策略 滚动更新(RollingUpdate)、重建(Recreate)。可配置 maxSurgemaxUnavailable 滚动更新(RollingUpdate),支持分区更新(partition)和按需更新(OnDelete 滚动更新(RollingUpdate)、按需更新(OnDelete 不适用,Job 一旦创建,其 Pod 模板不可变
回滚机制 支持自动回滚到历史版本(revisionHistoryLimit 不直接支持,需要手动操作或外部工具 支持回滚 不适用
故障处理 自动重启或重建失败的 Pod 具有相同身份的 Pod 最多只能有一个正在运行,但需手动干预恢复 节点故障时,该节点上的 Pod 随之消失;当节点恢复或有新节点加入时自动创建 Pod 可配置失败重试次数(backoffLimit
关键特性 声明式更新、版本控制与回滚、可暂停/恢复部署 有序性、稳定的网络和存储、Headless Service 支持 节点亲和性、自动部署到新节点、可容忍污点 失败重试、并行执行、完成后自动清理(TTL)
示例用例 Nginx、Tomcat、NodeJS 应用 MySQL、Redis、Kafka、ETCD Fluentd、Prometheus Node Exporter、网络插件 数据迁移、批量计算、备份、ETL 任务
最佳实践 默认选择,适用于多数无状态应用 仅在需要稳定身份或有序操作时使用 用于基础设施和节点级服务 用于会终止的任务,非守护进程

控制器层级关系

Deployment → ReplicaSet → Pod:这是管理无状态应用最常用的模式。用户直接操作 Deployment 对象来声明应用的期望状态(例如,镜像版本、副本数)。Deployment 控制器自身不直接管理 Pod,而是通过创建和管理 ReplicaSet 来实现。当用户更新 Deployment 时(例如,升级应用),Deployment 会创建一个新的 ReplicaSet,并以受控的方式(如滚动更新)将 Pod 从旧的 ReplicaSet 迁移到新的 ReplicaSet。这使得版本控制和回滚成为可能,而 ReplicaSet 只需关注维持指定数量的 Pod 副本这一单一职责。可以说,DeploymentReplicaSet 赋予了声明式更新和历史版本管理的能力。

CronJob → Job → PodCronJob 负责按预定的时间表(Cron 表达式)创建 Job 对象。Job 则负责执行一次性的任务,它会创建一个或多个 Pod 来完成具体工作,并确保它们成功终止。CronJob 本身不管理 Pod,它只关心在正确的时间点触发 Job。这种分层让定时任务的管理和实际任务的执行逻辑分离开来。

StatefulSetDaemonSet 则直接管理 Pod,它们没有中间层的控制器,因为它们提供的 Pod 管理逻辑(如稳定身份、节点绑定)是它们自身的核心功能,不需要通过其他控制器来抽象。

参考资源

Coolify:开源 PaaS 的理想主义与现实主义

2025年6月24日 08:00

云平台的账单又让你心疼了吗?当 Vercel 的 Serverless 函数调用费用超出预期,当 AWS 的复杂计费让人头疼,当 Heroku 停止免费计划,开发者们开始重新审视一个问题:我们真的需要把所有控制权都交给云厂商吗?

Coolify 给出了一个有趣的答案。这个开源项目试图将 Heroku、Netlify 和 Vercel 的便利性带到你自己的服务器上,让开发者既能享受现代 PaaS 的部署体验,又能保持对基础设施的完全控制。

picture-2025-06-26-21-41-50

十分钟上手:从零到部署

在深入分析之前,让我们先看看 Coolify 的实际使用体验。整个安装过程比你想象的要简单。

准备工

你需要一台运行 Ubuntu 22.04+ 或 Debian 11+ 的服务器,最低配置为 2GB RAM。如果你手头没有服务器,推荐使用 Hetzner Cloud 的 CAX11 实例(约 €4.5/月)。

一键安装

SSH 连接到服务器后,执行安装命令:

curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash

安装脚本会自动处理 Docker 环境配置、防火墙设置和 Coolify 服务启动。整个过程通常在 5 分钟内完成。

首次配置

安装完成后,访问 http://你的服务器IP:8000 打开管理界面。创建管理员账户,系统会引导你完成服务器连接配置。Coolify 使用 SSH 密钥与你的服务器通信,这个过程完全自动化。

部署第一个应用

在项目面板中点击创建新应用,选择 Git 仓库作为源。Coolify 支持 GitHub、GitLab、Bitbucket 等主流平台。填入仓库地址,选择部署分支,点击部署。

对于 Next.js、Vue、React 等前端框架,Coolify 会自动识别并应用对应的构建配置。整个过程无需手动编写 Dockerfile 或配置文件。

重新定义 PaaS 的边界

传统云平台的商业模式建立在资源抽象和便利性收费之上。你为了避免运维复杂性,愿意支付高额费用。但这种模式存在几个根本性问题:

成本不透明是最大的痛点。AWS 的计费模型复杂到需要专门的成本优化工程师,Vercel 的 Serverless 函数在高并发场景下费用飞涨。我见过太多项目因为意外的云费用而被迫重构架构。

供应商锁定是另一个隐性成本。当你的应用深度集成了某个云平台的专有服务,迁移成本往往高得让人却步。这种依赖关系让开发者在技术选型时总是需要考虑「出口策略」。

Coolify 的设计理念截然不同。它将 PaaS 的便利性与基础设施的透明性结合,让开发者既能享受一键部署的效率,又能保持对底层环境的完全控制。

这种设计背后的哲学值得深思:技术工具应该增强人的能力,而不是替代人的判断。Coolify 不会替你决定使用什么数据库,不会限制你的资源配置,不会在你不知情的情况下产生额外费用。

架构设计的巧思

Coolify 的技术架构体现了开源软件的一个重要特质:透明性带来的可预测性。

Docker 为核心的抽象层

所有应用都运行在 Docker 容器中,这个选择既保证了环境一致性,又避免了平台锁定。你可以轻松地将 Coolify 部署的应用迁移到任何支持 Docker 的环境中。

基于 SSH 的服务器管理

Coolify 通过 SSH 协议管理目标服务器,这意味着你可以将应用部署到任何可以 SSH 访问的机器上:VPS、家庭服务器,甚至是树莓派。这种设计让基础设施选择完全交还给开发者。

声明式配置与自动化运维

虽然底层使用 Docker Compose,但 Coolify 提供了更高层次的抽象。你只需要声明想要的状态,系统会自动处理容器编排、网络配置、存储挂载等细节。

内置的监控与日志系统

每个部署都有实时日志查看、资源监控和健康检查。这些功能在传统云平台中往往需要额外付费,而在 Coolify 中都是标准配置。

真实场景下的表现

理论上的优势需要在实际使用中验证。我在生产环境中使用 Coolify 部署了几个项目,积累了一些实际经验。

成本控制的优势明显

一个中等规模的 Next.js 应用,在 Vercel 上的月费用约为 $20-40,而使用 Hetzner 的 €7.5/月 VPS 运行 Coolify,可以同时托管 5-10 个类似项目。成本差异在项目规模增长时会更加明显。

部署速度与传统 PaaS 相当

从 Git 推送到应用上线,Coolify 的速度与 Netlify、Vercel 基本相当。对于大型项目,由于可以选择更强的服务器配置,构建速度甚至可能更快。

监控和调试能力更强

由于可以直接访问服务器,排查问题时的可见性更好。你可以查看详细的系统日志,直接进入容器调试,这在传统云平台中往往受到限制。

picture-2025-06-26-21-40-30

数据安全性和合规性

对于需要数据本地化的项目,Coolify 提供了完美的解决方案。所有数据都存储在你控制的服务器上,不需要担心第三方平台的数据处理政策。

当然,自托管也意味着需要承担更多的运维责任。服务器维护、安全更新、备份策略都需要自己处理。但对于有一定技术背景的开发者来说,这种控制权的回归往往是值得的。

picture-2025-06-26-21-40-08

开源生态的力量

Coolify 项目的发展速度令人印象深刻。GitHub 上超过 35k 的 Star 数量,活跃的社区讨论,频繁的版本更新,这些都证明了开源模式在基础设施工具领域的活力。

项目的 Roadmap 完全公开,功能请求和 Bug 报告都可以在 GitHub Issues 中追踪。这种透明性让用户可以参与到产品发展的每个阶段,而不是被动地接受供应商的产品决策。

更重要的是,开源意味着你可以根据具体需求定制功能。如果需要特殊的部署流程,可以修改源码;如果需要集成特定的监控工具,可以提交 Pull Request。这种灵活性是闭源云平台无法提供的。

重新思考技术选型

Coolify 的出现让我们重新思考一个问题:在追求便利性的同时,我们是否过度依赖了外部服务?

现代软件开发的一个趋势是将复杂性外包给专业的云服务商。这种做法在项目早期确实能够加速开发,但随着项目成熟,这种依赖关系的成本会越来越高。

Coolify 提供了一个中间路径:既不回到原始的手工运维时代,也不完全依赖云平台的黑盒服务。它让开发者能够根据项目的具体阶段,在便利性和控制权之间找到合适的平衡点。

对于个人项目和小团队,Coolify 几乎是完美的解决方案。低成本、高控制权、完整的功能集,这些特点让它成为传统云平台的有力竞争者。

对于大型企业,Coolify 至少提供了一个有价值的参考:PaaS 的核心价值不在于专有技术,而在于将复杂性抽象化的能力。这种抽象化完全可以在开源框架下实现,而不需要牺牲透明性和控制权。

技术选型从来都是权衡的艺术。Coolify 的价值在于为这种权衡提供了一个新的选项,一个值得认真考虑的选项。

Dokploy:化繁为简的开源 PaaS 平台

2025年6月22日 08:00

在当前的软件开发领域,我们拥有前所未有的强大工具,但应用的部署与维护似乎并未变得更简单。从配置服务器、管理数据库到设置 CI/CD 流水线,每一个环节都可能消耗大量时间。对于追求高效和专注的开发者而言,理想的状态是提交代码后,其余的部署工作能自动、可靠地完成。正是在这样的需求背景下,Dokploy 作为一个开源的平台即服务(PaaS)解决方案,进入了我的视野。

picture-2025-06-22-12-21-50

快速上手

Dokploy 的部署过程极其简洁。你只需要准备一台 VPS(建议至少 2GB 内存和 30GB 存储空间),然后执行一条命令即可完成整个平台的安装:

curl -sSL https://dokploy.com/install.sh | sh

安装脚本会自动处理 Docker 环境的配置。完成后,通过浏览器访问 http://你的服务器IP:3000,创建管理员账户,即可开始使用。整个过程通常在 5 分钟内完成,无需任何复杂的前置配置。

流畅的部署与管理

在部署工作流上,Dokploy 提供了高度的灵活性。它能够直接与 GitHub 集成,实现代码推送后自动触发构建和部署,形成完整的 CI/CD 闭环。构建过程本身,它既支持通过 Nixpacks、Heroku Buildpacks 等主流构建工具自动识别项目类型并打包,也允许开发者通过自定义的 Dockerfile 进行精细化控制。这种设计覆盖了从简单应用到复杂项目的各种需求。尤其值得一提的是,Dokploy 原生支持 Docker Compose,这对于需要编排多个关联服务的复杂应用而言,无疑是一个巨大的便利。开发者可以将本地测试通过的 docker-compose.yml 文件近乎无缝地迁移到生产环境,极大地降低了环境不一致带来的风险。

picture-2025-06-22-12-22-58

除了应用部署,Dokploy 还将数据库和服务的管理纳入其统一的控制面板。它支持一键部署包括 MySQL、PostgreSQL、MongoDB、Redis 在内的多种主流数据库,并内置了自动化的定时备份与恢复机制。开发者无需再手动编写备份脚本或担心数据丢失,平台将数据安全工作转变为简单的配置项。此外,对于每个运行中的应用和服务,Dokploy 都提供了实时的日志查看、资源监控(CPU、内存、磁盘、网络)以及直接进入容器的终端访问,为问题排查和日常运维提供了极大的便利。

picture-2025-06-22-12-23-25

picture-2025-06-22-12-23-33

picture-2025-06-22-12-24-01

回归创造本身

作为一个强调开发者自主性的工具,Dokploy 彻底贯彻了开源和自托管的原则。这意味着你拥有对自己基础设施的完全控制权,不存在任何厂商锁定的风险。你可以自由地修改、扩展平台功能,以满足特定的业务需求。同时,它支持多服务器部署和 Docker Swarm 集群,为应用的水平扩展提供了可能,保证了项目从初期到成长期的平滑过渡。

picture-2025-06-22-12-22-25

在我看来,Dokploy 的价值在于它精准地找到了一个市场切入点:为那些既不满足于手动操作 docker-compose,又觉得 Kubernetes 体系过于庞大的开发者,提供了一个"刚刚好"的解决方案。它没有试图成为一个包罗万象的巨型平台,而是专注于解决部署这一核心痛点,并把它做到极致地简单。

化繁为简的背后

Dokploy 的核心理念是提供一种无缝的部署体验,它巧妙地在强大的功能与简洁的操作之间取得了平衡。与许多复杂的商业 PaaS 或需要深度定制的 Kubernetes 方案不同,Dokploy 提供了一套直观的界面和命令行工具,让开发者可以通过简单的几步操作,将应用部署到任何服务器上。

深入其技术栈,Dokploy 的简洁性并非空中楼阁。它在底层集成了一系列成熟的开源组件:使用 Traefik 作为反向代理,自动处理域名、SSL 证书和流量路由,免去了繁琐的网络配置;通过 Redis 管理部署队列,确保了多个部署任务能够有序进行,避免了服务器资源的冲突;而核心数据则由稳健的 PostgreSQL 数据库负责存储。这一套架构,将复杂的后端运维工作封装在了一个清爽的 Next.js 前端界面之下,让开发者得以通过 UI 的方式管理应用,而不是陷入命令式的细节配置中。

picture-2025-06-22-12-20-56

PaaS 与 Serverless 的边界

最后有必要澄清一个常见的技术选型困惑:何时选择传统的 PaaS 平台,何时转向 Serverless 架构。这两种方案在表面上都能简化部署,但它们解决的问题本质上不同。

Serverless 方案,如 Vercel、Netlify 或各大云厂商的函数计算服务,擅长处理无状态的、事件驱动的工作负载。它们的优势在于极致的自动扩缩容和按需付费,但这种便利的代价是对运行环境的严格限制。函数的执行时间、内存占用、冷启动延迟,这些约束条件决定了 Serverless 更适合 API 网关、静态网站生成、图片处理等场景,而非长期运行的服务或需要持久连接的应用。

相比之下,Dokploy 这样的 PaaS 平台提供的是完整的应用运行环境。它不会强制你将应用拆解为无状态的函数片段,也不会限制你的数据库连接或文件系统访问。这种差异在实际项目中意义重大:如果你正在开发一个需要 WebSocket 长连接的实时协作工具,或者一个包含复杂状态管理的 SaaS 应用,传统容器化部署往往是更现实的选择。

更深层的考虑在于成本结构。Serverless 的按调用计费模式对于流量不规律的项目非常友好,但当应用规模增长到一定程度时,持续的函数调用费用可能超过固定的服务器成本。Dokploy 的自托管特性让你可以在自己掌控的硬件上运行应用,避免了云厂商的「成长税」,这对独立开发者和成长期的产品而言,具有不可忽视的经济意义。

竞品对比

为了更直观地展现 Dokploy 的优势,我整理了主流开源 PaaS 平台的完整功能对比。这个对比表格基于 Dokploy 官方文档,涵盖了部署工具的各个核心维度:

功能特性 Dokploy CapRover Dokku Coolify
用户界面
Docker Compose 支持
API/CLI 工具
多节点支持
Traefik 集成 插件支持
用户权限管理
Bitbucket 集成
GitLab 集成
Gitea 集成
高级用户权限管理
内置终端访问
数据库支持
监控功能
自动备份 插件支持 插件支持
开源协议
通知系统
多服务器支持
开源模板
共享环境变量
定时任务
Cloudflare 隧道
预览部署
团队功能
云版本/付费版本

从这个对比中可以看出,Dokploy 在功能完整性方面具有明显优势,尤其是在 Git 平台集成、权限管理和运维功能方面。对于独立开发者、创业团队以及热衷于托管个人项目的人来说,Dokploy 提供了一个兼具控制力、灵活性与易用性的选择,让我们能重新将精力聚焦于创造本身,而非其背后的繁杂工程。

Opik:重新定义 LLM 应用的可观测性边界

2025年6月21日 08:00

LLM 应用的开发正在重塑软件工程的边界。当我们构建越来越复杂的 RAG 系统和智能体工作流时,传统的调试和监控方法显得力不从心。在这个背景下,Comet ML 团队推出的 Opik 提供了一个颇具前瞻性的解决方案。

项目地址:https://github.com/comet-ml/opik

picture-2025-06-21-21-03-23

重新定义 AI 应用的可观测性

传统的应用监控建立在确定性逻辑之上:给定输入,期望固定输出。但 LLM 应用本质上是概率性的,同样的提示可能产生截然不同的结果。这种不确定性让传统的错误追踪方法失效了。

Opik 的设计者显然理解这一点。它不是简单地记录输入和输出,而是构建了一个完整的「思维过程」追踪系统。每个 LLM 调用、每次 RAG 检索、每个智能体决策都被记录为一个完整的执行轨迹。这种粒度的可视化让开发者能够理解 AI 系统的「思考路径」,而不仅仅是结果。更有趣的是,Opik 将这种追踪能力做到了几乎零侵入。通过装饰器模式,开发者只需要在函数上添加 @opik.track,整个调用链就会被自动记录。

传统软件测试依赖于断言和预期结果比较,但如何测试一个创作型 AI 的输出质量?Opik 的回答是引入「LLM as a Judge」评估框架。这个想法本身并不新颖,但 Opik 的实现颇具巧思。它内置了一系列预训练的评估指标,包括幻觉检测、相关性评估、答案质量评价等。更重要的是,这些评估器本身也是可追踪的,形成了一个递归的质量保证体系。我在实际使用中发现,这种方法解决了一个长期困扰 AI 应用开发的问题:如何在迭代过程中量化改进效果。

生态布局

Opik 的另一个亮点是其对生产环境的深度考虑。它提供了本地部署和云端服务两种选择,满足不同的数据安全需求。本地部署版本使用 Docker 容器化,部署过程相当简化。更值得注意的是其集成生态的广度,从主流的 LangChain、LlamaIndex,到新兴的 CrewAI、PydanticAI,Opik 几乎覆盖了所有主要的 LLM 开发框架。这种全面的兼容性降低了迁移成本,让团队能够在现有技术栈基础上引入可观测性能力。

从技术架构角度,Opik 体现了对未来 AI 应用发展趋势的准确判断。它不仅支持当前主流的 LLM 调用模式,还为多智能体系统、复杂工作流编排等新兴场景提供了原生支持。特别值得关注的是其对 OpenTelemetry 标准的集成,这意味着 Opik 能够与现有的可观测性基础设施无缝整合,而不是要求企业重新构建监控体系。

作为 Comet ML 的开源项目,Opik 采用了 Apache 2.0 许可证,这种选择并非偶然。在 AI 工具市场竞争激烈的当下,开源策略为 Comet ML 构建了一个重要的护城河。通过开源,Opik 获得了快速的社区反馈和贡献,目前项目已经获得超过 10,000 个 GitHub 星标,这种社区热度反映了市场对 LLM 可观测性工具的强烈需求。更重要的是,开源模式降低了用户的试用门槛,让更多开发者能够体验到专业级的 LLM 监控能力。

最后

当然,Opik 也并非完美。其评估指标主要依赖于英语语料训练,对中文等其他语言的支持还有待增强。此外,虽然提供了丰富的预设指标,但对于特定领域的评估需求,用户仍需要投入额外的定制工作。在可视化方面,虽然仪表板功能完善,但在处理大规模数据时的性能表现还有优化空间。

Opik 的出现标志着 LLM 应用开发正在从「艺术」向「工程」转变。它为这个新兴领域提供了急需的工程化工具,让 AI 应用的开发变得更加可预测和可控制。在可预见的未来,随着 AI 应用复杂度的持续增长,类似 Opik 这样的可观测性工具将成为开发者的标准装备。它不仅仅是一个监控工具,更像是 AI 时代的「调试器」,帮助我们理解和优化这些看似神秘的智能系统。

对于正在构建 LLM 应用的开发者来说,Opik 提供了一个低成本的尝试机会。它的学习曲线相对平缓,但提供的价值却可能是革命性的。在这个 AI 应用快速发展的时代,拥有一套成熟的可观测性工具,或许就是区分业余项目和专业产品的关键差异。

2025 年 GPU 云服务大比拼:10 大 Serverless 平台深度解析

2025年6月17日 08:00
排名 服务商 定价 可扩展性 GPU 类型 易用性 速度
1 共绩算力 超低成本,RTX 4090 仅 1.68 元/时;按秒计费 弹性扩缩,动态调整节点数量 RTX 4090、RTX 5090、L40、H800 完善 API 接口;Docker 容器支持;Jupyter 环境 秒级冷启动;99.9% 可用性
2 RunPod 低成本,按秒计费; 跨 9 个地区自动扩展;无硬并发限制 广泛范围(T4 到 A100/H100,包括 AMD) 基于容器;REST API、SDK、快速模板 48% 的冷启动时间<200 毫秒
3 Capital 中等;入门版提供免费积分 快速扩展至数百台;计划各异 从 T4 到 H100 的广泛集合 Python SDK 具有自动容器化功能 超低延迟(2-4 秒冷启动)
4 Replicate 自定义模型价格较高;社区模型免费 自动扩展,但冷启动可能较长 T4、A40、A100,部分 H100 预构建模型零配置;Cog 用于自定义代码 自定义模型冷启动可能超过 60 秒
5 Fal AI 高端 GPU 具有竞争力 扩展至数千台;针对突发生成任务优化 专注高端 GPU(A100、H100、A6000) 扩散模型的即用 API 优化的冷启动(约几秒)和快速推理
6 Baseten 基于使用量(按分钟计费) 可配置副本的自动扩展 从 T4、A10G、L4 到 A100/H100 的选项 Truss 框架简化部署;简洁 UI 冷启动约 8-12 秒;动态批处理提升吞吐量
7 AI news 超实惠,基于使用量 跨 20+ 位置的弹性扩展 RTX 30/40系列,A100 SXM 一键 JupyterLab;简单 API 快速实例启动;低网络延迟
8 Beam Cloud 最低价格之一,提供免费层 从零开始自动扩展,开发者友好限制 T4、RTX 4090、A10G、A100/H100 Python SDK、CLI、热重载 超快(2-3 秒冷启动)
9 Cerebrium 竞争性按秒计费 跨多种 GPU 类型无缝扩展 12+ 类型包括 H100、A100、L40 最小配置;支持 websockets 和批处理 极速冷启动(2-4 秒)
10 Google Cloud Run 基于使用量,额外 CPU/内存成本 从零扩展至 1000 个实例 目前为 NVIDIA L4(24GB) 自带容器;集成在 GCP 中 冷启动约 4-6 秒;接近裸机性能
11 Azure Container Apps 预期与 Azure 费率一致 托管的事件驱动扩展(预览版) NVIDIA T4 和 A100(选项扩展中) 简单 YAML 配置;与 Azure Monitor 集成 预期约 5 秒冷启动;激活时完整 GPU 性能
1

我升级了 macOS 26,但我不推荐你升

2025年6月11日 05:13

picture-2025-06-10-21-13-08

⬆️ 选了张好看的封面。

苹果在最新的 macOS 26 Beta 中引入了全新的 Liquid Glass 设计语言,号称是继扁平化以来最大的界面革命。我第一时间升级体验,虽然视觉效果确实很炫酷,但在日常使用中却发现了不少问题,这也是我不推荐你现在升级的原因。

以下是他的三大罪:

  • 可用性向视觉效果妥协
  • 设计语言本身尚不成熟
  • 性能代价高昂

接下来让我慢慢道来。

当前 Beta 版的三个核心问题

可用性向视觉效果妥协

新系统最直观的感受是,为了追求视觉上的惊艳,牺牲了信息传达的效率和用户的专注度。

  • 文字可读性差:回想拟物化时代,文字大多显示在类似纸张的背景上;到了扁平化时代,则是简洁的白或灰色背景,可读性都很好。而 Liquid Glass 风格的文字像是被"蚀刻"在半透明的玻璃上。在复杂的壁纸或光线变化的环境下,文字和背景的对比度严重不足,眼睛很容易疲劳。
  • 动态效果喧宾夺主:Liquid Glass 带来了大量动态效果,比如图标会根据视角变化产生光效,滑动时会出现涟漪状的粒子动画。这些效果固然惊艳,但很容易分散用户的注意力。当你想专注于阅读或工作时,界面上持续变化的光影反而成为一种干扰。
  • 内容沉浸感被削弱:为了实现玻璃质感,界面增加了额外的边框和阴影,这不仅占用了宝贵的屏幕空间,减少了内容的显示区域,而且过于花哨的视觉效果常常会喧宾夺主,让人无法专注于内容本身。

设计语言本身尚不成熟

除了对用户体验的直接影响外,Liquid Glass 作为一套设计语言,其自身也暴露了不成熟和不统一的问题。

  • 界面层次混乱:当多个半透明的玻璃窗口重叠时,由于它们都具有半透明和反射的特性,我常常分不清哪个窗口在前,哪个在后,导致操作混乱。虽然苹果试图通过不同的透明度和虚化效果来区分层次(透明度越低,层次越高),但在实际使用中,复杂的光影和折射效果依然很容易让人迷惑。
  • 风格割裂:苹果似乎也意识到了可用性问题。在一些自带应用中,他们甚至放弃了部分 Liquid Glass 效果。一个典型的例子是 masOS 的邮件应用,按照设计逻辑,左侧的邮件列表本应采用更高层次的玻璃效果,但为了确保内容清晰,苹果选择让它回归扁平化设计。这种不统一恰恰说明,这套设计语言本身还未成熟。
  • 新旧设计语言圆角割裂与混乱:macOS 的一个标志性特征是其精确而统一的圆角。然而,在 Liquid Glass 中,这种统一性被打破了。新设计的窗口和控件采用了更复杂的连续曲线圆角,以模拟玻璃的物理形态。但在许多系统组件,尤其是尚未完全适配的旧应用和第三方应用中,依然保留着传统的圆角风格。当这两种不同的圆角同时出现在屏幕上时,例如一个新风格的窗口里嵌着一个旧风格的按钮或菜单,视觉上的割裂感非常严重,让界面显得既不协调又混乱。
  • 色彩混乱:扁平化设计通过鲜明、可预测的色彩来引导用户操作。Liquid Glass 则完全不同,它的色彩是动态且不确定的。由于玻璃材质会受到环境光和背景(如桌面壁纸)的影响,UI 元素的颜色会随之不断变化。更严重的是,这种不确定性常常导致前景元素(如文字、侧边栏、操作按钮等)与背景色之间的对比度不足,进一步加剧了可读性问题。

picture-2025-06-10-20-59-23

仔细想想,macOS Tahoe 的访达太糟糕了。 这是什么鬼。Big Sur 的设计好多了。而且现在窗口太圆润了。

picture-2025-06-10-21-00-12

刚安装了 macOS Tahoe,我的心情很复杂。它感觉非常杂乱,有太多的特效、阴影和叠加效果,我不太喜欢。

picture-2025-06-10-21-01-57

macOS Tahoe 的首个开发者测试版来了。 嗯,我对这个设计不太确定。 它看起来…… 很奇怪?侧边栏、图标,最重要的是,这些糟糕的边角弧度! 但我知道,我们会习惯的。

picture-2025-06-10-21-07-57

picture-2025-06-10-21-08-32

性能代价高昂

Liquid Glass 带来了大量动态光影、流体和粒子效果。这些酷炫的视觉效果背后,是对系统资源的巨大消耗。在我的使用过程中,尤其是在打开多个应用或进行复杂操作时,能明显感觉到系统的卡顿和发热。对于非最新款的设备,性能问题可能会更加突出。

既然问题这么多,苹果为什么还要做?

既然有这么多显而易见的问题,为什么苹果还要坚持推出 Liquid Glass?这背后其实是为未来的计算平台做准备。

首先,它试图在"拟物化"和"扁平化"两个极端之间找到平衡。扁平化设计虽然简洁高效,但牺牲了界面的层次感和可操作性,用户有时难以分辨哪些元素可以点击。而 Liquid Glass 通过模拟玻璃材质的光影、厚度和半透明效果,重新引入了界面的物理质感和深度,让交互元素更清晰可辨。

picture-2025-06-10-20-45-47

其次,也是更重要的一点,Liquid Glass 是为混合现实(MR/AR/VR)时代而生的设计语言。在 Vision Pro 这样的设备中,传统的二维扁平界面会显得格格不入。Liquid Glass 将界面塑造成仿佛悬浮在真实环境中的玻璃面板,既有真实物体的质感,又能承载丰富的数字信息,从而无缝融合虚拟与现实。苹果将其推广到所有设备,正是为了统一未来所有平台的体验,为从二维屏幕到三维空间的过渡铺平道路。

从这个角度看,Liquid Glass 代表了苹果对未来的赌注。它试图通过动态化的界面,弥合数字世界与物理世界的边界。

picture-2025-06-10-20-42-45

VS

退步明显的 Finder

picture-2025-06-10-21-02-49

picture-2025-06-10-21-02-58

被阉割的启动器

picture-2025-06-10-21-03-35

picture-2025-06-10-21-03-43

最后:我的建议

所以,回到最初的问题:我推荐现在升级吗?

我的答案很明确:不推荐。特别是如果你的 Mac 是主力生产力工具,稳定和高效是首要前提,那么请务必保持观望。至于我自己的其他设备,我也会等苹果在后续版本中进行更多优化后再考虑。

虽然 Liquid Glass 代表了苹果对未来设计的大胆探索,但就眼下的 Beta 版本而言,酷炫的视觉效果是建立在牺牲可用性和稳定性的基础之上的。当然,我们有理由相信苹果会在正式版发布前修复诸多问题。

但至少在目前,对于追求稳定和效率的用户来说,最好的选择就是"再等等"。

不过隔壁 iPadOS 看着很不错,想要试试宇宙第一的平板了。

纪念

我用另一台装有旧版系统的 mac 设备收集了一些用户体验很好的界面。 他们的视觉体验可能不太好看,在这些工具性应用前,他们直观、清晰、高效。

永远怀念 R.I.P. Mac OS Big Sur Design

40276ae657daa2eca41ffafe13e84f0c.png aab4301d90d755df6ea5029ce4685d01.png f1884be41a2da7b68a07fd060409f84c.png 618583a015cff1ba9add3cc1d658dbc7.png d2dc6c9fbe87b4cfe48cb152b1dda654.png 076257a899ba68354a5b308adecfe839.png 9263919bd4d89a0c52ca08cd68a4baa6.png f70f1e1c42c88f9fd18fa92b197ac314.png

玉玉了,人生的意义是什么?

2025年6月10日 06:52

标题党了一回。刚刚我又给这篇文章想了另一个标题:上帝死了,我们怎么办

本文主要是一个知识传播的目的,而非深入的理论探讨。我本人对存在主义的理解也还停留在比较浅显的层面。但即便如此,存在主义的一些基本观点,比如"痛苦源于自由被压制"这样的洞见,依然能给我们带来很多启发。

20 世纪的哲学家们,在经历了世界大战的残酷和传统的崩塌后,深入思考了人生的意义,并由此诞生了存在主义。与以往认为人生有预设意义的"本质主义"不同,存在主义认为,人是自由的,我们的人生意义由我们自己的选择和行动来定义。其核心思想可以概括为三大原理:

  1. 世界本无意义:宇宙本身没有给你预设任何目标或意义。
  2. 存在先于本质:你首先存在于这个世界上,然后通过你的行动和选择,来定义你自己的"本质"和"意义"。
  3. 绝对自由与沉重责任:你拥有选择的绝对自由,但也必须对自己的一切选择及其后果负起全部责任。

接下来,我们将逐一深入探讨这三大原理。

原理一:世界本无意义

自古以来,人们习惯于相信"本质主义",也就是所谓宿命论、决定论,即认为万事万物都有一个预先设定的"本质"或"意义",而这个意义通常被归于神的意志或某种神秘的天命。比如,项羽是不是上天降下来灭秦的?牛顿是不是上天派来照亮物理学的?你的人生是否也有一个出厂设置好的意义?

存在主义者对这一点提出了尖锐的质疑。他们认为,如果真的有神在主宰一切,那该如何解释世界大战那样的人间惨剧?难道上帝造你是为了让你去当炮灰或者刽子手吗?显然不是。存在主义者认为,我们不应为自己的行为寻找借口,你之所以行善或作恶,不是因为什么神圣的旨意,而是你自由意志自己做出的选择。

就像上帝不让亚当夏娃吃禁果,但他们还是自己选择吃了。世界就像一个生态缸,上帝并不会操纵里面每个小鱼小虾的人生,而是让他们自由拼杀。因此,世界本身是中性的、无意义的,意义是由我们自己赋予的。

所以,"人生的意义是什么?"这个问题的答案,第一步是:没有标准答案。但这并非悲观的结论,恰恰相反,它把定义意义的权力交还给了我们自己。

原理二:存在先于本质

"存在先于本质"是存在主义最核心的观点。它的意思是,在你作为一个实体存在之前,任何关于你的"设计"或"本质"都是空谈。即人是不被定义的。

你可能会说,我的人生意义不是被父母早就定了吗?比如父母有皇位要继承,或者生你就是为了用你的脐带血给你哥治病。但存在主义会告诉你,无论你父母有什么打算,这些打算都必须等你真正地存在、成长,并拥有行动能力之后才有可能实现。比方说,你父母想让你当歌唱家,结果你生下来五音不全,那么这个预设的"本质"就毫无意义。

再举个例子,你说你这双手的意义是用来开坦克的。但你必须先拥有一双手(存在),然后才能讨论这双手可以用来干什么(本质/意义)。你得先有这个东西,才能决定这个东西的用途和价值。因此,是你的"存在",决定了你的"本质",而非反过来。你不是一张被画好的图纸,你是一张白纸,你的样貌由你自己一笔一一笔画成。

原理三:自由与责任

存在主义强调人的绝对自由。这种自由体现在,你永远拥有选择的权利。你现在正在看这篇文章,你随时可以决定是继续看下去,还是站起来跳两下。你拥有对自己身体和行动的基本控制权。

这种自由意志甚至体现在最极端的境况下。一个奴隶,虽然身体被奴役,但他依然保有内在的自由。他可以选择偷懒的程度,可以选择反抗还是顺从,甚至可以选择结束自己的生命来摆脱奴役。这一点将人与纯粹的动物区分开来,因为牛无法选择自杀,它不具备这种对自身生命的终极控制权。

但是,自由并非没有代价,它如影随形地带来了责任。你的自由意志不是让你改变物理定律的魔法,而是一种"主观能动性"。你无法完全控制环境,也无法控制他人对你的影响,但你的每一个选择,都会给自己和环境带来后果。

你可能会感到困惑:如果我为了养家糊口,不得不去做一份自己痛恨的工作,这难道不是违背了我的自由意志吗?我的自由又在哪里?

存在主义的回答是:即使在这样的困境中,你依然在做选择。你选择了"承担家庭责任"而不是"追求个人喜好"。这个选择是痛苦的,但它依然是你的选择。承认这一点,就是承认自己的自由和责任。你选择了当前的道路,并为这个选择的后果负责。自由不是随心所欲,而是在认识到所有限制和后果之后,依然做出自己的决定。

三大原理总结

为了方便理解,我们再次对这三大原理进行浓缩解释:

  1. 世界本无意义:上帝没工夫控制你,你想干啥干啥,所以你来定义自己行为的意义。即便上帝给你预备了奶和蜜糖,你也可以决定自己吃不吃,就像亚当夏娃还是自己选择了吃禁果。世界就是个生态缸,上帝不会操纵每个小鱼小虾的人生,而是让他们自由拼杀。
  2. 存在先于本质:甭管你父母生你的时候怎么算计,你不作为实体出现,啥算计也没用。所以人生的预先设计是不存在的。你得先有双手,才能说这双手可以干啥,这就是存在先于本质(意义)。因为你得先有这个东西,才能决定这东西的用途。
  3. 自由与责任:你自己永远可以选择,但是选择不是没有代价的。它是个交互系统,你的一切选择都有后果,会给自己和环境带来影响。

如何面对人生困境

为啥抑郁者喜欢思考人生的意义呢?因为他痛苦,不知道自己受这个苦干啥。而现代人啥东西最痛苦,不是吃穿,而是社会压力,和精神凌虐。社会动物是在乎社会连接和社会评价的,抑郁者,说白了,就是被欺负了,被掠夺了,被伤害了。

这恰好印证了萨特那句名言:"他人即地狱"。这并非是说他人都是邪恶的,而是指我们无时无刻不活在他人的审视之下,这种审视会物化我们,剥夺我们的自由,让我们感到焦虑和痛苦。我们自身的意义,时常被他人的定义所遮蔽和扭曲。

这种困境在青春期尤为明显。当一个孩子开始意识到自己的独立人格(主体性)时,他会发现,从小被教导的那一套价值观和行为准则,是先于他而存在的,他并没有选择的余地。如果家庭、学校和社会环境总是压制孩子,告诉他"自由的冲动"和"独立的想法"是坏的,那么他就会学着压抑自己的真实感受,意志力的发展也会充满内疚感。比如,"质疑老师是不对的"、"忤逆家长是不对的"、"玩游戏是不好的",所有和学习无关,不能提高成绩的行为,哪怕能带来快乐,也统统被禁止。

当一个人的生活被如此结构化,他会感到生活是外加的,是一个必须服从的框架,而不是一张可以自己编织的网。他会觉得自己行为和结果之间没有因果关系,这就是心理学上的"习得性无助"——当一个人"习得"了自己无法掌控人生时,便会失去行动力,表现出抑郁症状。特别是当他发现,从小被灌输的"延迟满足"(牺牲现在,换取未来)是个陷阱,牺牲所有当下的快乐,并没有换来想象中的美好未来时,他的热情和憧憬就会彻底破灭。这种"死气沉沉",不是因为没有感受,而是太多的感受被压抑和吞噬了。要直面人生固有的焦虑,人需要强大的自我力量,但如果一个人的主体性在成长中早已被扼杀,这种力量就无从谈起。

那咋整?是时候动用我们上面的思想成果了。发挥你的:自由意志!有人欺负你,那多躲远点,要不就反击,或者让自己不要记仇郁闷,方法太多了,关键是自己想明白自己要干啥。生活学习压力大?竞争不过别人?那你看看谁是你绊脚石和拦路虎,打得过就打,打不过就加入,不想加入就无视,换个环境,或者自己想开了,明白贱人自有天收,你看还是有很多办法的。你真的可以自己去选,但是记住,存在先于意义,你得基于条件创造条件,才能有够得着的实际意义。

相关资料

关于 Serverless 的思考:为什么国内外差距如此之大?

2025年6月10日 05:35

最近,在浏览技术社区时,一个反复出现的问题引发了我的深思:

为什么 Node.js 在国外如此盛行,而在国内却显得有些"水土不服"?

许多讨论都集中在语言特性、社区生态或招聘环境上,但我认为,这些都只是表象。真正的答案,藏在 Node.js 背后的云计算范式——Serverless 的发展路径差异之中。可以说,我们讨论的并非 Node.js 的困境,而是 Serverless 在国内的困境。

国外:Serverless 为王,JavaScript 为核

在国外,Node.js 的蓬勃发展与 Serverless 平台的崛起密不可分。Vercel、Netlify、Deno Deploy、Cloudflare Workers 等众多玩家,共同构建了一个简单而强大的生态系统。

这些平台具备一个鲜明的共同点:功能纯粹,体验极致。无论是 Vercel 对前端部署的极致优化,还是 Cloudflare Workers 在边缘计算的探索,它们都将 Serverless 的核心理念——简化运维、按需执行——做到了极致。开发者可以专注于业务逻辑,快速搭建博客、部署静态网站(如 Astro),或实现轻量级 API。

在这种环境下,JavaScript 不再仅仅是一门前端语言或一种后端技术选型,它成为了整个 Serverless 生态的核心载体。开发者推崇的并非"JavaScript 全栈",而是"Serverless 全栈",JavaScript 只是这个体系中最自然的执行引擎。

国内:巨头下的 PaaS 与框架的惯性

反观国内,我们走上了一条截然不同的技术路径,这导致了 Serverless 发展土壤的贫瘠。

1. 云巨头的"大而全"路径

国内的云计算巨头,如阿里云和腾讯云,从诞生之初就将目光锁定在大型企业客户上。它们倾向于构建功能全面、体系庞杂的 PaaS(平台即服务)解决方案。

当你打开它们的控制台,成百上千的功能按钮令人眼花缭乱,而 Serverless(云函数)的入口则被深深地埋藏在这片功能的海洋中。这与 Cloudflare 或 Vercel 那种"登录即可部署"的简洁体验形成了鲜明对比。巨头们的 Serverless 产品线,往往给人一种"有,但不好用"的印象,它们更像是庞大服务体系中的一个"添头",而非战略核心。

picture-2025-06-10-21-41-38

2. 开发者市场的"重框架"惯性

在企业和开发者层面,市场表现出了对传统开发模式的强大惯性。大家更倾向于使用成熟、大而全的框架来"快速出活",认为这样更可控、更符合团队招聘和技术栈需求。

Spring Boot 在 Java 生态的统治地位便是明证。而在 Node.js 领域,NestJS 的快速崛起也反映了同样的思路。许多团队选择 NestJS,是看中了它"企业级"的标签和对 Spring Boot 模式的模仿。然而,尽管 NestJS 对 Express 进行了封装,提供了类似的企业级开发体验,但其技术深度和生态成熟度远无法与 Spring Boot 相提并论。这种对重型框架的偏爱,使得需要改变开发思维的 Serverless 模式,难以获得广泛的市场认知和接受。

为什么国内缺少优秀的 Serverless 平台?

归根结底,国内 Node.js 生态在后端领域的尴尬,根源在于缺少一个像 Vercel 或 Cloudflare 那样真正引爆开发者社区的 Serverless 平台。那么,为什么这样的平台没有在国内诞生呢?

首先,是高昂的运营成本与安全风险。

一个对开发者友好的平台,通常需要提供慷慨的免费额度及强大的安全防护。这正是 Cloudflare 成功的关键之一——它为全球网站提供免费的 DDoS 防护。然而,在国内的网络环境下,DDoS 攻击的成本和频率都异常之高。对于一家初创公司而言,免费提供 DDoS 防护意味着巨大的、不可承受的成本和风险。这道高墙足以挡住绝大多数潜在的挑战者。

其次,是巨头的商业模式与战略选择。

唯一有能力承受这种成本的,只有云计算巨头。但如前文所述,它们的商业模式决定了其重心在服务大型企业,追求的是"大而全"的产品矩阵和高客单价。打磨一款针对个体开发者的、体验极致的 Serverless 产品,并不符合它们当前的核心商业利益。没有竞争,巨头们自然也缺乏足够的动力去优化和推广自己的 Serverless 产品线。

最后,是历史的包袱与市场的空白。

回想当年,PHP 虚拟空间何尝不是一种广义上的 Serverless?DA 和 CP 面板提供了基础的管理功能,新浪 SAE 也曾是国内 Serverless 理念的早期探索者。它们的流行证明了简化部署和运维的巨大价值。然而,随着技术向更复杂的集群化和容器化演进,这种简单、低成本的模式逐渐被遗忘。

在国外,Vercel 等公司填补了这个空白,并将其升级为现代化的 Serverless 平台。而在国内,由于上述种种原因,这个赛道上始终缺乏有力的"挑战者",最终形成了当前这种"有,但不好用"的尴尬局面。

结语

技术的发展从来不是单一路径的。国内外在 Serverless 领域的不同选择,深刻反映了各自市场环境、技术文化和商业模式的差异。

国外选择了"小而美"的专业化路线,通过极致的用户体验和专注的功能定位赢得了开发者的心。国内则走向了"大而全"的平台化路线,以满足企业级客户复杂的业务需求。

两种路径都有其商业上的合理性。但对于培育开发者生态和推动底层技术创新而言,我们或许需要更多"小而美"的尝试。毕竟,真正的技术进步,往往来自于对复杂性的优雅简化,而不是对功能的无尽堆砌。

国内设计网站推荐:设计师必备的创意灵感宝库

2025年6月6日 08:00

今天为大家精心整理了 9 个国内顶尖的设计网站,涵盖了灵感获取、作品展示、学习教程、资源下载等设计师日常工作的各个环节。

站酷:设计师的创意灵感平台

网站预览图

传送门:https://www.zcool.com.cn/

站酷(ZCOOL)是国内最具影响力的设计师互动平台之一,汇集了大量优秀的设计作品与创意灵感。平台包含平面设计、插画、摄影、UI/UX 等多种领域的内容,为设计师提供展示作品、交流学习的空间。用户不仅可以浏览海量优质作品获取灵感,还能参与平台举办的设计赛事,或是通过专业课程提升技能。

  • 汇聚各领域优秀设计作品,提供创作灵感
  • 定期举办专业设计赛事,发掘设计人才
  • 包含设计类课程资源,助力技能提升

站酷排行榜:顶尖设计作品集锦

网站预览图

传送门:https://www.zcool.com.cn/top/index.do

站酷排行榜收录了当周最受关注的设计作品,涵盖插画、平面、UI、网页、摄影、三维等 16 个设计门类。榜单每周二上午 11 点更新,展示了中国设计师社区最具人气的创意作品,包括品牌设计、电商视觉、影视动画等多个维度。排名依据作品的热度、推荐数、收藏量等综合数据计算,为设计从业者和爱好者提供权威的行业趋势参考。

  • 每周更新涵盖 16 个设计门类的热门作品
  • 直观展示作品的详细数据指标和历史排名变化
  • 汇聚站酷平台认证设计师和团队的精品内容

优设网:设计师的灵感与工具宝库

网站预览图

传送门:https://www.uisdc.com/

优设网是国内知名的设计学习与资源共享平台,为设计师提供从入门到进阶的全面内容。网站涵盖了 UI 设计、AIGC、交互设计、产品设计等专业领域的最新趋势和实践案例,同时整合了丰富的设计工具、免费资源和学习路径。无论是寻找设计灵感、学习专业技能,还是获取实战教程和行业资讯,优设网都能满足不同层次设计师的需求。

  • 海量设计资源:包括 AI 工具导航、免费字体、设计素材等实用资源
  • 前沿行业内容:涵盖 AIGC、Midjourney 等最新设计趋势和技术解析
  • 系统学习路径:提供从零基础到专业进阶的全套教程和课程体系

设计灵感聚集地:优优教程网

传送门:https://uiiiuiii.com/inspiration

优优教程网是国内知名的设计教程与灵感平台,为设计师提供丰富的图文教程、视频教程和创意灵感。网站设有 Banner 设计、海报设计、Logo 设计、插画绘画、字体设计、UI 设计等多个专业分类,每日更新最新设计趋势和实用技巧。平台还提供设计导航、AI 工具导航等实用资源,以及设计书籍推荐、色彩搭配指南等辅助功能,满足不同层次设计师的学习需求。

  • 提供海量设计教程和灵感素材,覆盖多个设计领域
  • 设有专业分类导航,方便查找特定类型的设计内容
  • 每日更新设计趋势和实用技巧,紧跟行业动态

UI 中国:专业设计社区与资源平台

网站预览图

传送门:https://www.ui.cn/

UI 中国是国内领先的专业用户体验设计平台,为设计师提供作品展示、交流学习、职业发展等全方位服务。平台汇聚了大量优秀设计作品、行业文章和教程资源,涵盖 UI 设计、交互设计、平面设计等多个领域。通过丰富的线上线下活动、设计大赛和招聘服务,UI 中国连接设计师与企业需求,助力设计人才成长。

  • 海量设计作品展示与交流社区
  • 专业设计教程与行业资讯分享
  • 企业招聘与设计师认证服务

秀设计:创意灵感与设计资源平台

网站预览图

传送门:https://www.xiusheji.com/

秀设计是一个专注于创意设计领域的综合平台,汇集了国内外最新设计赛事资讯、优秀设计作品展示以及丰富的设计资源。网站内容涵盖平面设计、工业产品、建筑室内、UI 设计等多个设计门类,为用户提供灵感获取、作品分享和专业交流的一站式服务。平台定期更新设计大赛信息、行业新闻动态,并提供大量免费可商用字体、样机和设计工具资源,是设计师日常创作和工作的重要参考站点。

  • 提供国内外最新设计赛事信息与参赛指南
  • 展示海量原创设计作品,涵盖多个设计领域
  • 汇集实用设计资源,包括免费字体、样机模板等

花瓣网:你的设计灵感宝库

传送门:https://huaban.com/

花瓣网是国内知名的设计素材分享平台,汇集了海量的高质量设计元素、创作灵感和行业趋势。平台以"陪你做生活的设计师"为理念,为专业设计师和创意爱好者提供丰富的视觉资源。从节日热点素材到行业设计趋势,从平面设计到 3D 艺术,用户可以在这里发现最新设计潮流,获取创作灵感,或分享自己的作品。

  • 海量设计资源:覆盖节日海报、品牌设计、UI 素材等各类创意内容
  • 实时热点追踪:提供高考、618、父亲节等时令主题的专题素材
  • 创作者社区:聚集众多优秀设计师,可直接关注喜欢的创作者获取持续灵感

腾讯 ISUX:探索设计与用户体验前沿

网站预览图

传送门:https://isux.tencent.com/

腾讯 ISUX(Internet Social User Experience)是腾讯社交用户体验设计部官方平台,致力于分享前沿的设计理念和实践经验。该网站包含丰富的内容资源,涵盖设计文章、品牌案例、行业资源等多个栏目,为设计师和用户体验从业者提供专业的交流平台。网站上展示的最新研究成果和设计作品,覆盖了 AIGC 技术应用、沉浸式体验打造、字体设计创新等多个热门领域。

  • 提供专业的设计文章和案例分析,涵盖 UI/UX、品牌设计、动效设计等多个方向
  • 包含创新设计方法论,如"渐进式创新"与"激进式创新"思路
  • 整合行业资源平台,包括原创馆、QQ 游戏中心等腾讯生态产品设计经验分享

设计达人:干货满满的创意资源库

网站预览图

传送门:https://www.shejidaren.com/

设计达人是一个专注于为创意工作者提供实用干货的综合性设计资源平台。网站涵盖了视觉设计、AI 绘画、资源推荐等多个创意设计领域,定期更新设计教程、素材资源和行业工具测评。从平面设计物料尺寸指南到 AI 生成游戏 UI 技巧,从排版黄金法则到免费图标库推荐,这里既有新手设计师必备的基础知识,也包含资深创作者需要的前沿技术解析。特别值得一提的是,该平台对 AI 在设计领域的应用保持高度关注,提供了大量实用 AI 工具的体验报告和操作指南。

  • 提供平面/UI 设计全流程实用指南与资源下载
  • 聚焦 AI 设计应用,含多平台对比与生成技巧
  • 定期更新免费优质设计素材库与工具测评

9 个 2025 年最顶级的 Serverless GPU 云平台

2025年6月4日 08:00

随着 Serverless GPU 平台需求的激增,AI 工程师现在可以轻松进行按需推理,而无需担心底层基础设施的管理问题。在本文中,我们将对比包括 RunPod、Modal、Replicate、Novita AI、Fal AI、Baseten、Koyeb、智灵云 在内的顶级服务提供商,帮助您选择 2025 年 AI 算力需求的最佳解决方案。

共绩算力:利用闲置算力为 AI 赋能

picture-2025-06-04-22-27-25

传送门:https://www.gongjiyun.com

共绩科技是一家专注于提供弹性 GPU 算力服务的云计算平台,致力于通过整合全球闲置算力资源为客户提供高性价比的计算解决方案。该平台基于清华背景团队开发,采用动态扩缩容机制和按秒计费模式,支持包括 AI 模型训练、视频转码、科学计算等多种应用场景。主要亮点包括 NVIDIA RTX 4090 等顶级硬件支持、灵活的弹性计费机制和完整的容器生态,同时提供 99.9% 的可用性保障和 24/7 专业支持。平台已服务清华大学、华为等多家知名机构和企业的 AI 团队。

  • 采用闲置资源、动态扩缩容和按秒计费机制,相比传统方式可节省 70% 成本
  • 支持 NVIDIA 5090/L40/H800等顶级计算硬件,适配各类AI应用场景
  • 提供完整的 OpenAPI 和 Docker 生态集成,方便业务系统对接

RunPod:一站式 AI 模型训练与部署云平台

网站预览图

传送门:https://www.runpod.io

RunPod 是一个专为 AI 工作负载设计的云平台,提供从模型训练到部署的全流程解决方案。平台支持全球分布式 GPU 资源,涵盖 PyTorch、TensorFlow 等多种预配置环境,并允许用户自定义容器。RunPod 特别注重快速部署和成本效益,其服务器启动时间可缩短至毫秒级,并提供 50 多种开箱即用的模板。平台还提供自动扩展的 Serverless GPU 服务,冷启动时间低于 250 毫秒,适合需要弹性扩展的 AI 推理场景。此外,RunPod 还针对初创公司和学术机构提供专门的信用计划。

  • 快速部署:GPU Pod 可在数秒内启动,冷启动时间低至毫秒级
  • 丰富选项:支持 50+ 预配置模板,涵盖主流 ML 框架,并允许自定义容器
  • 性价比高:提供多种 GPU 选项,价格从 $0.16/hr 起,适合不同预算和需求

Modal:云端 AI 模型一键部署平台

网站预览图

传送门:https://modal.com

Modal 是一个专为 AI 开发者设计的云端计算平台,提供简单高效的解决方案来部署和运行定制化 AI 模型。通过一行代码即可将 Python 函数部署到云端,并自动获得弹性扩展能力,适用于机器学习推理、数据处理等各种计算密集型任务。平台采用创新的 Rust 容器技术实现亚秒级启动,支持数百 GPU 的秒级扩展,并提供按秒计费的灵活定价模式。

  • 零配置部署:通过 Python 装饰器语法快速部署 AI 应用,无需管理基础设施
  • 高性能计算:优化 GPU 利用率,支持 H100/A100 等顶级显卡,实现高效推理和训练
  • 无缝扩展:自动处理突发流量,支持从零扩展到数千个容器的弹性伸缩

Replicate:一键运行 AI 模型的云端平台

传送门:https://replicate.com

Replicate 是一个开源 AI 模型托管平台,提供了简单易用的 API 接口,让开发者能够通过一行代码调用各类预训练 AI 模型。平台汇集了图像生成、视频处理、文本创作等数千个社区贡献的最新模型,所有模型都经过优化可直接用于生产环境。Replicate 采用按秒计费的云服务模式,自动处理 GPU 资源调度和 API 部署等基础设施问题,大幅降低了 AI 应用开发的门槛。

  • 支持数千个开箱即用的生产级 AI 模型,包括 Stable Diffusion、Llama 等热门模型
  • 提供细粒度调优功能,可以用自有数据训练定制化模型
  • 采用按使用量付费的云计算模式,自动扩展处理高并发请求

探索 fal.ai:开发者专属的生成式 AI 平台

网站预览图

传送门:https://fal.ai

fal.ai 是一个专为开发者设计的生成式 AI 平台,致力于提供高性能、低延迟的媒体生成体验。该平台内置强大的 fal Inference Engine™,能够以高达 4 倍的速度运行扩散模型,支持从文本到图像、图像到视频等多种生成任务。开发者可通过直观的 API 接口、丰富的预训练模型库(如 Kling、Pixverse 等),快速构建创意应用,同时享受灵活的按需付费模式和企业级定制服务。

  • 极速推理引擎:优化扩散模型运行效率,速度提升最高达 400%
  • 多样化模型库:提供 Kling、Veo 2 等前沿图像/视频生成模型,支持 LoRA 微调
  • 开发者友好:提供 Python/JavaScript/Swift 客户端库,支持私有模型部署与 H100 GPU 按秒计费

Baseten:AI 推理部署的领先平台

网站预览图

传送门:https://www.baseten.co

Baseten 是一个专注于 AI 模型推理部署的平台,为企业提供高性能的模型运行环境、跨云高可用性解决方案和流畅的开发者工作流程。该平台支持开源模型、定制化模型和微调模型的部署,适用于各种生产环境需求。Baseten 凭借其优化的推理堆栈、云原生基础设施和专业的工程支持,帮助众多知名企业快速实现 AI 产品落地。

  • 提供专用部署选项,支持高负载工作,实现无缝扩展
  • 内置针对生成式 AI 的定制性能优化,如图像生成、转录、文本转语音等
  • 支持多种部署模式,可以在 Baseten 云、自托管或按需灵活部署

Novita.ai:高效部署 AI 模型的云端平台

传送门:https://novita.ai

Novita.ai 是一个专注于 AI 模型部署的云端平台,提供简单易用的 API 接口帮助开发者快速部署和扩展 AI 应用。平台整合了 200 多个开源 AI 模型,覆盖聊天、代码、图像、音频等多种类型,并支持企业级定制模型的部署。通过全球分布式 GPU 资源和按需付费的服务器架构,Novita.ai 实现了高性价比的 AI 服务,为客户节省高达 50% 的成本,同时保障高性能和稳定性。

  • 提供 200+ 预训练模型的即用 API,支持快速集成
  • 全球分布式 GPU 资源,A100/RX4090 等高配显卡可选
  • 按需付费的服务器架构,节省成本达 50%

Koyeb:全球部署的高性能 Serverless 平台

传送门:https://www.koyeb.com

Koyeb 是一个面向开发者的高性能 Serverless 平台,专为 AI 推理、模型微调和分布式系统设计。该平台支持在全球 50+ 个位置部署 GPU、CPU 和加速器工作负载,实现亚 100ms 的全球延迟体验。Koyeb 采用先进的容器技术,提供亚 200ms 的冷启动性能和自动扩展能力,支持从零扩展到数百台服务器。平台特别针对 AI 工作负载进行了深度优化,支持包括 RTX-4000、L4、A100 等多种 NVIDIA GPU,并提供透明的按秒计费模式,相比传统云服务商可节省高达 80% 的成本。

  • 超快冷启动:容器冷启动时间低于 200ms,支持瞬时扩展至数百实例
  • 全球覆盖:在 50+ 个地理位置部署,确保全球用户获得低延迟体验
  • 多样化硬件:支持 RTX-4000 到 A100 等多种 GPU 选择,价格从 $0.50/hr 起步

智灵云:本土化 Serverless AI 计算平台

传送门:https://datastone.cn

智灵云是湖南磐云数据推出的 Serverless 机器学习平台,专注为国内开发者提供高性价比的 GPU 算力服务。平台支持 DeepSeek 等国产大模型的一键本地部署,提供丰富的预置模板包括 Stable Diffusion、Jupyter Notebook、ChatGLM 等主流 AI 应用。智灵云采用弹性计费模式,根据实际工作量动态调整资源,无请求时无需付费。平台特别针对中国用户需求进行优化,支持百度网盘与阿里云盘数据同步,并提供闲时 2.5 折的优惠定价机制,显著降低 AI 开发成本。

  • 本土优化:支持 DeepSeek 一键部署,集成百度网盘和阿里云盘数据同步功能
  • 多样模板:提供 Stable Diffusion、ComfyUI、ChatGLM 等 20+ 种预置模板
  • 灵活定价:闲时 2.5 折优惠,RTX 4090D 单卡低至 ¥0.8/小时

我们做了国内首个 Serverless GPU 产品

2025年5月27日 14:34

步入 2025 年,AI 应用的蓬勃发展让我们见证了技术变革的力量,但作为深耕 AI 领域的开发者,我们却在实际部署中屡屡碰壁——要么是高昂的 GPU 租赁成本让项目举步维艰,要么是传统云服务的刚性供给无法匹配波动性需求,亦或是复杂的基础设施管理消耗了大量精力。我们深知,这些痛点不仅困扰着我们,更是整个 AI 行业面临的共同挑战。于是,一个念头在我们心中萌生:为何不打造一个真正解决这些问题的 Serverless GPU 平台?于是,共绩算力应运而生。这不仅是一个产品,更是我们对 AI 算力服务理想形态的探索与实践,希望它能为那些致力于 AI 创新的开发者们,开启一个全新的算力时代。

picture-2025-05-27-14-29-26

开发共绩算力的初衷:解决 AI 推理算力市场的结构性困境

在使用算力的过程中,我们深刻感受到 AI 应用对推理算力需求的激增,但同时也观察到国内算力市场存在的结构性问题。高昂的推理成本正在阻碍 AI 应用的落地与创新,这促使我们思考如何解决这些痛点:

  • 服务僵化,弹性不足: 我们发现供需矛盾严重影响了效率和用户体验。
  • 模式传统,阻碍增长: 长租模式和高固定投入限制了企业的快速迭代能力。
  • 管理繁琐 & 效率低下: 基础设施管理耗费了工程师大量精力。
  • 资源错配,寻卡无门: 我们观察到算力闲置与高性能 GPU 短缺并存的矛盾现象。

这些问题构成了我们所说的 AI 算力市场 "弹性、稳定、低价"不可能三角,企业很难兼得这三个特性。目前多数云平台提供的三类服务:整租(低价&稳定)、按量租(高价&稳定)、抢占式 SPOT 实例(低价&弹性),都无法完美解决这个问题。

传统 GPU 整租模式难以匹配 AI 推理的波动性需求,导致高昂的"空闲成本"或服务中断,这正是我们要解决的核心问题。

picture-2025-05-27-14-29-50

图:刚性供给与弹性需求之间的矛盾,直接影响了 AI 应用成本和用户体验

面对这一矛盾,我们将目光投向了近年来兴起的 Serverless 计算理念。我们认为,它通过按需付费、自动伸缩和简化运维,为 AI 推理提供了理想的解决方案。

Serverless GPU 允许开发者按需调用 GPU 算力,无需管理硬件,特别适合请求量不稳定的 AI 推理场景。我们研究了全球 Serverless GPU 市场的发展,发现如 RunPod 等平台已经提供按小时计费、容器化部署等服务。

picture-2025-05-27-14-30-08

然而,我们发现国内专注于 Serverless GPU 服务的平台较少,资源储备不足限制了本土 AI 应用的 Serverless 部署。这正是我们决定开发共绩算力的关键原因。

我们的解决方案:共绩算力 Serverless GPU 平台

基于对市场痛点的深入理解,我们开发了"共绩算力"(suanli.cn),这是我们专为 AI 推理打造的 Serverless GPU 平台。我们的目标是打破行业"不可能三角",真正实现弹性、稳定、低价

picture-2025-05-27-14-30-22

我们为共绩算力平台设计的核心价值:

  1. 极致弹性: 我们实现了随流量自动扩缩容,毫秒级按量计费,彻底告别资源浪费和空闲成本。
  2. 部署极简: 我们采用 Docker 容器化技术,五步快速上云,兼容各类平台,并提供全程技术支持。
  3. 海量资源: 我们整合了全国算力资源,提供万卡级别的资源池,以高性价比保障稳定供给(如 4090 单卡低至 1.68 元/小时)。

我们自研的闲时算力调度平台整合了多家智算平台的资源,不仅提供了 Serverless 按需付费特性,还通过跨平台资源整合破解了"供需错配"这一行业难题。

限时优惠:立即体验我们的 Serverless GPU 服务

我们的 NVIDIA RTX 4090 单卡推理服务:仅需 1.68 元/小时!

即日起至 6 月 18 日,新用户注册并首次充值,我们额外赠送 20% 积分!

邀请好友使用我们的服务,通过您的邀请码成功拉新,您和被邀请人各得 50 元积分!

参与方式: 活动期间,通过我们的官方网站 suanli.cn 登录用户后台,选择在线充值即可自动参与并获得赠送金额。具体活动细则以官网届时公布为准。

picture-2025-05-27-14-30-55

立即访问 suanli.cn,体验我们打造的 AI 推理新纪元,让算力不再是您创新的瓶颈!

Mermaid 两个极简主题样式分享

2025年5月27日 08:00

Mermaid.js 是一款强大的工具,它允许我们使用文本和代码快速生成各种图表和流程图。非常适合与 Markdown 结合。一个美观且合适的图表主题能够显著提升信息传递的效率和专业性。

但是他的默认主题实在是太丑了,于是本文分享两个简约风格的 Mermaid 主题配置。

原皮:

picture-2025-05-29-18-02-01

主题一:纯白简约风格

picture-2025-05-28-09-12-04

要使用此主题,只需将以下 %%{ init: { ... } }%% 配置块复制到你的 Mermaid 代码块的顶部即可。

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
      'primaryColor': '#ffffff',
      'primaryTextColor': '#333333',
      'primaryBorderColor': '#cccccc',
      'lineColor': '#888888',
      'tertiaryColor': '#D0E4FF',
      'tertiaryBorderColor': '#D0E4FF',
      'tertiaryTextColor': '#00A4FF'
    }
  }
}%%

主题一配置解析

如上所示,我基于 base 主题魔改了一些自定义样式。通过 themeVariables,调整了颜色方案:

  • primaryColor: #ffffff (节点背景色 - 白色)
  • primaryTextColor: #333333 (节点文字颜色 - 深灰色)
  • primaryBorderColor: #cccccc (节点边框色 - 浅灰色)
  • lineColor: #888888 (连接线颜色 - 中灰色)
  • tertiaryColor: #D0E4FF (特定节点/分组背景色 - 淡蓝色)
  • tertiaryBorderColor: #D0E4FF (特定节点/分组边框色 - 淡蓝色)
  • tertiaryTextColor: #00A4FF (特定节点/分组文字颜色 - 亮蓝色)

主题二:淡雅商务风格

第二个主题采用了更加商务化的配色方案,使用淡雅的背景色和黑色边框,更适合正式文档和商务报告。

picture-2025-06-05-11-22-25

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
      'primaryColor': '#F0F4FC',
      'primaryTextColor': '#1F2329',
      'primaryBorderColor': '#000000',
      'lineColor': '#888888',
      'tertiaryColor': '#F5F6F7',
      'tertiaryBorderColor': '#F5F6F7',
      'tertiaryTextColor': '#00A4FF'
    }
  }
}%%

主题二配置解析

这个主题使用了更加专业和商务化的色彩搭配:

  • primaryColor: #F0F4FC (节点背景色 - 淡蓝灰色)
  • primaryTextColor: #1F2329 (节点文字颜色 - 深色文本)
  • primaryBorderColor: #000000 (节点边框色 - 黑色边框)
  • lineColor: #888888 (连接线颜色 - 中灰色)
  • tertiaryColor: #F5F6F7 (特定节点/分组背景色 - 浅灰色)
  • tertiaryBorderColor: #F5F6F7 (特定节点/分组边框色 - 浅灰色)
  • tertiaryTextColor: #00A4FF (特定节点/分组文字颜色 - 亮蓝色)

使用示例

picture-2025-05-28-09-12-04

代码如下:

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
      'primaryColor': '#ffffff',
      'primaryTextColor': '#333333',
      'primaryBorderColor': '#cccccc',
      'lineColor': '#888888',
      'tertiaryColor': '#D0E4FF',
      'tertiaryBorderColor': '#D0E4FF',
      'tertiaryTextColor': '#00A4FF'
    }
  }
}%%
graph TD
    subgraph client_subgraph [客户端]
        C1[客户端1]
        C2[客户端2]
        C3[客户端3]
    end

    subgraph server_subgraph [服务器集群]
        S1[服务器1 (健康)]
        S2[服务器2 (健康)]
        S3[服务器3 (不健康)]
        S4[服务器4 (健康)]
    end

    LB{负载均衡器}

    C1 --> LB
    C2 --> LB
    C3 --> LB

    LB -- 健康检查 --> S1
    LB -- 健康检查 --> S2
    LB -- 健康检查 --> S3
    LB -- 健康检查 --> S4

    LB -- 流量分配 --> S1
    LB -- 流量分配 --> S2
    LB -- 流量分配 --> S4

    %% 箭头样式:深灰色,1.5px宽度
    style S3 fill:#f99

参考

  • https://mermaid.js.org/config/theming.html
❌
❌