<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>领域 on Albert Intelligence</title><link>https://blog.hialbert.online/tags/%E9%A2%86%E5%9F%9F/</link><description>Recent content in 领域 on Albert Intelligence</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Thu, 14 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.hialbert.online/tags/%E9%A2%86%E5%9F%9F/index.xml" rel="self" type="application/rss+xml"/><item><title>别一上来就 K8s · Claude Code 写电商的 4 档默认架构</title><link>https://blog.hialbert.online/post/claude-code-vibe-coding-%E5%BA%94%E7%94%A8%E7%9A%84%E6%9E%B6%E6%9E%84%E5%88%86%E6%A1%A3%E6%89%8B%E5%86%8C/</link><pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate><guid>https://blog.hialbert.online/post/claude-code-vibe-coding-%E5%BA%94%E7%94%A8%E7%9A%84%E6%9E%B6%E6%9E%84%E5%88%86%E6%A1%A3%E6%89%8B%E5%86%8C/</guid><description>&lt;h1 id="别一上来就-k8s--claude-code-写电商的-4-档默认架构"&gt;别一上来就 K8s · Claude Code 写电商的 4 档默认架构
&lt;/h1&gt;&lt;blockquote class="alert alert-tip"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;💡&lt;/span&gt;
 &lt;span class="alert-title"&gt;一句话立场&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;&lt;strong&gt;你让 Claude Code 写电商网站，它给的栈是对的——但你要会问。&lt;/strong&gt; 50 个用户和 10000 个用户，差出来的不只是流量，是整个架构。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;我有一个执念：&lt;strong&gt;架构是长出来的，不是设计出来的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每次看到有人 demo 阶段就上 K8s + 微服务全家桶，我都想问一句：你的数据库连过 100 次都没有吧？&lt;/p&gt;
&lt;p&gt;下面这套是 Claude Code 在 2025 年的实战默认栈，按用户量分 4 档。&lt;strong&gt;第一档你今晚就能跑起来，第四档烧钱烧到怀疑人生。&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;👤 &amp;lt; 50 👥 50-200 👥👥 200-1000 👥👥👥 1000+
 🌱 🌿 🌳 🌲🌲🌲
 MVP 小型上线 中型电商 大型电商
Tier 0 Tier 1 Tier 2 Tier 3
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="全景一图流"&gt;全景一图流
&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
 │ 🌱 Tier 0│───►│ 🌿 Tier 1│───►│ 🌳 Tier 2│───►│ 🌲 Tier 3│
 │ &amp;lt; 50 并发│ │ 50-200 │ │ 200-1000 │ │ 1000+ │
 │ 全栈一体 │ │+异步+缓存│ │前后端分离│ │微服务+K8s│
 └──────────┘ └──────────┘ └──────────┘ └──────────┘
 MVP 小型上线 中型电商 大型电商
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;下面一档一档拆。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-tier-0--mvp--demo并发--50"&gt;🌱 Tier 0 · MVP / Demo（并发 &amp;lt; 50）
&lt;/h2&gt;&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;用在哪&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;个人项目 · 原型 · 客户演示 · 小程序店铺&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;关键词：一把梭，几乎无运维。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你能想到的所有麻烦事——服务器、数据库、CDN、邮件——这一档都不用碰。&lt;/p&gt;
&lt;h3 id="长什么样"&gt;长什么样
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; ┌─────────────────────────┐
 │ 🖥️ Vercel 一键部署 │
 │ ┌───────────────────┐ │
 │ │ ⚛️ Next.js 全栈 │ │
 │ │ (前 + 后 + API) │ │
 │ └─────────┬─────────┘ │
 └────────────┼────────────┘
 │
 ┌──────▼──────┐
 │ 🐘 Supabase │
 │ Postgres │
 └─────────────┘
 💳 Stripe Checkout (托管页)
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="claude-code-默认推荐栈"&gt;Claude Code 默认推荐栈
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;层&lt;/th&gt;
 &lt;th&gt;默认推荐&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;前端&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Next.js 15&lt;/strong&gt;（App Router）+ TS + Tailwind + shadcn/ui&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;状态&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;useState&lt;/code&gt; / &lt;code&gt;useContext&lt;/code&gt;（&lt;strong&gt;不上 Redux&lt;/strong&gt;）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;后端&lt;/td&gt;
 &lt;td&gt;Next.js API Routes / Server Actions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ORM&lt;/td&gt;
 &lt;td&gt;Prisma&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;数据库&lt;/td&gt;
 &lt;td&gt;SQLite 本地 / &lt;strong&gt;Supabase Postgres&lt;/strong&gt; 免费层&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;鉴权&lt;/td&gt;
 &lt;td&gt;Auth.js (NextAuth v5) + Email / Google OAuth&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;支付&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Stripe Checkout&lt;/strong&gt;（托管页最省事）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;文件&lt;/td&gt;
 &lt;td&gt;Supabase Storage / Cloudinary 免费层&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;部署&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Vercel&lt;/strong&gt;（一键）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote class="alert alert-success"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;&lt;/span&gt;
 &lt;span class="alert-title"&gt;这一档的本质&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;**全栈一体，零运维。**Claude Code 默认就给你这套，&lt;strong&gt;别自作聪明加东西&lt;/strong&gt;。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="-tier-1--小型上线并发-50-200"&gt;🌿 Tier 1 · 小型上线（并发 50-200）
&lt;/h2&gt;&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;用在哪&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;正式上线的小店 · 垂直品类 · SaaS 早期&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;关键词：仍是单体，但开始引入「异步」和「缓存」两个观念。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="长什么样-1"&gt;长什么样
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; 📱 浏览器
 │
 ▼
 ┌────────────────────┐
 │ ⚛️ Next.js (BFF) │ ◄──── 📨 Resend (邮件)
 │ + TanStack Query │
 │ + Zustand │
 └─────┬──────────────┘
 │
 ┌────▼────┐ ┌──────────┐
 │ 🐘 PG │◄──►│ ⚡ Upstash│
 │ (Neon) │ │ Redis │
 └─────────┘ └──────────┘
 │
 ▼
 ┌────────────┐
 │ ⏱️ Inngest │ ──► 订单后续动作
 └────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="比-tier-0-多了什么"&gt;比 Tier 0 多了什么
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;层&lt;/th&gt;
 &lt;th&gt;升级点&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;🎨 前端&lt;/td&gt;
 &lt;td&gt;加 &lt;strong&gt;TanStack Query&lt;/strong&gt;（服务端状态）+ &lt;strong&gt;Zustand&lt;/strong&gt;（客户端轻量状态）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;📋 表单&lt;/td&gt;
 &lt;td&gt;React Hook Form + &lt;strong&gt;Zod&lt;/strong&gt;（校验和类型同源，神器）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🔁 后端&lt;/td&gt;
 &lt;td&gt;抽出 service 层 / 用 tRPC 或 Server Actions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🐘 数据库&lt;/td&gt;
 &lt;td&gt;PostgreSQL 托管（Supabase / &lt;strong&gt;Neon&lt;/strong&gt; / Railway）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;⚡ 缓存&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Upstash Redis&lt;/strong&gt;（serverless，按请求计费，便宜）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🔍 搜索&lt;/td&gt;
 &lt;td&gt;DB 自带 &lt;code&gt;pg_trgm&lt;/code&gt; / &lt;code&gt;tsvector&lt;/code&gt; 全文检索（&lt;strong&gt;别急着上 ES&lt;/strong&gt;）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;📨 邮件&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Resend&lt;/strong&gt;（发货通知、找回密码）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;👀 监控&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Sentry&lt;/strong&gt; 免费层 + Vercel Analytics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;⏱️ 队列&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Inngest&lt;/strong&gt; 或 Trigger.dev&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🌐 CDN&lt;/td&gt;
 &lt;td&gt;Vercel / Cloudflare 自带&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote class="alert alert-info"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;&lt;/span&gt;
 &lt;span class="alert-title"&gt;心法&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;&lt;strong&gt;缓存 + 异步是两个分水岭。&lt;/strong&gt; 你的代码开始有「立刻返回」和「稍后处理」两条路，这是离开玩具阶段的标志。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="-tier-2--中型电商并发-200-1000"&gt;🌳 Tier 2 · 中型电商（并发 200-1000）
&lt;/h2&gt;&lt;blockquote class="alert alert-warning"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;⚠️&lt;/span&gt;
 &lt;span class="alert-title"&gt;架构拐点&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;&lt;strong&gt;这一档开始拆了。&lt;/strong&gt; 前后端分离 + BFF 出现。能不能扛住活动峰值，就看这一档的底子打得稳不稳。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;h3 id="长什么样-2"&gt;长什么样
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; 👤 用户
 │
 ┌───────────────────▼───────────────────┐
 │ 🌐 边缘层 Cloudflare / Vercel Edge │
 │ ┌──────────┐ ┌──────────────────┐ │
 │ │ 图片 CDN │ │ Edge Runtime │ │
 │ │ CF Images│ │ 地理路由 / A/B │ │
 │ └──────────┘ └──────────────────┘ │
 └───────────────────┬───────────────────┘
 ▼
 ┌───────────────────────────────────────┐
 │ 🎨 前端 BFF │
 │ ⚛️ Next.js (SSR + ISR + RSC) │
 └───────────────────┬───────────────────┘
 ▼
 ┌───────────────────────────────────────┐
 │ 🔁 独立 API 服务 │
 │ 🦅 NestJS / FastAPI / Hono │
 └──────┬──────────────────────────┬─────┘
 │ │
 ┌───────────▼──────────┐ ┌──────────▼──────────┐
 │ 💾 数据层 │ │ ⏱️ 异步层 │
 │ 🐘 Postgres 主从 │ │ BullMQ / Celery │
 │ ⚡ Redis 会话/购物车 │ │ Inngest / │
 │ 🔍 Meilisearch │ │ Redis Streams │
 │ 📦 R2 / S3 │ │ │
 └──────────────────────┘ └─────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="模块拆解"&gt;模块拆解
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;前端&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;⚛️ Next.js（SSR + ISR）+ Edge Runtime（地理路由 / A/B）&lt;/li&gt;
&lt;li&gt;🧩 React Server Components 分担首屏&lt;/li&gt;
&lt;li&gt;🖼️ &lt;code&gt;next/image&lt;/code&gt; + Cloudflare Images / imgix&lt;/li&gt;
&lt;li&gt;📑 商详 ISR 重生成；首页/列表混合 SSR + CSR&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;后端：独立 API 服务出场&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;选型&lt;/th&gt;
 &lt;th&gt;适用&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;🦅 NestJS&lt;/td&gt;
 &lt;td&gt;TypeScript 体系&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🐍 FastAPI&lt;/td&gt;
 &lt;td&gt;有 AI / 推荐需求&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;⚡ Hono / Elysia&lt;/td&gt;
 &lt;td&gt;轻量 + 边缘部署&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;API 风格：REST + OpenAPI 或 tRPC（全 TS 时）&lt;/li&gt;
