One’s Vibe

Blog · 2026 年 7 月 3 日

One's Vibe 是怎么建成的

一个收录 vibe-coded 项目的作品展,大概自己也应该是 vibe-coded 的。它确实是:一个人把握方向,一个 AI 搭档写下大部分代码,从空文件夹到自运营网站用了十天。这是诚实的构建故事。

10
天,从想法到自运营
17
次数据库迁移
113
个测试(单元 + 集成)
7
个自动化代理在运行

想法

AI 把发布软件的成本压塌了。结果是大量周末做出的产品涌现在 X 的回复区和 Show HN 里——却没有一个好办法找到其中真正在线、值得一试的那些。目录站什么都收,排行榜只加冕一个赢家,两者都会腐烂。One's Vibe 的想法一句话说完:一个精选作品展,里面每个项目都在线、被检查过、离上手只有一次点击。

写代码之前就定死了三条原则。Live Proof(在线证明):我们每天验证可达性,并把它作为事实陈述,绝不当作背书。Build Receipt(构建单):一个东西是怎么做出来的(工具、耗时、AI 参与度)是值得展示的背景,不是纯度测试。Curated abundance(策展式丰饶):编辑版面托举新作品和长尾作品,而不是一个赢家通吃的排行。北极星指标是每周有效试用——因为被看到不等于被试过。

规格先行,代码在后

第一次提交之前,先写了九份文档——愿景、PRD、信息架构、数据模型、信任与审核政策、架构、分析事件,以及一组明确约束 AI 编码代理的工程规则:改代码前先读文档,绝不发明规格里没有的状态名或表名,并在同一次变更里更新对应文档。当大部分代码由模型写出时,规格是唯一能让上百个小决定保持一致的东西。它奏效了:十天之后,文档依然准确描述着这个系统。

Day 0Nine spec documents — vision, PRD, data model, trust policy, architecture. No code.
Day 1–2Schema: 17 tables, row-level security, lifecycle state machine, integration test gates.
Day 3–4Auth + public discovery: Explore, project pages, collections, the try-event spine.
Day 5Maker submission + the SSRF-guarded URL checker (the security boundary).
Day 6Editor review, moderation audit log, reports, dead-link policy. Launch hardening.
Day 7–8Discovery pipeline: X thread sweeps, screenshots, LLM enrichment, semantic search.
Day 9The automation fleet: AI editorial review, hourly outreach, mention intake.
Day 10The Graveyard, stack fingerprints, origin quotes — and this blog.
Fig. 1构建时间线。每个阶段以测试闸门收尾,而不是以演示收尾。

架构

技术栈刻意乏味:Next.js(App Router、严格 TypeScript)跑在托管平台上,Supabase Postgres 作为唯一事实来源,Tailwind 画出你正在看的这层编辑部皮肤。比 logo 更重要的是两个决定。

Visitors

Browser
Next.js app
(server-rendered)

Source of truth

Postgres + RLS
Auth · Storage · pgvector
17 tables
lifecycle state machine
append-only audit log

Isolated runner

URL checker
(SSRF-guarded)
the open web
screenshots · fingerprints
liveness checks
Fig. 2三个信任域。应用永远不碰提交的网址;检查器除此之外什么都不碰。

First: authorization lives in the database. Every table carries row-level security; status transitions go through guarded service functions and land in an append-only audit log. The client is never trusted for a role or an owner id. Second: the untrusted-URL boundary. The web app never fetches a submitted URL — a separate checker process does, behind an SSRF guard that blocks private networks, re-validates DNS on every redirect hop, caps bytes and time, and identifies itself honestly as OnesVibeBot. That one fetch is then squeezed for everything it’s worth: liveness, page metadata, a screenshot, and a passive tech-stack fingerprint.

让我们自己都意外的部分:内容机器

作品展的上限取决于供给。原计划是人工策展,长出来的却是一条流水线:软件负责发现和检查,AI 做第一轮编辑判断,人类编辑负责审计和纠错——每个决定都连同执行者一起入档。

X “drop your project” threads · Show HN · @-mentions · URL submits
dedupe (3 layers) · liveness · screenshot
LLM enrichment — title, tags, category,
signature keywords, “try this first”
AI editorial review — three questions:
tryable today? a product? harmful?
publish (audited) → maker outreach → claim
Fig. 3每日内容流水线。边界情况倾向发布;每个决定都可审计、可撤销。

审稿的 AI 会读在线页面,还会看截图——图里出现 App Store 徽章,就能推翻乐观的营销文案。作者从第一天起就获得署名(项目页引用他们的发布帖原文),用 X 登录即可认领页面。网址死掉的项目不会被删除:宽限期过后,它们迁往 墓园——因为人们尝试过什么,这份记录值得保存。

现状

截至本文:330+ 个在线项目,全部截图核实、每日检查;基于 pgvector 向量的语义搜索;来自被动指纹的技术栈维度;聚类提议、编辑发布的合集;站内私信;以及一组持续增长的 数据笔记 ,比如这篇 七月普查。运营成本是一个人的注意力,外加每天个位数美元。

接下来

  • 把检查器和巡检迁到隔离的边缘 Worker(架构从第一天就是为此设计的)。
  • 随着作者认领页面,构建单会更丰富——运行时 AI 服务、架构说明、构建背后的故事。
  • 技术栈与分类的时间趋势——这个作品展同时是一份关于人们如何用 AI 构建的纵向数据集。
  • 更多来源、更多语言、更多属于长尾的版面——策展式丰饶正是意义所在。
如果十天只教会我们一句话,那就是如今被我们奉为座右铭的这句:「One's vibe, another's poison」——君子和而不同。价值是主观的,品味是有高下的,一座开放的作品展对两者都毫不致歉地容纳。

按照我们要求别人提交的构建单精神,完整披露:这个网站——以及这篇文章——由一位人类编辑与一个 AI 搭档共同完成。首版耗时:十天。AI 参与度:重度。最难的部分:教会机器什么时候不该发布。 你自己也在做东西? 提交只需要一个网址。

编辑
编辑 · One's Vibe
“One's vibe, another's poison” —— 君子和而不同

评论

Sign in 后加入讨论。