# Alwenna —— 一位被拟人化的 AI 占星师

一款建立在我自己的 Astrolinkers API 之上的大众占星产品:一位被拟人化的 AI 占星师,她读懂你真实的出生星盘(Western 与 Vedic),并用平实、温暖的语言把它讲清楚。她的旗舰能力是配对合盘。这里的 LLM 被严格 grounded——它只对星盘引擎算出的事实进行重述,绝不凭空编造。目前 beta。

- **Author:** Fedor Chishchin
- **Role:** Solo founder-engineer
- **Period:** 2025 — 至今
- **Stack:** TypeScript · Next.js · React · FastAPI · Python · PostgreSQL · Astrolinkers API · Railway
- **Source:** https://fedorthinks.com/zh/work/alwenna

---

## 问题所在

大众占星分裂成两种都不理想的形态。一边是肤浅的星座运势应用,给所有人发同一句含糊的每日
箴言。另一边是严肃的星盘工具,术语密得让人窒息——宫位、相位、Ashtakoota——只有发烧友才读
得懂。两者都没法告诉一个普通人,他头顶那片真实的天空对他的人生、天赋,以及他所爱的人究竟
意味着什么。

Alwenna 正是为这个空白而生,而且它刻意不是「一款 app」。它是一个 _谁_,而不是一个 _什么_:
一位你可以与之交谈、被拟人化的占星师。她读懂你真实的出生星盘——Western 与 Vedic——并用
平实、温暖、诚实的语言把它讲清楚。没有含糊的运势,也从不说教。

## 产品做什么

你把出生日期、时间和地点交给 Alwenna;她绘出你真实的天空,并开启一段对话。旗舰能力是
**配对合盘**,以「一对」为先:把两个人交给她,她会把 Western synastry 与 Vedic Ashtakoota
融合起来,展示你们在哪里契合、在哪里冲突,以及如何把它经营好——用平实的语言,而非术语,
还附上一个整体和谐评分,拆解到情感、吸引力、沟通,以及长期这几个维度。

围绕它的是其余能力:一份逐个落点解释其人生含义的真实**本命星盘**;一份排序的**天赋画像**,
标出每一项优势背后确切的落点;**Ask Alwenna**——针对一个关于你和你在乎的人的真实问题,
给出温暖而具体的回答,就像在给一位睿智的朋友发短信;一条记录你成长与张力季节的**时间线**;
以及一份完整成文、可导出为 PDF 并保存的**深度报告**。从第一天起就是多语言的(English、
Spanish、Portuguese、Russian),mobile-first,并可换主题。

## 我构建了什么

**建立在我自己 API 之上的大众产品。** Alwenna 是 [Astrolinkers](/work/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](https://alwenna.com)——一个 mobile-first 的
PWA,带旗舰的配对合盘、本命星盘、天赋、「Ask Alwenna」、时间线,以及深度报告,四种语言,
跑在一条从免费到付费的套餐阶梯上。它依靠 Astrolinkers API 提供 grounded 的事实。它是我
独立构建的一对中的大众那一半:Astrolinkers 是引擎,Alwenna 是那个人——而它们合在一起,
是我一直在主张的那件事的一个可运行的证明:一个 LLM 恰恰因为它被 grounded、并且从不被允许
编造事实,才变得有用。