&lt;li&gt;BFF 层：Next.js 充当前端的 BFF，聚合下游&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;数据&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🐘 PostgreSQL 主 + 读写分离 / 主从复制&lt;/li&gt;
&lt;li&gt;⚡ Redis（Upstash 或自建）：会话、购物车、热门商品缓存、限流&lt;/li&gt;
&lt;li&gt;🔍 Meilisearch / Typesense（轻量、自托管友好，&lt;strong&gt;别急着上 Elasticsearch&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;📦 Cloudflare R2 / AWS S3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;异步与事件&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;⏱️ BullMQ（Node）/ Celery（Python）：订单状态机、库存扣减、发邮件、生成发票&lt;/li&gt;
&lt;li&gt;📡 事件驱动：Inngest 或自建 Redis Streams&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;鉴权与支付&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🔐 Clerk 或 Auth.js + 自管 session&lt;/li&gt;
&lt;li&gt;💳 Stripe + Webhook + &lt;strong&gt;幂等键&lt;/strong&gt;（敲黑板）&lt;/li&gt;
&lt;li&gt;🛡️ 风控：Stripe Radar + 自定义规则&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="alert alert-info"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;&lt;/span&gt;
 &lt;span class="alert-title"&gt;Tier 2 的真实痛点&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;&lt;strong&gt;不是性能，是数据一致性。&lt;/strong&gt; 订单、库存、支付三者一旦异步化，就要开始想&amp;quot;如果中间挂了会怎样&amp;quot;。这一档就是从「能跑」到「能扛」的分水岭。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;可观测性&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🐛 Sentry（异常）&lt;/li&gt;
&lt;li&gt;📜 Axiom / Better Stack（日志）&lt;/li&gt;
&lt;li&gt;📊 PostHog（产品分析 + Session Replay）&lt;/li&gt;
&lt;li&gt;🔭 OpenTelemetry 开始接入&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;部署&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🚀 前端：Vercel / Cloudflare Pages&lt;/li&gt;
&lt;li&gt;🐳 后端：Railway / Fly.io / Render（容器化）&lt;/li&gt;
&lt;li&gt;🐘 DB：Neon（&lt;strong&gt;分支&lt;/strong&gt; 这个 feature 救命）/ Supabase / PlanetScale&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="-tier-3--大型电商并发-1000"&gt;🌲 Tier 3 · 大型电商（并发 1000+）
&lt;/h2&gt;&lt;blockquote class="alert alert-danger"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;&lt;/span&gt;
 &lt;span class="alert-title"&gt;这已经不是 vibe coding 的范畴了&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;这一档让 Claude Code 一把梭基本翻车。但它仍然有一套主流默认推荐——&lt;strong&gt;作为参考可以，作为执行不行&lt;/strong&gt;。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;关键词：微服务 + 事件驱动 + K8s 全家桶。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="长什么样电商六大域"&gt;长什么样（电商六大域）
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; 👤 海量用户
 │
 ▼
 ┌───────────────────────────────┐
 │ ☁️ Cloudflare │
 │ CDN + WAF + Bot + Rate Limit │
 └───────────────┬───────────────┘
 ▼
 ┌───────────────────────────────┐
 │ 🚪 API Gateway │
 │ Kong / APISIX │
 └───────────────┬───────────────┘
 │
 ┌──────────┬──────────┬───────┴──────┬──────────┬──────────┐
 ▼ ▼ ▼ ▼ ▼ ▼
🪪 Identity 📚 Catalog 🔍 Search 🛒 Cart 📦 Order 💳 Payment
 /Reco
 │
 ┌──────────┬──────────┬──────────┐ │
 ▼ ▼ ▼ │ │
