欢迎您来到“名字什么都是浮云”的博客空间!

AI 编程

以下是针对这些AI编程工具的详细分析整理,包含收费情况(基础免费功能与收费功能)、限时情况、产品来源以及局限性:

 
工具名称收费情况限时适用于产品(补充完整)产品来源局限性
CodeBuddy 基础免费/收费高级 不限时 🟢 VS Code · 🟢 VS2026 · 🟡 JetBrains(有限) 腾讯 ① 更像腾讯生态垂直工具,通用性较弱 ② 复杂项目处理能力有限 ③ 智能编程功能相对基础
CodeGeeX 完全免费开源 不限时 🟢 VS Code · 🟢 VS2026 · 🟢 JetBrains全家桶(IDEA/PyCharm/WebStorm等)· 🟢 Eclipse 智谱AI ① 复杂类型推断(TypeScript接口)失误率较高 ② 文档生成准确率约64% ③ 特定复杂场景支持有限
IntelliCode 基础免费/收费高级 不限时 🟢 VS2026 · 🟢 VS Code(部分功能)· 🟡 GitHub Copilot 替代方案 微软 ① 依赖VS生态,其他IDE支持弱 ② 高级功能需订阅Enterprise ③ 复杂业务逻辑推理有限
Baidu Comate 基础免费/收费高级 个人不限时 🟢 VS Code · 🟢 VS2026 · 🟢 JetBrains全家桶 · 🟢 Eclipse 百度 ① 高级功能成本高(299元/月) ② 复杂业务逻辑推理较弱 ③ 私有化部署门槛高
Lingma(灵码) 基础免费/200万token 不限时 🟢 VS Code · 🟢 VS2026 · 🟢 JetBrains全家桶 千问 ① 功能覆盖可能有限 ② 稳定性需验证 ③ 社区支持不足
通义灵码 基础免费/收费高级 不限时 🟢 VS Code · 🟢 VS2026 · 🟢 JetBrains全家桶 · 🟢 Eclipse 阿里 ① 功能覆盖范围有限 ② 缺乏公开文档 ③ 适用场景较窄
Fitten Code 基础免费/收费高级 不限时(目前) 🟢 VS Code · 🟢 VS2026 · 🟢 JetBrains全家桶 非十科技 ① 免费策略可能调整 ② 社区支持较弱 ③ 复杂项目支持有限
MarsCode 基础免费/收费高级 不限时 🟢 VS Code · 🟢 JetBrains全家桶 · ❌ VS2026(不支持) 字节豆包 ① 定制化限制较多 ② 依赖字节生态 ③ 跨平台支持有限
代码小浣熊 基础免费/收费高级 不限时(目前) 🟢 VS Code · 🟢 JetBrains全家桶 · 🟡 VS2026(有限/需验证) 上海禹幻 ① 品牌知名度低 ② 社区支持不足 ③ 通用性较弱
CodeWhisperer 基础免费/收费高级 个人不限时 🟢 VS Code · 🟢 JetBrains全家桶 · 🟢 VS2022 · 🟢 AWS Lambda · 🟢 AWS Cloud9 亚马逊 ① 企业版成本高 ② 依赖AWS生态 ③ 复杂业务逻辑需手动调整
ClaudeCode 基础免费/按量收费 API次数受限 🟢 VS Code · 🟢 JetBrains(CLI/Terminal模式)· 🟢 任意IDE(通过API接入) 未知(Claude) ① 依赖第三方API ② 成本不可控 ③ 受Claude版本限制
Trae 完全免费(目前) 不限时(目前) 🟢 VS Code(唯一官方支持IDE)· ❌ VS2026 · ❌ JetBrains 字节跳动 ① 依赖大模型性能 ② 社区支持较弱 ③ 跨平台兼容性需验证
 

📊 适用于产品汇总对比图

