当前位置:首页>python>Go/Rust/Python——不同语言怎么用Skill

Go/Rust/Python——不同语言怎么用Skill

  • 2026-10-11 06:26:59
Go/Rust/Python——不同语言怎么用Skill

Go/Rust/Python——不同语言怎么用Skill

本文约2500字,阅读需要5分钟


不同编程语言的AI编程体验差异很大。

AI写Python,基本都能跑。写Rust,经常编译不过。写Go,能编译但代码不地道。

原因是训练数据里Python代码最多,Go和Rust相对少。

语言专用Skill就是弥补这个差距的。


Go Skill:强制idiomatic Go

来自samber/cc-skills-golang。

Go社区对代码风格有很强的共识。"idiomatic Go"是判断代码质量的黄金标准。

核心约束:

Go代码生成规则:

1. 错误处理
   - 永远不要忽略error(禁止 _ = func())
   - 用errors.Is/As做错误判断,不要用==
   - 错误信息小写开头,不加标点

2. 并发
   - 用context传递取消信号
   - goroutine生命周期必须可控(有退出机制)
   - channel关闭由发送方负责

3. 接口
   - 接口要小(1-3个方法)
   - 在使用方定义接口,不是实现方
   - 用接口做依赖注入

4. 测试
   - 用testify库写断言
   - 用表驱动测试(Table-Driven Tests)
   - 用httptest做HTTP测试

5. Go风格
   - 不用泛型炫技(只在真正需要时用)
   - 变量名要短(用ctx不用context,用r不用reader)
   - 导出函数必须有注释


Rust Skill:帮AI过编译关

Rust的编译器很严格。AI经常写出编译不过的代码——生命周期标注错误、所有权转移问题、trait bound不满足。

核心约束:

Rust代码生成规则:

1. 所有权
   - 优先用引用(&T)而不是转移所有权
   - 需要共享所有权时用Arc
   - 不要无脑clone

2. 生命周期
   - 函数签名中必须标注生命周期
   - 避免在struct中存储引用(用owned type)

3. 错误处理
   - 用Result<T, E>而不是panic
   - 用thiserror定义错误类型
   - 用anyhow做应用级错误处理

4. 性能
   - 优先用&str而不是String做参数
   - 用.iter()而不是for i in 0..len
   - 注意零成本抽象的边界

5. 编译检查
   - 代码生成后,必须运行 cargo check
   - 有编译错误必须修复
   - 有clippy警告必须修复


Python Skill:防止"能跑就行"

Python的问题是太容易写了。AI经常写出"能跑但不工程化"的代码。

核心约束:

Python代码生成规则:

1. 类型
   - 所有函数必须有类型注解
   - 用mypy检查(--strict模式)
   - 禁止Any类型

2. 异步
   - IO操作用async/await
   - 禁止混用同步和异步代码
   - 用asyncio.gather做并发

3. 工程化
   - 用pathlib代替os.path
   - 用dataclass/pydantic代替dict
   - 用logging代替print
   - 用f-string代替%或.format()

4. 测试
   - 用pytest
   - 用fixture管理测试数据
   - 用mock隔离外部依赖


跨语言项目Skill配置

一个后端Go + 前端React的项目:

{
  "skills": {
    "golang-best-practices": {
      "scope": ["backend/", "api/"]
    },
    "react-best-practices": {
      "scope": ["frontend/", "components/"]
    },
    "engineering-best-practices": {
      "scope": ["*"]
    }
  }
}

不同目录用不同语言Skill,根目录用通用工程Skill。


不要过度约束

语言Skill最容易犯的错误:规则太多。

一个好的语言Skill,规则不超过20条。挑最关键的写,剩下的让AI自己发挥。

规则选取优先级:

  1. 1. 一写错就会出bug的(错误处理、空值判断)
  2. 2. 社区共识极强、不这样写会被喷的(Go的error处理、Rust的所有权)
  3. 3. 影响性能的关键选择

其他风格问题,比如变量命名、文件组织结构,不用写到Skill里。


🎁 福利

关注公众号,回复「语言」,获取:

  1. 1. Go/Rust/Python Skill配置模板
  2. 2. 多语言项目Skill作用域配置
  3. 3. 各语言Skill规则精选

下一篇:GitHub出了个桌面App,同时管多个AI Agent


专注GitHub热门AI工具拆解

每篇一个项目,看完就能用

最新文章

随机文章