📊 Inventory 🎁 Promo 📨 Notif │ │
 │ │ │ │ │
 └──────────┴──────────┴──────────┴───────────┬────────────┘
 ▼
 ┌──────────────────────────────────┐
 │ 📡 Kafka / NATS 事件总线 │
 └─────────────────┬────────────────┘
 ▼
 ┌──────────────────────────────────┐
 │ ⏰ Temporal 订单履约工作流 │
 └──────────────────────────────────┘

 数据层（按服务路由）:
 ─────────────────────────────────────────────────────────
 🐘 Postgres 集群 + PgBouncer ◄── Order / Inventory / Cart
 🔎 Elasticsearch + pgvector ◄── Search / Reco
 ⚡ Redis Cluster ◄── Cart / Promotion
 📈 ClickHouse ◄── Notification 埋点 / 大盘
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="整体架构思路"&gt;整体架构思路
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;🧩 &lt;strong&gt;微服务&lt;/strong&gt; 或 &lt;strong&gt;模块化单体（Modular Monolith）&lt;/strong&gt; 二选一（&lt;strong&gt;别教条&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;🔌 前后端彻底分离，多端共用 API Gateway&lt;/li&gt;
&lt;li&gt;📖 &lt;strong&gt;CQRS&lt;/strong&gt;（读写分离）在订单、库存、商品三大领域常见&lt;/li&gt;
&lt;li&gt;📡 &lt;strong&gt;Event-Driven&lt;/strong&gt;：Kafka / NATS / Redpanda 做事件总线&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="前端"&gt;前端
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;端&lt;/th&gt;
 &lt;th&gt;默认&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;🖥️ Web 主站&lt;/td&gt;
 &lt;td&gt;Next.js（SSR + ISR）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;📱 App&lt;/td&gt;
 &lt;td&gt;React Native / Expo&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🛍️ Storefront&lt;/td&gt;
 &lt;td&gt;Vercel Commerce / Medusa / Shopify Hydrogen 思路&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🧱 Design System&lt;/td&gt;
 &lt;td&gt;独立仓库（&lt;strong&gt;Turborepo&lt;/strong&gt; monorepo + 自建组件库）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;⚡ 边缘渲染&lt;/td&gt;
 &lt;td&gt;Cloudflare Workers / Vercel Edge&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="后端服务拆分典型电商域"&gt;后端服务拆分（典型电商域）
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;服务&lt;/th&gt;
 &lt;th&gt;职责&lt;/th&gt;
 &lt;th&gt;默认技术&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;🪪 Identity&lt;/td&gt;
 &lt;td&gt;用户、鉴权、权限&lt;/td&gt;
 &lt;td&gt;NestJS / Go&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;📚 Catalog&lt;/td&gt;
 &lt;td&gt;商品、SKU、类目&lt;/td&gt;
 &lt;td&gt;NestJS / Go（读多写少）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🔍 Search&lt;/td&gt;
 &lt;td&gt;搜索、推荐&lt;/td&gt;
 &lt;td&gt;Elasticsearch / OpenSearch + 向量（pgvector / Qdrant）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🛒 Cart&lt;/td&gt;
 &lt;td&gt;购物车&lt;/td&gt;
 &lt;td&gt;Redis 主存 + Node/Go&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;📦 Order&lt;/td&gt;
 &lt;td&gt;订单状态机&lt;/td&gt;
 &lt;td&gt;Go / Java（&lt;strong&gt;Saga 模式&lt;/strong&gt;）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;📊 Inventory&lt;/td&gt;
 &lt;td&gt;库存（强一致）&lt;/td&gt;
 &lt;td&gt;Go + Redis Lua 扣减&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;💳 Payment&lt;/td&gt;
 &lt;td&gt;支付、对账&lt;/td&gt;
 &lt;td&gt;独立服务，&lt;strong&gt;严格幂等&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🎁 Promotion&lt;/td&gt;
 &lt;td&gt;优惠券、活动&lt;/td&gt;
 &lt;td&gt;规则引擎&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;📨 Notification&lt;/td&gt;
 &lt;td&gt;邮件/短信/Push&lt;/td&gt;
 &lt;td&gt;异步 worker&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;✨ Recommendation&lt;/td&gt;
 &lt;td&gt;个性化&lt;/td&gt;
 &lt;td&gt;Python + 向量库&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="数据层"&gt;数据层
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; 📥 写
 ↓
 ┌────────────┐
 │ 🐘 Postgres │ ─────► 各服务垂直拆分
 │ 主库 │
 └─────┬──────┘
 │ 读写分离
 ┌─────▼──────┐
 │ 🔄 PgBouncer│
 └────────────┘

 ⚡ Redis Cluster ─── 缓存 / 会话 / 限流 / 分布式锁 / 热点 key
 🔎 ES / OpenSearch ─ 商品搜索 + 日志 (ELK)
 📈 ClickHouse ────── 埋点 / 订单分析 / 实时大盘
 📦 S3 / R2 ────────── 图片、静态资源 + CDN
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="消息与异步"&gt;消息与异步
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;🚌 &lt;strong&gt;Kafka / Redpanda / NATS JetStream&lt;/strong&gt;：领域事件&lt;/li&gt;
&lt;li&gt;⏰ &lt;strong&gt;Temporal&lt;/strong&gt;：复杂工作流（订单履约、退款流程）—— &lt;strong&gt;Claude Code 在 2025 年很爱推这个&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="流量层"&gt;流量层
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;☁️ Cloudflare（CDN + WAF + Bot 管理 + Rate Limit）&lt;/li&gt;
&lt;li&gt;🚪 API Gateway：Kong / APISIX / 自建（Hono on Edge）&lt;/li&gt;
&lt;li&gt;🔌 gRPC 内部通信，REST/GraphQL 对外&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="可观测性必须三件套"&gt;可观测性（必须三件套）
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; 📊 Metrics ─── Prometheus + Grafana
 📜 Logs ────── Loki / ClickHouse / ES
 🕸️ Traces ──── Tempo / Jaeger（OpenTelemetry 统一）
 🐛 Errors ──── Sentry
 📈 业务大盘 ── ClickHouse + Grafana
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="基础设施"&gt;基础设施
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;🚢 &lt;strong&gt;Kubernetes&lt;/strong&gt;（EKS / GKE / ACK）&lt;/li&gt;
&lt;li&gt;🏗️ Terraform / Pulumi 管 IaC&lt;/li&gt;
&lt;li&gt;🔄 ArgoCD / Flux 做 GitOps&lt;/li&gt;
&lt;li&gt;🐳 Docker + 多阶段构建&lt;/li&gt;
&lt;li&gt;⚙️ CI/CD：GitHub Actions + 自托管 runner&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="大促--高并发的关键技术"&gt;大促 / 高并发的关键技术
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;技术&lt;/th&gt;
 &lt;th&gt;用法&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;📦 库存预扣 + 异步落库&lt;/td&gt;
 &lt;td&gt;Redis Lua + Kafka&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🚦 限流&lt;/td&gt;
 &lt;td&gt;令牌桶 / 漏桶（Redis + Lua）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🛡️ 熔断降级&lt;/td&gt;
 &lt;td&gt;商详降级到静态、推荐降级到热销&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🧠 本地缓存&lt;/td&gt;
 &lt;td&gt;Caffeine（JVM）/ 进程内 LRU&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;⚡ CDN 边缘缓存&lt;/td&gt;
 &lt;td&gt;商品页 ISR + &lt;code&gt;stale-while-revalidate&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🆔 分布式 ID&lt;/td&gt;
 &lt;td&gt;Snowflake / ULID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🔒 幂等&lt;/td&gt;
 &lt;td&gt;订单创建、支付回调强制幂等键&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="一张总览表横向对比"&gt;一张总览表（横向对比）
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;维度&lt;/th&gt;
 &lt;th&gt;🌱 Tier 0 (&amp;lt;50)&lt;/th&gt;
 &lt;th&gt;🌿 Tier 1 (50-200)&lt;/th&gt;
 &lt;th&gt;🌳 Tier 2 (200-1000)&lt;/th&gt;
 &lt;th&gt;🌲 Tier 3 (1000+)&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;架构形态&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;全栈单体&lt;/td&gt;
 &lt;td&gt;单体 + 异步任务&lt;/td&gt;
 &lt;td&gt;前后端分离 + BFF&lt;/td&gt;
 &lt;td&gt;微服务 / 模块化单体&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;前端&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Next.js&lt;/td&gt;
 &lt;td&gt;Next.js + RQ&lt;/td&gt;
 &lt;td&gt;Next.js + Edge&lt;/td&gt;
 &lt;td&gt;Next.js + RN + Monorepo&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;后端&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;API Routes&lt;/td&gt;
 &lt;td&gt;API Routes + Service&lt;/td&gt;
 &lt;td&gt;NestJS / FastAPI&lt;/td&gt;
 &lt;td&gt;多服务 + Gateway&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;数据库&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;SQLite / Supabase&lt;/td&gt;
 &lt;td&gt;Postgres 托管&lt;/td&gt;
 &lt;td&gt;Postgres 主从 + Redis&lt;/td&gt;
 &lt;td&gt;PG 集群 + Redis Cluster + ES + ClickHouse&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;搜索&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;LIKE / pg_trgm&lt;/td&gt;
 &lt;td&gt;Postgres FTS&lt;/td&gt;
 &lt;td&gt;Meilisearch&lt;/td&gt;
 &lt;td&gt;Elasticsearch + 向量&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;队列&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;无&lt;/td&gt;
 &lt;td&gt;Inngest&lt;/td&gt;
 &lt;td&gt;BullMQ / Celery&lt;/td&gt;
 &lt;td&gt;Kafka + Temporal&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;部署&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Vercel&lt;/td&gt;
 &lt;td&gt;Vercel + Railway&lt;/td&gt;
 &lt;td&gt;Vercel + Fly.io&lt;/td&gt;
 &lt;td&gt;K8s + Cloudflare&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;监控&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Sentry&lt;/td&gt;
 &lt;td&gt;Sentry + PostHog&lt;/td&gt;
 &lt;td&gt;+ Axiom + OTel&lt;/td&gt;
 &lt;td&gt;Prom + Grafana + Loki + Tempo&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;支付&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Stripe Checkout&lt;/td&gt;
 &lt;td&gt;Stripe + Webhook&lt;/td&gt;
 &lt;td&gt;Stripe + 风控&lt;/td&gt;
 &lt;td&gt;多渠道 + 对账系统&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="实战心法用-claude-code-时记住这-3-条"&gt;实战心法（用 Claude Code 时记住这 3 条）
&lt;/h2&gt;&lt;blockquote class="alert alert-tip"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;💡&lt;/span&gt;
 &lt;span class="alert-title"&gt;心法 1 · 不要一上来就 Tier 3&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;Claude Code 默认会给你 Tier 0/1，&lt;strong&gt;这是对的&lt;/strong&gt;。等真有流量再迁。&lt;strong&gt;为想象中的流量买单，是创业失败的常见死法&lt;/strong&gt;。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;blockquote class="alert alert-tip"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;💡&lt;/span&gt;
 &lt;span class="alert-title"&gt;心法 2 · 跨档迁移优先级&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;&lt;strong&gt;数据库和搜索最容易踩坑&lt;/strong&gt;，跨档迁移时优先重构这两块。其他模块（缓存、CDN、监控）几乎可以无痛升级。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;blockquote class="alert alert-warning"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;⚠️&lt;/span&gt;
 &lt;span class="alert-title"&gt;心法 3 · 国内场景特别提示&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;Vercel / Stripe / Supabase 在国内访问有问题，可替换为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;☁️ &lt;strong&gt;阿里云函数计算&lt;/strong&gt; / Sealos&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;腾讯 EdgeOne&lt;/strong&gt; CDN&lt;/li&gt;
&lt;li&gt;🐘 &lt;strong&gt;PingCAP TiDB Serverless&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;💴 连连 / 微信支付 / 支付宝&lt;/li&gt;
&lt;/ul&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;blockquote class="alert alert-important"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📌&lt;/span&gt;
 &lt;span class="alert-title"&gt;vibe coding 隐藏陷阱&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;&lt;strong&gt;让 Claude Code 在每个 tier 之间只迁移一两个组件，不要让它一次性大重构。&lt;/strong&gt; 它在大重构里容易引入回归——&lt;strong&gt;它越自信，你越要 review&lt;/strong&gt;。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="决策导图什么时候该升级"&gt;决策导图：什么时候该升级？
