ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

AI编程实战:10分钟用Cursor和DeepSeek打造翻译软件

2026/9/28 6:01:03 拓冰建站 浏览量
AI编程实战:10分钟用Cursor和DeepSeek打造翻译软件 1. 开篇从“不会前端”到“10分钟做出翻译软件”我平时主要跟后端逻辑打交道前端代码属于那种“看得懂、写不来”的水平。以前想做个小工具一想到要先搭环境、再搞UI最后还要处理各种兼容性问题就干脆放弃了。直到最近把 AI 编程工具真正用进日常开发事情才起了变化——上周末我花了一晚上从零做出了一个能用的翻译软件从有想法到能跑起来前后不到 10 分钟。这篇文章就是把那次实战的完整过程、踩过的坑和我对 AI 编程这件事的想法一次性讲清楚。先说这个项目是什么一个本地运行的 Web 翻译工具支持粘贴长文本翻译、上传文件翻译、双语对照展示。核心技术栈非常朴素——前端就是一个 HTML 页面加原生 JavaScript后端用 Python 写了一个几十行的代理服务翻译能力对接的是大模型 API 的 DeepSeek 接口支持 OpenAI 兼容格式直接 curl 就能调。整个过程用 AI 编程助手完成我再强调一次我本人没有手写过任何一段完整的核心逻辑所有代码都是“我描述需求 AI 生成代码 我改参数”这样磨出来的。这东西适合谁参考两类人。一类是完全零基础、想试试 AI 编程的新手跟着文章走一遍你会明白 AI 编程不是玄学它就是“提需求、看输出、改问题”的循环。另一类是已经用 AI 写代码但效率不高的人这 10 分钟的拆解里有大量的提示词写法、工具选型和调试技巧能从“AI 能写代码”升级到“AI 写代码又快又稳”。下面我按实战顺序来拆重点讲清楚每个选择背后的原因不是让你照抄而是让你知道为什么这么做。2. 项目设计与技术选型思路做任何工具类项目第一件事不是写代码而是想清楚这三个问题给谁用、解决什么问题、在什么环境跑。我的应用场景非常具体平时读英文技术文档、审阅外文邮件在浏览器里选中一段文字翻译或者把整篇文档丢进工具里快速翻译。这个场景决定了我的选型必须满足三个条件——跨平台、零部署成本、可离线使用。2.1 为什么选“HTML 前端 Python 后端代理”一开始我考虑过直接用浏览器里的在线翻译接口但很快否掉了。一是质量不稳定术语翻译经常乱来二是没有网页 UI 的情况下长文本体验很差。后来我决定自己接大模型 API 来翻译这样质量有保障还能自定义翻译风格。于是架构就清晰了一个前端页面负责 UI 展示一个后端小服务转发请求。为什么中间要多一层后端两个原因第一大模型 API 的密钥如果直接暴露在前端任何人拿到网页源码就能看得到等于把自己的额度送人。第二浏览器有跨域限制直接从前端调 API 会遇到 CORS 拦截而本地后端代理天然没有这个问题。用 Python 的http.server模块写这个代理几十行代码就够了不需要引入 Flask、FastAPI 这些框架因为需求真的只有一个接收前端 POST 请求转发到大模型接口再把结果返回。前端也用不着 Vue、React 这一套一个纯 HTML 文件 原生 JavaScript 就能做完整的交互界面。没有打包构建流程双击就能打开后期分发给别人用也极其省事——把index.html和后端脚本放到同一目录运行后端脚本后浏览器直接访问即可。2.2 翻译引擎的选择标准翻译引擎是这个项目的核心我梳理了几个硬性标准对比维度通用在线翻译接口大模型 APIDeepSeek 等翻译质量中规中矩专业术语差优秀支持上下文理解与文风控制长文本支持有长度限制需分段分片后可处理任意长度自定义能力基本没有可通过提示词控制术语与格式调用成本低很低翻译场景成本可忽略技术门槛低略高但也只是 HTTP 请求综合对比后我选择了 DeepSeek API。原因很实际它是国内直连可用的服务不需要额外的网络配置兼容 OpenAI 的/chat/completions接口格式参考文档成熟价格便宜到几乎可以忽略——我手边一份大约 5000 字的文档翻译下来成本只有几分钱。如果你手上有其他的大模型 API比如通义千问、智谱 GLM原理完全一样只是接口地址和模型名称不同照着修改即可。2.3 流式输出还是等待完整返回初次调试时我遇到一个体验问题翻译一篇 3000 字的文档等待时间大约 15 秒到 1 分钟期间前端页面一片空白用户完全不知道系统有没有在工作。解决方式是采用流式输出SSE让翻译结果像打字机一样逐字蹦出来。流式输出的原理不复杂大模型 API 支持stream: true参数服务端会通过 SSE 格式不断推送增量内容前端用EventSource或fetch的ReadableStream监听每收到一段内容就追加到页面上。这个能力在 AI 编程普及之前自己实现还挺麻烦但在 AI 编程助手的帮助下只需要一句描述“用流式输出显示翻译结果效果要像打字机一样”它就给你生成完整的解析代码。3. AI 编程工具选型四个“神队友”的实战对比既然要分享 AI 编程实战工具选择绕不开。最近“AI 编程助手大比拼Cursor、Windsurf、VS Code Copilot 和 Trae谁才是神队友”这个话题特别火这次实战我把自己常用的几个工具都试了一圈说点真实感受。3.1 Cursor全能型选手我的主力选择Cursor 是目前综合体验最好的 AI 编程 IDE。它最大的优势是深度理解整个项目的上下文——不是简单看你当前打开的文件而是能阅读项目目录结构、相关引用文件回答“这个报错可能在哪里产生”这类跨文件问题。我这次翻译软件的开发在 Cursor 里完成体验相当流畅。它的 Tab 补全能干到多夸张我在调后端代理的 JSON 解析时批注里写到“处理 response 里 choices[0].message.content 可能为空的情况”它直接补全了空值判断、默认值设置、错误日志三行代码。这类“代码生成 逻辑补全”的组合能力是传统 IDE 的自动补全完全无法比的。用 Tab 接受它的补全速度比手动写代码快出好几倍。3.2 Windsurf精于理解意图但引导成本稍高Windsurf 的亮点是 Cascade 模式它在“理解你的意图”上表现比较突出。我测试同一个需求——让它生成一个带深色主题的翻译界面——它给出的结果比 Cursor 更贴合审美会自动处理间距、圆角、hover 效果这些细节。但我的体感是 Windsurf 更依赖你把它“喂饱”。如果你描述含糊它生成的东西会偏离方向。适合那种喜欢先详细写设计文档、再让 AI 实现的开发者。如果你习惯边写边改、即时反馈Windsurf 不如 Cursor 顺手。3.3 VS Code Copilot老牌选手简单任务效率极高Copilot 的优势是集成在 VS Code 里不需要切换 IDE对日常开发干扰最小。它擅长内联补全和当前文件的修改但多文件、跨模块的改造能力明显弱于 Cursor。在我这个项目里它帮我写单个函数、调样式很利索但让它“把整个代码重构为支持批量翻译的版本”它就有点力不从心了。适合人群很清楚已有完整 VS Code 生态、不想换 IDE且任务是局部修改而非从零搭建项目。3.4 Trae界面漂亮但生态还在成长Trae 的界面设计很现代集成度也不错。但我这次实测时发现它的自动补全偶发性失效有时同一句话重复触发也不给任何输出需要重启 IDE。它目前适合尝鲜和小项目做稍微复杂的项目容易卡壳尤其处理长上下文时会显得迟钝。期待它后续版本优化。3.5 “谁才是神队友”的结论四个工具我轮流用了小半个月最终结论是没有“最强”只有“最合适”。如果你主要在 IDE 内写代码、目标明确、改动范围可控Copilot 够用如果你从零搭建项目、需要 AI 深度理解整体结构、频繁跨文件修改Cursor 体验最好Windsurf 适合需求明确、愿意花时间写清 prompt 的开发者Trae 建议等下一代版本。我最终全程使用 Cursor 完成的本次实战项目。4. 10分钟实战拆解从需求到能跑的翻译软件现在进入正题。我按时间线把这次开发分成四个阶段每段标注用时和关键操作你可以完完整整复现一遍。4.1 阶段一说清需求打好第一个 Prompt约 2 分钟AI 编程最核心的技巧不是写代码而是描述需求。第一次用 AI 编程的人最容易犯的错是丢一句话“帮我做个翻译软件”然后抱怨 AI 生成的代码乱七八糟。实际上这不是 AI 笨是你没说清。我在 Cursor 里写下第一个提示词结构是这样拆的请帮我搭建一个本地翻译工具的完整项目包含以下部分 1. 后端使用 Python 标准库编写 HTTP 服务监听 8000 端口提供 POST /api/translate 接口接收 JSON 格式 {text: 需要翻译的内容}调用 OpenAI 兼容格式的大模型接口 模型选择 deepseek-chattemperature 设置为 0.2返回翻译结果。 2. 前端一个 index.html 文件包含文本框输入原文、按钮翻译、结果区域输出译文 ]]布局清晰支持长文本滚动。 3. 接口密钥从环境变量 DEEPSEEK_API_KEY 读取不要硬编码在代码里。 4. 项目要用流式输出译文像打字机一样逐渐显示。这个提示词的核心是“四要素”做什么、怎么做、约束是什么、效果什么样。不要吝啬细节——模型、接口格式、端口、展示方式全部写出来。AI 编程工具生成代码的质量与你的提示词细节呈正相关。约 2 分钟后Cursor 生成了完整的项目骨架server.py和index.html。目录结构如下translator/ ├── server.py # 后端代理与流式转发 └── index.html # 前端 UI4.2 阶段二迭代调优核心翻译逻辑约 3 分钟首版代码能跑但界面很简陋翻译长文本时偶尔报错。我继续用自然语言提修改需求“在原文和译文两侧加入对照滚动当输入文本超过 2000 字时自动分片请求并在全部完成后拼接。”AI 几秒内完成了对应修改。这里有个关键技巧给 AI 看真实的运行结果。报错信息、控制台日志、页面截图直接粘贴给它它基本能准确定位问题。有一次后端返回 502我把完整报错贴过去它立刻意识到是超时时间设置太短自动把超时时间调长并加了重试逻辑。AI 编程的调试循环本质上就是“人工做集成测试AI 负责修代码”分工会让我非常省心。为了让你理解核心逻辑我把后端最关键的一段代码贴出来并逐行拆解。# server.py 核心处理逻辑由 AI 生成我做了参数调整 import json, os, urllib.request DEEPSEEK_API_KEY os.environ.get(DEEPSEEK_API_KEY) API_URL https://api.deepseek.com/chat/completions def translate(text): prompt f翻译以下内容为简体中文保持原有格式、代码块和换行\n\n{text} payload { model: deepseek-chat, messages: [ {role: system, content: 你是一位专业翻译精通中英文互译尤其擅长技术文档。}, {role: user, content: prompt} ], temperature: 0.2, # 低温度保证翻译一致性避免随意发挥 stream: True # 开启流式输出 } req urllib.request.Request( API_URL, datajson.dumps(payload).encode(), headers{ Content-Type: application/json, Authorization: fBearer {DEEPSEEK_API_KEY} } ) # 后续处理 SSE 流并逐行返回增量内容这里有个细节值得解释temperature 参数为什么设置成 0.2翻译场景需要的是稳定、忠实原文的产出而不是创造性发挥。temperature 越高模型输出越发散可能会换词、改写甚至漏译设置低值能锁定表达方式确保同一术语全文翻译一致。前端核心则是监听流式响应// index.html 中的流式渲染逻辑 async function handleTranslate() { const text document.getElementById(inputText).value; const response await fetch(/api/translate, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ text }), }); // 读取流式返回边读边显示 const reader response.body.getReader(); const decoder new TextDecoder(utf-8); let result ; while (true) { const { done, value } await reader.read(); if (done) break; result decoder.decode(value, { stream: true }); document.getElementById(outputText).innerText result; } }这段逻辑实现了关键词要的“打字机效果”每拿到一片增量文本就立刻渲染到页面上长文本翻译不再是无反馈的等待。4.3 阶段三打磨 UI 细节约 3 分钟我用一句话继续优化界面“仿照在线文档编辑器的布局头部放工具名主体是左右两栏对照底部放状态提示整体用简约风格。”AI 给出了完整 CSS包括响应式布局、护眼背景色、按钮悬浮效果等。期间遇到一个问题页面在宽屏下两侧太宽窄屏下挤在一起。我告诉 AI“加入栅格布局宽度小于 800px 时上下堆叠”它立刻补上了媒体查询。整个过程我没有打开 CSS 属性表查过一个值。这就是 AI 编程对非前端开发者的价值——把设计稿转成代码的过程被完全压缩掉了。4.4 阶段四联调、测试、收尾约 2 分钟最后是跑通全流程设置环境变量DEEPSEEK_API_KEY启动后端服务浏览器打开页面粘贴测试文本点击翻译。顺手还加了两个实用功能清空按钮和示例文本按钮用于快速验证。全部完成后我做了 5 组翻译质量测试——英译中技术文档、中译英邮件、带格式的 Markdown 文本、纯文本长文、代码注释翻译质量都过关特别是术语一致性表现优于我预期。时间汇总阶段用时核心动作需求描述2 分钟编写首个结构化提示词核心逻辑3 分钟迭代翻译接口、流式输出、分片策略UI 优化3 分钟布局、配色、响应式调整联调收尾2 分钟环境变量配置、5 组质量测试5. 核心难点拆解与避坑指南10 分钟做成一个翻译软件听起来轻松实际上有几个隐蔽的坑。不懂原理的话随便踩一个就足够让你卡半小时。5.1 API Key 保护千万不要硬编码在前端很多第一次玩 API 的人图省事直接把 key 写进前端 JavaScript。这个操作的危险程度相当于把银行卡密码贴在门上——任何打开网页源码的人都能看到你的 key并盗刷你的额度。正确做法是交给后端使用环境变量。Cursor 生成的代码里默认就是os.environ.get(DEEPSEEK_API_KEY)不会写死。运行前在命令行设置好Windows 用set DEEPSEEK_API_KEY你的keymacOS 和 Linux 用export DEEPSEEK_API_KEY你的key。如果你不希望每次开终端都重新设置可以写一个.env文件并加一行读取代码AI 编程助手可以直接帮你生成读取.env的模块。5.2 长文本分片策略不能一封到底大模型 API 对单次请求的 token 数量有上限一次翻译 8000 字的长文一定会报错。我的分片策略是按字符数切块每块控制在 1500 字以内逐块请求翻译最后合并输出。但简单按字符硬切有个副作用——可能从段落中间切断导致译文上下文不连贯。我让 AI 加了一个“智能断点”优先在段落结尾、句号、换行符附近切分。实测下来效果立竿见影即使每片独立翻译合并后的文章也基本没有断裂感。不要轻易用“循环遍历分片相互独立”的方案有些大模型在翻译带 Markdown 格式的长文档时前一板块结尾和后一板块开头的格式会不统一。建议让 AI 在提示词里写明“保持原有 Markdown 格式不要增加多余标题”。这是我在第一批测试时踩到的坑改了一行提示词后问题彻底消失。5.3 SSE 流式解析小心半个字符流式输出的数据是分块到达的后端在转发时如果处理不当可能出现“半个字符”问题——一个 UTF-8 编码的中文字符被截在两次网络包之间解析时直接乱码。AI 生成的代码中我特意检查了这块逻辑后端用TextDecoder(utf-8, { fatal: false })前端用decoder.decode(value, { stream: true })保留未完成的字节确保不会出现半个字符的拼接错误。这个细节新手几乎不会注意到但表现很突出——你会看到译文中有随机出现的一个“”字。如果出现这个现象优先检查文本解码逻辑。5.4 翻译质量不稳先调 temperature再调提示词如果译文风格不稳定比如同样的术语有时候翻成“接口”有时候翻成“端口”第一反应不要改代码而是调节 temperature 参数。翻译场景建议保持在 0.1 到 0.3 之间不要超过 0.5。其次在 system prompt 里加上术语约束比如“将 API 统一翻译为‘接口’不要使用音译”。我做了一组对照测试同一句话在 temperature0.2 和 temperature1.0 下输出明显不同。前者稳定但略显机械后者灵活但有概率漏词。翻译工具追求忠实低 temperature 是正确选择。9. 常见问题速查表与现场实录实战过程中我记录了 6 个高频问题整理成表格方便你对照排查症状可能原因解决办法请求返回 401API Key 错误或未设置环境变量检查终端环境变量是否生效用echo $DEEPSEEK_API_KEY验证页面显示“跨域错误”前端直连 API未走后端代理确保前端请求指向http://localhost:8000/api/translate译文显示乱码未用TextDecoder处理 UTF-8检查前后端流式解码逻辑是否保留半字节长文档翻译中断单次请求超长或超时启用自动分片策略提示词注明分段规则翻译结果换来换去temperature 设置过高调整为 0.2 或更低局域网内无法访问后端绑定在 127.0.0.1修改监听地址为 0.0.0.0第 6 个问题在测试时真实发生过我手机上想试用这个工具但怎么都连不上笔记本上的服务。后来才发现http.server默认只监听127.0.0.1外部设备无法访问。改成0.0.0.0后解决同时要注意绑定后服务暴露在局域网内不要在不信任的网络环境开启。6. AI 编程的本质思考它到底是“工具”还是“队友”最后聊点体会。这次 10 分钟项目做完后我对热词“AI 编程”有了更具体的理解。过去很多人担心“AI 编程会取代程序员”但我实际用下来感觉更像给每个程序员配了一个反应快、知识面广但必须由你拿主意的实习生。你需要做的不是一句命令甩过去然后干等而是像带新人一样说清楚上下文、边界条件、预期效果。你的判断力决定产出质量——比如我坚持让它在后端代理 API 而不是前端直连这个决定 AI 不会替你做我要求低 temperature 保证翻译稳定这个参数选择 AI 也不会主动优化。AI 提升的是“码代码”的速度而“定方案、做取舍”这件事责任永远在开发者身上。6.1 关于“提示词”的一点真心话网上有很多“万能提示词模板”照着抄就行。我的真实体验是模板只有参考价值真正好用的话都是结合项目现状写出来的。最有效的提示词往往包含当前报错的信息、你的判断、你试过哪些方法。比如下面这个修改请求当前 /api/translate 返回的 JSON 中偶尔会出现 content 字段为 null 的情况 我怀疑是模型返回内容被截断。请在代码里增加空值兜底逻辑 并在截断时打印日志提示我检查分片长度。这样的提示词比“优化一下翻译接口”有效十倍。因为它给了 AI 可用的上下文现状、猜测、期望的行为。写提示词翻译成一句话就是想办法把“你知道但 AI 不知道的信息”尽可能说清楚。6.2 免费工具和收费工具体验差异试用了一圈之后补充一个关于“免费的 AI 编程工具”的观察。免费方案比如 Copilot 的免费层、Trae 的免费额度应对简单任务足够但遇到多文件项目、复杂重构时额度消耗快、响应质量也打折扣。我的建议是日常小需求用免费版没问题正式项目值当投入——省下的时间远超订阅费。工具越贵越要让它干活别让它吃灰。6.3 项目后续可以怎么扩展这个翻译软件的改进空间还很大我列出几个我能想到的方向也给你们留个思考空间一是增加术语表上传功能让翻译结果强制遵循特定术语适合专业领域二是支持批量文件翻译拖拽文件夹进来递归处理三是加入语言自动检测不用手动指定源语言和目标语言四是打包成桌面应用通过 Electron 套一层壳做到双击即用无需手动启动后端服务。我现在最推荐先做第四项因为每次使用先敲命令行很影响体验。AI 编程时代产品迭代的速度被大幅加快想到什么就去做做完发现效果不差这种正反馈会推着你不断往下走。最后分享一个我个人真实的体会10 分钟做一个翻译软件看起来像是秀效率实际上这 10 分钟背后是我对“需求拆解、接口对接、参数调优、异常处理”这些基础功底的积累。AI 编程并没有让这些能力变得不重要相反正因为 AI 能快速执行我的判断力才更需要跟得上它的速度。如果你还没尝试过 AI 编程别犹豫找个周末选个小工具试试先跑起来再跑好你会打开一扇新的门。