作为后端开发者,你大概也发现了:我们每天写的东西,有相当一部分是重复的。Controller、Service、Repository、DTO、验证规则、测试……一个接口下来,几十行代码里真正“需要动脑子”的部分可能不到一半。

剩下的,都是“样板”。

我之前试过不少 AI 工具,大部分都能帮你“写点东西”。但 Claude Code 不太一样——它不只是个对话窗口,它是一个能读你仓库、改你文件、跑你命令的 Agent。

简单说:它不止会说,还会动手。

下面会用claude code+Go作为例子来说明
在这里插入图片描述


先把它装上

Claude Code 是个终端里的工具,安装很简单:

npm install -g @anthropic-ai/claude-code

装完之后,在项目根目录输入:

claude

会走一个浏览器登录流程,或者你也可以直接配 API Key:

export ANTHROPIC_API_KEY=你的key

然后就能用了。

如果不想开一整个会话,只想快速问个问题:

claude -p "这个项目是干嘛的?"

或者把日志丢给它分析:

cat error.log | claude -p "帮我看看这些报错是什么原因"

先告诉 Claude 你的项目长什么样

Claude Code 每次启动都是“第一次见面”。它不知道你的项目结构、代码风格、测试习惯。所以你最好在项目根目录放一个 CLAUDE.md 文件,相当于给 Claude 一份“新人入职手册”。

比如一个 Go 项目可以这样写:

# 项目:用户服务

## 技术栈
- Go 1.22
- Gin
- GORM
- PostgreSQL
- Redis
- Kafka

## 代码规范
- 错误处理用 `fmt.Errorf` + `%w` 包装
- 日志用 `log/slog`
- Repository 层放在 `internal/repository`
- Service 层放在 `internal/service`
- Handler 放在 `internal/handler`
- DTO 放在 `internal/dto`

## 测试
- 单元测试用 `testing` + `testify`
- 集成测试用 `testcontainers-go`
- 跑测试:`go test ./...`
- 跑单个测试:`go test -run TestXxx ./...`

## 关键文件
- `configs/config.yaml` – 配置文件
- `docker-compose.yml` – 本地开发环境

## 注意事项
- 不要用 `panic` 处理业务错误
- 所有外部调用都要传 `context.Context`

Claude 每次启动都会读这个文件,省得你每次都要重新解释一遍项目背景。

除了这个,也需要熟练掌握一些常用命令

在这里插入图片描述
比如对如微服务的开发,这里,你可以使用add-dir添加多个目录

claude --add-dir ../user-service --add-dir ../payment-service

用它干点实际的活

1. 一键生成一个完整的接口

比如你想加一个创建订单的接口,可以直接说:

帮我加一个 POST /orders 接口,接收 CreateOrderRequest,包含 customer_iditemsproduct_id + quantity)、shipping_address。用 Gin 实现,按项目的目录结构来。

Claude 会生成:

// internal/dto/order.go
type CreateOrderRequest struct {
    CustomerID       int64                `json:"customer_id" binding:"required"`
    Items            []OrderItemRequest   `json:"items" binding:"required,min=1"`
    ShippingAddress  string               `json:"shipping_address" binding:"required"`
}

type OrderItemRequest struct {
    ProductID int64 `json:"product_id" binding:"required"`
    Quantity  int   `json:"quantity" binding:"required,gt=0"`
}
// internal/handler/order_handler.go
func (h *OrderHandler) CreateOrder(c *gin.Context) {
    var req dto.CreateOrderRequest
    if err := c.ShouldBindJSON(&req); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }

    order, err := h.service.CreateOrder(c.Request.Context(), req)
    if err != nil {
        c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
        return
    }

    c.JSON(http.StatusCreated, order)
}

Service 和 Repository 层它也会一起生成,而且会遵循你在 CLAUDE.md 里写的包结构。


2. 帮你写测试

不想手写测试的时候,直接说:

OrderService 写单元测试,覆盖正常创建、空订单列表、客户不存在的情况。

它会读 OrderService 的代码,然后生成对应的测试:

func TestOrderService_CreateOrder(t *testing.T) {
    mockRepo := new(MockOrderRepository)
    mockCustomerRepo := new(MockCustomerRepository)
    svc := NewOrderService(mockRepo, mockCustomerRepo)

    t.Run("正常创建订单", func(t *testing.T) {
        req := dto.CreateOrderRequest{
            CustomerID:      1,
            Items:           []dto.OrderItemRequest{{ProductID: 10, Quantity: 2}},
            ShippingAddress: "123 Main St",
        }
        mockCustomerRepo.On("FindByID", int64(1)).Return(&Customer{ID: 1}, nil)
        mockRepo.On("Save", mock.Anything).Return(&Order{ID: 100}, nil)

        resp, err := svc.CreateOrder(context.Background(), req)

        assert.NoError(t, err)
        assert.Equal(t, int64(100), resp.OrderID)
    })

    t.Run("客户不存在", func(t *testing.T) {
        req := dto.CreateOrderRequest{CustomerID: 999}
        mockCustomerRepo.On("FindByID", int64(999)).Return(nil, errors.New("not found"))

        _, err := svc.CreateOrder(context.Background(), req)

        assert.Error(t, err)
    })
}

3. 读日志帮你 debug

报错看不懂的时候:

cat logs/app.log | claude -p "这个 Kafka 消费者报错 SerializationException,可能是什么原因?"

它会结合你的代码上下文,告诉你可能是序列化配置不对、或者消息格式变了。


4. 跨文件重构

想改一个东西,懒得手动搜所有引用:

OrderEntity 重命名为 Order,更新所有引用、GORM 注解和 repository 接口。

它会找到所有用到的地方,一次性改完。


几个我觉得好用的命令

命令 作用
/init 在当前项目生成 CLAUDE.md
/review 审查当前改动,给建议
/compact 对话太长时压缩上下文
/clear 清空会话历史
/model 切换模型

用它写后端代码,我觉得值在哪

Claude Code 不会替你思考业务逻辑,但它确实帮你把“重复劳动”那部分砍掉了大半。

它的优势在于:它知道你整个项目长什么样,而不是只看到你当前打开的那个文件。

所以它给你生成的代码,通常是能直接放进项目里的——而不是那种“改改就能用”的伪代码。

当然,该 review 的还是要 review。它有时候会过度设计,有时候会忽略一些边界情况。但整体上,它把我从“手写样板代码”的环节里解放了出来,让我能把注意力放在更值得花时间的地方。

如果你也在做后端,尤其是那种 CRUD 占了大头的项目,Claude Code 值得试一试。它像一个不太完美但很积极的同事——有时候你会怀疑它在自作聪明,但你也确实不想回到没有它的日子了。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