IDE/产品CodeBuddyCodeGeeXIntelliCodeComateLingma通义灵码FittenMarsCode小浣熊CodeWhispererClaudeCodeTrae
VS Code
VS2026 🟡
JetBrains 🟡 🟡 🟡
Eclipse
AWS系列
 
  1 using System;
  2 using System.Collections;
  3 using System.Collections.Generic;
  4 using System.IO;
  5 using System.Linq;
  6 using System.Runtime.CompilerServices;
  7 using System.Text.RegularExpressions;
  8 using System.Net.Http; // 添加这个命名空间
  9 using System.Text;
 10 using System.Threading.Tasks;
 11 
 12 public class Program
 13 {
 14     public enum AEnum
 15     {
 16         None = 0,
 17         One = 1,
 18         Two = 2,
 19     }
 20 
 21     static void Main(string[] args)
 22     {
 23         // 示例:调用POST JSON请求
 24         SendPostJsonRequest().Wait();
 25         
 26         Console.ReadKey();
 27     }
 28 
 29     /// <summary>
 30     /// 发送POST JSON请求的方法
 31     /// </summary>
 32     /// <param name="url">API地址</param>
 33     /// <param name="jsonData">要发送的JSON数据</param>
 34     /// <returns></returns>
 35     static async Task SendPostJsonRequest(string url = "https://api.example.com/endpoint", object data = null)
 36     {
 37         try
 38         {
 39             using (var httpClient = new HttpClient())
 40             {
 41                 // 设置请求头
 42                 httpClient.DefaultRequestHeaders.Add("User-Agent", "ConsoleApp/1.0");
 43                 httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
 44                 
 45                 // 如果data为null,创建一个示例对象
 46                 if (data == null)
 47                 {
 48                     data = new { name = "张三", age = 30, email = "zhangsan@example.com" };
 49                 }
 50                 
 51                 // 序列化对象为JSON
 52                 string jsonContent = System.Text.Json.JsonSerializer.Serialize(data);
 53                 var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
 54                 
 55                 // 发送POST请求
 56                 HttpResponseMessage response = await httpClient.PostAsync(url, content);
 57                 
 58                 // 检查响应状态
 59                 if (response.IsSuccessStatusCode)
 60                 {
 61                     string responseContent = await response.Content.ReadAsStringAsync();
 62                     Console.WriteLine("请求成功!");
 63                     Console.WriteLine($"响应内容:{responseContent}");
 64                 }
 65                 else
 66                 {
 67                     Console.WriteLine($"请求失败,状态码:{(int)response.StatusCode} - {response.StatusCode}");
 68                 }
 69             }
 70         }
 71             catch (HttpRequestException ex)
 72         {
 73             Console.WriteLine($"HTTP请求异常:{ex.Message}");
 74         }
 75         catch (Exception ex)
 76         {
 77             Console.WriteLine($"发生错误:{ex.Message}");
 78         }
 79     }
 80 
 81     // 重载方法,支持自定义JSON字符串
 82     static async Task SendPostJsonRequest(string url, string jsonString)
 83     {
 84         try
 85         {
 86             using (var httpClient = new HttpClient())
 87             {
 88                 httpClient.DefaultRequestHeaders.Add("User-Agent", "ConsoleApp/1.0");
 89                 httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
 90                 
 91                 var content = new StringContent(jsonString, Encoding.UTF8, "application/json");
 92                 HttpResponseMessage response = await httpClient.PostAsync(url, content);
 93                 
 94                 if (response.IsSuccessStatusCode)
 95                 {
 96                     string responseContent = await response.Content.ReadAsStringAsync();
 97                     Console.WriteLine("请求成功!");
 98                     Console.WriteLine($"响应内容:{responseContent}");
 99                 }
100                 else
101                 {
102                     Console.WriteLine($"请求失败,状态码:{(int)response.StatusCode} - {response.StatusCode}");
103                 }
104             }
105         }
106         catch (Exception ex)
107         {
108             Console.WriteLine($"发生错误:{ex.Message}");
109         }
110     }
111 }
文心快码
  1 在 C# 的 `Program` 类中发送 POST JSON 请求,通常使用 .NET 提供的 `HttpClient` 类。
  2 
  3 以下是具体的实现步骤和代码示例。这段代码演示了如何定义数据模型、将对象序列化为 JSON,以及如何发送异步 POST 请求。
  4 
  5 ### 1. 准备工作:必要的命名空间
  6 为了使用 `HttpClient` 和 JSON 序列化,请确保在文件顶部引用了以下命名空间:
  7 
  8 ```csharp
  9 using System;
 10 using System.Net.Http;
 11 using System.Text;
 12 using System.Threading.Tasks;
 13 using System.Text.Json; // .NET Core 3.0+ 自带的 JSON 库
 14 ```
 15 
 16 ### 2. 在 Program 类中添加方法
 17 
 18 假设我们需要向一个模拟的 API(如 `https://example.com/api/users`)发送用户数据。
 19 
 20 #### 第一步:定义数据模型(DTO)
 21 首先定义一个类来表示你要发送的数据:
 22 
 23 ```csharp
 24 public class UserData
 25 {
 26     public int Id { get; set; }
 27     public string Name { get; set; }
 28     public string Email { get; set; }
 29 }
 30 ```
 31 
 32 #### 第二步:编写发送请求的方法
 33 在 `Program` 类中添加一个静态方法 `SendPostRequestAsync`。
 34 
 35 **注意:** 在现代 .NET 中,网络 I/O 操作建议使用 `async` 和 `await` 关键字,因此 `Main` 方法也需要标记为 `async Task`。
 36 
 37 ```csharp
 38 class Program
 39 {
 40     // 定义 HttpClient 实例(最佳实践是在应用程序生命周期内复用,而不是每次请求都 new)
 41     static readonly HttpClient client = new HttpClient();
 42 
 43     static async Task Main(string[] args)
 44     {
 45         // 1. 准备要发送的数据对象
 46         var userData = new UserData
 47         {
 48             Id = 1,
 49             Name = "CodeGeeX",
 50             Email = "codegeex@example.com"
 51         };
 52 
 53         // 2. 调用发送方法
 54         try
 55         {
 56             await SendPostRequestAsync("https://jsonplaceholder.typicode.com/posts", userData);
 57         }
 58         catch (Exception ex)
 59         {
 60             Console.WriteLine($"请求发生错误: {ex.Message}");
 61         }
 62         
 63         Console.WriteLine("按任意键退出...");
 64         Console.ReadKey();
 65     }
 66 
 67     static async Task SendPostRequestAsync(string url, object data)
 68     {
 69         // 1. 将对象序列化为 JSON 字符串
 70         // JsonNamingPolicy.CamelCase 确保属性名首字母小写,符合大多数 Web API 规范
 71         var jsonOptions = new JsonSerializerOptions 
 72         { 
 73             PropertyNamingPolicy = JsonNamingPolicy.CamelCase 
 74         };
 75         string jsonData = JsonSerializer.Serialize(data, jsonOptions);
 76 
 77         // 2. 创建 StringContent,指定编码格式和媒体类型
 78         var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
 79 
 80         // 3. 发送 POST 请求
 81         Console.WriteLine($"正在向 {url} 发送数据...");
 82         
 83         // HttpResponseMessage response = await client.PostAsync(url, content);
 84         
 85         // 为了演示,这里使用 TrySendAsync 以便更好地控制(.NET 5+ 可用,旧版本用 PostAsync)
 86         // 如果使用 PostAsync,直接 await 即可:var response = await client.PostAsync(...)
 87         
 88         var response = await client.PostAsync(url, content);
 89 
 90         // 4. 确保请求成功,否则抛出异常
 91         response.EnsureSuccessStatusCode();
 92 
 93         // 5. 读取响应内容
 94         string responseBody = await response.Content.ReadAsStringAsync();
 95         
 96         Console.WriteLine("响应状态码: " + (int)response.StatusCode);
 97         Console.WriteLine("响应内容: " + responseBody);
 98     }
 99 }
100 ```
101 
102 ### 代码关键点解释
103 
104 1.  **`static readonly HttpClient client`**:
105     *   `HttpClient` 实现了 `IDisposable`,但**不要**在每次请求时都使用 `using` 语句创建它,这会导致 Socket 耗尽。最佳实践是在应用程序级别创建一个静态实例并复用。
106 
107 2.  **`JsonSerializer.Serialize`**:
108     *   这是 .NET 自带的高性能 JSON 序列化器。
109     *   `JsonNamingPolicy.CamelCase` 选项会将 C# 的 `PascalCase` 属性名(如 `UserName`)转换为 JSON 的 `camelCase`(如 `userName`),这是 Web API 的通用标准。
110 
111 3.  **`StringContent`**:
112     *   `HttpClient` 发送 POST 请求时,Body 部分需要封装在 `HttpContent` 对象中。
113     *   **关键点**:必须指定 `"application/json"` 作为媒体类型,否则服务器端可能无法正确识别 JSON 数据。
114 
115 4.  **`async/await`**:
116     *   网络请求是耗时操作,使用异步模式可以避免阻塞主线程,特别是在 GUI 应用程序或高并发的 Web 后端中非常重要。
117 
118 5.  **`EnsureSuccessStatusCode()`**:
119     *   这是一个辅助方法。如果服务器返回的不是 2xx 成功状态码(如 404 Not Found 或 500 Internal Server Error),它会抛出一个 `HttpRequestException`,方便我们在 `catch` 块中统一处理错误。
120 
121 ### 测试用的 URL
122 代码中使用了 `https://jsonplaceholder.typicode.com/posts`,这是一个免费的 REST API 测试服务,它会接收你发送的数据并返回一个包含生成的 ID 的 JSON 对象,非常适合用来测试代码是否工作正常。
CodeGexx
 1 using System;
 2 using System.Net.Http;
 3 using System.Text.Json;
 4 using System.Threading.Tasks;
 5 
 6 public class Program
 7 {
 8     public enum AEnum
 9     {
10         None = 0,
11         One = 1,
12         Two = 2,
13     }
14 
15     static async Task Main(string[] args)
16     {
17         // 创建 HttpClient 实例
18         using (HttpClient client = new HttpClient())
19         {
20             // 设置请求的 URL
21             string url = "https://example.com/api/endpoint";
22 
23             // 创建要发送的 JSON 数据
24             var data = new
25             {
26                 Key1 = "Value1",
27                 Key2 = "Value2",
28                 EnumValue = AEnum.One
29             };
30 
31             // 将数据转换为 JSON 字符串
32             string json = JsonSerializer.Serialize(data);
33 
34             // 创建 HttpContent 实例,将 JSON 字符串作为请求体
35             HttpContent content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
36 
37             // 发送 POST 请求
38             HttpResponseMessage response = await client.PostAsync(url, content);
39 
40             // 读取响应内容
41             string responseContent = await response.Content.ReadAsStringAsync();
42 
43             // 输出响应内容
44             Console.WriteLine(responseContent);
45         }
46 
47         Console.ReadKey();
48     }
49 }
FittenCode

