OpenClaw + Claude Code:让 AI 帮你写代码

74次阅读

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 编程 #自动化开发 #效率工具

正文完