用 AI 版自己替换开发 portfolio:当网站的主界面变成对话
作者一直不喜欢传统开发者 portfolio 的结构:简短介绍、技术列表、项目卡片、工作经历、联系按钮。最大的别扭在于——你得事先决定访客该关心你背景的哪部分。于是他把网站重建成:打开就是 "Hi, I'm Aaron. Ask me anything."(见 https://xlogic.sh/)。
访客可以问:"Aaron 做过什么?"、"他工作里实际做什么?"、"哪个项目让他最兴奋?"、"他为什么不打竞技游戏了?"——网站其他部分还在,但对话成了主界面。
有意思的不是聊天机器人,是导航范式
传统 portfolio:访客 → 导航 → 项目/关于/经历 → 我决定放在那里的信息。新的:访客 → 问题 → 相关信息。对个人站更自然——尤其当信息量超过首页合理承载时。访客自己决定关心什么,而不是你猜。
背后的实现
大部分"关于我和我的项目"的信息存在 Markdown 文件里,分一般信息与项目信息。有人提问时后端判断哪些信息相关、检索、生成回答并流式返回。关键约束是避开明显的坏方案:不要每次请求把所有自我介绍都发给模型——那又慢又贵,答案还会变差。流程:问题 → 判断需要什么上下文(个人信息/记忆/项目)→ 检索相关内容 → 生成响应 → 流式回传到站点。前端 SvelteKit,后端编排跑在 n8n 上。
上线即事故:真实负载测试
第一天发 Reddit,人们立刻弄坏了它。站点原来托管在 Netlify(含处理对话的端点),开发时完美。真实用户问的问题远比作者自己试的复杂,一些请求慢到 Netlify Function 命中执行超时——访客问了个有趣问题,等待回答,请求就死了。于是后端迁移:前端照常托管,聊天端点跑到自己控制的服务器上,不再依赖短命 serverless 函数。架构变成:SvelteKit 前端 → 自托管 API → n8n workflow → 流式响应。"自己测试一下和十个陌生人点击是两件非常不同的事——Reddit 成了我的负载测试。"
还在改进
让回答更一致:网站代表一个真人,必须区分"肯定为真"、"可合理推断"、"就是不知道"——宁愿说"我不知道",也不要自信编造。
工程要点
核心架构选择:信息检索与生成解耦(Markdown 知识库 + 按需检索,而非全量上下文);长响应不能放无超时保障的 serverless(静态托管 + 自托管 API 的混合);回答一致性靠置信度分层(确定/推断/未知三态),代表真人的 AI 界面尤其如此。对想做"AI 化个人站"的开发者,这三点都是第一课。
来源:I replaced my developer portfolio with an AI version of myself - DEV Community