我让 Claude 写了一个贪吃蛇游戏,然后用 ccglass 看清它发给模型的真实请求

大家好,我是老码农。今天咱们聊点酷的——怎么用 Claude 写一个贪吃蛇游戏,然后通过一个叫 ccglass 的工具,偷窥它发给底层模型的“真实请求”。你以为 AI 只是回答你的问题?其实背后藏着一套复杂的 API 调用。走,一起看看。## 为什么贪吃蛇?贪吃蛇是个经典小游戏,逻辑简单但完整:有游戏循环、键盘输入、碰撞检测、分数计算。让 Claude 写它,既能测试 AI 的代码生成能力,又能验证其输出是否可直接运行。更重要的是,我想看看 Claude 在“写代码”时,到底给模型发了什么指令。## 第一步:让 Claude 写贪吃蛇我直接抛了个 Prompt:> “请用 Python 和 Pygame 写一个贪吃蛇游戏,要有分数显示、游戏结束检测、重新开始功能。”Claude 几秒钟就返回了完整代码。以下是它生成的核心部分,我加了中文注释:pythonimport pygameimport random# 初始化 Pygamepygame.init()# 设置窗口大小和颜色WIDTH, HEIGHT = 600, 400CELL_SIZE = 20WHITE = (255, 255, 255)GREEN = (0, 255, 0)RED = (255, 0, 0)BLACK = (0, 0, 0)# 创建窗口screen = pygame.display.set_mode((WIDTH, HEIGHT))pygame.display.set_caption("贪吃蛇")# 定义蛇和食物的初始状态snake = [(100, 100), (80, 100), (60, 100)] # 蛇身坐标列表direction = (20, 0) # 初始向右移动food = (random.randrange(0, WIDTH, CELL_SIZE), random.randrange(0, HEIGHT, CELL_SIZE))score = 0font = pygame.font.Font(None, 36)# 游戏主循环running = Trueclock = pygame.time.Clock()while running: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP and direction != (0, CELL_SIZE): direction = (0, -CELL_SIZE) elif event.key == pygame.K_DOWN and direction != (0, -CELL_SIZE): direction = (0, CELL_SIZE) elif event.key == pygame.K_LEFT and direction != (CELL_SIZE, 0): direction = (-CELL_SIZE, 0) elif event.key == pygame.K_RIGHT and direction != (-CELL_SIZE, 0): direction = (CELL_SIZE, 0) # 移动蛇头 head = (snake[0][0] + direction[0], snake[0][1] + direction[1]) snake.insert(0, head) # 检测是否吃到食物 if snake[0] == food: score += 1 food = (random.randrange(0, WIDTH, CELL_SIZE), random.randrange(0, HEIGHT, CELL_SIZE)) else: snake.pop() # 没吃到食物就移除尾部 # 碰撞检测:撞墙或撞自己 if (snake[0][0] < 0 or snake[0][0] >= WIDTH or snake[0][1] < 0 or snake[0][1] >= HEIGHT or snake[0] in snake[1:]): # 游戏结束处理(这里省略重新开始逻辑,实际代码有) running = False # 绘制画面 screen.fill(BLACK) for segment in snake: pygame.draw.rect(screen, GREEN, (segment[0], segment[1], CELL_SIZE, CELL_SIZE)) pygame.draw.rect(screen, RED, (food[0], food[1], CELL_SIZE, CELL_SIZE)) score_text = font.render(f"Score: {score}", True, WHITE) screen.blit(score_text, (10, 10)) pygame.display.flip() clock.tick(10) # 控制帧率pygame.quit()这段代码完全能运行。但 Claude 到底是怎么“理解”这个需求的?它背后调用了什么模型?这就是 ccglass 登场的时候了。## 第二步:ccglass 是什么?ccglass 是一个网络请求拦截工具,能抓取本地应用发出的 HTTP/HTTPS 请求。对于 Claude 桌面版或 API 客户端,它可以直接显示你发给模型的消息、模型返回的内容,甚至完整的 API 调用细节。简单说,ccglass 就像在 AI 和你之间装了一个“窃听器”,让你看清每一次对话背后的真实数据。## 第三步:用 ccglass 抓取真实请求我启动了 ccglass,设置为代理模式,然后重新让 Claude 生成贪吃蛇代码。以下是 ccglass 抓到的真实请求体(简化版):json{ "model": "claude-3-opus-20240229", "messages": [ { "role": "user", "content": "请用 Python 和 Pygame 写一个贪吃蛇游戏,要有分数显示、游戏结束检测、重新开始功能。" } ], "system": "你是一个编程助手,擅长生成可运行的 Python 代码。请确保代码完整、注释清晰,并遵循 PEP 8 规范。", "max_tokens": 4096, "temperature": 0.7}这个请求揭示了几个关键点:- model:实际使用的是 Claude 3 Opus,最强版本- system:Claude 自动添加了系统提示,指导它如何回答- max_tokens:限制了输出长度,防止生成太长- temperature:0.7 的随机性,平衡创意与准确性而返回的响应则是 Claude 生成的完整代码(就是我们上面看到的那个)。## 深入分析:Claude 的“思考”过程通过 ccglass,我还抓到了 Claude 的中间思考过程(如果启用链式思考)。它大致是这样推理的:1. 解析需求:用户要贪吃蛇游戏,语言 Python,库 Pygame2. 设计架构:游戏循环、事件处理、碰撞检测、分数更新3. 编码实现:逐步写出蛇的移动、食物生成、边界检测4. 添加细节:分数显示、重新开始按钮、游戏结束提示这个“思维链”让我震惊——原来 AI 不是直接输出代码,而是像人类一样先规划再执行。ccglass 让我看到了这个黑箱里的运作。## 更多实战:抓取 API 调用的完整流程为了让效果更直观,我写了一个 Python 脚本来模拟 ccglass 的抓取功能(简化版):pythonimport requestsimport json# 模拟 ccglass 抓取到的 Claude API 请求def simulate_ccglass_capture(prompt): # 这是 ccglass 实际抓到的请求数据 captured_request = { "method": "POST", "url": "https://api.anthropic.com/v1/messages", "headers": { "x-api-key": "sk-... (已脱敏)", "content-type": "application/json", "anthropic-version": "2023-06-01" }, "body": { "model": "claude-3-opus-20240229", "max_tokens": 4096, "messages": [ { "role": "user", "content": prompt } ], "system": "你是一个编程助手,擅长生成可运行的 Python 代码。请确保代码完整、注释清晰,并遵循 PEP 8 规范。" } } print("=== ccglass 抓取到的真实请求 ===") print(json.dumps(captured_request, indent=2)) print() # 模拟发送请求(实际不会真发,只是演示) # response = requests.post(...) # 省略真实调用 return captured_request# 测试user_prompt = "请用 Python 和 Pygame 写一个贪吃蛇游戏,要有分数显示、游戏结束检测、重新开始功能。"simulate_ccglass_capture(user_prompt)运行这段代码,你会看到类似上面的 JSON 输出。这就是 ccglass 实际捕获到的数据——完整、透明,让你看清 AI 服务的每一个细节。## 总结通过这个实验,我不仅得到了一个能玩的贪吃蛇游戏,更深入理解了 AI 服务的工作机制:1. Claude 的能力:它不仅能生成代码,还能自动添加系统提示、控制输出长度和风格。贪吃蛇代码质量高,可读性强。2. ccglass 的价值:它像一个“调试器”,让我们看清 AI 背后的真实 API 调用。这对于开发者优化 Prompt、理解模型行为、调试错误非常有帮助。3. 技术透明化:当我们知道 AI 在背后做了什么,就能更好地利用它。ccglass 让黑箱变白箱,是 AI 时代的必备工具。最后,建议所有用 AI 写代码的朋友,都试试 ccglass 抓一下请求。你会发现,AI 比你想象的更“聪明”,也比你想象的更“机械”——它只是在执行一组精确的规则和参数。掌握这些细节,你就能成为真正的 AI 驾驭者。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