ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

超详细的Unity小白的 ML-Agents(Release 22)学习记录1:创建新学习环境并配 TaoToken 统一 Key

超详细的Unity小白的 ML-Agents(Release 22)学习记录1:创建新学习环境并配 TaoToken 统一 Key 1. 从零搭一个 RollerBall 训练场为什么还要配 TaoToken 统一 KeyUnity ML-Agents Release 22 是 Unity 官方机器学习框架的一个稳定版本它能让开发者在 Unity 编辑器里搭建强化学习环境用 C# 写 Agent 脚本再通过 Python 端的mlagents-learn命令驱动 PPO 等算法训练。适合谁刚接触强化学习、想用可视化方式理解「观察—动作—奖励」闭环的 Unity 开发者以及需要把 AI 工具链接入日常编码流程的人。但小白真正上手时会撞上两类问题。第一类是环境本身的坑Unity 版本必须和官方 Examples 对齐项目创建位置必须在克隆下来的ml-agents/Project/Assets/ML-Agents/Examples目录下否则包引用会大面积报错。第二类是工具链的坑训练脚本、代码补全、对话式调试往往要分别配置不同的 API Key 和端点切换一次就要改一次环境变量时间全耗在配置上。这篇记录解决的就是第二类问题。我会先带你把 RollerBall 学习环境建起来然后用 TaoToken 统一 Key 把 Cline、CC Switch 这类编码工具和模型对话入口收敛到一条 API 通道上最后给出验证 Key 生效、训练正常启动的具体动作。官网入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 不带多余参数。整篇的节奏是先建环境再配 Key再验证最后排障。你可以跟着一步步做代码和配置都能直接复制。2. 创建 RollerBall 学习环境Unity 版本与项目位置2.1 版本对齐是第一步官方 Examples 是在 Unity 2023.2.13f1 下建立的。我试过用 2023.2.13f1c1 打开目前没报错但版本号不一致时 Unity 会提示升级项目点确认后一般能跑。安装建议走 Unity Hub如果提示无法安装退出 Hub 后用管理员权限重新运行重复操作通常能成功。Windows 上把 Visual Studio 插件一起装上后面写 C# 脚本会有代码提示。2.2 项目必须建在 Examples 目录下这是最容易踩的坑。打开 Unity Hub新建 3D 项目时位置选到你的 ml-agents 克隆位置\ml-agents\Project\Assets\ML-Agents\Examples项目命名为RollerBall。如果你建在别的地方ML-Agents 和 ML-Agents Extensions 包的相对引用会断掉Inspector 里一堆组件报 missing。建好之后在Window Package Manager里确认ML Agents和ML Agents Extensions两个包都在没有的话点从本地磁盘安装路径指向你克隆的ml-agents/com.unity.ml-agents和com.unity.ml-agents.extensions。2.3 搭出基础场景在 Hierarchy 里依次创建右键 → 3D Object → Plane重命名Floor位置 (0,0,0)缩放 (1,1,1)右键 → 3D Object → Cube重命名Target位置 (3,0.5,3)缩放 (1,1,1)右键 → 3D Object → Sphere重命名RollerAgent位置 (0,0.5,0)缩放 (1,1,1)Add Component 加Rigidbody然后右键 → Create Empty重命名TrainingAreaTransform 右上角三点 → Reset确保 Position/Rotation/Scale 都是默认值。把 Floor、Target、RollerAgent 三个对象拖进 TrainingArea 下面形成父子结构。这一步是为了让后续重置回合时能整体管理。2.4 挂上 Agent 脚本选中RollerAgentAdd Component → 滑到底部 New Script命名RollerAgent点 Create and Add。脚本会出现在Assets下双击用 Visual Studio 打开。如果你在 Windows 上建议把 VS 主题改成深色长时间写代码眼睛舒服些。3. TaoToken 前置统一 Key 与 API 通道3.1 为什么要统一ML-Agents 训练本身不依赖外部 API但你在开发过程中会用到几类 AI 工具Cline 这类编辑器内的编码助手、CC Switch 这类模型切换工具、以及偶尔要开个对话窗口问模型「这个 reward 函数为什么收敛慢」。如果每个工具各配一套 Key改一次环境变量就要重启一次编辑器。TaoToken 的做法是提供一个统一的 API 端点你只维护一个 Key所有工具都指向同一个 base URL。3.2 拿到 Key 和端点登录后在控制台创建 API Key入口是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。Key 只在创建时完整显示一次复制下来存到安全的地方。API 端点是https://taotoken.net/api注意这个地址不带任何查询参数工具配置里填 base URL 时就用它。模型对话入口在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content Coding Plan 在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。3.3 环境变量方式最省事的做法是把 Key 写进系统环境变量工具会自动读取。Windows 上用 PowerShell[Environment]::SetEnvironmentVariable(TAOTOKEN_API_KEY, 你的Key, User) [Environment]::SetEnvironmentVariable(OPENAI_BASE_URL, https://taotoken.net/api, User)设置完要新开一个终端窗口才生效。macOS 或 Linux 写进~/.zshrc或~/.bashrcexport TAOTOKEN_API_KEY你的Key export OPENAI_BASE_URLhttps://taotoken.net/api这样 Cline 这类兼容 OpenAI 协议的工具就能直接读到。4. 可复制配置settings.json 与 config.toml 骨架4.1 Cline 的 settings.jsonCline 是 VS Code 里的编码助手配置存在用户目录下的settings.json。找到cline相关字段改成{ cline.apiProvider: openai, cline.openAiApiKey: 你的Key, cline.openAiBaseUrl: https://taotoken.net/api, cline.openAiModelId: claude-sonnet-4-20250514, cline.openAiModelInfo: { maxTokens: 8192, contextWindow: 200000, supportsImages: true } }openAiBaseUrl填 TaoToken 的 API 地址openAiModelId按你实际要用的模型填。Cline 走的是 OpenAI 兼容协议所以字段名是openAi开头但实际请求会打到 TaoToken 的端点。4.2 CC Switch 的 config.tomlCC Switch 用来在多个模型配置间切换配置文件是config.toml。骨架如下default_provider taotoken [providers.taotoken] name TaoToken base_url https://taotoken.net/api api_key 你的Key model claude-sonnet-4-20250514 max_tokens 8192 [providers.taotoken.headers] Content-Type application/json如果你要加第二个模型复制[providers.taotoken]整段改个名字和 model 字段即可base_url 和 api_key 保持不变。这就是统一 Key 的好处换模型不用换凭证。4.3 ML-Agents 训练配置训练配置和 API Key 无关但既然在同一个项目里顺手把rollerball_config.yaml建好。在ml-agents/config目录下新建文件behaviors: RollerBall: trainer_type: ppo hyperparameters: batch_size: 10 buffer_size: 100 learning_rate: 3.0e-4 beta: 5.0e-4 epsilon: 0.2 lambd: 0.99 num_epoch: 3 learning_rate_schedule: linear beta_schedule: constant epsilon_schedule: linear network_settings: normalize: false hidden_units: 128 num_layers: 2 reward_signals: extrinsic: gamma: 0.99 strength: 1.0 max_steps: 500000 time_horizon: 64 summary_freq: 10000注意 YAML 用空格缩进不要用 Tab否则mlagents-learn解析会报错。5. 验证请求与训练启动5.1 先验证 Key 生效在终端里用 curl 打一次模型对话接口确认 Key 和端点通curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer 你的Key \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 回复 ok}], max_tokens: 16 }返回 JSON 里choices[0].message.content有内容说明 Key 生效。如果返回 401检查 Key 有没有复制完整返回 404检查 base URL 是不是写成了带/v1的完整路径——TaoToken 的端点是https://taotoken.net/api具体路径由工具自己拼。5.2 启动训练回到 Unity 编辑器选中RollerAgent在 Behavior Parameters 里把Behavior Type设为DefaultInference Device设为CPU有的版本显示 Computer Shader。然后在终端激活 mlagents 的 Python 环境切到ml-agents目录运行mlagents-learn config/rollerball_config.yaml --run-idRollerBall看到终端输出Listening on port 5004之类的提示后点 Unity 编辑器的 Play 按钮。小球开始自己滚动、追方块终端开始刷 Step 和 Mean Reward就说明训练正常启动了。如果 run-id 被占用加--force覆盖mlagents-learn config/rollerball_config.yaml --run-idRollerBall --force5.3 用 TensorBoard 看曲线新开一个终端激活同一环境切到ml-agents目录tensorboard --logdir results浏览器打开localhost:6006点 SCALARS看Environment/Cumulative Reward曲线。Agent 最大奖励是 1.0曲线爬向 1.0 就说明策略在收敛。Mean Reward 接近 1 时可以 CtrlC 手动停不必等满 500000 步。6. 本篇常见错排查6.1 包引用报 missing现象是 Inspector 里 ML-Agents 组件显示 missing script。原因几乎都是项目没建在Examples目录下。解决方式是删掉项目重建位置严格按 2.2 节来。已经写了脚本的话把Assets下的脚本文件先拷出来重建后再拖回去。6.2 训练启动后小球不动先检查 Behavior Type 是不是还停在Heuristic Only。这个模式只接受键盘输入训练命令发的动作它不响应。改成Default再点 Play。另外确认 Inference Device 是 CPU 而不是 GPU部分版本 GPU 推理和训练会冲突。6.3 API 请求 401 或超时401 优先查 Key 有没有多余空格环境变量方式设置的要新开终端。超时的话检查网络能不能访问https://taotoken.net/api用 5.1 节的 curl 命令单独测一次。如果 curl 通但工具不通检查工具的 base URL 是不是被自动补了/v1有些工具会在你填的地址后面拼路径这时填https://taotoken.net/api即可不要手动加/v1。6.4 YAML 解析失败报错通常是yaml.scanner.ScannerError九成是缩进用了 Tab。用编辑器把 Tab 全部替换成两个空格重新保存。另外behaviors下面的RollerBall名字要和 Behavior Parameters 里的Behavior Name完全一致大小写敏感。6.5 TensorBoard 端口占用localhost:6006打不开且终端提示端口被占换端口启动tensorboard --logdir results --port6007然后浏览器开localhost:6007。7. 把 Key 和训练流程固定下来环境建好、Key 配好之后日常开发就顺了。写 C# 脚本时 Cline 用统一 Key 给补全建议训练卡住时开模型对话问一句 reward 设计不用再翻配置文件找 Key。模型对话入口在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 长期做编码和 Agent 开发的话 Coding Plan 在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 接入细节查文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。训练跑通后.onnx模型会存在results/RollerBall/RollerBall下拖进AssetsBehavior Parameters 的 Model 字段指过去Behavior Type 改Inference OnlyInference Device 改Default或 Burst再点 Play 就能看到训练好的小球自动追方块。这一步跑通说明从环境搭建到 Key 接入的整条链路都通了。
返回列表