Skip to content

AI 编程助手使用分享与心得

发布于 2025-09-04

这段时间一直在用 AI 工具辅助写代码,分享下我的使用体验。

我主要用的是 Claude Code。之前也用过 Roo Code,也不错。但整体用下来,感觉 Claude Code 更好。不过 Roo Code 有个优点:它通过 VSCode 插件工作,帮你编程时会显示很多操作细节。 Claude Code 在命令行里运行,有时会省略细节。

不多说了,直接分享:

关于 Claude 的访问问题 (代理)

Claude 有地区限制,国内无法直接访问,尤其刚推出时更严格。我之前的解决办法是用 claude-code-router。简单说,就是用一个自定义服务,把发给 OpenAI 格式的请求,“翻译”成 Claude 能理解的格式,再通过代理转发。

但这方案有个问题:很多 AI 模型的“记忆力”(上下文长度)不够处理 Claude Code 的任务,导致一些复杂问题会因上下文过短而失败。

那时没啥好办法,不行就只能换回 Roo Code(Roo Code 也有类似问题)。

后来,Any Router 横空出世,在技术圈里火速传开。刚出那几天实在是太好用了,不得不说,真的是大善人。

不过中间有两天它被攻击了,感觉是同行眼红。现在虽然恢复了,但会限速,不能无限用了。

接着是 Kimi 的 K2 模型,就在 anyrouter 出问题那两天,Kimi 发布了 K2 新模型。它性价比高,还直接支持 Claude 的 API 格式!我马上充了 50 块试水。刚发布时限速挺严重,速度体验是不如 Any Router 的。但模型本身能力很强,感觉已经能媲美 Claude,完全可以替代。我现在的主力 API 就是它。

说完访问问题,再聊聊我用 Claude Code 的一些小技巧。

Claude 常用技巧

记忆 (Memory)

Claude Code 有个很好的功能叫 memory。在命令行输入 /memory,就能创建 CLAUDE.md 文件。这相当于 AI 的提示词功能,用来记录你的编程习惯和要求。它有三个选项:

bash
 Select memory to edit:
 
 1. Project memory          Checked in at ./CLAUDE.md                      
    2. Project memory (local)  Gitignored in ./CLAUDE.local.md                
    3. User memory             Saved in ~/.claude/CLAUDE.md

意思是:前两个针对当前项目,最后一个是全局的(所有项目都生效)。我建议:

  1. 在全局 (~/.claude/CLAUDE.md) 放一个通用规则。
  2. 在当前项目创建 CLAUDE.local.md 放项目特定的要求。因为默认 .gitignore 会忽略 *.local 文件(如果没有,手动加一下就行),这样不用担心这个文件被提交了。

我最近在写函数库,总结了一套提示词(不一定适合所有人,可以按需调整):

markdown
# Claude 项目上下文

## 项目信息
- 项目名:zedom
- 技术:TypeScript/JavaScript
- 类型:工具函数库
- 包管理:pnpm

## 我的规则
- 沟通语言:中文
- 系统:Ubuntu
- 换行符:Linux 风格 (LF)
- JavaScript/TypeScript:不加分号 (除非必须)
- 代码格式:别动已有代码的格式,除非我明确要求
- 提取函数:单行或小于100字符的代码别单独提函数,除非重复出现超过2次
- 提交代码:按 Conventional Commits (angular) 规范写提交信息,别加 Claude 的签名!(F*k you)
- 文档:别自动创建 .md 或 README 文件,除非我明确要求

处理大任务

Claude Code 很擅长压缩上下文,即使任务涉及很多文件,它也能快速处理。当然也有极限,上下文太大时它也会“记不住”。刚开始用,我经常遇到这个问题,比如让它改整个项目的代码,它可能处理不完,即使它读之前已经给自己列了任务清单。

怎么办呢?我摸索出一个办法:让它自己创建并维护一个任务进度文档

让它每完成一个小任务,就去更新这个文档。这样它每次只需关注当前任务需要的文件,避免了堆积超长上下文。示例如下:

bash
# 测试任务进度报告

## 总览
- **总方法数**:14
- **已完成**:14
- **进行中**:0
- **待处理**:0

## 任务清单 (已全部完成 ✅)

### array.ts 模块 (完成 1/1)
-   [x] **remain** (中优先级)
    -   功能:按参数拆分数组,返回剩余部分
    -   位置:src/array.ts:13-26
    -   测试文件:test/remain.spec.ts

### object.ts 模块 (完成 6/6)
-   [x] **omit** (高优先级)
    -   功能:排除对象指定属性,返回新对象
    -   位置:src/object.ts:5-7
    -   测试文件:test/omit.spec.ts
    ... (其他类似)

### string.ts 模块 (完成 1/1)
-   [x] **trim** (低优先级)
    -   功能:去掉字符串首尾空格
    -   位置:src/string.ts:1-3
    -   测试文件:test/trim.spec.ts

## 优先级说明
- ****:核心功能,常用
- ****:重要功能,中等使用
- ****:辅助功能,少用

## 使用说明
1.  开始任务前,先看本文档了解进度
2.  开始任务时,把状态改成`进行中`
3.  完成时,更新状态为`已完成`并增加计数
4.  每完成一个任务,更新总览部分

优点:这样拆解任务,Claude 每次只处理一小块,上下文始终很少,大大减少失败概率。