ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

goose Tutorial 扩展 first-game 教程详解:让 AI Agent 带你从零做一个 Flappy Bird

goose Tutorial 扩展 first-game 教程详解:让 AI Agent 带你从零做一个 Flappy Bird goose Tutorial 扩展 first-game 教程详解让 AI Agent 带你从零做一个 Flappy Bird【免费下载链接】goosean open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM项目地址: https://gitcode.com/GitHub_Trending/goose3/goose本文围绕 goose 内置 Tutorial 扩展中随仓库分发的教程脚本 first-game.md 展开。该文档是 goose 内置教程服务器TutorialServer通过load_tutorial工具动态加载的第一课指导用户用 Python Pygame 做出第一个可运行的游戏。读完本文你将理解这份教程文档在 goose 源码中是如何被打包、索引并注入给 Agent 的教程本身覆盖的完整学习路径从环境搭建到核心游戏循环、机制开发与迭代打磨以及如何启用 tutorial 扩展并按脚本完成第一只会飞的鸭子。一、first-game 在 goose 中的定位一个被编译进二进制的教程脚本先说清楚这份文档不是给人直接阅读的普通文档而是Agent 的教学大纲——它写给 goose 内部的 LLM 看用来指导 Agent 以交互式方式陪用户一步步完成开发。从源码结构看集成机制非常清晰教程文件被编译进二进制tutorial/mod.rs 第 14 行通过include_dir!($CARGO_MANIFEST_DIR/src/tutorial/tutorials)把整个tutorials/目录嵌入 crate因此first-game.md随 goose 一起分发无需用户额外下载服务器启动时自动索引可用教程get_available_tutorials()遍历内嵌目录用每个文件第一行内容作为简介生成清单- {文件名}: {首行}并拼入服务器 instructions。也就是说first-game.md第一行的# Building Your First Game会被 Agent 在可用教程列表中直接看到Agent 通过 MCP 工具按需拉取全文load_tutorial工具第 84-107 行根据name参数拼出{name}.md并在内嵌目录中查找命中后以ContentBlock::Text返回并打上audience: [Assistant]注解——表示内容主要供模型消费而非原样展示给用户。找不到时返回Could not locate tutorial {name}错误服务器 instructions 中还写死了一条与游戏教程直接相关的行为约束第 42-58 行执行教程时先给说明再执行命令——在运行启动游戏的命令之前先让用户知道将会发生什么并且一次不要连发太多工具调用要保持互动。TutorialServer是四个内置扩展之一与autovisualiser、computercontroller、memory一起注册在 goose-mcp/src/lib.rs 的BUILTIN_EXTENSIONS表中CLI 侧在 cli.rs 中由McpCommand::Tutorial分支启动serve(TutorialServer::new())。官方文档 tutorial-mcp.md 确认了first-game是内置的两个可用教程之一另一个是build-mcp-extension。测试用例mod.rs的#[cfg(test)]部分验证了上述行为的边界可用清单非空、load_tutorial成功时内容带Assistant受众注解、不存在时错误信息包含Could not locate tutorial。启用方式来自 tutorial-mcp.md在 goose CLI 中运行goose configure选择Toggle Extensions勾选tutorial桌面端则在扩展安装入口启用 Tutorial 扩展。启用后可以直接对 goose 说 Can you walk me through the first-game tutorial?Agent 便会调用load_tutorial拉取这份脚本并进入教学流程。二、初始讨论先定游戏与栈再动手写代码教程脚本的第一步不是写代码而是摸清用户背景共三层问题1. 编程经验是否完全零基础是否熟悉某种特定语言是否做过游戏开发2. 游戏偏好默认推荐 Flappy Bird同时给出三个替代方案各自侧重的技术点不同游戏核心技术点Flappy Bird默认物理模拟与碰撞检测Snake网格移动与生长机制Pong双人交互与球的物理Breakout碰撞与计分机制如果用户已有明确想法教程要求尊重其选择并帮助用户理解所选游戏的复杂度必要时降级调整。3. 技术栈选择默认Python Pygame对新手友好、跨平台备选JavaScript CanvasWeb 端运行、便于分享Lua LÖVE轻量、适合学习C# MonoGame适合 Windows 用户或想过渡到 Unity 的人。选栈时要权衡四个因素目标系统上的安装复杂度、学习曲线、可获得的资料数量、用户未来的编程方向。三、环境搭建venv 隔离依赖 git 版本控制教程脚本给出的环境搭建顺序是版本控制 → 语言 → 依赖管理 → 游戏框架四步走完才算就绪。1. 版本控制安装并配置 git对新手解释基本概念创建初始仓库。2. 编程语言按所选语言走安装流程验证安装是否成功报错时协助排查并演示如何在环境中运行代码。3. 依赖管理解释为什么需要依赖隔离后给出 Python 的标准做法教程原文命令python -m venv env source env/bin/activate # or env\Scripts\activate on Windows其他语言的等价隔离手段Node 用package.jsonRust 用Cargo.toml以此类推。4. 游戏框架安装并验证所选框架Pygame先写一个最小测试程序并确认能成功运行——这一步是后续一切工作的前置验证跑不通就停在这里排查避免在坏环境上堆业务代码。四、项目结构与游戏主循环教程脚本中的两个工程骨架项目结构部分要求先讨论再动手文件结构、代码组织、素材asset管理方式随后创建初始文件——主游戏文件、配置如需要、素材目录如需要最后为所选技术栈配置.gitignore完成首次提交并向用户解释提交策略。核心游戏循环部分是整个教程的技术内核拆成两块1. 窗口搭建创建游戏窗口搭起游戏循环典型的事件处理 → 更新状态 → 渲染主循环处理基础事件退出、重新开始。2. 游戏状态定义核心游戏对象如玩家、管道/障碍物、分数建立状态管理区分 update 与 draw——逻辑更新和画面绘制分离这是后续所有机制开发能保持可维护性的关键约束。到这一步屏幕上应该已经有一个能跑起来、能退出的空窗体教程意义上的最小可运行版本达成。五、机制开发、测试迭代与后续扩展教程把剩余实现切成三块渐进式推进1. 玩家交互输入处理 → 基础移动 → 实际玩一遍并调手感flappy 的跳跃高度、响应延迟这类参数。2. 核心机制随游戏类型变化主游戏元素、基础碰撞检测、分数记录。3. 渐进增强额外功能、打磨与精修、修 bug。测试与打磨从两个维度做可玩性测试核心机制、调整难度、精调操作手感代码质量找出重复代码、提出改进建议、向用户解释改进的收益。扩展与学习给出两条后续路径功能增强画面改进、音效、新玩法、菜单系统学习机会代码结构优化、性能优化、进阶特性、相关主题延伸阅读。六、Default Implementation 与 Agent 行为规范教程脚本末尾固化了默认实现路径当用户没有强烈偏好时Agent 直接引导走 Python Pygame Flappy Bird 复刻 virtualenv 管依赖 git 管版本的组合。脚本给出的理由是这套组合做到四个少/快安装复杂度最低、进度反馈快很快能看到东西在屏幕上动、下一步清晰、范围可控。同时脚本对 Agent 本身定了一组教学行为准则这也解释了为什么 tutorial 扩展的 instructions 要求保持互动根据用户理解程度调整节奏需要时给更详细的解释在合适的节点建议休息为小胜利和进展喝彩随时准备排查四类常见问题安装问题、框架特定报错、游戏逻辑 bug、性能问题频繁确认用户是否理解把新概念挂到用户已有知识上耐心 debug鼓励试验维持正向的学习氛围。七、把 first-game 跑起来的完整路径综合源码与文档完整流程是通过goose configure→Toggle Extensions启用tutorial扩展或桌面端启用 Tutorial对 goose 提出学习意图例如 walk me through the first-game tutorialgoose 调用load_tutorial参数name: first-game拿到这份 178 行教学脚本后按脚本与用户交互先聊经验与游戏偏好再按环境 → 结构 → 主循环 → 机制 → 迭代的顺序推进执行任何命令前都会先说明将要发生什么走默认路径时用户最终得到的是一个本地虚拟环境 git 仓库 可运行的 Pygame Flappy Bird。值得强调的是这份教程的设计取向它不预设用户水平初始讨论负责校准难度不一次性倾倒代码按 update/draw 分离、碰撞、计分逐块递进并且把教 Agent 怎么教人写进了脚本本身Notes for Agent 一节。这正是 Tutorial 扩展与静态文档的区别——教程内容的消费方是模型执行方是交互式会话而 first-game.md 与 tutorial/mod.rs 的组合保证了脚本、索引、加载、行为约束四者在同一 crate 内闭环可测。【免费下载链接】goosean open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM项目地址: https://gitcode.com/GitHub_Trending/goose3/goose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进