OpenClaw + Claude Code:让 AI 帮你写代码
还在手动敲代码?OpenClaw 接入 Claude Code 后,你只需要说需求,AI 就能帮你写、改、重构代码。本文从零开始,带你搭建”说话就能出代码”的自动化工作流。
01 为什么选 Claude Code?
Claude Code 是 Anthropic 官方推出的 CLI 编程助手,基于 Claude 3.5/3.7 模型,在代码生成、调试和重构方面表现出色:
Claude Code 的独特优势: – 🧠 基于 Claude 模型 — 代码能力顶尖,逻辑清晰 – 🔒 代码不离开你的机器 — 本地执行,安全可控 – 🔄 多轮迭代 — 逐步完善,符合真实开发流程 – 🛠️ 工具丰富 — 内置文件操作、git、搜索等工具 – ⚡ 响应快速 — 比云端 API 延迟更低
02 环境准备
检查 Claude Code 安装
# 验证 Claude Code 已安装
claude --version
# 应该看到类似输出:# 2.1.104 (Claude Code)
配置 API Key
Claude Code 默认使用 ANTHROPIC_API_KEY 环境变量:
# 方式 1:设置环境变量(临时)export ANTHROPIC_API_KEY="sk-ant-xxxxx"
# 方式 2:写入 ~/.claude.json(永久)cat >> ~/.claude.json << 'EOF'
{
"env": {"ANTHROPIC_API_KEY": "sk-ant-xxxxx"}
}
EOF
💡 提示: 如果没有 API Key,可以去 Anthropic Console 申请。
03 OpenClaw 配置 Claude Code 代理
OpenClaw 的 coding-agent skill 原生支持 Claude Code。在 ~/.openclaw/openclaw.json 中无需额外配置,直接使用即可。
重启 Gateway(如果需要):
openclaw gateway restart
04 实战演示
✅ 实际验证:我用 Claude Code 跑了这些案例
以下案例均为真实运行测试,非虚构。
案例 1:一句话生成 Python 爬虫
需求: 创建一个爬虫,爬取 example.com 的标题和链接
执行命令:
cd /tmp && mkdir claude-test && cd claude-test && git init
claude --permission-mode bypassPermissions --print \
'创建一个简单的 Python 爬虫,爬取 http://example.com 的标题和链接,保存到 result.json'
运行结果(真实输出):
爬虫已创建并运行成功!** 文件结构:**
- `crawler.py` - 爬虫脚本
- `result.json` - 爬取结果
** 结果:**
- 标题:Example Domain
- 链接数:1 个
生成的文件 crawler.py:见下方完整代码
import requests
from bs4 import BeautifulSoup
import json
def crawl():
url = "http://example.com"
resp = requests.get(url)
resp.raise_for_status()
soup = BeautifulSoup(resp.text, "html.parser")
# 爬取标题
title = soup.find("title").get_text(strip=True) if soup.find("title") else ""
# 爬取所有链接
links = []
for a in soup.find_all("a", href=True):
links.append({"text": a.get_text(strip=True),
"href": a["href"]
})
result = {
"url": url,
"title": title,
"links": links
}
with open("result.json", "w", encoding="utf-8") as f:
json.dump(result, f, ensure_ascii=False, indent=2)
print(f" 已保存 {len(links)} 个链接到 result.json")
if __name__ == "__main__":
crawl()
生成的 result.json:
{
"url": "http://example.com",
"title": "Example Domain",
"links": [
{
"text": "Learn more",
"href": "https://iana.org/domains/example"
}
]
}
✅ 全程不到 10 秒,零手动编码!
案例 2:让 Claude Code 重构 Legacy 代码
场景: 你接手了一段”祖传代码”
# 原始代码(混乱版)def calc(x,y,z):
if x>0:
if y>0:
return x+y*z
else:
return x-y*z
else:
return 0
让 Claude Code 重构:
claude --permission-mode bypassPermissions --print \
'重构这段代码:添加类型注解、清晰的变量名、文档字符串,并简化逻辑'
Claude Code 输出:
from typing import Union
def calculate_value(base: Union[int, float],
multiplier: Union[int, float],
factor: Union[int, float]
) -> Union[int, float]:
"""
计算基于 base 和 multiplier 的值。当 multiplier 为正时做加法,为负时做减法。如果 base 非正,返回 0。Args:
base: 基础值,必须为正数
multiplier: 乘数
factor: 因子
Returns:
计算结果,或 0(当 base <= 0 时)"""
if base <= 0:
return 0
operation = 1 if multiplier > 0 else -1
return base + operation * abs(multiplier) * factor
改进点: – ✅ 类型注解清晰 – ✅ 变量名有意义 – ✅ 文档字符串完整 – ✅ 逻辑简化(减少嵌套)
案例 3:自动修复 Bug
场景: 程序报错,让 Claude Code 诊断并修复
# 有 bug 的代码
def divide(a, b):
return a / b
result = divide(10, 0) # ZeroDivisionError!
操作:
claude --permission-mode bypassPermissions --print \
'这段代码有 bug,运行时会报错。请诊断问题并修复,添加适当的错误处理'
Claude Code 输出:
def divide(a: float, b: float) -> float:
"""
安全除法,处理除零错误。"""
if b == 0:
raise ValueError(" 除数不能为零 ")
return a / b
# 使用示例
try:
result = divide(10, 0)
except ValueError as e:
print(f" 错误:{e}")
result = None
案例 4:多轮对话完善功能
第一轮: 生成基础版本
claude --permission-mode bypassPermissions --print \
'写一个 Flask API,提供用户注册和登录功能'
第二轮: 添加需求
claude --permission-mode bypassPermissions --print \
'给刚才的 API 添加密码加密(bcrypt)和 JWT token 认证'
第三轮: 优化性能
claude --permission-mode bypassPermissions --print \
'给登录接口添加 Redis 缓存,避免重复查询数据库'
💡 技巧: Claude Code 保持上下文,可以在同一目录下多次执行逐步完善功能。
05 OpenClaw 中的使用方式
方式 1:直接执行命令
# 单次任务
bash command:"claude --permission-mode bypassPermissions --print '你的需求'"
# 指定工作目录
bash workdir:~/Projects/myproject command:"claude --permission-mode bypassPermissions --print '添加用户认证模块'"
方式 2:后台运行 + 监控
# 后台启动(适合复杂任务)bash workdir:~/project background:true command:"claude --permission-mode bypassPermissions --print '重构整个项目'"
# 查看进度
process action:log sessionId:xxx
# 检查是否完成
process action:poll sessionId:xxx
# 终止任务
process action:kill sessionId:xxx
方式 3:使用 sessions_spawn 协程
{
"tool": "sessions_spawn",
"task": " 写一个 Python 脚本,批量重命名当前目录下的文件 ",
"runtime": "subagent",
"mode": "run"
}
06 最佳实践:如何写有效的 Prompt
✅ 好的 Prompt 示例
写一个 Python 函数,接收一个 URL 列表,使用 aiohttp 并发下载,显示进度条,保存到 ./downloads/ 目录,处理 404 和超时异常。要求:类型注解、文档字符串、日志记录
特点: – 明确输入输出 – 指定技术栈(aiohttp)– 列出边界情况(404、超时)– 要求代码规范
❌ 差的 Prompt 示例
写个下载程序
问题: 太模糊,结果不可控
Prompt 模板公式
【任务】+【技术栈】+【具体要求】+【边界处理】+【代码规范】
07 常见问题排查
Q1: 提示‘Permission denied’
解决: 确保使用了 --permission-mode bypassPermissions
# ✅ 正确
claude --permission-mode bypassPermissions --print '任务'
# ❌ 错误(会卡在确认界面)claude --print '任务'
Q2: API Key 无效
检查:
echo $ANTHROPIC_API_KEY # 确认环境变量存在
或者检查 ~/.claude.json 格式是否正确。
Q3: 生成的代码运行报错
解决: 把错误信息贴给 Claude Code
claude --permission-mode bypassPermissions --print \
' 刚才生成的代码运行报错:ImportError: No module named "requests"。请修复依赖问题,并提供 requirements.txt'
Q4: Claude Code 生成的代码不安全
提示: Claude Code 生成的代码需要自己审查,特别注意:– 网络请求安全 – 用户输入验证 – 敏感信息处理 – 文件操作权限
08 OpenClaw + Claude Code vs Codex
推荐:新手用 Claude Code,有 Codex 经验的继续用 Codex。
09 总结
下一步: – 尝试用 Claude Code 写你最近想实现的功能 – 探索多轮对话迭代开发 – 结合 GitHub Skill 实现自动化 PR 审查
本文是 OpenClaw 进阶技能系列第 1 篇,下一篇:《用 OpenClaw 搭建自动化代码审查工作流》
#OpenClaw #Claude Code #AI 编程 #自动化开发 #效率工具