assert(编程!=抽烟烫头喝着酒) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
taylorr
V2EX    程序员

assert(编程!=抽烟烫头喝着酒)

  •  
  •   taylorr 4 小时 39 分钟前 153 次点击

    国庆放假前,一直在折腾全球最大同性交友网站刚推出的spec-kit。这个项目有多火爆呢?到今天,这个工具推出短短 3 周,已经获得了 33.1K 个 Star ,而且迭代极快,几乎每 2-3 天就会有个更新。

    AI 对编程的影响很大,且一般而言,Junior 一点的软件攻城狮受到的冲击更大。最近一段时间,所谓的 Vibe Coding 更是成为一个很时髦的名词:我就经常看到各个社交媒体上出现类似“全程 0 代码创建一个 app”的帖子,而且在 VC 的冲击下,大家似乎都有了一个“不好”的想法:

    编程已经不是一个技术活了。不需要专业的培训CS 的毕业生去死吧!而只要给出命令。

    我不同意这个说法。

    我同意的是,编程不仅仅是一个技术活。从最广义的角度来说,“标准”、“规范”的制定,是最高层次的“编程”。比如说安全应用中绝对不能少的加密/解密来说,它需要高深的数学知识、物理知识,还有社会学等等诸多方面的了解。这里的很多东西已经超出了纯技术的范畴,而是进入了哲学层面。

    这上面的这些东西,哪个不需要专业的培训?我们简单地认为编程不用培训是将“编程”这个动作太过简单化了。

    单从这个角度出发,我就很容易理解为什么过去 50 年的技术发展大部分会出现在那些发达国家的原因。而我最近在 AI 编程工具上的一段亲身经历,也让我对“规范”的重要性有了更深的体会。

    =====

    在玩spec-kit之前,我用了一段时间的 Kiro ,很喜欢那种编程的过程:我有很多想法可以通过 AI 快速地进行原型开发有些能走到底,有些走不到底。然后还接受了朋友的邀请去他公司进行了一次分享:《 while(编程==抽烟喝酒烫着头)》。

    当时,我比较推崇被 Kiro 推到一个很高的高度的 VC 。但是,Kiro 的“收费”机制实在让我捉鸡,不得不在 Discord 频道里和全球开发者一起吐槽。这不,直到 10 月,Kiro 终于大幅修订了它的收费机制,让我这个免费用户也能有 500 请求/月的额度了这下,我可就更不想交钱订阅了。

    这次我测试spec-kit有了一些不一样的想法,而这是由spec-kit这个工具带来的。

    spec-kit的开发过程一共 8 步,其中第一步init在 AI Agent 之外运行,而后续的clarifyanalyze可选。

    • constitution:顾名思义,这是这个项目的“宪法”。这里提到的要求,在任何时候都不能违背。为了帮助“我们”编写这个宪法,spec-kit提供了一个很全面的模版。根据我的经验,我们对这个模版只要做很少的更动,而且 TDD 是“宪法”中没得商量的一个部分。而其他涉及数据隐私、开发流程等重要方面。
    • specify:这是一个重要的流程,同样也有模版。需要特别注意的是,这个文件不涉及任何技术细节(也就是如何实现的问题),只讨论要什么、为什么要的问题。最终的文档就是一个用户场景描述:

    Input: User description: "it scans pre-given directories for documents (md, pptx, pdf and mostly in Chinese), and use necessary lib to parse the contents to generate a vectorized local db. Then, it can accept queires from user, use AI agent to generate relevant responses."

    User Scenarios & Testing (mandatory)

    User Story 1 - Document Indexing (Priority: P1)

    A user wants to build a searchable knowledge base from their existing document collection. They point the CLI tool to directories containing their documents (markdown files, PowerPoint presentations, and PDFs primarily in Chinese), and the system processes these documents to create a local vector database for fast retrieval. ...

    可见,我只是很简单地说了我的要求:“扫描文档、向量化、保存、查询、AI 返回相关的回答”。而spec-kit进行了非常详细的用户使用场景分解:文档索引、交互查询、数据库管理。

    • plan:通过这个命令,我们进入真正的技术层面:用什么来实现我们想要的东西呢?根据之前specify得到的需求和用户的指定,spec-kit可以给出非常详尽的技术框架:开发语言( Python 3.11+)、主要的依赖包( BGE-large-zh 用来嵌入,FAISS 用于向量存储,Ollama 是本地的大语言模型……) ,以及一些其他开发要求。
    • tasks:这是真正进行开发前的最后一个重要命令。spec-kit会根据到目前为止所有的文档,生成一个完整的开发任务清单。针对我的小程序( RAG CLI ),它生成了一个 6 阶段、共 76 个子任务的任务清单,涵盖了初始编程设置、编程基础设施设置、用户需求(共 3 个)和最后打磨。
    • implement:在 Kiro 的环境下,这个命令可以基本“全自动”地完成那些直截了当的任务,而且不需要人工干预,只有在明确需要用户参与、交互的时候,Kiro 才会停下来。对于那些和用户需求直接关联的任务,它往往可以一路跑下去。

    可以看到,spec-kit 的整个流程,从“宪法”到“计划”再到“任务清单”,完全不是 VC 。它强调的是严谨的需求定义、场景分析、技术规划和任务分解。这正是专业软件工程的核心价值所在,也是目前 AI 无法完全替代人类的地方。

    目前,借助spec-kit,我已经做出了一个小小的原型:它索引了我历年写作的博客( md 格式)和演示( PPTX )以及少量 PDF 文件,共 300 余篇,形成了一个包含 1024 个维度的向量数据库。可以接受用自然语言输入的问题,如:任老师对学习有怎样的见解?并在一个合理的时间内( 25s )给出回复:

    我对目前的进展表示满意,并得出结论:assert(编程!=抽烟烫头喝着酒)。AI 工具的强大,不是为了让编程变得廉价和随意,而是将开发者从繁琐的实现中解放出来,让我们能更专注于定义问题和规划蓝图这些更高层次的创造性工作。这非但不是对专业性的削弱,反而是提出了更高的要求。

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     938 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 18:50 PVG 02:50 LAX 11:50 JFK 14:50
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86