【 通义灵码】

ttest

 

 

 【Visual Studio与文心快码】

Visual Studio中安装文心快码插件后,将具有如下快捷功能:

  1. 添加选中代码到对话中,可以咨询该代码的扩展建议
  2. 代码解释,能够快速的识别他人编写的代码逻辑意义
  3. 函数注释,便于生成文档和代码审查
  4. 行间注释,添加代码中的逻辑意义
  5. 调优建议,识别漏洞,性能问题
  6. 函数拆分,提升复用性和可读性
  7. 生成单测,自动生成测试代码

除了以上的快捷功能之外,还具有的功能如下:

智能感知:在编辑器中输入//  加上中文内容,回车后会生成相应的代码

类的扩展:在对话中,将类或者方法添加到对话,让AI进行学习,学习完成后给予扩展和优化建议。如果你需要在该类中添加或者修改方法,可以将选择的代码进行咨询。

模块扩展:

  1.将产品需求提供给AI对话中,然后将数据库语言和规范告知AI,然后生成数据库表结构

  2.将需求划分为多个功能细节进行描述,将项目的规范以及框架示例告知AI,然后要求AI生成模块的代码,但不要让AI直接去修改项目。

  3.将AI生成的代码中,如果是类,方法需要让Ai标记为审核状态,审核成功后方能填写到项目中

  4.AI代码生成到项目中后,让AI对相应的项目再次做评审,避免出现问题。

 

 模块扩展代码咨询关键问答:

  1. 引用项目中的类文件,让AI阅读——AI深入项目学习
  2. AI阅读项目的规范和代码后,让其编写类的方法但不做实现——让AI生成类的大致功能接口,检查这些功能是否完整
  3. AI遵守项目规范和阅读项目后,将类的方法实现——AI实现后,逐步检查方法的逻辑是否存在问题。
  4. 在生成的类中,需要补充缺少的功能xx和修改的功能xx——AI再次修改生成的类,知道类的功能完整

接口调试咨询关键问答:

  1. 阅读类中的接口——AI学习类
  2. 请简写接口示例参数值请求内容,要求类中的参数相同的接口符合连贯的要求——AI生成接口测试参数数据

问答原则:

  • AI学习
  • 说明所需要功能点
  • AI编写所需的功能
  • AI完善所需的功能
  • 指定功能,并说明增删改查的调整项
  • AI检查代码的完整性
  • 人工确认最终代码
  • 保存代码
posted @ 2026-03-06 20:54  名字什么都是浮云  阅读(98)  评论(0)    收藏  举报