• 参考资料:

  • 写好一个项目需要:方向性(多方向技术选型)、检验能力、快速构建能力。而大模型能快速给出多种技术方向(但是不稳定)以及根据选择好的技术路径进行快速构建;人工进行监督就能筛选出大模型缺失的不稳定因素并对大模型进行反馈并加以路线纠正

1.git管理代码版本

  • 改了、达到了基本效果就可以保存(也就是实现了基本代码逻辑)。一旦大模型给出新的代码实现逻辑,或者自己人工修改代码实现逻辑,每修改一次代码,实现逻辑就保存一次代码版本。
  • commit消息遵循以下示例:

    test:本次代码实现思路是...

2.使用md文件避免大模型幻觉

  • 为什么使用md文件辅助大模型编程:

    • 当使用Cursor等AI编程工具进行长期开发时,上下文长度会过长、对话历史会线性堆积,就像在海量搜索结果中挖掘信息。这会导致关键设计决策淹没在与对话窗口的大量交互中。这就导致当你在后续需要在交互窗口中找到你需要的关键信息的时候,你会淹没在大量探索细节的对话窗口中
    • 大模型有可能会随意变更代码实现逻辑
    • 大模型上下文在多次对话可能会忘记之前的对话内容,但是使用md文件保存为文本,大模型可以在每次对话中都读取文件内容,从而保持对目标的专注
  • 具体的使用方法:

    • 在cursor_rule中说明"我需要你使用md文件来保存代码实现逻辑,readme.md专注总体架构,today.md专注今天要实现的功能"
    • 在架构师模式下先让AI写一个readme.md总体框架文件,写好大致的项目设计、技术选型、代码结构等(可选,自己随时调整),然后逐个功能去实现
    • 由于需要专注修改某些具体代码的实现逻辑,我们每天都会有不少繁杂的细节性的功能,所以我们会创建一个today.md文件用来记录今天要实现的预期效果或功能。然后在具体实现时,会先修改today.md文件,让ai根据文件进行代码实现
    • 在如此这般使用多个md对任务的细节拆解下,你会发现大模型只会修改你的today.md代码,而不会影响大框架readme.md的实现思路。这有助于我们发现大模型由于幻觉产生了错误之后,很容易基于这种模块化思路去快速针对today.md查找错误(这也算是某种模块化的实现思路。关注黑盒的输入和输出即可,因为大模型只会根据规则和today.md修改这个黑盒,不会修改黑盒外部的代码)
    • 每次实现了基本代码逻辑,让大模型自己补充好相应的md文件然后你去校验,它写的不完善你就手动修改

3.cursor_rule使用经验

  • cursor rules是用来干嘛的:它用来设定边界、遵循规范、调教它的行为模式。当然这里存在两种cursor rules:前者用来设定语言规范;.cursorrules则用来进行项目级别的设定,对具体项目提更加细化的规则
  • "如果我没有说,不要轻易更改功能性代码":

    • 这个规则的目的是为了避免大模型在不明确的情况下随意修改代码实现逻辑,从而导致代码实现逻辑混乱

4.模式使用经验

  • 不要过早使用@code模式,这个模式的prompt会导致大模型活跃性的调用各种工具,从而导致大模型因为基于优先调用的工具返回的信息形成片面地背景认知,很容易让大模型的后续输出陷入死胡同或错误

    • 比如修改代码,优先使用@ask或者@Architect,这两者都不会轻易修改代码,而是根据你的输入优先分析信息,不会偏安一隅陷入信息茧房。
    • 等到你觉得分析的差不多了(当然要结合你自己的编程经验,大模型还没办法解决复杂错误所以离不开丰富经验的程序员),你再让它核对你和大模型的异同。比如:你懂我的需求吗?说说你的理解,稍后我会让你写入markdown文件中
      image.png
    • 接着核对没什么问题之后让它输出到markdown文件中;接着务必再检验一次markdown文件,核对你和大模型的异同。
      image.png
    • 最后才是手动切换到@code模式根据markdown进行代码修改

5.@web的使用

  • cursor里面可以使用@web像爬虫一样获取某个链接的内容。

    • 具体可用来指导初学者快速对知识进行最小可行性demo生成,比如@web https://www.runoob.com/html/html5-intro.html就可以让cursor对这个html5菜鸟教程生成遵循这个网页教程中的html5规范,生成一个最小可行性demo供初学者进行学习

6.other使用经验

  • 新加功能的时候,如果连续对话很多次都没有实现想要的效果,大模型又给你改了老功能;有时候生成的代码缩进会一直乱。那你就进行版本回退,重新开一个chat或composer。换个思路,描述好需求,重新实现
  • 针对细节处代码修改或新增,可以直接使用行注释去指导注释后代码的实现:

    # 读取xxx文件,转换为字典

7.New stuff.

  • 我其实还注意到一些新的东西,比如说cursor,最近推出了一个针对大模型代码进行自动化测试的东西。这玩意就类似于替代自动化人工测试,测试代码能否执行。那换句话来说,其实跟大模型对话的这个窗口必然会产生多轮纠错对话文本;那未来将md文本如何玩出花来必定是很重要的
  • 3.7需要更好更清晰的说明,如果你能提供这些说明,它比3.5更好。否则它会开始假设很多事情并产生许多不必要的功能
  • 另外,无论是大模型还是cursor,程序猿的个人能力都要过硬。大模型会返回多个方向的生成内容,而只有人才能进行判断、给出最优方向的选择

曼巴
1 声望0 粉丝