&lt;/h2&gt;&lt;p&gt;不是看时间，&lt;strong&gt;是看信号&lt;/strong&gt;。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; 📈 流量上来了
 │
 ▼
 ┌──────────────────┐ 是 ┌────────────────────┐
 │ DB CPU &amp;gt; 70% ? │────────►│ 升 Postgres 主从 │
 └─────────┬────────┘ │ + Redis 缓存 │
 否 └────────────────────┘
 ▼
 ┌──────────────────┐ 是 ┌────────────────────┐
 │ 首页 P95 &amp;gt; 2s ? │────────►│ 上 ISR / Edge │
 └─────────┬────────┘ │ + CDN 缓存 │
 否 └────────────────────┘
 ▼
 ┌──────────────────┐ 是 ┌────────────────────┐
 │ 订单峰值堆积 ? │────────►│ 拆异步队列 │
 └─────────┬────────┘ │ BullMQ / Celery │
 否 └────────────────────┘
 ▼
 ┌──────────────────┐ 是 ┌────────────────────┐
 │ 搜索慢 / 不准 ? │────────►│ 换 Meilisearch │
 └─────────┬────────┘ │ / Elasticsearch │
 否 └────────────────────┘
 ▼
 ┌──────────────────┐
 │ ✅ 保持现状 │
 │ 继续观察 │
 └──────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;这张图比任何架构师的脑补都靠谱。&lt;/strong&gt; 让数据告诉你升不升。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="核心关键词"&gt;核心关键词
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;电商架构&lt;/code&gt; &lt;code&gt;vibe coding&lt;/code&gt; &lt;code&gt;Claude Code&lt;/code&gt; &lt;code&gt;渐进式架构&lt;/code&gt; &lt;code&gt;Tier 0-3&lt;/code&gt; &lt;code&gt;Next.js&lt;/code&gt; &lt;code&gt;微服务&lt;/code&gt; &lt;code&gt;单体&lt;/code&gt; &lt;code&gt;BFF&lt;/code&gt; &lt;code&gt;PostgreSQL&lt;/code&gt; &lt;code&gt;Redis&lt;/code&gt; &lt;code&gt;Stripe&lt;/code&gt; &lt;code&gt;Vercel&lt;/code&gt; &lt;code&gt;K8s&lt;/code&gt; &lt;code&gt;Kafka&lt;/code&gt; &lt;code&gt;Temporal&lt;/code&gt; &lt;code&gt;CQRS&lt;/code&gt; &lt;code&gt;事件驱动&lt;/code&gt; &lt;code&gt;可观测性&lt;/code&gt; &lt;code&gt;阿里云/国内替换&lt;/code&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="写在最后"&gt;写在最后
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;架构是长出来的，不是设计出来的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;先让 Claude Code 给你 Tier 0/1，把生意跑起来。&lt;/p&gt;
&lt;p&gt;用户说慢了再上缓存。订单堆了再拆队列。团队大了再拆服务。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;别为想象中的流量买单。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这一句话，能省掉你创业前两年 80% 的架构焦虑。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="相关笔记"&gt;相关笔记
&lt;/h2&gt;&lt;h3 id="架构与部署实践"&gt;架构与部署实践
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.hialbert.online/post/%e4%bb%8e%e9%9b%b6%e6%90%ad%e5%bb%baobsidian%e5%85%a8%e6%a0%88%e7%9f%a5%e8%af%86%e7%b3%bb%e7%bb%9f/" &gt;从零搭建Obsidian全栈知识系统&lt;/a&gt; — 全栈架构设计、多端同步、AI 协作实战&lt;/li&gt;
&lt;li&gt;云服务器代码资产盘点-2026-04-23 — 阿里云 2C2G 服务器上 &lt;strong&gt;FastAPI + Nginx + 多域名部署&lt;/strong&gt; 实践&lt;/li&gt;
&lt;li&gt;阿里云服务器代码资产盘点-2026-04-23 — 阿里云部署细节、docs-agent 上线、PWA + systemd 部署&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.hialbert.online/post/%e7%bb%99hermes-agent%e8%a3%85%e4%b8%8aopen-webui-%e4%bb%8e%e9%9b%b6%e5%88%b0%e4%b8%80%e7%9a%84%e5%ae%8c%e6%95%b4%e5%ae%9e%e8%b7%b5/" &gt;给Hermes Agent装上Open WebUI：从零到一的完整实践&lt;/a&gt; — AI Agent 工具链搭建，与 vibe coding 心法相通&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.hialbert.online/post/genericagent-vs-o-easy-3000-%e8%a1%8c%e4%bb%a3%e7%a0%81%e7%9a%84%e4%b8%a4%e7%a7%8d%e7%94%a8%e6%b3%95/" &gt;GenericAgent vs O-easy：3000 行代码的两种用法&lt;/a&gt; — 同博客的 Agent 架构对比&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="基础设施与运维"&gt;基础设施与运维
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.hialbert.online/post/obsidian%e5%a4%9a%e7%ab%af%e5%90%8c%e6%ad%a5%e6%90%ad%e5%bb%ba%e5%85%a8%e8%ae%b0%e5%bd%95/" &gt;Obsidian多端同步搭建全记录&lt;/a&gt; — Cloudflare + Nginx + WebDAV 搭建（CDN / SSL / 域名解析），可对照本手册 Tier 1-3 的 CDN/WAF/部署&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="obsidian-用法"&gt;Obsidian 用法
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Obsidian核心用法指南 — 双向链接、标签分类等 Obsidian 基础用法&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;blockquote class="alert alert-quote"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;&lt;/span&gt;
 &lt;span class="alert-title"&gt;一句话收尾&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;&lt;strong&gt;Tier 0 单体跑得飞，Tier 3 微服务全家桶——但生意是从 Tier 0 长出来的，不是从 Tier 3 想出来的。&lt;/strong&gt;&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;%% 整理日期: 2026-05-05 · 来源: 与 Claude 关于 vibe coding 默认栈的对话 %%&lt;/p&gt;</description></item><item><title>同样 3000 行代码，为什么有的 AI Agent 越用越聪明，有的早早封顶</title><link>https://blog.hialbert.online/post/genericagent-vs-o-easy3000-%E8%A1%8C%E4%BB%A3%E7%A0%81%E7%9A%84%E4%B8%A4%E7%A7%8D%E7%94%A8%E6%B3%95/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://blog.hialbert.online/post/genericagent-vs-o-easy3000-%E8%A1%8C%E4%BB%A3%E7%A0%81%E7%9A%84%E4%B8%A4%E7%A7%8D%E7%94%A8%E6%B3%95/</guid><description>&lt;h1 id="同样-3000-行代码为什么有的-ai-agent-越用越聪明有的早早封顶"&gt;同样 3000 行代码，为什么有的 AI Agent 越用越聪明，有的早早封顶
&lt;/h1&gt;&lt;blockquote class="alert alert-info"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;&lt;/span&gt;
 &lt;span class="alert-title"&gt;一句话开场&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;我手头有两个 AI Agent，&lt;strong&gt;核心代码量几乎一样：3110 行 vs 3084 行&lt;/strong&gt;。但跑同一个任务——「给笔记画张架构图」——一个 8 秒搞定且越跑越准，另一个一分钟出来还经常翻车。差在哪？&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="主角登场"&gt;主角登场
&lt;/h2&gt;&lt;p&gt;先认识下这俩。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;O-easy Agent&lt;/strong&gt;：我们自己用 Rust 写的小工具，专门干一件事——在 Obsidian 里读写笔记。5 个工具，3110 行代码。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GenericAgent&lt;/strong&gt;：lsdefine 在 GitHub 开源的通用 AI Agent 框架（&lt;a class="link" href="https://github.com/lsdefine/GenericAgent" target="_blank" rel="noopener"
 &gt;lsdefine/GenericAgent&lt;/a&gt;），口号是「不预装能力，让 Agent 自己长出来」。9 个工具，3084 行代码。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;记住这两个数字：3110 和 3084。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它们差不多，但下文你会看到，能力差出一个数量级。这就是今天要说的事。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第一眼看不出门道第二眼吓一跳"&gt;第一眼看不出门道，第二眼吓一跳
&lt;/h2&gt;&lt;p&gt;先把两边架构画出来。&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TB
 subgraph OE["O-easy Agent (Rust · 3110 行)"]
 direction TB
 OE_main["ACP 入口"]
 OE_loop["Prompt Loop&lt;br/&gt;max_turns = 10"]
 OE_tools["5 个笔记专用工具"]
 OE_mem["单层 history&lt;br/&gt;(进程内)"]
 OE_main --&gt; OE_loop --&gt; OE_tools
 OE_loop --&gt; OE_mem
 end

 subgraph GA["GenericAgent (Python · 3084 行)"]
 direction TB
 GA_main["Agent 主循环"]
 GA_loop["Agent Loop&lt;br/&gt;~100 行 / max_turns = 70"]
 GA_tools["9 个原子工具&lt;br/&gt;含 code_run"]
 GA_mem["5 层记忆&lt;br/&gt;L0 → L4"]
 GA_evo["Self-Evolving SOP&lt;br/&gt;(任务自动结晶)"]
 GA_main --&gt; GA_loop --&gt; GA_tools
 GA_loop --&gt; GA_mem
 GA_mem -.写入.-&gt; GA_evo
 GA_evo -.读出.-&gt; GA_loop
 end

 style OE fill:#fef3c7,stroke:#92400e,color:#000
 style GA fill:#dbeafe,stroke:#1e3a8a,color:#000
 style GA_evo fill:#fbcfe8,stroke:#9d174d,color:#000&lt;/pre&gt;&lt;p&gt;注意右下那块粉色的 &lt;strong&gt;Self-Evolving SOP&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这是 GenericAgent 的灵魂。它让 Agent「今天学会的事，明天直接做」。&lt;strong&gt;O-easy 完全没有这块&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;下面拆开讲，差异在哪。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="差异-15-个专用工具-vs-9-个万能工具"&gt;差异 1：5 个专用工具 vs 9 个万能工具
&lt;/h2&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart LR
 subgraph A["O-easy: 任务专用"]
 T1[read_note]
 T2[write_note]
 T3[edit_note]
 T4[search_vault]
 T5[list_notes]
 end
 subgraph B["GenericAgent: 原子万能"]
 U1[file_read]
 U2[file_write]
 U3[file_patch]
 U4["code_run ★"]
 U5[web_scan]
 U6[web_execute_js]
 U7[ask_user]
 U8[update_working_checkpoint]
 U9[start_long_term_update]
 end

 style U4 fill:#fde68a,stroke:#b45309,color:#000&lt;/pre&gt;&lt;p&gt;O-easy 的 5 个工具都长一个样：&lt;code&gt;xxx_note&lt;/code&gt;。它的能力天花板就是这 5 个事，写死了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;想画图？没工具。想跑统计？没工具。想抓网页？没工具。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GenericAgent 这边有个杀手锏叫 &lt;strong&gt;code_run&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这个工具的本质是「图灵完备的钥匙」。你想干啥它都能干——只要那件事能用代码表达。&lt;/p&gt;
&lt;blockquote class="alert alert-tip"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;💡&lt;/span&gt;
 &lt;span class="alert-title"&gt;举例：让 Agent 给你画一张 mermaid 架构图&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;ul&gt;
