--- tags: [ai, claude-code, dev-env] create time: 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 模板结构 ```markdown # 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 组合使用 ```bash # 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 原则**: | 元素 | 说明 | 示例 | |------|------|------| | **S**ituation | 当前背景 | "我在写一个用户注册的 API handler" | | **T**ask | 你要做什么 | "需要加上邮箱验证码校验" | | **A**ction | 具体要求 | "用 Redis SETEX 做 1 分钟有效期,key 前缀 `code:email:`" | | **R**esult | 期望输出 | "返回 Go struct 并在注释中标明 error code" | ### 4. 利用会话历史进行迭代 不要试图一次性完美。采用增量反馈循环: ``` 第一轮:实现功能 → AI 出代码 → 我 review 第二轮:"这个实现有个问题,XX 没处理" → AI 修正 第三轮:"再加个单元测试" → AI 补测试 第四轮:"把错误处理改为 errors.Is 兼容风格" → AI 微调 ``` 每轮控制在 2-3 次交互内,超出就停下来自己总结。 ## 延伸阅读 - [[mac-dev-env-setup/homebrew-intro]] — Claude Code 安装前置(npm/nvm 环境) - [[CLAUDE.md]] — 本笔记库的 CLAUDE.md 本身就是一个实战范例