Alwenna —— 一位被拟人化的 AI 占星师
一款建立在我自己的 Astrolinkers API 之上的大众占星产品:一位被拟人化的 AI 占星师,她读懂你真实的出生星盘(Western 与 Vedic),并用平实、温暖的语言把它讲清楚。她的旗舰能力是配对合盘。这里的 LLM 被严格 grounded——它只对星盘引擎算出的事实进行重述,绝不凭空编造。目前 beta。
- 角色
- Solo founder-engineer
- 技术栈
- TypeScript · Next.js · React · FastAPI · Python · PostgreSQL · Astrolinkers API · Railway
- 时间
- 2025 — 至今
问题所在
大众占星分裂成两种都不理想的形态。一边是肤浅的星座运势应用,给所有人发同一句含糊的每日 箴言。另一边是严肃的星盘工具,术语密得让人窒息——宫位、相位、Ashtakoota——只有发烧友才读 得懂。两者都没法告诉一个普通人,他头顶那片真实的天空对他的人生、天赋,以及他所爱的人究竟 意味着什么。
Alwenna 正是为这个空白而生,而且它刻意不是「一款 app」。它是一个 谁,而不是一个 什么: 一位你可以与之交谈、被拟人化的占星师。她读懂你真实的出生星盘——Western 与 Vedic——并用 平实、温暖、诚实的语言把它讲清楚。没有含糊的运势,也从不说教。
产品做什么
你把出生日期、时间和地点交给 Alwenna;她绘出你真实的天空,并开启一段对话。旗舰能力是 配对合盘,以「一对」为先:把两个人交给她,她会把 Western synastry 与 Vedic Ashtakoota 融合起来,展示你们在哪里契合、在哪里冲突,以及如何把它经营好——用平实的语言,而非术语, 还附上一个整体和谐评分,拆解到情感、吸引力、沟通,以及长期这几个维度。
围绕它的是其余能力:一份逐个落点解释其人生含义的真实本命星盘;一份排序的天赋画像, 标出每一项优势背后确切的落点;Ask Alwenna——针对一个关于你和你在乎的人的真实问题, 给出温暖而具体的回答,就像在给一位睿智的朋友发短信;一条记录你成长与张力季节的时间线; 以及一份完整成文、可导出为 PDF 并保存的深度报告。从第一天起就是多语言的(English、 Spanish、Portuguese、Russian),mobile-first,并可换主题。
我构建了什么
建立在我自己 API 之上的大众产品。 Alwenna 是 Astrolinkers 的 大众面孔,后者是我构建的那套星盘 grounding API。Astrolinkers 以确定性的方式计算占星 ——Western 与 Vedic 星盘、synastry、Ashtakoota、天赋;Alwenna 把它变成一个你可以交谈的人。 产品立意、架构、那个代理,以及审查都是我的;实现则由 AI 代理依据一份分阶段的规格来产出 ——每个阶段都端到端地构建,带测试,并写出一份报告。
一个 grounded 的代理,而非一个「懂」占星的聊天机器人。 那条硬规则是:Astrolinkers 是占星事实的唯一来源。LLM 绝不发明一个落点、一个评分,或一种解读——它只把 grounded 的 陈述重述成 Alwenna 那温暖的声音。所以她说的每一句话都能追溯回一份真实、被算出的星盘, 而不是模型的想象。这正是一个仅仅听起来自信的 AI,与一个你能够信任的 AI 之间的全部区别。
一个真实的产品界面。 一个 mobile-first 的 PWA,从第一天起就有四种语言,可换主题, 旗舰的配对合盘、本命星盘、天赋画像、一段「ask」对话、深度 PDF 报告,以及一条从免费到 付费的套餐阶梯(免费,然后是月度和年度档)。
架构选择
grounding 是一项架构约束,而不是一句 prompt。 「LLM 只做重述」是在设计里强制执行的: 代理为事实包裹 Astrolinkers,而模型只被用来措辞——绝不被用来决定什么是真的。这和我一直在 写的是同一种纪律:把模型 ground 在一个确定性的来源之上,让它开口,但永远不让它来撰写事实。
一个引擎,一个声音。 Alwenna 建立在 Astrolinkers API(事实)之上,再加上一层薄薄的 代理层。web 应用只通过 HTTPS 与 API 对话;API 就是那个代理,它把 grounded 的事实与单次 LLM 重述组合在一起。共享契约由 API 的 OpenAPI 生成为带类型的 TypeScript 客户端和 Zod schema,所以 web 与 API 永远不会漂移。
clean architecture,严格执行。 两个可部署单元都遵循 clean architecture——一个纯净的 领域(无 IO、无时间、无随机),由 dependency injection 接线的服务,IO 边缘的 adapters ——配合 SOLID,逻辑里没有硬编码的价格或模型清单,把预期内的失败建模为 Result 值而非异常, 并对领域和服务做到 100% 覆盖率。和我其余工作一样的工程标准。
mobile-first,从第一天起就多语言。 它是一个手机优先的 PWA,在桌面之前先按手机视口 来设计,把 i18n 当作第一天的要求——任何地方都不硬编码面向用户的字符串——横跨 English、 Spanish、Portuguese 和 Russian,因为受众是全球的,而这份解读是私人的,并且发生在手机上。
当前状态
Alwenna 已在 beta 上线,地址是 alwenna.com——一个 mobile-first 的 PWA,带旗舰的配对合盘、本命星盘、天赋、「Ask Alwenna」、时间线,以及深度报告,四种语言, 跑在一条从免费到付费的套餐阶梯上。它依靠 Astrolinkers API 提供 grounded 的事实。它是我 独立构建的一对中的大众那一半:Astrolinkers 是引擎,Alwenna 是那个人——而它们合在一起, 是我一直在主张的那件事的一个可运行的证明:一个 LLM 恰恰因为它被 grounded、并且从不被允许 编造事实,才变得有用。