专栏名称: 宝玉xp
前微软Asp.Net最有价值专家 互联网科技博主 我是宝玉。
目录
相关文章推荐
宝玉xp  ·  转发微博-20241115095418 ·  2 天前  
宝玉xp  ·  //@i陆三金:Anthropic ... ·  1 周前  
51好读  ›  专栏  ›  宝玉xp

回复@Orenoid:会的,但是不可控,Cursor会索引代码文-20241117012020

宝玉xp  · 微博  · AI  · 2024-11-17 01:20

正文

2024-11-17 01:20

回复@Orenoid:会的,但是不可控,Cursor会索引代码文件和文档的,所以即使你没主动添加上下文,一些项目代码它可能会引用//@Orenoid:cursor chat/composer 在没有主动 @ 文件或使用 codebase 搜索的情况下,除了当前文件还会默认读取其他文件吗?
问:体验了一下 AI 编程,我发现这个编程能力受限于上下文的限制,对于大型项目的构建能力偏弱,不知道有没有什么好的方法能够解决这个问题呢?

答:编程能力确实受限于上下文的限制,但是使用 Cursor 这样的开发工具,有一些技巧可以让你在大型项目中,也能大幅提升效率。

核心是两点:

1. 将复杂任务拆分成小任务,每次只实现一个小任务

2. 每次交互选取最相关的上下文,让它可以照葫芦画瓢

既然我们知道大语言模型的上下文窗口长度是有限的,那么就需要最大化的利用好上下文。最简单有效的就是每次任务小一点,输入的代码和提示词少一点,这样就可以让模型在上下文窗口限制内很好的完成任务。

比如说我要让 Cursor 帮我实现一个爬虫,抓取某个网站的数据,要抓一级页面、二级页面、三级页面、四级页面。每一级页面还有很多细节。

如果我一次性要求 AI 去实现,那可能无法实现,或者完成的不好。但是我可以拆成若干小任务。

所以我第一步会要求 Cursor 帮我实现一个最基本的爬虫功能,能抓取网页、能解析网页内容,能保存内容到静态文件,这个任务 Cursor 能完成的很好。

第二步我要求 Cursor 帮我实现抓取首页,把页面的 HTML 结构发给它,让它能解析首页的内容成结构化的数据,并且保存到一个 sqlite 数据库。这个任务 Cursor 能完成代码,执行时可能会有点小问题,但是稍微修改就能正常运行。并且对代码细节进行半手动半AI辅助的完善。

第三步继续要求 Cursor 实现一个记录抓取位置的功能,让它可以中断后从上一次抓取位置继续。然后再完善优化代码。

第四步让它对去抓取二级页面,提供二级页面的结构给它,并且把之前优化好的抓取解析代码添加到上下文,让它去抓取二级页面。由于提供了优化好的代码参考,新的代码也会参考优化好的代码。

后面的步骤都是类似的,就是把之前写好的优化好的代码作为上下文,加上新的需求,让它去实现。

这样一步步下来,一个复杂的模块就完成了,而使用过程中也没有超出上下文长度。

所以不用担心上下文窗口长度的限制,也不用担心你的项目太大它不理解,核心是要把复杂任务拆成简单的任务,要一点点迭代,先优化好前面的代码,然后生成新的代码的时候参照前面优化好的代码。

同步发布于博客:网页链接

补充:
项目文档很重要,Cursor 在生成代码时可以把项目文档作为上下文。