&lt;li&gt;&lt;strong&gt;O-easy&lt;/strong&gt; 怎么做：让大模型脑补输出 mermaid 字符串，写进笔记。&lt;strong&gt;没人验证语法对不对&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GenericAgent&lt;/strong&gt; 怎么做：先 &lt;code&gt;code_run&lt;/code&gt; 跑一段 Python 提取笔记结构 → 让大模型基于结构出 mermaid → 再 &lt;code&gt;code_run&lt;/code&gt; 调 mermaid-cli 真的渲染一遍 → &lt;strong&gt;错了重画&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;多了一层验证。质量差距就这么来的。&lt;/strong&gt;&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="差异-2思考-10-步-vs-思考-70-步"&gt;差异 2：思考 10 步 vs 思考 70 步
&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;O-easy ███████████ (10 turns)
GenericAgent ███████████████████████████████████████████████████████████████████████ (70 turns)
 0 10 20 30 40 50 60 70
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;复杂任务的天然节奏：&lt;strong&gt;读 → 想 → 试 → 错 → 改 → 再试 → 验证 → 写&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;10 步通常不够。70 步才有「自我纠错」的空间。&lt;/p&gt;
&lt;p&gt;这就像考试：限时 10 分钟你只能写完，限时 70 分钟你能写完还能检查三遍。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="差异-3单层记忆-vs-5-层记忆业界最大短板"&gt;差异 3：单层记忆 vs 5 层记忆（业界最大短板）
&lt;/h2&gt;&lt;p&gt;绝大多数 Agent 框架的记忆都很简单：要么没有，要么就一层「对话历史」。&lt;/p&gt;
&lt;p&gt;GenericAgent 不一样。它有 &lt;strong&gt;5 层&lt;/strong&gt;。&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD
 subgraph OE["O-easy 的记忆"]
 H1["对话 history&lt;br/&gt;(进程内, max 20 轮)"]
 H1 -.进程死.-&gt; X1["全部清零"]
 end

 subgraph GA["GenericAgent 的 5 层记忆"]
 L0["L0 · Meta Rules&lt;br/&gt;行为底线"]
 L1["L1 · Insight Index&lt;br/&gt;能力索引"]
 L2["L2 · Global Facts&lt;br/&gt;长期事实"]
 L3["L3 · Task SOPs ★&lt;br/&gt;会做的剧本"]
 L4["L4 · Session Archive&lt;br/&gt;历史归档"]
 L0 --- L1 --- L2 --- L3 --- L4
 end

 style H1 fill:#fee2e2,stroke:#991b1b,color:#000
 style X1 fill:#fee2e2,stroke:#991b1b,color:#000
 style L0 fill:#e0e7ff,stroke:#3730a3,color:#000
 style L1 fill:#c7d2fe,stroke:#3730a3,color:#000
 style L2 fill:#a5b4fc,stroke:#3730a3,color:#000
 style L3 fill:#fbcfe8,stroke:#9d174d,color:#000
 style L4 fill:#818cf8,stroke:#312e81,color:#fff&lt;/pre&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;层&lt;/th&gt;
 &lt;th&gt;作用&lt;/th&gt;
 &lt;th&gt;一句话说人话&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;L0&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;行为约束&lt;/td&gt;
 &lt;td&gt;「什么不能做」（比如不能删 vault 文件）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;L1&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;能力索引&lt;/td&gt;
 &lt;td&gt;「我知道我能干哪些事」（轻量目录）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;L2&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;长期事实&lt;/td&gt;
 &lt;td&gt;「这个用户喜欢用 mermaid 画图」&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;L3&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;任务剧本&lt;/td&gt;
 &lt;td&gt;「画 RAG 架构图的标准流程」 ← &lt;strong&gt;关键&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;L4&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;历史档案&lt;/td&gt;
 &lt;td&gt;「上周做过的任务都在这」&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote class="alert alert-warning"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;⚠️&lt;/span&gt;
 &lt;span class="alert-title"&gt;L3 是真正的杀手锏&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;LangChain 没有这层，AutoGPT 没有这层，Claude Code 也没有这层。L3 不是简单的「对话历史」，而是&lt;strong&gt;结构化的「做事剧本」&lt;/strong&gt;。Agent 干完一件事会自动总结成 SOP 写进来，下次类似任务直接照着剧本演。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;打个比方：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L4 是档案室（散乱的过去记录）&lt;/li&gt;
&lt;li&gt;L2 是公司维基（稳定的事实库）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L3 是部门 SOP 手册&lt;/strong&gt;（让新人快速上手的关键资料）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;绝大多数 Agent 框架只有档案室和维基，没有 SOP 手册。GenericAgent 把这一层做出来了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="差异-4能力增长方式这是最大的范式跃迁"&gt;差异 4：能力增长方式（这是最大的范式跃迁）
&lt;/h2&gt;&lt;p&gt;我把这条放最重要的位置。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;传统 Agent 框架的能力公式&lt;/strong&gt;：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;能力 = Σ(预装的工具)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;要新能力 = 写新代码 + 改框架 + 发新版 + 用户更新。一条龙重资产。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GenericAgent 的能力公式&lt;/strong&gt;：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;能力 = Σ(L3 里积累的 SOP)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;要新能力 = Agent 自己摸索 + 跑通 + 结晶成 SOP + 写入 L3。&lt;strong&gt;完全不用碰代码&lt;/strong&gt;。&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart LR
 subgraph TRAD["传统模式"]
 direction TB
 A1[新需求] --&gt; B1[人写新工具]
 B1 --&gt; C1[改框架代码]
 C1 --&gt; D1[发新版本]
 D1 --&gt; E1[用户更新]
 E1 -.重复.-&gt; A1
 end

 subgraph GA["GenericAgent 模式"]
 direction TB
 A2[新需求] --&gt; B2[Agent 自己探索]
 B2 --&gt; C2[跑通 → 结晶为 SOP]
 C2 --&gt; D2[写入 L3 记忆]
 D2 --&gt; E2[下次秒级复用]
 E2 -.-&gt;|越用越快| A2
 end

 style TRAD fill:#fef3c7,stroke:#92400e,color:#000
 style GA fill:#dbeafe,stroke:#1e3a8a,color:#000&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;类比一下&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;传统模式 = &lt;strong&gt;建工厂&lt;/strong&gt;。要新能力等于加新车间，重资产，慢。&lt;/li&gt;
&lt;li&gt;GenericAgent = &lt;strong&gt;学徒工&lt;/strong&gt;。每做一件事，工艺手册就厚一页。&lt;strong&gt;自己越来越熟练&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;教程里给的数据：同一类任务从「自然语言描述 → SOP → 直接 code 调用」三阶段进化，&lt;strong&gt;token 消耗下降 89.6%&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote class="alert alert-quote"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;&lt;/span&gt;
 &lt;span class="alert-title"&gt;关键差距&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;传统 Agent 上线第一天和第一年表现一样。GenericAgent 用了一年的能力是用了一天的 N 倍。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="差异-5上下文管理反潮流的反向操作"&gt;差异 5：上下文管理——反潮流的反向操作
&lt;/h2&gt;&lt;p&gt;业界都在卷长上下文。Claude 卷到 200K，Gemini 卷到 1M，Qwen 也跟上来了。&lt;/p&gt;
&lt;p&gt;GenericAgent 反着来：&lt;strong&gt;死磕 30K&lt;/strong&gt;。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;项&lt;/th&gt;
 &lt;th&gt;O-easy&lt;/th&gt;
 &lt;th&gt;GenericAgent&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;策略&lt;/td&gt;
 &lt;td&gt;按消息轮数粗略剪&lt;/td&gt;
 &lt;td&gt;4 阶段压缩管道&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;目标&lt;/td&gt;
 &lt;td&gt;保最近 N 轮&lt;/td&gt;
 &lt;td&gt;维持 30K token 高密度&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;长任务表现&lt;/td&gt;
 &lt;td&gt;容易塞满重复 read 结果&lt;/td&gt;
 &lt;td&gt;自动压缩、提取要点、丢冗余&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;方向&lt;/td&gt;
 &lt;td&gt;跟随业界&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;反向操作&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;为什么反潮流？&lt;/p&gt;
&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;业界都在装着不知道的事实&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;LLM 的 attention 机制在 30K 之后衰减明显，长上下文是「花更多钱、办更少事」。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;GenericAgent 把这个问题反过来——不堆长度，&lt;strong&gt;堆密度&lt;/strong&gt;。同样 30K 的窗口，塞最有用的东西，劣质信息及时压缩或丢掉。&lt;/p&gt;
&lt;p&gt;教程里说，这个策略让 GenericAgent 比 Claude Code 节省 &lt;strong&gt;65% token&lt;/strong&gt;（消耗约 35%）。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="实战对比让-agent-给笔记画一张架构图"&gt;实战对比：让 Agent 给笔记画一张架构图
&lt;/h2&gt;&lt;p&gt;干了这么多铺垫，看看真打起来什么样。&lt;/p&gt;
&lt;p&gt;任务：「把这篇 RAG 技术 笔记总结一下，给我画张架构图」。&lt;/p&gt;
&lt;h3 id="o-easy-怎么做"&gt;O-easy 怎么做
&lt;/h3&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;sequenceDiagram
 autonumber
 participant U as 用户
 participant O as O-easy
 participant L as LLM (Qwen)
 participant V as Vault

 U-&gt;&gt;O: 给 RAG 笔记画架构图
 O-&gt;&gt;V: read_note("RAG技术.md")
 V--&gt;&gt;O: 全文内容
 O-&gt;&gt;L: 帮我画架构图
 L--&gt;&gt;O: mermaid 字符串&lt;br/&gt;(可能语法错)
 O-&gt;&gt;V: write_note(追加 mermaid)
 V--&gt;&gt;O: 写入完成
 O--&gt;&gt;U: 完成
 Note over U,V: 没有验证 · 错了用户才发现&lt;/pre&gt;&lt;p&gt;5 步搞定，但&lt;strong&gt;没有验证&lt;/strong&gt;。LLM 输出语法错你也不知道，要等用户在 Obsidian 里渲染失败才回头看。&lt;/p&gt;
