现在的 Copilot 可以对接 claude、gemini、gpt 这些大模型
我想知道的是,这个智能提示和AI自动补全是怎么实现的?
比如我的一个工程有 100 个 .py 文件,总不能是一次性把这 100 个 .py 都作为提示词传给 claude、gemini、gpt 吧?这样 token 不得爆炸了?
如果只把当前编辑的 .py 上传给 claude、gemini、gpt 做 AI自动补全,那么 claude、gemini、gpt 怎么知道复杂的 from 和 import 的上下文关系呢?
vscode + Copilot 是怎么平衡上下文信息和避免 token 爆炸的?
当然,这个问题,不局限于 vscode + Copilot ,对于 Cline、cursor 这些工具也是一样的,他们是怎么处理这个问题的?
刚刚抓包看了一下 Cline 。
首先它有一个很长的system提示词。
然后它会把当前工作空间下面的 文件列表 / 目录结构 / 当前正在编辑的文件 等等作为上下文提交(这里不包括文件的内容)。
里面有一个很重要的点是,它在提示词里面定义了一个类似 function call 的说明,比如当AI需要读取某个文件的时候,就会输出对应的函数,然后插件会重新提交完整的文件内容。
自动补全的提示词暂时没看,猜测也是AI根据上下文(目录结构),然后调用function call去查询对应的文件内容实现的。
可以看看系统提示词,上面写得很详细,应该有你要的答案。