前言
最近两个月,基于AI的开发IDE cursor可谓相当的火.博主也使用自己的邮箱注册了CursorIDE的试用账号,也使用了一段时间,使用起来确实是非常的方便,功能也很强大,可以在很大程度上协助开发者进行快速开发.那么问题来了注册之后,只有14天的试用时间,使用时间过后,IDE的很多高级功能就都无法使用了.如果想继续使用,需要开通会员,20美刀一个月,对于我这种普通家庭出身的,确实开不起.而且,博主作为上班族,平时写代码时间并不固定,有时候代码写得比较多.但是有时候十天半个月都不一定会写一行代码,而且博主还需要使用Android Studio开发Android程序.这种情况下,去开20美刀一个月的会员,并不值当.因此,我决定寻找其他免费的替代方案,如VS Code结合各种插件,虽然功能上可能不如CursorIDE全面,但至少能满足我大部分的开发需求,且无需支付额外费用。
这次我找到的是Continue 插件,它是一款开源的代码补全工具,旨在提供类似于CursorIDE的AI辅助编程体验。虽然功能上可能略有差距,但对于不想支付高额会员费的用户来说,是一个不错的替代选择。
其次是API接口平台,这次发现了可以使用硅基流动这个平台,这个平台集合了多种AI模型,包括但不限于QWEN、deepseek-ai等,为用户提供丰富的自然语言处理和代码生成服务。注册了之后,平台会赠送2000万Tokens(14元平台配额).有了Tokens赠送,大家完全可以先尝试体验这个插件的功能.大家可以通过我的邀请链接进行注册: https://cloud.siliconflow.cn/i/eT11FlW4
插件安装
Continue插件现在已经在各种IDE的插件市场上例如VScode, IntelliJ IDEA以及Android Studio都能找到.安装之后,会在IDE的界面上有对应按钮,例如VSCode上,可以在左侧栏看到Continue的图标,点击即可打开插件:
如上图琐事,点击 1 即可打开Continue插件的界面,点击 2 即可打开配置文件config.json. 下面的是我现在使用硅基流动平台对应的配置,如果大家也是使用硅基流动平台只需要将API Key填入到”apiKey”字段中即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
{ "models": [ { "title": "deepseek-ai/DeepSeek-V2.5", "model": "deepseek-ai/DeepSeek-V2.5", "contextLength": 30000, "provider": "openai", "apiBase": "https://api.siliconflow.cn/v1", "apiKey": "sk-xxxxxxx", "requestOptions": { "extraBodyProperties": { "transforms": [] } } }, { "title": "Qwen/Qwen2.5-72B-Instruct-128K", "model": "Qwen/Qwen2.5-72B-Instruct-128K", "contextLength": 30000, "provider": "openai", "apiBase": "https://api.siliconflow.cn/v1", "apiKey": "sk-xxxxxxx", "requestOptions": { "extraBodyProperties": { "transforms": [] } } } ], "customCommands": [ { "name": "test", "prompt": "{{{ input }}}\n\nWrite a comprehensive set of unit tests for the selected code. It should setup, run tests that check for correctness including important edge cases, and teardown. Ensure that the tests are complete and sophisticated. Give the tests just as chat output, don't edit any file.", "description": "Write unit tests for highlighted code" }, { "name": "explain", "prompt": "{{{ input }}}\n\n详细解释所选代码。详细说明其功能、用途和工作原理。使用示例来说明您的解释。", "description": "解释代码" }, { "name": "fix", "prompt": "{{{ input }}}\n\n分析并修复代码中的错误。提供详细的解释和解决方案,包括但不限于语法错误、逻辑错误或性能问题。确保您的解决方案是正确的,并且能够解决所有已知的问题。", "description": "修复代码" }, { "name": "check", "prompt": "{{{ input }}}\n\n请阅读突出显示的代码并检查是否有任何错误。您应该查找以下内容并保持高度警惕:\n- 语法错误\n- 逻辑错误\n- 安全漏洞\n- 性能问题\n- 任何其他看似错误的内容\n\n一旦您发现错误,请尽可能清楚地解释,但不要使用多余的词语。例如,不要说“我认为第 5 行有一个语法错误”,而应该说“第 5 行有语法错误”。针对发现的每个错误,给出一个要点作为答案。", "description": "检查代码是否存在错误" } ], "tabAutocompleteOptions": { "template": "Please teach me what I should write in the `hole` tag, but without any further explanation and code backticks, i.e., as if you are directly outputting to a code editor. It can be codes or comments or strings. Don't provide existing & repetitive codes. If the provided prefix and suffix contain incomplete code and statement, your response should be able to be directly concatenated to the provided prefix and suffix. Also note that I may tell you what I'd like to write inside comments. \n{{{prefix}}}<hole></hole>{{{suffix}}}\n\nPlease be aware of the environment the hole is placed, e.g., inside strings or comments or code blocks, and please don't wrap your response in ```. You should always provide non-empty output.\n", "maxPromptTokens": 2048, "prefixPercentage": 0.85, "maxSuffixPercentage": 0.15, "debounceDelay": 500, "multilineCompletions": "always", "slidingWindowPrefixPercentage": 0.75, "slidingWindowSize": 350, "maxSnippetPercentage": 0.6, "recentlyEditedSimilarityThreshold": 0.3, "useCache": true, "onlyMyCode": false, "useOtherFiles": false, "useRecentlyEdited": true, "recentLinePrefixMatchMinLength": 7 }, "tabAutocompleteModel": [ { "title": "deepseek-ai/DeepSeek-Coder-V2-Instruct", "provider": "openai", "model": "deepseek-ai/DeepSeek-Coder-V2-Instruct", "contextLength": 30000, "apiBase": "https://api.siliconflow.cn/v1", "apiKey": "sk-xxxxxxx", "useLegacyCompletionsEndpoint": false }, { "title": "deepseek-ai/DeepSeek-V2.5", "provider": "openai", "model": "deepseek-ai/DeepSeek-V2.5", "contextLength": 30000, "apiBase": "https://api.siliconflow.cn/v1", "apiKey": "sk-xxxxxxx", "useLegacyCompletionsEndpoint": false } ], "contextProviders": [ { "name": "code", "params": { "nRetrieve": 25, "nFinal": 5, "useReranking": true }, "useLegacyCompletionsEndpoint": false }, { "name": "docs", "params": {} }, { "name": "diff", "params": { "nRetrieve": 25, "nFinal": 5, "useReranking": true }, "useLegacyCompletionsEndpoint": false }, { "name": "terminal", "params": {} }, { "name": "problems", "params": {} }, { "name": "folder", "params": {} }, { "name": "codebase", "params": { "nRetrieve": 25, "nFinal": 5, "useReranking": true }, "useLegacyCompletionsEndpoint": false } ], "slashCommands": [ { "name": "edit", "description": "Edit selected code" }, { "name": "comment", "description": "Write comments for the selected code" }, { "name": "share", "description": "Export the current chat session to markdown" }, { "name": "cmd", "description": "Generate a shell command" }, { "name": "commit", "description": "Generate a git commit message" } ], "allowAnonymousTelemetry": false, "embeddingsProvider": { "provider": "openai", "model": "BAAI/bge-m3", "apiBase": "https://api.siliconflow.cn/v1", "apiKey": "sk-xxxxxxx" }, "rerank": { "title": "BAAI/bge-reranker-v2-m3", "model": "BAAI/bge-reranker-v2-m3", "provider": "openai", "apiBase": "https://api.siliconflow.cn/v1", "apiKey": "sk-xxxxxxx" } } |
apiKey可以在硅基流动平台,个人页面-》账号管理-》API密钥 界面进行创建,可以只创建一个,创建完之后将API密钥复制出来,然后将上面的sk-xxxxxxxx替换为您的API密钥即可.
在上面的配置中,我选用:
- deepseek-ai/DeepSeek-V2.5 模型作为聊天模型,如果大家有需要,也可以到硅基流动平台上查看,添加自己喜欢的聊天模型即可.目前我就添加了两个
- deepseek-ai/DeepSeek-Coder-V2-Instruct 模型作为代码不全模型,这个模型的选取大家需要注意,需要选择那些支持FIM的模型.在硅基流动平台上,可以在这个链接进行查看:https://docs.siliconflow.cn/features/fim, 目前就三个,我添加了其中两个,大家有需要也可以将qwen-coder自行加进来
- BAAI/bge-m3 模型作为embedding模型,有了embedding模型,就可以想cursor那样,让代码模型检索我们项目中的代码,并给出意见.
continue插件体验
聊天
在continue的首页,我们可以通过下拉框选择我们需要的模型,我一般使用DeepSeek-V2.5比较多,目前使用这个模型整体还行,至于其他模型,大家可以多配置几个,换着使用来体验.
基本的聊天
基础的聊天,只需要直接在对话框中,输入你需要询问的问题即可,例如可以询问如何创建一个vue项目,他就会给出基础的回答.如果有一些是命令行指令,你还可以将鼠标放在命令行上,他会提示你直接运行.
基于向量检索聊天
因为我们已经在配置文件中配置了embedding模型,所以我们的聊天是可以基于本地项目进行聊天,只需要在聊天中输入 @ 就会弹出提示框,我们可以基于整个项目代码,也可以基于单个文件进行聊天.
选中代码片段聊天
在代码文件中选中你需要添加到聊天框中的代码,然后通过Control + L(macOS是cmd+L)的方法,将代码添加到聊天框中.添加之后,还可以通过输入“/”启动预先定义好的指令,如果是使用了我的配置,我在里面添加了是三个常用配置:explain,fix和check.我们可以直接选择其中的指令,然后回车即可.
AI代码提醒
AI代码提醒触发其实也是很简单的,可以在vscode的右下角找到continue标记,然后点击打开自动补全选项
- 1: 点击之后打开自动补全选项
- 2: 查看是否启用了代码自动补全功能,可以通过点击进行切换
- 3: 在这里选择你需要使用的代码自动补全模型
到这里,AI代码提醒就设置完成了.接下来就可以到代码中进行回车测试
其他IDE
前文说过,continue还支持Android Studio和JetBrains等IDE.只需要到IDE对应的插件中心搜索continue并安装即可.continue的配置文件是全局共用的,即你只需要配置一次,就可以直接在Android Studio和JetBrains上使用,非常非常方便.
只是需要注意一点,启动Android Studio这些IDE如果有使用到Java环境的话,需要Java支持webview功能,例如我现在的Android Studio所使用的Java版本是这个,是可以支持continue插件的使用的.如果想切换Java版本,可以通过双击 shift 按键,然后输出“choose boot java runtime for ide”,然后选择对应选项即可
后记
目前,我暂时使用到的就是这些功能,当然这个插件的功能还有更多.只是目前我暂时还没有使用到,而且使用continue插件来搭建AI代码提醒开发环境,还有一个好处,就是可以使用自部署的模型.这对于企业来说,可以保证自己的代码不泄漏.
使用continue插件加硅基流动平台一周了,目前消费才1.2元左右.这相比cursor 20美元一个月的费用,这的是及其优惠了.
再次,如果大家觉得我这个推荐不错,请使用我的推荐码进行注册哦,使用我的推荐码不会影响你注册后获得的免费配额,注册可以直接通过这个链接进行,注册只需要使用手机通过验证码验证即可: https://cloud.siliconflow.cn/i/eT11FlW4