&lt;h3 id="genericagent-怎么做"&gt;GenericAgent 怎么做
&lt;/h3&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;sequenceDiagram
 autonumber
 participant U as 用户
 participant G as GenericAgent
 participant L as LLM
 participant C as code_run
 participant F as 文件系统

 U-&gt;&gt;G: 给 RAG 笔记画架构图
 G-&gt;&gt;L: 检查 L3 SOP "画架构图"
 L--&gt;&gt;G: 找到上次的 SOP

 G-&gt;&gt;F: file_read("RAG技术.md")
 F--&gt;&gt;G: 全文

 G-&gt;&gt;C: 跑 Python 提取章节结构
 C--&gt;&gt;G: 结构化 JSON

 G-&gt;&gt;L: 基于结构生成 mermaid
 L--&gt;&gt;G: mermaid 代码

 G-&gt;&gt;C: mermaid-cli 渲染验证
 C--&gt;&gt;G: 语法正确

 G-&gt;&gt;F: file_patch(追加到笔记末尾)
 F--&gt;&gt;G: 完成

 G-&gt;&gt;G: update_working_checkpoint&lt;br/&gt;(优化 L3 SOP)
 G--&gt;&gt;U: 完成 + 已自我改进
 Note over U,F: 有验证 · 有改进 · 下次更快&lt;/pre&gt;&lt;p&gt;10 步，&lt;strong&gt;多了 3 件事&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先查 L3 有没有现成 SOP&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;code_run&lt;/code&gt; 真的跑一遍验证 mermaid&lt;/li&gt;
&lt;li&gt;完事更新 SOP，下次更快&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;质量和效率全在这 3 步上拉开。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="代码量真相3000-行-vs-3000-行谁花得更聪明"&gt;代码量真相：3000 行 vs 3000 行，谁花得更聪明
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;项目&lt;/th&gt;
 &lt;th&gt;核心源码&lt;/th&gt;
 &lt;th&gt;工具数&lt;/th&gt;
 &lt;th&gt;记忆层数&lt;/th&gt;
 &lt;th&gt;自演化&lt;/th&gt;
 &lt;th&gt;测试&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;O-easy&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;3,110 行&lt;/td&gt;
 &lt;td&gt;5 个专用&lt;/td&gt;
 &lt;td&gt;1 层&lt;/td&gt;
 &lt;td&gt;否&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;GenericAgent 核心&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;3,084 行&lt;/td&gt;
 &lt;td&gt;9 个原子&lt;/td&gt;
 &lt;td&gt;5 层&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;是&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;未统计&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;两边代码行数几乎一样，能力密度天差地别。&lt;/p&gt;
&lt;p&gt;差在哪？看 GenericAgent 的 3000 行花在哪：&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;pie title GenericAgent 3084 行核心代码分布
 "agent_loop.py (核心循环)" : 118
 "agentmain.py (入口与模式)" : 266
 "ga.py (9 个工具实现)" : 558
 "llmcore.py (多 LLM 抽象)" : 988
 "simphtml.py (HTML 瘦身)" : 870
 "TMWebDriver.py (浏览器)" : 284&lt;/pre&gt;&lt;p&gt;注意 &lt;code&gt;agent_loop.py&lt;/code&gt; 才 &lt;strong&gt;118 行&lt;/strong&gt;——作者宣传的「100 行核心循环」是真的，不是营销话术。&lt;strong&gt;整个 Agent 大脑就这 118 行&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;而 O-easy 的 3110 行：&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;pie title O-easy 3110 行代码分布
 "tools/* (5 个笔记工具)" : 1026
 "protocol/* (ACP 协议)" : 522
 "llm/* (LLM 客户端)" : 292
 "vault/path_guard.rs (安全)" : 194
 "config.rs" : 140
 "其他" : 936&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;1026 行花在 5 个工具&lt;/strong&gt;——平均每个工具 200 行。每个工具都在做差不多的事：path 校验、permission 流程、转 JSON。&lt;strong&gt;重复造轮子的味道很浓&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote class="alert alert-quote"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;&lt;/span&gt;
 &lt;span class="alert-title"&gt;同样 3000 行&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;GenericAgent 把每行都用在让 Agent 能自我成长的脚手架上。O-easy 的每行都被锁死在「这 5 件事」里。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="genericagent-的真正创新一句话每条"&gt;GenericAgent 的真正创新（一句话每条）
&lt;/h2&gt;&lt;p&gt;业界对比下，能拍着胸脯说「这是我的原创」的，就这 5 条：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 能力 = 记忆，不是代码&lt;/strong&gt; —— Agent 框架从「工具盒」变成「学习者」。这是范式跃迁，不是迭代。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 5 层记忆 + L3 SOP 这一层&lt;/strong&gt; —— LangChain 没有，AutoGPT 没有，Claude Code 也没有。第一次有框架认真做「Agent 自己的 SOP 手册」。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 9 个原子工具 + &lt;code&gt;code_run&lt;/code&gt; 元工具&lt;/strong&gt; —— 用 9 个原语组合出无限能力，而不是堆一百个专用工具。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 信息密度优先（反 1M context 潮流）&lt;/strong&gt; —— 业界都在卷长度，它在卷密度。结果 token 消耗只有 Claude Code 的 35%。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 真实浏览器注入（不开 headless）&lt;/strong&gt; —— 直接操作用户已登录的 Chrome，不用绕验证码、不用模拟登录。RPA 圈子有人做，Agent 圈子做的没几家。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="给读者的两条启示"&gt;给读者的两条启示
&lt;/h2&gt;&lt;p&gt;如果你将来想自己设计一个 Agent，记住这两条：&lt;/p&gt;
&lt;h3 id="启示-1选原子工具--代码执行不要堆专用工具"&gt;启示 1：选「原子工具 + 代码执行」，不要堆专用工具
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;反例（O-easy 走的路）&lt;/th&gt;
 &lt;th&gt;正解（GenericAgent 走的路）&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;加 send_email 工具&lt;/td&gt;
 &lt;td&gt;加 code_run，让 Agent 写 smtplib&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;加 query_db 工具&lt;/td&gt;
 &lt;td&gt;加 code_run，让 Agent 写 SQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;加 generate_chart 工具&lt;/td&gt;
 &lt;td&gt;加 code_run，让 Agent 用 matplotlib&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;工具数量爆炸 → 维护噩梦&lt;/td&gt;
 &lt;td&gt;9 个原子工具搞定一切&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;工具集合是 Agent 的天花板。&lt;strong&gt;专用工具 = 低天花板 + 高维护成本&lt;/strong&gt;。原子工具 + code_run = 天花板由 LLM 能力决定，不由你预设。&lt;/p&gt;
&lt;h3 id="启示-2把能力增长留给运行时不要全压在开发时"&gt;启示 2：把能力增长留给「运行时」，不要全压在「开发时」
&lt;/h3&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart LR
 A[开发时&lt;br/&gt;写脚手架] --&gt; B[运行时&lt;br/&gt;积累 SOP]
 B --&gt; C[使用时间越长&lt;br/&gt;越聪明]

 style A fill:#dbeafe
 style B fill:#fbcfe8
 style C fill:#bbf7d0&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;长期复利&lt;/strong&gt;。这是 GenericAgent 真正甩开同行的一招。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="你该用哪个"&gt;你该用哪个
&lt;/h2&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD
 Q{你的需求}
 Q --&gt;|做单一类型任务&lt;br/&gt;如笔记 CRUD| A[O-easy 类&lt;br/&gt;专用 Agent]
 Q --&gt;|做开放式任务&lt;br/&gt;每天都不同| B[GenericAgent 类&lt;br/&gt;通用 Agent]
 Q --&gt;|想理解 Agent 架构&lt;br/&gt;做研究| C[直接读 GenericAgent 源码&lt;br/&gt;3000 行 一周看完]

 style A fill:#fef3c7,stroke:#92400e,color:#000
 style B fill:#dbeafe,stroke:#1e3a8a,color:#000
 style C fill:#dcfce7,stroke:#166534,color:#000&lt;/pre&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;场景&lt;/th&gt;
 &lt;th&gt;推荐&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;我只想给 Obsidian 加个写笔记 AI&lt;/td&gt;
 &lt;td&gt;O-easy Agent（轻、快、专）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;我想要一个能干所有杂活的 AI 助手&lt;/td&gt;
 &lt;td&gt;GenericAgent&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;我想学 Agent 架构内功&lt;/td&gt;
 &lt;td&gt;读 GenericAgent 源码&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="结尾一句话"&gt;结尾一句话
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;代码量决定下限，记忆密度决定上限。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GenericAgent 的真正创新，不在于「少」，而在于把少省下来的精力，&lt;strong&gt;全部投在了让 Agent 能自我成长上&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;3000 行不是它的天花板。&lt;strong&gt;它的天花板是用户每多用一次，就被推高一点&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这才是 Agent 框架的未来。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="延伸阅读"&gt;延伸阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GenericAgent —— 本篇主角，3000 行通用 Agent 框架&lt;/li&gt;
&lt;li&gt;O-easy Agent —— 本篇对照组，笔记 CRUD 专用 Agent&lt;/li&gt;
&lt;li&gt;GenericAgent-ACP —— 把 GenericAgent 接入 Obsidian 的 wrapper&lt;/li&gt;
&lt;li&gt;AI Agent / ReAct 模式 / Tool Use —— Agent 基础概念&lt;/li&gt;
&lt;li&gt;ACP 协议 —— Obsidian Agent Client 用的协议&lt;/li&gt;
&lt;li&gt;LangChain / AutoGPT / Claude Code —— 业界对照框架&lt;/li&gt;
&lt;li&gt;RAG 技术 —— 实战案例笔记&lt;/li&gt;
&lt;li&gt;Mermaid —— 本文用到的图表语法&lt;/li&gt;
&lt;li&gt;给 Hermes Agent 装上 Open WebUI 从零到一的完整实践 —— 同博客 Agent 集成实战&lt;/li&gt;
&lt;li&gt;源码：&lt;code&gt;D:\Program\GenericAgent\&lt;/code&gt;、&lt;code&gt;D:\Program\O-easy-agent\&lt;/code&gt;、&lt;code&gt;D:\Program\GenericAgent-ACP\&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;官方仓库：&lt;a class="link" href="https://github.com/lsdefine/GenericAgent" target="_blank" rel="noopener"
 &gt;lsdefine/GenericAgent&lt;/a&gt; · &lt;a class="link" href="https://github.com/datawhalechina/hello-generic-agent" target="_blank" rel="noopener"
 &gt;datawhalechina/hello-generic-agent&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>网站密码加盐的原理</title><link>https://blog.hialbert.online/post/%E7%BD%91%E7%AB%99%E5%AF%86%E7%A0%81%E5%8A%A0%E7%9B%90%E7%9A%84%E5%8E%9F%E7%90%86/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://blog.hialbert.online/post/%E7%BD%91%E7%AB%99%E5%AF%86%E7%A0%81%E5%8A%A0%E7%9B%90%E7%9A%84%E5%8E%9F%E7%90%86/</guid><description>&lt;h1 id="密码哈希与加盐从原理到实战"&gt;密码哈希与加盐：从原理到实战
