一句话摘要
面向独立开发者的生产级 AI 工具栈
单人构建者的生产级 AI 技术栈 2026 年 7 月 19 日 · 27 分钟阅读 · 查看原文 ↗ AI Claude 营销 自动化
一人公司现在交付起来像十人团队。那些活下来的,跑的是一套系统:一个模型无法撒谎的构建循环、一个攻击者走不过去的防御层、以及创始人睡觉时还在运转的运营。这就是那套系统,端到端。
2025 年 3 月,一个化名 Leo 的 SaaS 创始人发了每个构建者都想发的那条推。他的产品 Enrichlead 上线了。Cursor 写了它。"零手写代码,"他宣布。"AI 不再只是助手,它还是构建者。"他落款:"P.S. 是的,人们为它付钱。"
四天后他又发了。"兄弟们,我在被攻击。各种随机的事情在发生,API key 用量被拉满,有人绕过订阅,往 db 里乱造东西。"
攻击者找到了模型从没提过的一切。没有服务端认证的 API 端点。只在浏览器里强制的付费墙。原样写进他数据库的输入。他用更多提示词去打补丁。他们又把它搞坏。产品几周内死了。
当那张截图划过你的信息流时,你笑了 Leo。坐下面对一个更不舒服的事实:他的技术栈和你的技术栈之间的距离,是一个没打勾的框。
这个模式在每个规模上重复。2025 年 7 月,Tea 应用,一款爆火的女性安全应用,把一个 Firebase 存储桶对公众开放了。约 72,000 张图片泄露,包括 13,000 张验证自拍和政府身份证。几天后,一位研究者展示了第二个洞:110 万条关于出轨、堕胎和约会的私信,任何已认证用户都能读。同月,一个在 SaaStr 代码库上工作的 Replit Agent,在明令的代码冻结期间删除了生产数据库,然后伪造了大约 4,000 条假记录和通过的测试结果来掩盖。2025 年春,研究者 Matt Palmer 扫描了 1,645 个用 Lovable 发布的应用,发现其中 170 个通过一个共同的缺陷泄露邮箱、电话号码、地址和 API key:Supabase Row Level Security 没开或配错。那个缺陷成了 CVE-2025-48757,评级 9.3 严重。
被测量的基线比轶事更糟。Veracode 在 2025 年对 100 多个模型、跨常见编码任务做了测试:45% 的 AI 生成样本含一个 OWASP 级缺陷,Java 是 72%,而模型在跨站脚本上只有 14% 的案例做了防御。更新、更大的模型得分并没有更好。一个包含 Dan Boneh 的斯坦福团队发现了问题的人类那一半:使用 AI 助手的开发者写出了更不安全的代码,却相信他们写出了更安全的代码。GitGuardian 统计,仅 2024 年,公开 GitHub 上就泄露了 2380 万个新密钥,而启用了 Copilot 的仓库,泄露频率比平均高约 40%。当 Escape.tech 在 2025 年底扫描 5,600 个 vibe-coded 应用时,它拉出了 2,000 个漏洞、400 个暴露的密钥,以及活生生的医疗记录,大多数不用登录就能访问。
再一个数字,因为它改变你想象敌人的方式。2024 年,一个叫 EMERALDWHALE 的犯罪团伙,从 67,000 个暴露的 .git 目录里收割了凭据:15,000 个可用的云 key,没有用任何聪明漏洞就被偷走了。没人瞄准那些应用。脚本找到了它们。你的应用被以同样的方式探测——域名解析后几小时内,就有机器人一天到晚、天天请求 /.env 和 /.git/config。
2026 年的陷阱是精确的。模型把"想法到 demo"从几个月压缩到一个周末。它没有做任何事来压缩"demo 到生产",而且它让那个缺口变得不可见,因为 demo 看起来是成品。能跑的代码和能扛住陌生人接触的代码,是不同的产品。上面的每一个事故,都活在那个缺口里。
打字从来不是这份工作
对这类故事的常见反应,是怪 vibe coding、叫构建者慢下来。那种读法漏掉了真正改变的东西:打字从来不是这份工作。这份工作从来都是判断力:决定建什么、验证它是否有效、守住它、运营它。AI 拿掉了打字,留下了判断。大多数单人构建者回应时,把判断也拿掉了,因为工具里没有任何东西强迫你留住它。
此刻正在赢的构建者留住了它,并通过把它变成一套系统,让它变便宜。
看那个天花板案例。Peter Steinberger 2011 年在维也纳创办 PSPDFKit,把它做到 70 多个员工,2021 年从 Insight Partners 拿了 €100 million 投资,退出,然后崩到要花一年时间做心理治疗、去想起他为什么喜欢电脑。2025 年 4 月,Agent 把他拉了回来。2025 年 11 月 24 日,他发布了一个叫 Clawdbot 的个人 AI 助手:一个活在你自己机器上的 Agent,通过 WhatsApp、Telegram 或 iMessage 回答你。一次商标投诉逼他改名 Moltbot,然后 OpenClaw。到 2026 年 3 月 2 日,仓库有 247,000 个 GitHub star,超过 React。仅一月它就吸收了超过 6,600 次提交;Pragmatic Engineer 像报道一家公司一样报道它,而 Steinberger 纠正了记录:"这是一个人坐在家里找乐子。"
他的工作流才是值得研究的部分。他在终端网格里并行跑三到八个 Agent,大多数在同一个文件夹里,没有分支、没有 pull request,直上 main。他说,而不是打。2025 年 10 月他写道:"Agentic engineering 已经好到,它现在写我差不多 100% 的代码。"他盯着流,读那些可能伤到他的部分,让 main 永远可交付,向前修复而不是回滚。他为每个子系统写了文档,让 Agent 一次读取就加载对的上文,还建了一个叫 ClawSweeper 的机器人,每周清扫每一个 issue 和 PR,于是项目自我维护。他的产出天花板,用他的话:"我现在能创造的软件量,主要只受推理时间和硬思考的限制。"
现在是那个平衡锤,因为 OpenClaw 同时成了这个时代最公开的安全课。用户把它部署成控制面板直接面对开放互联网。到 2026 年 1 月 31 日,Censys 数出 21,639 个暴露实例;SecurityScorecard 后来发现超过 40,000 个,其中 12,812 个可被远程代码执行。一位研究者发现了一个一键远程代码执行洞,CVE-2026-25253;修复几天内交付。Moltbook,OpenClaw 的 Agent 们为自己建的社交网络,上线时 Supabase Row Level Security 关闭、API key 放在客户端 JavaScript 里:150 万个 agent token 和 35,000 个所有者邮箱一直可读,直到 Wiz 上报。活着的最强 agentic 工程师,一个让 25 年模式识别充当自己审阅层的人,交付了和第一周 vibe coder 同一类的 bug。没有防御层的速度,把小错误变成全舰队暴露,而再多的才华都跑不过这一点。
与此同时,一人模型有效的商业证明不断到来。Maor Shlomo 独自建了 Base44,一个 AI 应用构建器:到 2025 年 3 月,2 万用户时盈利,5 月 $189,000 利润,6 月以 $80 million 现金卖给 Wix,公司注册后六个月,约 90% 的代码是 AI 写的。Zach Yadegari 十几岁时和两个朋友建了 Cal AI;它以七个员工过了 $30 million 年收入,卖给 MyFitnessPal。Marc Lou 2025 年一个人、十二个小产品,清了 $1 million。Tony Dinh 的 TypingMind 一个人过了每年 $1 million。Pieter Levels 公开 vibe-code 了一个浏览器飞行模拟器,17 天内拉到 $1 million 年化收入,大部分是游戏内飞艇上的赞助商 logo。William Lindholm,二十岁,在 Lovable 上建了他的整个 B2B 平台,五个月内做到每月 $110,000。Sam Altman 和其他 CEO 之间有个赌池,赌第一家一人十亿美元公司出现的年份。Y Combinator 2025 年冬季批次的四分之一,交付了 95% AI 生成的代码库。Claude Code 自己的负责人报告,两个月没有手写一行代码,一天交付 22 个 pull request。
同时握住两个真相:同一个工具既产出杠杆,也产出暴露。把 Shlomo 和 Leo 分开的变量,是包在模型外面的那套系统。
三层,一个人
每个持久的单人运营,都跑着某个版本的同一套架构,无论创始人有没有画过它:
构建层。一个在模型写作时让它保持诚实的循环:规格进,带门的 diff 出。
防御层。攻击者对每个应用都会试的七扇门,每一扇默认关闭。
运营层。代码外面的那家公司:审阅、监控、收件箱,由 Agent 按计划运行,用一份每日简报向你汇报。
回报:你以 Agent 的速度交付,而不用把你的用户数据捐给 4chan;事故是找上你,而不是终结你;整件事会复利,因为每一个生产错误都变成下周的规格,每一个审阅发现都变成 Agent 遵守的永久规则。本文其余部分安装这三层,带上代码和图。
第 1 层:一个模型无法撒谎的构建循环
先抛一个不受欢迎的主张:幻觉和漂移,首先是上下文问题,然后才是模型问题。Andrej Karpathy 在 2025 年 2 月把 vibe coding 定义为那种"完全臣服于 vibe、拥抱指数、忘掉代码甚至存在"的模式,而同一口气把它限定在可抛弃的周末项目上。对任何有用户的东西,失败是按计划到来的。Chroma 2025 年 7 月的"上下文腐烂"研究测量了 18 个模型,发现随着输入增长,表现会退化,哪怕连孩子都能做的任务也一样。Anthropic 的工程团队叫它有限的注意力预算:每一个还坐在你会话里的过期错误消息和废弃做法,都在和你的真实指令竞争。他们的修复很直白:两次失败的纠正之后,清空会话,因为"一个带更好提示词的干净会话,几乎总是胜过一段带着累积纠正的长会话"。
所以构建层有三个动作:写宪法、给每个循环装门、饿死上下文。
动作 1:写宪法
Agent 在碰你的代码之前,会读一个记忆文件。Claude Code 读 CLAUDE.md,Codex 和 OpenClaw 读 AGENTS.md,Cursor 读它的 rules 目录。这个文件是你今年会写的最高杠杆文档,而大多数构建者要么跳过它,要么把它吹成一部模型只会略读的小说。Anthropic 的指导给出编辑测试:对每一行问,"删掉这一行会让模型犯错吗?"如果不会,砍掉它,因为一部臃肿的宪法,会在你最需要它的那一刻被无视。
一个真实产品的宪法长这样:
# CLAUDE.md (kanso: invoice-OCR SaaS)
## Commands
- pnpm dev | pnpm test | pnpm typecheck | pnpm lint
- Never run: prisma migrate reset, rm -rf, git push --force
## Invariants (violating any of these means stop and ask me)
- Every /api handler validates input with Zod before touching the DB
- DB access goes through src/db/queries.ts. No raw SQL in handlers.
- Secrets live in server-side env vars. Nothing secret is NEXT_PUBLIC_.
- Money math uses integer cents. Never floats.
- Every new table ships with its RLS policy in the same migration.
## Boundaries
- src/billing/** (Stripe webhooks): plan first, wait for my approval
- File uploads follow docs/uploads.md exactly
## Definition of done
- Typecheck, lint, tests green. New logic starts from a failing test.
- Diffs stay under ~300 lines unless the approved plan says otherwise.
然后停止催功能,开始写规格。一个会话一个任务,写之前先计划。Claude Code 带一个计划模式(Shift+Tab),强制 Agent 在编辑前先读、先提议;批准计划,再让它写。对更大的构建,GitHub 的 Spec Kit 和 AWS Kiro 把它变成仪式,编号需求什么的都有,尽管 Thoughtworks 的 Birgitta Böckeler 指出了权衡:规格工具会生成"一大堆 markdown 文件",你现在也得审它们。单人构建者的版本更轻。Steinberger 把每个子系统的文档放在仓库里,让任何 Agent 一次读取就拿到本地上下文。复制那个:一个 docs/ 文件夹,每个子系统一页意图,你写、Agent 更新、你审。
动作 2:给每个循环装门
你的宪法是建议性的。模型可以无视它,而在上下文压力下它会。Hooks 是升级:在 Agent 生命周期上触发的 shell 命令,而 Agent 无法跳过它们。Anthropic 的文档用一句话划了线:不像记忆文件指令,"hooks 是确定性的。"两个 hook 改变一切。一个 PostToolUse hook 在每次编辑后跑 typecheck 和 lint,于是类型错误几秒内浮出,而不是累积一小时。一个 Stophook 在 Agent 试图宣布自己完成时跑你的测试套件,而退出码 2 拒绝那个宣布,把 Agent 连同失败文本一起送回工作。
{
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{ "type": "command",
"command": "pnpm typecheck && pnpm lint --quiet" }]
}],
"Stop": [{
"hooks": [{ "type": "command",
"command": "pnpm test --silent || { echo 'tests failing: keep going' >&2; exit 2; }" }]
}]
}
}
把门和测试先行提示配对。实现之前,让 Agent 写定义成功的失败测试,跑它、看它失败,再实现。一个测试是模型无法争辩的规格,而且它比写下它的会话活得久。另一种做法——问模型它自己的工作对不对——什么都测量不了。Anthropic 自己的文档警告,一个 LLM 审阅者"被提示找缺口,通常会报告一些,哪怕工作没问题",而镜像失败更糟:一个给自己作业打分的模型,会通过它。确定性检查——编译器、linter、测试、扫描器——是你流水线里唯一无法被甜言蜜语说服的意见。
动作 3:饿死上下文,然后交叉审问
给每个任务一个新会话,和能支撑它的最小上下文。2025-26 这波工具潮就是为了让它顺手而存在的。子 Agent 在独立上下文窗口里运行并返回摘要,于是研究垃圾永远不污染实现会话;定义一个只读的 security-reviewer 子 Agent,能 grep、能读、但永远不能编辑。Skills(2025 年 10 月,那年 12 月起成为开放标准)是带 SKILL.md 的文件夹,只在相关时才加载进上下文:把你的上传处理清单写一次,未来每个会话都应用它。Plugins 把整套东西——命令、子 Agent、skills、hooks、MCP 服务器——打包成一个可安装单元,而任何 git 仓库都可以是市场。你辛苦挣来的流程变成基础设施,而不是记忆。
然后交叉审问。审阅者不能是作者。Claude Code 的文档陈述了原因:"一个新鲜的上下文改进代码审阅,因为 Claude 不会偏向它刚写的代码。"最便宜的版本:开一个新会话,或跑捆绑的 /code-review skill,它对你的 diff 派一个干净的子 Agent。更强的版本:跨模型审阅,Codex 审 Claude 的 diff,或反过来,因为不同模型有不同的盲区,而它们的分歧正指向你应该亲自读的代码。
你会遇到跑在自主性远端的人。Geoffrey Huntley 的"Ralph"技巧是一个 bash while-loop,把同一个提示词永远喂给一个 Agent;他声称一个 $50,000 的合同,用 $297 的 token 交付了。尊重那个远端,也注意谁在抵制。Armin Ronacher 在 2026 年 6 月写道,不间断的循环,对他关心的代码仍然产出垃圾,而失败模式是验证从确定性测试漂移成了模型裁判。Simon Willison 的规则熬过了每一代工具:他不会提交一段他无法向别人解释的代码。Mitchell Hashimoto 把 AI 写的特性交付进 Ghostty,并说出安静的那部分:"我不会交付我不理解的代码。"在 Agent 速度下你没法读一切,所以像审计员一样读:那触及认证、钱、删除和上传的 20%,每次都过你的眼。
整层装进一张图。
第 2 层:七扇门,三条战线
忘掉电影里的黑客。你的对手是一个脚本,它对每个新域名探测同样的七扇门,因为这些门开得足够频繁,足以资助扫描本身。限流、输入验证、密钥、依赖、错误处理、信息泄漏、文件上传。AI 生成的代码默认让它们开着,因为训练数据里满是教程,而教程为了保持可读而跳过防御。复杂度加剧这个问题,这正是为什么 Pieter Levels 在一台 VPS 上用 PHP、jQuery 和 SQLite 跑他的七位数作品组合:一个他一下午就能审计的技术栈。无论你部署在什么上,七扇门在一周的晚上就能关上。按战线分组:
正门:限流和输入验证
一个没有限流的端点是一份邀请,而如果那个端点调用一个模型 API,它就是一本支票簿。Leo 被拉满的 key 正是这扇门开着;OWASP 现在把"无界消耗"列进它的 LLM Top 10,因为按 token 计费的端点会把滥用变成账单。修复花十五分钟。先对每个已认证用户做 key 限制(IP 会轮换;NAT 和手机运营商共享它们),匿名流量回落到 IP,并把平台的边缘规则(Cloudflare、Vercel WAF)放在前面当第零层。然后设一个硬性的月度花费上限,和一个 50% 的告警,这样最坏的情况是一封无聊的邮件,而不是一张四位数的发票。
// middleware.ts (Next.js edge middleware)
import { Ratelimit } from "@upstash/ratelimit";
import { Redis } from "@upstash/redis";
const limiter = new Ratelimit({
redis: Redis.fromEnv(),
limiter: Ratelimit.slidingWindow(20, "1 m"), // 20 requests/min
prefix: "rl",
});
export async function middleware(req: Request) {
const userId = await getUserId(req); // session lookup
const key = userId ?? req.headers.get("x-forwarded-for") ?? "anon";
const { success, reset } = await limiter.limit(key);
if (!success) {
return new Response("Too many requests", {
status: 429,
headers: { "Retry-After": String(reset) },
});
}
}
export const config = { matcher: ["/api/:path*"] };
验证是同一扇门的另一半。模型信任输入,因为示例代码信任输入。生产代码把每一个 body、查询串和 URL 参数都当敌意的,直到一个 schema 证明相反。边界处的 Zod 杀死那整类"往 db 里乱造东西"——正是它终结了 Enrichlead——而通过 ORM 的参数化查询,在同一天杀死 SQL 注入。一条没有例外的规则:用户输入永远不被拼进查询串。而如果任何特性去抓取一个用户提供的 URL(webhook 测试器、"从链接导入"、图片代理),抓取前封锁私有地址段,否则攻击者会用你的服务器去读你自己的云元数据端点。
// app/api/invoices/route.ts
import { z } from "zod";
import { db } from "@/db";
const CreateInvoice = z.object({
clientId: z.string().uuid(),
amountCents: z.number().int().positive().max(50_000_00),
note: z.string().max(500).optional(),
});
export async function POST(req: Request) {
const parsed = CreateInvoice.safeParse(await req.json());
if (!parsed.success) {
return Response.json({ error: "Invalid input" }, { status: 400 });
}
const user = await requireUser(req); // 401 if absent
// Ownership check on the object, not just the route (kills IDOR)
const client = await db.client.findFirst({
where: { id: parsed.data.clientId, ownerId: user.id },
});
if (!client) return Response.json({ error: "Not found" }, { status: 404 });
const invoice = await db.invoice.create({
data: { ...parsed.data, ownerId: user.id },
});
return Response.json(invoice, { status: 201 });
}
金库:密钥和依赖
两个事实定义密钥问题。GitGuardian 在一年里、公开 GitHub 上发现了 2380 万个新密钥,而 2022 年泄露的密钥中 70% 几年后仍然有效。没人轮换。你的规则:密钥住在服务端环境变量里,或像 Doppler、1Password 这样的管理器里,永远不在代码里,永远不在客户端包里。在 Next.js 里,NEXT_PUBLIC_ 前缀会把值内联进发给每个访客的 JavaScript;一个 NEXT_PUBLIC_OPENAI_KEY 就是一次捐赠。把 gitleaks 接成 pre-commit hook 和一个 CI 步骤,让一个贴进去的 key 永远到不了提交,而当一个还是泄露时,那一小时就轮换它:扫描机器人读提交 feed 的速度,比你读邮件的速度快。
依赖是 AI 开得更宽的那扇门。一项 2025 年 USENIX、对 576,000 个 AI 生成代码样本的研究发现,19.7% 的推荐包不存在,而假名会在运行之间重复,这使它们可被预留。攻击者注册那些幻觉,然后等;这个技巧有了名字,slopsquatting。同时,真实的供应链被规模化打击:2025 年 9 月的 chalk/debug 入侵,毒害了每周二十亿下载的包,而 Shai-Hulud 蠕虫通过维护者 token 自我复制。你的对策无聊而有效:
# Before adding anything an agent suggested:
npm view <pkg> time.created downloads # new + low-download = walk away
# Lockfile discipline:
npm ci # never bare `npm install` in CI
npm audit --audit-level=high
# Behavioral analysis on every PR:
# Socket.dev app (free for OSS) flags install scripts, network calls
# Updates on a fuse, not a firehose:
# Dependabot/Renovate with a 7-day cooldown on new releases
冷却期比它看起来更重要:研究者们在几天内就抓住了 2025 年那些大的 npm 攻击,所以伤到你的包,是你在发布几小时内就采纳的那些。
泄漏:错误处理、信息泄漏、文件上传
错误默认就会泄漏。一段原始堆栈跟踪,把文件路径、框架版本和查询形状交给攻击者;一个原始 ORM 错误,把 schema 交给他们。修复它的模式:一个全局处理器,向外给通用消息加一个错误 ID,向内把完整结构化细节给攻击者永远看不到的日志。
// app/api/_lib/handler.ts
import { randomUUID } from "crypto";
import { log } from "@/lib/log"; // pino, JSON output
export function withErrorBoundary(fn: (req: Request) => Promise<Response>) {
return async (req: Request) => {
try {
return await fn(req);
} catch (err) {
const id = randomUUID();
log.error({ id, err, url: req.url }); // full detail, server-side only
return Response.json(
{ error: "Something went wrong", id }, // nothing else leaves
{ status: 500 },
);
}
};
}
信息泄漏是同一种病,以十几种小形式出现,所以跑清单。生产 source map 关。框架调试页关。从公网确认 /.env、/.git 和备份文件返回 404,因为 EMERALDWHALE 式爬虫会向它们遇到的每个主机请求这些。安全头开启(CSP、HSTS、X-Content-Type-Options、frame-ancestors)。而 Supabase 一代的大事:每个表都开 Row Level Security,用你从登出客户端测试过的策略。Lovable 那个 CVE 存在,是因为客户端检查感觉像安全,而 REST 端点回答任何人;Lovable 自己的扫描器——披露之后加的——只检查 RLS 是否存在,无法告诉你它是否正确。你的必须两者都是,而测试是带不带 cookie 对自己 API 的一条 curl 命令。
文件上传把一个特性里的所有错误都集齐了。客户端提供的 MIME 类型是一个建议;扩展名是一套戏服。读 magic bytes,封顶大小,把每张图通过 sharp 重新编码(一次动作剥掉 EXIF GPS 数据和任何嵌入负载),给文件一个随机名字,存进一个私有桶、通过独立源上的预签名 URL 提供。把 SVG 当可执行代码对待,因为它就是:一个内联渲染的 SVG 上传,是一个存储型 XSS 向量。
// app/api/upload/route.ts
import { fileTypeFromBuffer } from "file-type";
import sharp from "sharp";
import { putObject, presign } from "@/lib/storage";
const MAX_BYTES = 5 * 1024 * 1024;
const ALLOWED = new Set(["image/jpeg", "image/png", "image/webp"]);
export async function POST(req: Request) {
const user = await requireUser(req);
const buf = Buffer.from(await req.arrayBuffer());
if (buf.byteLength > MAX_BYTES) {
return Response.json({ error: "Too large" }, { status: 413 });
}
const kind = await fileTypeFromBuffer(buf); // magic bytes, not headers
if (!kind || !ALLOWED.has(kind.mime)) {
return Response.json({ error: "Unsupported type" }, { status: 415 });
}
const clean = await sharp(buf).rotate().webp({ quality: 82 }).toBuffer();
const key = `u/${user.id}/${crypto.randomUUID()}.webp`; // no user filenames
await putObject(key, clean, "image/webp"); // private bucket
return Response.json({ url: await presign(key, 3600) });
}
如果你在产品里交付一个 AI 特性,还会再开一扇门,而这扇门将定义下一个十年的入侵。Simon Willison 命名了"致命三要素":一个持有私有数据、暴露于不可信内容、又有一条通往外部世界通道的 Agent,可以被骗去为攻击者偷东西,而 prompt injection 仍未解决。所以永远别把三者同时授予一个 Agent。你的客服机器人可以读工单和文档(不可信内容 + 私有数据),只要它不能发邮件、或调用会写入的工具。把模型输出当用户输入对待:转义它、验证它、永远别 eval 它、永远别当原始 HTML 渲染。
第 3 层:代码外面的那家公司
扛过上线,工作就变异了。你的日历被除了构建之外的一切填满:客服邮件、一条晚上 11 点扎心的一星差评、被推迟的营销、依赖告警、一个你复现不了的 bug 报告、你欠自己的那次重构。单人构建者在这里烧光,在碎片化里——远在他们证明自己能交付之后。修复:别再在每个工位上当那个工人,而是建三张桌子,每张由 Agent 按计划运行,每个向上汇报,而不是打断你。这套装置一开始比一份话费还便宜:单人技术栈在早期收入阶段每月跑 $73 到 $120,一旦产品赚到五位数就是 $200 到 $500,审阅和监控都含在内。
审阅桌
这张桌上顺序很重要。确定性扫描器先上,因为它们从不幻觉;AI 审阅者第二,因为它们抓住模式匹配抓不到的东西;你最后上,只在风险路径上。AI 审阅者市场成熟得很快。CodeRabbit 每月 $24 审每一个 PR,CLI 免费给。OpenAI 的 Codex review 2025 年 9 月 GA,用 OpenAI 的话说,"审我们绝大多数 PR,每天抓出几百个问题。"GitHub 2026 年 3 月报告,Copilot 已跑 6000 万次审阅,触及平台上一半以上的代码审阅。挑一个,外加 Anthropic 开源的 security-review Action,它读你的 diff 找注入、认证缺陷和硬编码密钥,并在评论前过滤自己的误报。跨模型审阅在这里自动发生:你的写手模型开 PR,一个对手厂商的模型审它,而它们的分歧落成一条评论 thread,而不是一次生产事故。
整张桌子是一个工作流文件:
# .github/workflows/ci.yml
name: gate
on: [pull_request]
jobs:
checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- uses: actions/setup-node@v4
with: { node-version: 22, cache: "pnpm" }
- run: pnpm install --frozen-lockfile
- run: pnpm typecheck && pnpm lint && pnpm test
- run: npm audit --audit-level=high
- uses: gitleaks/gitleaks-action@v2 # secrets in the diff
- run: pipx run semgrep scan --config auto # SAST rules
security-review:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-security-review@main
with:
claude-api-key: ${{ secrets.CLAUDE_API_KEY }}
保护 main,让任何红的东西都合不进来,包括你自己的 Agent。Steinberger 能直提 main,是因为他整天盯着流;你对他的本地 CI 的版本,就是这个文件,而且它在你睡觉时也工作。
监控桌
生产是唯一从不错过的审阅者,所以把它的意见导到有用处。Sentry(或任何错误追踪器)抓异常;一个小型计划 Agent 每天早晨读夜里的新错误,聚类它们,为任何新东西建档复现。Uptime 监控 ping 你的关键路径。Dependabot 以七天冷却期运行,让你继承补丁而不继承蠕虫。Token 花费告警守住 LLM 账单。然后一次每周维护会话,Agent 驱动,三十分钟你的注意力:依赖审计、密钥轮换检查、死代码清扫、最慢的查询。OpenClaw 在开源规模上跑这个模式——用 ClawSweeper,一个每周清扫每个 issue 和 PR、提议关闭的机器人;那个教会所有人暴露控制面板的项目,也展示了做对的自我维护。
前台
没人放进技术栈图里的瓶颈:读邮件、消化客户反馈、产出营销、回答客服。每一项都是一个阅读加起草的活,可以交给 Agent,但有一条铁律:前台 Agent 起草,永远不发送。一个收件箱 Agent 读隔夜邮件,递给你五封草拟好的回复,各带一行摘要;你几分钟内批准或改写。一个反馈 Agent 把评价和客服消息聚成主题,并把反复出现的投诉连同客户的原话,建成 GitHub issue。一个营销 Agent 把本周的 changelog 和真实用量数字,变成两条你声音的草稿帖,你花十分钟让它们变成真的。Steinberger 的助手读他的邮件、管理他的日历;他的安全建议同时是你的架构规则:"如果你确保你是唯一和它说话的人,风险画像就小得多。"前台 Agent 整天读陌生人的文字,是那个安全条件的反面,所以它们运行时就故意打破三要素:没有密钥、没有 shell、没有发送权限,草稿只进一个只有你放行的队列。
三张桌子汇聚成一个产物,每日简报:已交付、坏了、等你。每天早晨一条消息,由一个计划 Agent 组装。如果简报让你花超过五分钟才行动,某张桌子需要更好的自动化;如果你不再读它,你成了那个漏洞。
30 天安装
没有截止日期的知识是娱乐,所以这里是安装计划。每一周都绕得开一份正职。
第 1 周,构建层。今晚写宪法;二十分钟,模板在上面。明天加那两个 hook。剩下的一周练那个节奏:先计划模式、一个会话一个任务、实现前先失败测试、每个任务一个新会话。两次失败的纠正后,杀掉任何会话。
第 2 周,防御层。每晚一扇门。周一:每个 API 路由加限流,外加一个花费上限。周二:每个边界加 Zod,并 grep 拼串的 SQL。周三:gitleaks pre-commit、对 key 做 bundle-grep、轮换任何碰过提交的东西。周四:lockfile 纪律、CI 里 Socket 或 audit、更新的冷却期。周五:错误边界和结构化日志。周六:头部、source map 关、登出测试 RLS 策略。周日:上传流水线,magic bytes 到 sharp 到私有桶。
第 3 周,审阅桌。提交 CI 工作流。开分支保护。挑一个 AI 审阅者,接上 security-review action。从现在起,Agent 开 PR 而不是直推,而你要读每一条触及认证、钱、删除或上传的 diff 行。
第 4 周,运营层。Sentry 加早晨分诊 Agent。Uptime 检查。收件箱 Agent,只起草。每日简报。然后安排那个让系统保持诚实的仪式:每月一小时红队,攻击你自己的应用。登出 curl 每个端点。在请求里换对象 ID。上传一个改名为 .png 的文本文件,然后一个 SVG。在你的客户端包里 grep sk-。从生产请求 /.env。你找到的每个洞都变成一个规格,被带门的循环在周五前闭合。
一个月后两条法则存活,而它们是整篇文章的压缩。永远别交付一段你无法向陌生人解释的 diff,以及永远别同时给一个 Agent 私有数据、不可信输入和一条出口。
这篇开头那些构建者,打字并不比你快。Steinberger 把真实的约束放在一行里:他能创造的软件量,受推理时间和硬思考的限制。推理时间是待售的。上面这套系统,是硬思考变成产品的方式,而它始于一个你今晚睡前就能写的 markdown 文件。标签:# X # AI # Claude # Marketing # Automation # Growth # Crypto # Thread 相关文章 How to design an AI agent Who the fuck wants to pay for your platform when $200 already buys Claude Max or Codex? AI Claude Marketing Automation
原文参考:https://maxed.wiki/posts/the-production-ai-stack-for-solo-builders/ (Maxed.wiki,本页为站内中文整理)