Files

5.2 KiB
Raw Permalink Blame History

tags, create time
tags create time
ai
claude-code
dev-env
2026-07-01 00:00

AI Coding Agent 用法指南

概述

在实训环境中使用 AI 辅助开发的规范化方法:Claude Code 作为首选 Coding Agent,配合 GitHub CLI 等工具形成闭环工作流。重点在于 提示词工程、权限边界、上下文组织 三要素。

核心概念

Prompting 四原则

无论使用何种 AI 编码工具,以下原则通用:

原则 要点 反面示例
具体 精确到文件名、行号、函数名 "帮我优化一下登录页面"
限定范围 明确说"只改什么",不说"改什么" 无范围约束 → 过度改动
可验证 给出预期结果或验收标准 "让它能跑就行"
分步 复杂任务拆成小步骤逐步确认 一次性描述整个重构

Claude Code 上下文注入机制

Claude Code 在启动后会自动收集以下上下文:

当前工作目录结构
├── CLAUDE.md                    ← 知识库/项目规范(固定注入)
├── .claude/settings.local.json  ← 权限配置(可选)
├── .gitignore
├── src/                         ← 当前打开/选中的文件
└── ...
注入方式 说明
CLAUDE.md 项目级指令,Claude Code 启动时自动加载到 system prompt
当前文件 你正在查看/编辑的文件自动加入 context
选中文本 在编辑器选中后用 @ 引用或直接在对话中使用
文件附件 用 @file 语法显式追加任意文件到上下文窗口

CLAUDE.md 模板结构

# Project Context

## 技术栈
- Go 1.23 + Gin, Node.js 20 + React 19

## 代码规范
- 错误处理必须 wrapping(fmt.Errorf("failed to X: %w", err))
- API handler 命名:HandlerSuffix(CreateUserHandler)

## 工作流约定
- PR 标题格式:type(scope): description(feat(auth): add login endpoint)
- 每个 commit 必须是 squash-friendly 的小粒度

代码示例

典型任务工作流

场景 1:实现一个 API 接口

在 internal/handler/user.go 中增加 GetUserByID handler,
只改这一个文件,不要动其他代码。
要求:参数绑定使用 gin 的 query binding,错误码使用 pkg/errno 包定义的常量。

场景 2:审查已有改动

审查刚才的改动(src/auth/middleware.ts),有没有潜在 bug 或性能问题。
重点关注:token 过期处理、中间件执行顺序、内存泄漏风险。

场景 3:围绕 Issue 工作

查看 #42 issue 的描述,创建一个修复分支 fix-42-rate-limit,
实现限流逻辑后提交并创建 PR。PR 描述中包含复现步骤和修复说明。

与 GitHub CLI 组合使用

# Step 1:查看任务清单
gh issue list --state=open --label="internship"

# Step 2:让 Claude Code 直接在这个上下文中工作
# (在 Claude Code 中直接输入上述命令的输出或使用 @)

# Step 3:完成后再切回来发 PR
gh pr create --title "feat(limit): add rate limiter for signup API" \
  --body "@@projects/rate-limiter-design.md"

常见陷阱与最佳实践

1. 上下文窗口溢出

Claude Code 的上下文窗口有限,当项目很大时不要一次性追加太多文件:

# ❌ 不好:把整个 src/ 文件夹丢进去
@src/*.go

# ✅ 好:只追加当前文件和相关接口定义
@internal/handler/user.go
@pkg/errno/code.go

需要跨文件理解时,先用 Grep 定位关键词再精准追加。

2. AI 生成代码不直接提交

AI 生成的代码可能存在 隐蔽的逻辑错误或安全隐患,务必经过人工审查:

审查流程:
1. 让 Claude Code 生成代码 → diff 输出
2. 人工阅读 diff,逐行检查
3. 如有问题,用自然语言指出("这里少了 nil check")→ 让其修正
4. 确认无误后再手动 staged + commit

[!warning] 绝对不要做的事

  • 不要信任 AI 生成的数据库 migration SQL 不经 review 就执行
  • 不要 trust AI 生成的敏感信息(AK/SK、token)直接 commit
  • 不要在 prod 环境让 AI 直接操作

3. Prompt 太长反而降低质量

一个超过 500 字的 prompt 通常意味着意图不够聚焦。遵循 STAR 原则:

元素 说明 示例
Situation 当前背景 "我在写一个用户注册的 API handler"
Task 你要做什么 "需要加上邮箱验证码校验"
Action 具体要求 "用 Redis SETEX 做 1 分钟有效期,key 前缀 code:email:"
Result 期望输出 "返回 Go struct 并在注释中标明 error code"

4. 利用会话历史进行迭代

不要试图一次性完美。采用增量反馈循环:

第一轮:实现功能 → AI 出代码 → 我 review
第二轮:"这个实现有个问题,XX 没处理" → AI 修正
第三轮:"再加个单元测试" → AI 补测试
第四轮:"把错误处理改为 errors.Is 兼容风格" → AI 微调

每轮控制在 2-3 次交互内,超出就停下来自己总结。

延伸阅读