用一个面试故事开始年初去环普一个电力公司面试面试官一顿输出。面试官怎么看待VibeCoding的我说AI辅助是一个非常好的工具但要说替代我保留意见面试官他说Cursor多好他们团队几个人都在用页面一键就生成了。我问使用AI编程遇到了什么问题你们怎么解决的对现有的团队协作和管理模式有啥冲击没没音了可能是我问多了。后来他说自己是某为待了16年的员工我也就理解了。一、媒体带来的焦虑我自己是深深的被这些言论冲击这些东西禁不起推敲说话不严谨。只有躬身入局自己用AI工具完成一个项目一切焦虑烟消云散了。1. 语不惊人死不休的营销语录软件时代结束所有中台项目暂停软件即时生成日抛软件工程师这个职业消失。网络大量的文科生写出了自己的APP 一键生成了一个网站 等等2. 全面唱衰VibeCoding用VibeCoding会产生电子垃圾说最苦逼的是面对电子屎山代码的程序员。二、从0到1体会 Cursor编码最近使用Cursor从0到1完成一个项目产品名称Smartshell。就是WEB版本的Xshell和NavigateAI。如果你想体验一下功能访问Smartshell官网 地址smartshell.cc 1. Cursor 刚开始跟傻子一样慢慢就好起来了刚开始并不清楚需要设置规则直接开始编程因为我并不清楚Cursor能力咋样也不可能学完所有才去使用一边用一边学。确实非常提效效率是手写代码10倍。 如果到这里我也是传播焦虑的。任何结论必须是有前提的否则就是扯淡。提效10倍的前提条件需求清晰情况下就剩下堆砌代码了。 对于一些产品一句话需求就是上帝来了也得摇头别说一个工具了。架构只能用死板的不会灵活变通的。比如你给他说用DDD规范代码设计他会严格按照这个完成。如果你让他搞三层没问题很标准。 如果你让他搞六边形架构同样。 如果你让他实现DDD三层六边形的融合不好意思除非你自己验证过并且将边界和适用条件说清楚。技术方案是已经经过验证的并完成原型验证的。研发人员对方案局限和边界有清晰的认知。如果一个方案技术人员都不清楚更别想着Cursor能搞定Cursor默认给你的方案根本只是学校课程设计级别的。比如实现堡垒机Linux黑屏命令识别功能就算资深专家也得补丁摞补丁设计方案最后也有个识别准确度和拦截率。页面交互不复杂可描述且描述简单。2. 技术方案和功能方案关键点必须描述清楚用Smartshell中黑屏实现举例,SmartShell项目介绍和试用系统页面效果黑屏技术实现Promote提示词简化可用技术组件前端使用XtermJS组件后端用Websocket对接前端Xterm的数据流使用Apache SSHD连接 Linux系统中间使用线程进行流的转接线程必须使用线程池管理连接统一管理维护一个定时任务这个定时任务使用服务级别用Quartz实现定时任务1min轮训一次对超过3min么有心跳的连接进行清理。长连接必备心跳前端连接Websocket后需要定时30S这个跟Websocket的超时时间有关系太频繁是负担发送一次心跳消息后端收到心跳消息不进行处理。命令长度限制后端Websocket设置IO缓存大小为1K前端需要设置一次输入后端的命令长度为1000比如直接复制超过1000个字符的命令需要提示。有字节和字符区别写个博客就不较真了网络抖动后端SSH连接 需要在前端Websocket断连后保持3min如果超过则断连 为了应对网络抖动不稳定如果前端Websocket连接断开则需要进行3次重试每次间隔15S超过给页面进行提示。技术细节决定页面交互连接SSH和SFTP连接使用不同的Apache SSHD 的Session对象否则一个Linux如果没有sftp服务连接sftp失败 ssh连接也被迫断连这是sshd组件的问题连接ssh后让用户手动连接SFTP。认证和鉴权连接Websocket耗费资源如果用户对此用户没有权限控制则耗费资源。所以在连接Websocket连接前启动一个startsession http请求进行会话的创建然后返回token。连接Websocket时直接校验token即可。……这些不是一次性说清楚的但如果不说清楚或者没有做过类似系统你就不会了解各个组件的局限和注意点以及这个方案的不足也就不可能有一键生成。3. 规则需要积累刚开始使用或者后面也会遇到 代码中经常出现log.info中文日志直接在代码中硬编码连个constant 常量都不用的情况。如果马后炮的管理者会说为什么前面不设置完备的规则。因为不可能。学习是循序渐进的犯错的过程也是学习的过程。一个开发再怎么熟悉就算自己写的组件也不可能完全了解记得起需要设置的边界。况且面对一个只会Demo示例的框架和组件更没有办法做到犯错的过程也是学习熟悉的过程。规则需要设置到多么细Cursor才不犯这类规范错误。这需要实践过程才能了解的。三、Cursor是Agent还是工具无论对一个老板经理还是开发。我就问一句话问老板Cursor生成的代码上线出了问题谁负责问责任人Cursor生成的财务系统代码不经过人工检查你敢不敢上线责任最终需要落在人身上。就算自动驾驶汽车公司负责你敢直接撒手不管吗 这还真有这么煞笔。可Cursor不会给你负责他只收token的费用。既然最后还得一个人来负责那么Cursor就是工具。无论看着Cursor像程序员的代理主要的代码是由他来写程序员只是写提示词但他就是工具。是程序员在利用AI进行编码。四、必须积极全面拥抱已经到来的AI时代对老板建议如果你自己不想自己去写提示词即不要在纠结AI能否替代程序员直接去招聘程序员去完成并且最好是高级程序员。对管理员建议AI提效是一定的用不着吹牛逼给老板能沉淀出团队使用AI的经验才是最重要的资产。 细节是魔鬼如果说不说AI对组织的影响以及底层编码遇到了什么问题没有沉淀下经验资产再怎么吹牛逼都算扯淡对程序员建议别纠结AI是不是会取代你积极去拥抱。跳出语言的限制别说自己就是一个前端一个后端。AI能将你熟悉的快速实现如果你不熟悉不好意思淘汰的就是你。需要自己底下去好好学习对一下技术进行调研以及上手编码即使你熟悉python也需要培养手指对语法的肌肉记忆。以及一些架构模式和方法论Cursor不会主动使用这些架构模式。跳出角色设定AI可以让你非常容易的做到产品设计UI设计等AI会极大的扩展你的能力边界。五、分享Cursor规则优秀博客再优秀的博客也没法取代你的经验积累只有团队中人员经历过使用Cursor这个痛苦的初试过程才能将这些规则拿来用。Cursor Rules ResponseAwesome Cursor Rules用了Cursor却总写出烂代码试试写个Rules从0到1配置cursor规则Java篇全局Always Apply基于《阿里巴巴 Java 开发手册》扩展的cursor编程约束
使用Cursor从0到1完成工业级软件心得,躬身入局,解决Vibe Coding焦虑
用一个面试故事开始年初去环普一个电力公司面试面试官一顿输出。面试官怎么看待VibeCoding的我说AI辅助是一个非常好的工具但要说替代我保留意见面试官他说Cursor多好他们团队几个人都在用页面一键就生成了。我问使用AI编程遇到了什么问题你们怎么解决的对现有的团队协作和管理模式有啥冲击没没音了可能是我问多了。后来他说自己是某为待了16年的员工我也就理解了。一、媒体带来的焦虑我自己是深深的被这些言论冲击这些东西禁不起推敲说话不严谨。只有躬身入局自己用AI工具完成一个项目一切焦虑烟消云散了。1. 语不惊人死不休的营销语录软件时代结束所有中台项目暂停软件即时生成日抛软件工程师这个职业消失。网络大量的文科生写出了自己的APP 一键生成了一个网站 等等2. 全面唱衰VibeCoding用VibeCoding会产生电子垃圾说最苦逼的是面对电子屎山代码的程序员。二、从0到1体会 Cursor编码最近使用Cursor从0到1完成一个项目产品名称Smartshell。就是WEB版本的Xshell和NavigateAI。如果你想体验一下功能访问Smartshell官网 地址smartshell.cc 1. Cursor 刚开始跟傻子一样慢慢就好起来了刚开始并不清楚需要设置规则直接开始编程因为我并不清楚Cursor能力咋样也不可能学完所有才去使用一边用一边学。确实非常提效效率是手写代码10倍。 如果到这里我也是传播焦虑的。任何结论必须是有前提的否则就是扯淡。提效10倍的前提条件需求清晰情况下就剩下堆砌代码了。 对于一些产品一句话需求就是上帝来了也得摇头别说一个工具了。架构只能用死板的不会灵活变通的。比如你给他说用DDD规范代码设计他会严格按照这个完成。如果你让他搞三层没问题很标准。 如果你让他搞六边形架构同样。 如果你让他实现DDD三层六边形的融合不好意思除非你自己验证过并且将边界和适用条件说清楚。技术方案是已经经过验证的并完成原型验证的。研发人员对方案局限和边界有清晰的认知。如果一个方案技术人员都不清楚更别想着Cursor能搞定Cursor默认给你的方案根本只是学校课程设计级别的。比如实现堡垒机Linux黑屏命令识别功能就算资深专家也得补丁摞补丁设计方案最后也有个识别准确度和拦截率。页面交互不复杂可描述且描述简单。2. 技术方案和功能方案关键点必须描述清楚用Smartshell中黑屏实现举例,SmartShell项目介绍和试用系统页面效果黑屏技术实现Promote提示词简化可用技术组件前端使用XtermJS组件后端用Websocket对接前端Xterm的数据流使用Apache SSHD连接 Linux系统中间使用线程进行流的转接线程必须使用线程池管理连接统一管理维护一个定时任务这个定时任务使用服务级别用Quartz实现定时任务1min轮训一次对超过3min么有心跳的连接进行清理。长连接必备心跳前端连接Websocket后需要定时30S这个跟Websocket的超时时间有关系太频繁是负担发送一次心跳消息后端收到心跳消息不进行处理。命令长度限制后端Websocket设置IO缓存大小为1K前端需要设置一次输入后端的命令长度为1000比如直接复制超过1000个字符的命令需要提示。有字节和字符区别写个博客就不较真了网络抖动后端SSH连接 需要在前端Websocket断连后保持3min如果超过则断连 为了应对网络抖动不稳定如果前端Websocket连接断开则需要进行3次重试每次间隔15S超过给页面进行提示。技术细节决定页面交互连接SSH和SFTP连接使用不同的Apache SSHD 的Session对象否则一个Linux如果没有sftp服务连接sftp失败 ssh连接也被迫断连这是sshd组件的问题连接ssh后让用户手动连接SFTP。认证和鉴权连接Websocket耗费资源如果用户对此用户没有权限控制则耗费资源。所以在连接Websocket连接前启动一个startsession http请求进行会话的创建然后返回token。连接Websocket时直接校验token即可。……这些不是一次性说清楚的但如果不说清楚或者没有做过类似系统你就不会了解各个组件的局限和注意点以及这个方案的不足也就不可能有一键生成。3. 规则需要积累刚开始使用或者后面也会遇到 代码中经常出现log.info中文日志直接在代码中硬编码连个constant 常量都不用的情况。如果马后炮的管理者会说为什么前面不设置完备的规则。因为不可能。学习是循序渐进的犯错的过程也是学习的过程。一个开发再怎么熟悉就算自己写的组件也不可能完全了解记得起需要设置的边界。况且面对一个只会Demo示例的框架和组件更没有办法做到犯错的过程也是学习熟悉的过程。规则需要设置到多么细Cursor才不犯这类规范错误。这需要实践过程才能了解的。三、Cursor是Agent还是工具无论对一个老板经理还是开发。我就问一句话问老板Cursor生成的代码上线出了问题谁负责问责任人Cursor生成的财务系统代码不经过人工检查你敢不敢上线责任最终需要落在人身上。就算自动驾驶汽车公司负责你敢直接撒手不管吗 这还真有这么煞笔。可Cursor不会给你负责他只收token的费用。既然最后还得一个人来负责那么Cursor就是工具。无论看着Cursor像程序员的代理主要的代码是由他来写程序员只是写提示词但他就是工具。是程序员在利用AI进行编码。四、必须积极全面拥抱已经到来的AI时代对老板建议如果你自己不想自己去写提示词即不要在纠结AI能否替代程序员直接去招聘程序员去完成并且最好是高级程序员。对管理员建议AI提效是一定的用不着吹牛逼给老板能沉淀出团队使用AI的经验才是最重要的资产。 细节是魔鬼如果说不说AI对组织的影响以及底层编码遇到了什么问题没有沉淀下经验资产再怎么吹牛逼都算扯淡对程序员建议别纠结AI是不是会取代你积极去拥抱。跳出语言的限制别说自己就是一个前端一个后端。AI能将你熟悉的快速实现如果你不熟悉不好意思淘汰的就是你。需要自己底下去好好学习对一下技术进行调研以及上手编码即使你熟悉python也需要培养手指对语法的肌肉记忆。以及一些架构模式和方法论Cursor不会主动使用这些架构模式。跳出角色设定AI可以让你非常容易的做到产品设计UI设计等AI会极大的扩展你的能力边界。五、分享Cursor规则优秀博客再优秀的博客也没法取代你的经验积累只有团队中人员经历过使用Cursor这个痛苦的初试过程才能将这些规则拿来用。Cursor Rules ResponseAwesome Cursor Rules用了Cursor却总写出烂代码试试写个Rules从0到1配置cursor规则Java篇全局Always Apply基于《阿里巴巴 Java 开发手册》扩展的cursor编程约束