给阿嬤一封来自云端的信(上)

📅 2026/7/2 2:45:17
给阿嬤一封来自云端的信(上)
用 AI 替你写一封给阿嬤的家书。项目本身很简单但从模型调用、云函数、数据库、静态托管到一键部署全部基于云开发AI 工具使用云开发提供的大模型完成。本文不以功能为重点而是以工程化思维为线索拆解一个应用从构思到上线的完整链路。一、爱在心口口难开二刷《给阿嬤的情书》依旧眼泪汪汪推荐大家去看电影里谢南枝替人写了一辈子侨批。那些来找她的同乡并不是没有话说只是不知道怎么把心里话落到纸上。隔着山海隔着谋生的日子隔着一张薄薄的信纸一句“我想你”常常要绕很远才敢写出来。云开发团队做了一个小应用叫「给阿嬤的情书」。由 AI 为你落笔家书不编造虚假情节只收拢你细碎零散的点滴倾诉规整成一封完整可寄、适宜分享的家书。二、产品闭环产品流程填称呼、选关系、填写内容、选风格AI 生成后可分享或投递树洞。用户输入往往只有几句零散的话阿嬤我很久没回家了。小时候你总在巷口等我放学给我做橄榄菜配白粥。我现在工作很忙但很想你。AI 生成的目标不是模板化地写一句“亲爱的阿嬤我非常想念您”而是围绕用户提供的真实细节展开阿嬤见字如面。近来天热不知你胃口可还好。我常想起小时候放学远远看见你站在巷口手里像总有一碗白粥等我。那时候只觉得橄榄菜香如今才知道原来那是有人惦记的味道。我在外头一切都好只是忙起来时总觉得日子过得太快快到连一句想你都常常忘了说。阿嬤等我回去再陪你吃一碗白粥。写信完成之后即可到分享页面将信件分享给他人或者投递到公共树洞。三、工程链路才是真正的考验「给阿嬤的情书」看起来只是一个超轻量级网页应用但从产品搭建到产品上线不可避免地面临以下工程问题模型调用前端不能直接暴露模型 Key需要服务端代理。Prompt 编排不同关系、不同风格、不同输入内容需要在服务端统一拼装请求。结构化输出模型返回内容需要可解析不能只返回一段自然语言。数据持久化生成后的信件需要入库才能被分享页和树洞再次读取。访问链路分享链接需要根据id还原完整信件。内容安全开放输入需要处理不合适的称呼和表达。部署编排云函数、环境变量、前端构建、静态托管需要一次性部署到位。如果拆分能力独立搭建项目会离散为模型 API、Node 服务、数据库、对象存储、静态托管、CI/CD、环境变量管理等多个模块运维复杂。本项目采用云开发一体化建设全链路收口统一实现云函数负责服务端逻辑包括模型调用、Prompt 编排和返回解析。云开发 AI 网关负责接入大模型。NoSQL 数据库负责保存每一封生成后的信。静态托管负责承载 React 前端。CodeBuddy负责把开发、调试、部署串起来。它表面上是一个写信应用实际跑通的是一个完整的 AI 应用工程闭环。四、云开发应用能调AI 工具也能接在 AI 应用开发里云开发更关键的价值是把模型能力也纳入同一个开发环境。项目中loveletter云函数通过云开发 AI 网关调用hy3-preview模型生成信件正文。云开发 AI 网关兼容主流 AI 协议调用方式接近常见的大模型 API配置 Base URL、API Key、Model Name 即可请求。云开发 AI 网关支持多种主流协议协议适合场景Chat CompletionsOpenAI 兼容适合大多数文本生成场景Responses APIOpenAI 新一代接口适合更复杂的状态管理Anthropic Messages APIClaude 原生协议适合 Claude 生态工具这意味着除了应用里的云函数可以调模型任何支持自定义模型端点的 AI 编程工具都可以通过云开发 AI 网关调用模型。其中CodeBuddy 原生集成了云开发开箱即用可以直接部署云资源。其他工具如Cursor、Claude Code、Codex、Trae、Cline、GitHub Copilot 等只需配置Base URL和API Key即可接入。五、云函数用服务端代理模型调用项目核心云函数loveletter。它接收前端传来的to、relation、words、style在服务端完成 Prompt 编排然后请求云开发AI 网关。constENV_IDprocess.env.TCB_ENV||process.env.SCF_NAMESPACE;constAI_ENV_IDprocess.env.AI_ENV_ID||ENV_ID;constAI_BASE_URLhttps://${AI_ENV_ID}.api.tcloudbasegateway.com/v1/ai/cloudbase;constAI_API_KEYprocess.env.AI_API_KEY;constMODELhy3-preview;asyncfunctiongenerateLetter(messages){constrespawaitfetch(${AI_BASE_URL}/chat/completions,{method:POST,headers:{Content-Type:application/json,Authorization:Bearer${AI_API_KEY},},body:JSON.stringify({model:MODEL,messages,temperature:0.8,max_tokens:2000,}),});if(!resp.ok){consttextawaitresp.text();thrownewError(AI 网关返回${resp.status}:${text});}constdataawaitresp.json();returndata.choices?.[0]?.message?.content?.trim()||;}服务端代理带来的工程收益AI_API_KEY放在云函数环境变量中不暴露到浏览器侧。前端只调用云函数不直接请求模型网关。Prompt 编排、结构化输出解析、内容审核都可以在服务端统一处理。模型生成结果可以直接写入云开发 NoSQL。数据库返回的_id可以作为分享页和读信页的唯一入口。前端调用保持轻量constresawaitcloudbase.callFunction({name:loveletter,data:{to,relation,words,style},});constresultres.result;constcontenttypeofresult.bodystring?JSON.parse(result.body):result;用户看到的是一封信技术实现上是云函数、AI 网关、数据库和前端路由之间的一次完整协作。六、上线流程编排化AI 应用部署涉及多个步骤云函数部署、环境变量注入、前端构建、静态托管上传。CodeBuddy 和云开发集成后可以把这些步骤编排起来。在 CodeBuddy 中直接说帮我部署本项目。它会执行检查云开发环境、部署云函数、注入环境变量、构建前端、上传静态托管、输出访问地址。云开发把 AI 应用需要的后端能力收在一起CodeBuddy 再把这些能力接入开发与部署流程。七、Prompt 约束模型、后端和部署跑通之后信写得好不好仍然取决于 Prompt 设计。本项目不希望生成“标准、空泛、煽情”的 AI 作文因此在loveletter中对风格做了明确约束constSTYLE_HINT{warm:基调温情家书。语言质朴克制不堆砌形容词用具体的生活细节代替空泛抒情。比如写前日晚饭烤番薯三个孩童吃得欢喜而不是我非常想念你。句式偏短口语化但不粗糙带一点文言的温润感。每段只写一件小事或一个牵挂段与段之间留白。,};这里最重要的不是“写得感人”而是把产品希望呈现的内容质感拆成可执行规则忠于用户输入不凭空编造。用生活细节代替抽象抒情。句子短一点留白多一点。可以润色但不要把别人的回忆写假。不让模型自由发挥到偏离产品定位。Prompt 是产品规则的一部分。前端负责交互体验云函数负责服务端编排Prompt 则负责定义生成内容的边界。小结本项目功能明确写一封家书。但值得展开的不是AI 可以写信而是这句话背后的工程链路云开发把模型接入、Serverless 运行时、数据存储、静态托管收敛到同一个环境避免能力离散。云开发 AI 网关同时服务应用端和开发端模型、鉴权、额度可以统一管理。它既可以通过 SDK 在服务端调用也支持接入各类 AI 编程工具查看完整列表配置 Base URL 和 API Key 即可使用。CodeBuddy把云资源部署编排进开发工作流从代码写好了到项目上线了通过一条指令完成。AI 应用开发多出的不只是一个模型接口而是模型接入、后端、数据、托管和部署被重新放到了一条链路里。下篇继续讲更细的工程问题结构化输出如何保证稳定解析如何把称呼规范和内容边界写进模型调用以及 AI 工具通过一条指令完成部署背后的工程化流程。在线体验案例代码