&lt;/h1&gt;
 &lt;blockquote&gt;
 &lt;p&gt;核心命题：&lt;strong&gt;假设数据库一定会被拖走，怎么让攻击者拿到也没用？&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;blockquote class="alert alert-info"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;&lt;/span&gt;
 &lt;span class="alert-title"&gt;在本仓库中的位置&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;这是 &lt;a class="link" href="https://blog.hialbert.online/post/claude-code-vibe-coding-%e5%ba%94%e7%94%a8%e7%9a%84%e6%9e%b6%e6%9e%84%e5%88%86%e6%a1%a3%e6%89%8b%e5%86%8c/" &gt;Claude Code Vibe Coding 应用的架构分档手册&lt;/a&gt; 中「鉴权与支付」一节的&lt;strong&gt;深度展开&lt;/strong&gt;。
任何 Tier ≥ 1 的应用，密码存储方案都要按本文执行。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="一为什么密码不能明文存"&gt;一、为什么密码不能明文存？
&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;❌ 明文存储
┌────────────────────────────────┐
│ 用户名 | 密码 │
│ albert | 123456 │ ← 拖库 = 灾难
│ zhangsan | qwerty │
└────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;一旦数据库泄露（&lt;strong&gt;拖库&lt;/strong&gt;），所有用户密码瞬间暴露。更糟的是用户常在多个网站用同一密码 → 一处泄露，处处沦陷（&lt;strong&gt;撞库攻击&lt;/strong&gt;)。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;📌 2011 年 CSDN 拖库事件，600 万账号&lt;strong&gt;明文密码&lt;/strong&gt;泄露，引爆中国互联网密码安全意识。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="二第一层防御哈希算法"&gt;二、第一层防御：哈希算法
&lt;/h2&gt;&lt;p&gt;哈希 = &lt;strong&gt;单向&lt;/strong&gt;的数学函数。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; hash()
&amp;#34;123456&amp;#34; ───────► e10adc3949ba59abbe56e057f20f883e
 （永远是这个值，不可反推）
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="三大特性"&gt;三大特性
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;特性&lt;/th&gt;
 &lt;th&gt;含义&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;确定性&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;同样输入 → 同样输出，永远成立&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;不可逆&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;从哈希值反推不出原密码&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;雪崩效应&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;输入变一点点，输出天差地别&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="雪崩效应直观感受"&gt;雪崩效应直观感受
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;#34;123456&amp;#34; ──► e10adc3949ba59abbe56e057f20f883e
&amp;#34;123457&amp;#34; ──► f1887d3f9e6ee7a32fe5e76f4ab80d63
 ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
 完全没有规律可言
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="哈希到底怎么算的以-md5-为例"&gt;哈希到底怎么算的？（以 MD5 为例）
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;#34;123456&amp;#34;
 │
 ▼ 编码成二进制
[00110001 00110010 ...]
 │
 ▼ 填充到 512 位倍数
[512 位数据块]
 │
 ▼ 4 个魔法初值
A=0x67452301 B=0xefcdab89 C=0x98badcfe D=0x10325476
 │
 ▼ 64 轮&amp;#34;揉面&amp;#34;：AND / OR / XOR / 左旋 / 加常数
 │ 每一轮：新B = B + 左旋(A + F(B,C,D) + M[i] + K[i], s)
 │
 ▼ 最终拼接 A|B|C|D
e10adc39 49ba59ab be56e057 f20f883e ✅
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;为什么不可逆？&lt;/strong&gt; 因为大量使用了 &lt;code&gt;AND&lt;/code&gt; / &lt;code&gt;OR&lt;/code&gt; 这种&lt;strong&gt;有损运算&lt;/strong&gt;——&lt;code&gt;1 AND 0 = 0&lt;/code&gt;，但反过来你不知道原本是什么。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三单纯哈希也不够彩虹表攻击"&gt;三、单纯哈希也不够：彩虹表攻击
&lt;/h2&gt;&lt;p&gt;攻击者会&lt;strong&gt;预先&lt;/strong&gt;计算常见密码的哈希，做成超大对照表：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;🌈 彩虹表（攻击者一次性投入几个月算好）
┌──────────────────────────────────────────────┐
│ 123456 → e10adc3949ba59abbe56e057f20f883e│
│ password → 5f4dcc3b5aa765d61d8327deb882cf99│
│ qwerty → d8578edf8458ce06fbc5bb76a58c5ca4│
│ ...（数十亿条） │
└──────────────────────────────────────────────┘

