ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

用 Tauri 构建 coding-agent 驱动的桌面放置游戏实战

用 Tauri 构建 coding-agent 驱动的桌面放置游戏实战 之前在浏览 Show HN 的时候我刷到一个很有意思的项目An idle desktop incremental game driven by coding-agent。直译过来就是“一款由 coding-agent 驱动的桌面放置类增量游戏”。放置游戏大家应该都不陌生coding-agent 在最近两年也是热度很高的方向但把它们结合起来让 AI 智能体在游戏里真正执行编程任务、把产出转化为游戏资源玩家通过升级 agent 来加速整个循环这个组合确实比较少见。这篇文章不打算对原项目做逐行源码分析因为我也拿不到它的完整实现。更合适的切入方式是基于这个玩法创意重新设计一套最小可复现架构并给出完整的 TypeScript Tauri 示例代码。你可以把它当成一个“由 coding-agent 驱动的放置游戏”开发教程也可以当成一个桌面端集成 LLM Agent 的工程案例来读。读完之后你会掌握几个核心点放置游戏的资源与升级模型怎么设计、coding-agent 在游戏引擎里如何抽象和接入、怎么用 Mock 模式先跑通玩法、再切换到真实模型接口最后如何用 Tauri 封装成桌面应用。1. 背景放置游戏与 coding-agent 的组合1.1 放置游戏的核心循环放置游戏英文通常叫 idle game 或 incremental game核心特征是“玩家即使不操作游戏也会自动产出资源”。最有名的例子是 Cookie Clicker玩家点击饼干获取饼干再用饼干购买自动生产饼干的设施随着设施越来越多饼干产量指数增长再解锁更多玩法。这类游戏的底层循环其实非常固定资源自动产出。玩家消耗资源购买升级。升级提高资源产出效率。解锁新内容进入下一阶段。这个循环的关键是“自动产出”。传统放置游戏里产出资源的是一个个虚拟工人或虚拟设施它们只是一个数值计算器每秒钟给你加多少金币、多少经验背后没有真实世界的事情发生。1.2 coding-agent 能做什么coding-agent 是指能够自主完成编程任务的 AI 软件代理。它通常由一个或多个大语言模型驱动配合工具调用能力可以读取项目代码、新建文件、修改代码、执行命令、运行测试然后根据运行结果自我修正直到任务完成。目前常见的 coding-agent 形态包括命令行式 Agent例如 OpenAI Codex CLI、OpenHands 等。IDE 插件式 Agent例如 Cline、GitHub Copilot Workspace 等。云端任务式 Agent把任务提交给后台Agent 在沙箱环境里自动完成。它们的共同点是把一个自然语言任务描述作为输入Agent 自主执行并返回结果。这些任务可以很具体比如“给登录模块补充单元测试”“修复 Issue #42 的内存泄漏”“重构订单模块的重复代码”。1.3 这个项目创意解决什么问题如果把 coding-agent 放进放置游戏里游戏循环就变成了这样Agent 自动接任务、执行任务。任务完成后返回结果比如新增代码行数、修复 bug 数量、生成文档页数。游戏把结果换算成资源比如 credits、代码行数、commit 次数。玩家用资源升级 Agent 的速度、能力和并行槽位。这个设计的妙处在于传统放置游戏的“虚拟工人”是没有真实产出的而这个项目的 Agent 是在“真实干活”。它每次执行任务的结果都不同可能是写代码、改 bug也可能是写文档。玩家管理的不是一个数值模拟器而是一个真正在工作的 AI 软件团队。从技术角度看这个项目也适合作为 coding-agent 的可视化 DemoAgent 的能力边界、任务耗时、输出质量都能通过游戏界面直观展示出来。2. 整体架构设计2.1 模块划分我把这个游戏拆成四个核心模块这也是最简单的分层方式模块职责技术选型示例UI 层展示资源、任务、升级按钮和任务日志React TypeScript游戏引擎层管理状态、任务分发、奖励结算、升级逻辑纯 TypeScript 类Agent 适配层定义统一接口提供模拟 Agent 和真实 AgentTypeScript 接口 实现类桌面壳打包成桌面应用提供本地窗口和权限控制Tauri 2UI 层和游戏引擎层分离很重要。引擎不应该关心你用的是 React、Vue 还是命令行它只负责状态更新。Agent 适配层也必须用接口定义否则后面想切换模型提供商时改动会非常大。2.2 游戏循环从任务到资源整个游戏的主循环可以用一张流程图说明--------------------- 生成任务 --------------------- | 任务系统 | ---------- | coding-agent | | 配置难度 / 奖励 | | Mock 或真实模型 | --------------------- --------------------- ^ | | 奖励结算对应资源 | 返回结果 | v --------------------- --------------------- | 游戏状态 / 资源 | ---------- | 结果解析与校验 | | 升级 / 日志 | --------------------- ---------------------引擎每经过一个 tick就会检查是否有空闲的 Agent 并行槽。如果有就从任务队列里取出一个任务交给 Agent 执行。Agent 返回结果后引擎解析结果、校验字段再根据任务难度和 Agent 等级发放资源。这个循环和经典放置游戏的“生产-升级-再生产”模型一致只是把生产函数从“每秒 N 金币”变成了“Agent 完成任务 不定量资源”。2.3 为什么用桌面端承载 agent 玩法这个项目选择桌面端是合理的原因有三个第一真实的 coding-agent 需要读写本地文件、执行命令桌面应用天然有文件系统和进程权限比纯网页端更容易做安全边界控制。第二Agent 执行任务是一个异步、耗时的过程桌面应用可以长时间驻留后台比较符合放置游戏的“挂机”体验。第三Tauri 这类桌面框架可以把前端资源打包成体积很小的应用同时用 Rust 提供高性能的后端能力未来如果想在 Rust 侧直接执行 Agent 生成的代码也有很好的扩展空间。3. 环境准备与项目初始化3.1 需要准备的环境本文示例以常见环境为准版本可以根据你的项目实际情况调整Node.js 18 以上npm 或 pnpm 均可。Rust 工具链仅 Tauri 桌面打包需要CLI 演示不需要。可选OpenAI 兼容接口的 API Key或者本地 Ollama 服务。可选VS Code 或其他 TypeScript IDE。如果你暂时没有 API Key也不要紧代码里内置了 MockAgent可以模拟 Agent 的执行结果先用它跑通整个游戏循环。3.2 初始化 Tauri React 项目最简单的初始化方式是用 create-tauri-app 官方
返回列表