Files
NewPlatform/docs_old/discussion-summary.md
2026-08-23 00:16:15 +08:00

351 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AIwelink 项目讨论过程总结
> 用途:记录 AIwelink 从最初想法到当前产品和技术共识的形成过程,帮助新开发者理解决策背景。
>
> 文档性质:这是讨论过程记录,不替代具体技术规范,也不替代飞书中的正式商业和运营文档。
>
> 当前阶段:方向已完成初步收敛,代码目录和 Agent 具体实现尚未定型。
## 1. 最初设想
项目最初的设想是建设一个项目合作平台:
- 用户可以上传简历和个人资料。
- 用户可以发布自己的项目。
- 用户可以发布召集令,寻找队友或协作者。
- 平台面向大学竞赛,也面向真实开发者项目。
- 平台未来保留运营和商业化空间。
最开始看起来像是“项目合作 + 人才资料 + 组队”的平台,但讨论很快发现,如果只是简历、帖子、私聊和找队友,产品会接近校园墙或垂直交友平台,缺乏长期差异化。
## 2. 第一次收窄:先服务大学生竞赛
为了降低冷启动难度,第一阶段选择大学生竞赛作为主要市场,而不是同时服务大学生和成熟开发者。
选择原因:
- 需求集中在明确的赛事周期内。
- 学校、社团、校园墙和学生组织是可触达的渠道。
- 组队需求明确,容易观察“发布、申请、成队”的闭环。
- 技术类竞赛可以自然连接 AI API、课程和工具包。
第一阶段优先关注 AI、软件、数据分析、创新创业等技术关联竞赛,后续再扩展到更多竞赛、科研、开源、企业命题和创业项目。
## 3. 从“交友平台”转向“任务型协作平台”
讨论中确认:如果平台只是“上传简历、发布召集令、私聊”,就会像校园版交友平台。
因此产品目标从“让人认识更多人”调整为:
> 以明确的项目或竞赛任务为中心,帮助用户找到合适的能力、角色和协作者,并把项目真正做完。
平台的成果不应只是浏览、点赞或聊天,而应包括:
- 有效申请。
- 成功组队。
- 持续协作。
- 完成作品。
- 提交竞赛。
- 赛后复盘。
## 4. 与校园墙的区分
校园墙负责让信息被看见,AIwelink 负责让项目推进和结果沉淀。
区分重点:
| 校园墙 | AIwelink |
| --- | --- |
| 单校或本地信息 | 跨学校的机会和项目网络 |
| 非结构化临时帖子 | 绑定赛事、角色、时间和能力要求 |
| 发帖后转到微信 | 记录申请、授权、组队和项目过程 |
| 主要关注曝光 | 关注成队率、完赛率和作品数量 |
| 广告或推广为主 | API、课程、导师、赛事和机构服务 |
校园墙不必完全视为敌人,也可以成为分发渠道:校园墙提供本地触达,AIwelink 承接标准化报名、组队、工具和成果记录。
## 5. 商业化方向的形成
讨论中明确,平台不应主要依靠向学生收取“找队友”会员费。更自然的商业闭环是:
```text
免费赛事与项目机会
-> 用户组队并开始真实项目
-> 产生 AI 工具和能力需求
-> 使用模型 API、工具包、课程或导师服务
-> 后续对接学校、赛事方和企业
```
主要商业化方向:
1. 面向竞赛团队的模型 API 和场景化工具包。
2. 面向具体赛事的课程、训练营、作品评审和答辩辅导。
3. 学校、社团和赛事方的报名、组队和运营服务。
4. 企业命题赛、模型或算力赞助、品牌合作。
5. 基于真实项目经历的人才发现和项目推荐。
商业表达不应聚焦“帮助用户访问国外 AI”,而应聚焦国内稳定可用、人民币结算、适合竞赛场景的 AI 能力。
API 和课程不应在用户刚进入平台时硬推,而应在用户进入项目、遇到具体困难或进入备赛阶段后出现。
## 6. 首页心智的讨论结果
首页不以产品介绍、API 或课程商城为中心,也不以简历瀑布流或泛校园信息流为中心。
首页应该围绕“机会”和“下一步行动”:
> 找到适合你的下一次挑战,并知道现在应该做什么。
首页的优先内容:
1. 适合用户的竞赛和项目。
2. 即将截止或正在招募的机会。
3. 用户正在参与的项目。
4. 自我认知和成长任务。
5. 真实项目成果和经验。
6. 与当前项目有关的 API、课程和导师服务。
登录策略初步确定为:未登录用户可浏览部分公开机会;收藏、报名、申请组队或开始个性化自我认知时再要求登录。微信作为主登录入口,邮箱作为绑定、验证和恢复方式。
## 7. 自我认知方向的形成
讨论进一步从“竞赛组队”转向“帮助用户了解自己”。用户真正想知道的不是简单人格标签,而是:
- 自己擅长什么。
- 适合做什么类型的任务。
- 适合承担什么项目角色。
- 更适合什么工作环境和协作方式。
- 容易在哪些环节遇到困难。
- 下一步应该学习或尝试什么。
因此,心理测评不能只是一次性结果。平台应形成:
```text
自我评估
-> 选择项目
-> 真实行动
-> 队友反馈
-> 项目复盘
-> 更新自我认知
```
测评结果是当前阶段的假设,真实项目行为和合作反馈是更有价值的证据。
平台不做心理疾病诊断,不用单次测评淘汰用户,也不把用户固定成某种人格类型。
## 8. 自我认知 Agent 与推广机制
随后提出将自我认知 Agent 作为推广阶段的独立产品入口:
```text
免费自我认知 Agent
-> 生成个人报告
-> 分享安全摘要
-> 邀请朋友
-> 解锁双人或团队分析
-> 推荐项目和竞赛
```
积分可以作为增长工具,但奖励不应只绑定链接点击或注册,而应绑定有效行为:
- 完成个人报告。
- 被邀请者完成授权。
- 双人报告生成。
- 参与项目或挑战。
- 完成项目复盘。
积分可以兑换深度报告、API 额度、课程优惠、导师问答或挑战资格。
## 9. 双人画像与社交属性
讨论确认,社交属性可以存在,而且可能是产品传播力的一部分,但应该围绕“共同做事”展开。
用户邀请朋友并获得双方授权后,可以生成:
- 彼此互补的优势。
- 适合的分工方式。
- 可能发生冲突的地方。
- 推荐的沟通方式。
- 适合一起参加的项目。
- 合作前应该约定的规则。
社交产品结构可以逐步演进为:
```text
个人画像
-> 双人协作画像
-> 三到五人的团队画像
-> 项目复盘
-> 长期成长和合作关系
```
共享必须是双向、明确、可撤销的授权。默认私密,用户可以选择共享优势、偏好、协作建议或成长方向,不应默认共享原始回答和敏感结论。
第一阶段优先面向已经认识的朋友、同学和队友,暂不把陌生人交友或恋爱社交作为主场景。
## 10. 个性化推荐方向
推荐系统被定义为平台的长期核心能力,推荐对象包括:
- 竞赛。
- 项目。
- 学科。
- 学习内容。
- 项目角色。
- 合作对象。
- 课程、导师和 AI 工具。
推荐依据不只包括兴趣,还包括:
- 用户能力和目标。
- 可投入时间。
- 工作偏好。
- 已完成或放弃过的项目。
- 项目中的真实行为。
- 队友反馈和复盘结果。
第一阶段采用可解释的规则、标签、行为信号和必要的向量召回,不直接引入复杂黑箱模型。
## 11. 技术选型过程
### 11.1 后端语言
讨论过 Go、TypeScript 和 Python 的适用性。
结论是:全栈 TypeScript 足以支撑第一阶段,因为业务主要是网络 I/O、数据库读写和第三方模型调用。Go 可以作为未来独立高性能服务的选择,Python 更适合未来算法和数据科学任务,但当前不需要为了 AI 提前拆成多语言微服务。
### 11.2 React 与 Next.js
确认 React 是 UI 库,Next.js 是基于 React 的应用框架。由于平台同时需要公开机会页、分享页、搜索收录和登录后的个性化工作台,最终选择:
> Next.js + React + TypeScript
Next.js 负责 Web 应用,视觉质量由设计系统、信息层级、动效、响应式布局和性能实现决定,而不是由框架本身决定。
### 11.3 Web 与 REST API
确认采用 Next.js 与独立 REST API,而不是把核心业务全部放入 Next.js Route Handler。
第一阶段使用同域名反向代理:
```text
https://aiwelink.com/ -> Next.js
https://aiwelink.com/api/v1/* -> 独立 REST API
```
这样可以保留独立 API 边界,同时避免第一阶段的跨域和子域名复杂度。
### 11.4 API 框架
确认使用:
> NestJS + Fastify Adapter
NestJS 负责模块、依赖注入、权限 Guard、异常处理和 OpenAPI;Fastify 作为底层 HTTP 适配器。
### 11.5 数据访问
对比 Prisma、Drizzle 和原生 SQL 后,确认:
> Drizzle ORM 作为默认数据访问工具,原生 SQL 作为复杂查询补充。
普通 CRUD 和事务使用 Drizzle;pgvector、全文搜索、推荐排序和复杂报表通过 Repository 使用参数化原生 SQL。
### 11.6 身份系统
确认在 API 内部建立 Identity 模块,统一管理微信登录、邮箱绑定、会话、验证和登录审计。第一阶段不把身份体系绑定在 Next.js 上。
### 11.7 数据与基础设施
确认使用:
- PostgreSQL 作为业务主数据库。
- `pgvector` 作为 PostgreSQL 扩展。
- Redis 用于缓存、限流和队列基础设施。
- 阿里云 OSS 存储简历、作品、报告和附件。
- Docker 容器化 Web、API 和 Worker。
- 自有 ECS + Docker Compose 作为第一阶段部署方式。
- 后续业务规模增长后再迁移 Kubernetes。
- Uptime Kuma 作为第一阶段基础可用性监控。
数据按身份、资料、原始测评、推测画像、行为证据、公开画像和授权审计分层存储。提前按业务边界分表,但不提前做跨库分片。
## 12. Monorepo 与文档管理决定
确认使用单 Git 仓库和 Monorepo,代码按以下概念划分:
- `apps/web`:Next.js Web。
- `apps/api`:NestJS REST API。
- `apps/worker`:异步任务,Agent 方案暂不定型。
- `apps/admin`:后续运营后台。
- `packages/contracts`:OpenAPI、DTO 和共享接口。
- `packages/db`:Drizzle Schema、迁移和种子。
- `infra`:Docker、ECS 和未来 Kubernetes。
文档边界确定为:
| 文档内容 | 位置 |
| --- | --- |
| 总体架构、技术栈、工程规范 | 根目录 `docs/`,进入 Git |
| API 具体接口和模块实现 | `apps/api/docs/`,进入 Git |
| 数据库规范 | `packages/db/docs/`,进入 Git |
| 技术部署和备份 | `infra/docs/`,进入 Git |
| 临时需求和未确认讨论 | `docs-local/`,Git 忽略 |
| 商业、市场、运营和合作 | 飞书,不进入 Git |
## 13. 当前已确认与未确认
### 已确认
- 第一阶段面向大学生竞赛和技术项目。
- 平台核心是自我认知、项目机会、真实协作和成长反馈。
- 社交围绕双人或团队协作画像展开。
- 推荐系统要可解释并帮助用户理解自己。
- 使用 Next.js + React + TypeScript。
- 使用独立 REST API,路径为 `/api/v1`,与 Web 同域名反向代理。
- 使用 NestJS + Fastify Adapter。
- 使用 Drizzle + 原生 SQL。
- 使用 API 内部 Identity 模块。
- 使用 PostgreSQL、pgvector、Redis 和阿里云 OSS。
- 使用 ECS + Docker Compose,后续迁移 Kubernetes。
- 商业和运营文档使用飞书。
### 暂未定型
- Agent 使用的具体模型供应商和模型路由。
- Agent 的对话编排框架。
- 长报告和复杂任务的具体队列实现。
- 推荐系统是否拆为独立服务。
- 测试工具和完整可观测性方案。
- 生产数据库和 Redis 的最终托管或自建形态。
- 具体的第一场竞赛、运营节奏和商业价格。
## 14. 新开发者阅读顺序
建议按以下顺序了解项目:
1. 阅读本文,理解产品为什么不是校园墙或普通交友平台。
2. 阅读 `docs/project-handoff.md`,了解当前工程共识和接手规则。
3. 阅读 `docs/architecture/technology-stack.md`,了解技术基线。
4. 阅读 `docs/architecture/technology-stack-details.md`,了解 API、数据和部署细节。
5. 阅读对应模块下的文档和决策记录。
6. 对未定型事项先保持接口边界,不要擅自提前固化实现。
## 15. 总结
本次讨论的核心收敛过程是:
```text
项目合作平台
-> 大学生竞赛组队
-> 区别于校园墙的任务型协作
-> 以自我认知为长期核心
-> 个性化推荐项目、学科和合作对象
-> 双方授权后生成协作画像
-> 通过真实项目形成成长和关系数据
-> 用 API、课程、导师和机构服务商业化
```
技术选择遵循同一个原则:先用清晰、稳定、可迭代的模块化架构验证真实用户价值;在规模和业务证据出现后,再增加 Agent 编排、复杂推荐、Kubernetes 或专用基础设施。