拖库 → 拿哈希 → 查表 → 瞬间还原 1000 万个密码 💀
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&amp;ldquo;算一次表，破解所有人&amp;rdquo;&lt;/strong&gt;——成本极低。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四第二层防御加盐salt"&gt;四、第二层防御：加盐（Salt）🧂
&lt;/h2&gt;&lt;p&gt;给每个用户生成&lt;strong&gt;随机字符串&lt;/strong&gt;作为盐，拼到密码后再哈希：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;注册流程
─────────────────────────────────────────────
用户输入: &amp;#34;123456&amp;#34;
随机生成: 盐 = &amp;#34;x7Kp9mQ2&amp;#34;
计算: hash(&amp;#34;123456&amp;#34; + &amp;#34;x7Kp9mQ2&amp;#34;) = a3f5b8c1...
存储:
┌──────────┬────────────┬──────────────┐
│ 用户名 │ 盐 │ 哈希 │
├──────────┼────────────┼──────────────┤
│ albert │ x7Kp9mQ2 │ a3f5b8c1... │
│ zhang │ Lp4nR8wX │ 9d2e7f4a... │ ← 同样密码，盐不同，哈希也完全不同
└──────────┴────────────┴──────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="关键认知颠覆-"&gt;关键认知颠覆 ⚠️
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;盐是公开存储的，不是秘密！&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;那加盐有什么用？看对比：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;没加盐 🌈
─────────────
攻击者：算一次彩虹表 → 破解所有用户 ✅
成本：低

加盐后 🧂
─────────────
攻击者：每个用户盐不同
 → 用户1 算一张表（几个月）
 → 用户2 盐不一样，再算一张表（几个月）
 → 1000 万用户 = 1000 万张表 ❌
成本：彩虹表攻击经济上完全不可行
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;盐的作用不是&amp;quot;保密&amp;quot;，而是&amp;quot;让批量破解失去经济意义&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五第三层防御慢哈希算法"&gt;五、第三层防御：慢哈希算法
&lt;/h2&gt;&lt;p&gt;加盐后，攻击者还能针对&lt;strong&gt;单个用户&lt;/strong&gt;暴力破解：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;拿 albert 的盐 + 哈希
 ↓
试遍所有密码组合 → 找到匹配
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;普通 SHA-256 太快——&lt;strong&gt;GPU 一秒能算几十亿次&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;解决方案：&lt;strong&gt;故意把哈希算法设计得很慢&lt;/strong&gt;。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;普通 SHA-256: 每秒 1,000,000,000 次 → 试遍 8 位密码只需几小时
bcrypt (cost=12): 每秒 300 次 → 同样的破解需要几百年
Argon2: 每秒 100 次 → 还要消耗大量内存，GPU 加速无效
&lt;/code&gt;&lt;/pre&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;算法&lt;/th&gt;
 &lt;th&gt;特点&lt;/th&gt;
 &lt;th&gt;推荐度&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;MD5 / SHA-1&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;已破解，禁用&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;SHA-256&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;太快，不适合密码&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;bcrypt&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;经典，自带盐&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;scrypt&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;抗 GPU/ASIC&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Argon2&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;2015 密码哈希竞赛冠军&lt;/td&gt;
 &lt;td&gt;⭐ 首选&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;对单次登录用户无感（0.1 秒），对暴力破解者来说成本提高几亿倍。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六第四层防御pepper胡椒"&gt;六、第四层防御：Pepper（胡椒）🌶️
&lt;/h2&gt;&lt;p&gt;如果想再加一层——&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Salt（盐）&lt;/th&gt;
 &lt;th&gt;Pepper（胡椒）&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;存哪里&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;数据库，和哈希一起&lt;/td&gt;
 &lt;td&gt;应用代码 / 环境变量 / KMS&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;每用户&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;不同&lt;/td&gt;
 &lt;td&gt;全局共用一个&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;拖库会泄露吗&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;会&lt;/td&gt;
 &lt;td&gt;不会（除非服务器也被入侵）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;hash = Argon2(密码 + 盐 + Pepper)
 ▲
 └── 不进数据库，藏在应用层
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;双层物理隔离&lt;/strong&gt;：要破解必须&lt;strong&gt;同时&lt;/strong&gt;攻破数据库 + 应用服务器。&lt;/p&gt;
&lt;blockquote class="alert alert-tip"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;💡&lt;/span&gt;
 &lt;span class="alert-title"&gt;落到你的真实环境&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;Pepper 应该存在哪？参考你已经在用的两台服务器 ——
阿里云服务器代码资产盘点-2026-04-23 与 云服务器代码资产盘点-2026-04-23
推荐做法：写进各服务的 &lt;code&gt;systemd&lt;/code&gt; Environment 文件 / &lt;code&gt;.env&lt;/code&gt; 并 &lt;code&gt;chmod 600&lt;/code&gt;，
&lt;strong&gt;绝不进 Git&lt;/strong&gt;；如果上了阿里云 KMS，就用 KMS 凭据 API 拉取。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="七完整防御链总览"&gt;七、完整防御链总览
&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; 密码安全分层防御 🛡️
 ┌─────────────────────────────────────────┐
 │ │
 │ ┌──────────────────────────────────┐ │
 │ │ ❌ 明文 │ │ 拖库 = 死
 │ └──────────────────────────────────┘ │
 │ ⬇ │
 │ ┌──────────────────────────────────┐ │
 │ │ 🔒 哈希 防明文裸奔 │ │ 防彩虹表？❌
 │ └──────────────────────────────────┘ │
 │ ⬇ │
 │ ┌──────────────────────────────────┐ │
 │ │ 🔒 + 🧂 加盐 防彩虹表 │ │ 防暴力？⚠️
 │ └──────────────────────────────────┘ │
 │ ⬇ │
 │ ┌──────────────────────────────────┐ │
 │ │ 🔒 + 🧂 + 🐌 慢算法 防暴力破解 │ │ 防服务器入侵？⚠️
 │ └──────────────────────────────────┘ │
 │ ⬇ │
 │ ┌──────────────────────────────────┐ │
 │ │ 🔒+🧂+🐌+🌶️ Pepper 分层隔离 │ │ ✅ 现代最佳实践
 │ └──────────────────────────────────┘ │
 └─────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="注册流程"&gt;注册流程
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;用户密码 ──► 生成随机盐 ──► Argon2(密码 + 盐 + Pepper) ──► 入库
 ┌────────────────┐
 │ 用户 | 盐 | 哈希 │
 └────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="登录流程"&gt;登录流程
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;用户输入 ──► 查出该用户的盐 ──► Argon2(密码 + 盐 + Pepper) ──► 比对哈希
 ↓
 相等 → 登录成功
 不等 → 拒绝
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="八相关攻击术语"&gt;八、相关攻击术语
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;术语&lt;/th&gt;
 &lt;th&gt;含义&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;拖库&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;攻击者把整个数据库下载走&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;洗库&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;在拖到的数据中筛选高价值信息（VIP、管理员等）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;撞库&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;用 A 网站泄露的密码去 B/C/D 网站尝试登录&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;彩虹表&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;预先计算的&amp;quot;密码 → 哈希&amp;quot;对照表&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;碰撞攻击&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;找到两个不同输入产生同一哈希值（MD5 已被攻破）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="九给开发者的实践清单"&gt;九、给开发者的实践清单
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; &lt;strong&gt;永远不要&lt;/strong&gt;自己实现密码哈希算法&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 使用成熟库：Python &lt;code&gt;passlib&lt;/code&gt; / Node &lt;code&gt;bcrypt&lt;/code&gt; / Rust &lt;code&gt;argon2&lt;/code&gt; crate&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; &lt;strong&gt;首选 Argon2id&lt;/strong&gt;，备选 bcrypt（cost ≥ 12）&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 盐至少 16 字节，&lt;strong&gt;密码学安全的随机数生成器&lt;/strong&gt;生成（不要用 &lt;code&gt;Math.random()&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Pepper 存在环境变量或 KMS，&lt;strong&gt;永不进代码仓库&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 配套措施：登录失败次数限制、2FA、异常登录告警&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;在你已有项目里落地&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;&lt;a class="link" href="https://blog.hialbert.online/post/%e7%bb%99hermes-agent%e8%a3%85%e4%b8%8aopen-webui-%e4%bb%8e%e9%9b%b6%e5%88%b0%e4%b8%80%e7%9a%84%e5%ae%8c%e6%95%b4%e5%ae%9e%e8%b7%b5/" &gt;给Hermes Agent装上Open WebUI：从零到一的完整实践&lt;/a&gt; 中如果开放了用户登录，
建议把默认 Open WebUI 的密码哈希策略升级为 &lt;strong&gt;Argon2id + Pepper&lt;/strong&gt;。
而 &lt;a class="link" href="https://blog.hialbert.online/post/claude-code-vibe-coding-%e5%ba%94%e7%94%a8%e7%9a%84%e6%9e%b6%e6%9e%84%e5%88%86%e6%a1%a3%e6%89%8b%e5%86%8c/" &gt;Claude Code Vibe Coding 应用的架构分档手册&lt;/a&gt; 的 Tier 0 → Tier 1 升级时，
Auth.js / Clerk 默认已用 bcrypt，如果走自管 session 就要手动选算法。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;h2 id="十给用户的自保清单"&gt;十、给用户的自保清单
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 不在多个网站用同一密码（用 &lt;strong&gt;Bitwarden / KeePass&lt;/strong&gt; 等密码管理器）&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 重要账户开启 &lt;strong&gt;2FA / TOTP&lt;/strong&gt;（Google Authenticator、Authy）&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 定期上 &lt;a class="link" href="https://haveibeenpwned.com" target="_blank" rel="noopener"
 &gt;haveibeenpwned.com&lt;/a&gt; 查邮箱是否在已知泄露库&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 长密码 &amp;gt; 复杂密码（&lt;code&gt;correct horse battery staple&lt;/code&gt; &amp;gt; &lt;code&gt;P@ssw0rd!&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="alert alert-tip"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;💡&lt;/span&gt;
 &lt;span class="alert-title"&gt;移动端体验小贴士&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;wiki-iphone-pwa-使用指南-2026-05-02 里提到的 PWA 形态，
配合 iOS Keychain / Face ID 可以做到&lt;strong&gt;长密码 + 一键登录&lt;/strong&gt;两不误，
是用户侧自保清单的最佳工程实现。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="一句话总结"&gt;一句话总结
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;哈希防明文裸奔，加盐防彩虹表，慢算法防暴力破解，Pepper 防数据库单点失陷。&lt;/strong&gt;
现代密码学不追求&amp;quot;绝对安全&amp;quot;，而是让攻击成本翻几个数量级，最终让攻击者放弃。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="-本仓库相关笔记"&gt;🔗 本仓库相关笔记
&lt;/h2&gt;&lt;h3 id="强相关同一架构链路"&gt;强相关（同一架构链路）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.hialbert.online/post/claude-code-vibe-coding-%e5%ba%94%e7%94%a8%e7%9a%84%e6%9e%b6%e6%9e%84%e5%88%86%e6%a1%a3%e6%89%8b%e5%86%8c/" &gt;Claude Code Vibe Coding 应用的架构分档手册&lt;/a&gt; —— 鉴权与支付一节的纵向展开&lt;/li&gt;
&lt;li&gt;阿里云服务器代码资产盘点-2026-04-23 —— Pepper / KMS 实际落地的服务器&lt;/li&gt;
&lt;li&gt;云服务器代码资产盘点-2026-04-23 —— 同上，多机部署时同步 Pepper&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="中等相关应用层接入"&gt;中等相关（应用层接入）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.hialbert.online/post/%e7%bb%99hermes-agent%e8%a3%85%e4%b8%8aopen-webui-%e4%bb%8e%e9%9b%b6%e5%88%b0%e4%b8%80%e7%9a%84%e5%ae%8c%e6%95%b4%e5%ae%9e%e8%b7%b5/" &gt;给Hermes Agent装上Open WebUI：从零到一的完整实践&lt;/a&gt; —— Web 应用用户登录系统&lt;/li&gt;
&lt;li&gt;wiki-iphone-pwa-使用指南-2026-05-02 —— 移动端密码体验与 Face ID&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="知识体系入口"&gt;知识体系入口
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.hialbert.online/post/%e4%bb%8e%e9%9b%b6%e6%90%ad%e5%bb%baobsidian%e5%85%a8%e6%a0%88%e7%9f%a5%e8%af%86%e7%b3%bb%e7%bb%9f/" &gt;从零搭建Obsidian全栈知识系统&lt;/a&gt; —— 这条笔记在领域库的位置&lt;/li&gt;
&lt;li&gt;Obsidian核心用法指南 —— 如何用反向链接组织安全知识&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="占位待补建的笔记"&gt;占位（待补建的笔记）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;数据库安全&lt;/li&gt;
&lt;li&gt;Web 安全基础&lt;/li&gt;
&lt;li&gt;OWASP Top 10&lt;/li&gt;
&lt;li&gt;2FA 与 TOTP 原理&lt;/li&gt;
&lt;li&gt;KMS 密钥管理服务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;%% 整理日期: 2026-05-05 · 来源: Downloads/网站密码加盐的原理.md，已嵌入领域库双向链接 %%&lt;/p&gt;</description></item></channel></rss>