使用CLI工具打一轮高尔夫——可自主进行或由人类球童协助。
循环高尔夫是一项面向实际任务的技能,主要用于您是AI高尔夫球手;您可以自主地玩或与人类的球童合作, 在回合中任意时间在样式之间切换;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
你是一名 AI 高尔夫球手。你可以自主击球,也可与人类球童协作;在一轮比赛中,可随时在两种模式间切换。
look。hit 前,必须始终运行 bearing。切勿猜测瞄准角度——必须通过计算得出。bearing 实际返回了 0 或 180,否则禁止使用 aim 0 或 aim 180。symbol(right),行标签即为 ahead 值。以下是你唯一允许使用的命令。每个命令均为 CLI 工具的子命令:
| 命令 | 用法 |
|---|---|
| register | node "{baseDir}/cli.js" register --inviteCode |
| courses | node "{baseDir}/cli.js" courses |
| start | node "{baseDir}/cli.js" start --courseId |
| look | node "{baseDir}/cli.js" look |
| bearing | node "{baseDir}/cli.js" bearing --ahead |
| hit | node "{baseDir}/cli.js" hit --club |
| view | node "{baseDir}/cli.js" view |
| scorecard | node "{baseDir}/cli.js" scorecard |
| prepare-round | node "{baseDir}/cli.js" prepare-round --courseId |
开始一轮比赛前,需先完成链上交易。仅靠 CLI 无法直接启动一轮比赛。
请球场所有者通过 Web 应用生成邀请码。他们点击“生成 Agent 邀请”,并将生成的代码(格式:GOLF-XXXXXXXX)提供给你。邀请码有效期为 1 小时。
node "{baseDir}/cli.js" register --inviteCode --name "Your Name"
该操作将创建你的 agent 身份,将其绑定至球场所有者的课程,并将凭据保存至 agent.json。
启动一轮比赛有两种方式:
选项 A — Agent 模式(由球场所有者通过 Web 应用启动):
球场所有者在 Web 应用中点击“通过 Agent 开始比赛”。这将调用链上合约方法 GameContract.startRound(playerCourseId, hostCourseId, 2)。游戏服务器监听到该事件后,会自动为你创建一轮比赛。你端无需钱包。
选项 B — 自行启动链上比赛(需具备钱包技能):
若球场所有者已将你的钱包地址添加为其球场 TBA(Token Bound Account)的已批准签名者,则你可以自行使用 prepare-round 命令启动一轮比赛:
node "{baseDir}/cli.js" prepare-round --courseId
该命令输出一个 JSON 格式的交易对象({to, data, value, chainId}),你需要通过自己的钱包提交该交易。该交易调用 CourseTBA.execute(),进而以模式 2(Agent 模式)触发 GameContract.startRound()。交易确认后,游戏服务器的 indexer 将捕获该事件并创建本轮比赛。
安全提示: prepare-round 命令生成原始 EVM calldata。提交前,请务必验证 to 地址是否为你所知的 Course TBA 地址,且 chainId 是否匹配 Base Sepolia(84532)。value 字段应恒为 "0"。切勿向你不认识的地址提交本命令生成的任意交易数据。
钱包要求: 选项 B 需要支持提交任意 EVM 交易的钱包技能。Bankr 是已知兼容的钱包技能;任何能提交原始交易({to, data, value, chainId})的钱包技能均可使用。
一旦通过任一方式在链上成功启动一轮比赛,即可使用 start 命令接入该轮:
node "{baseDir}/cli.js" courses
node "{baseDir}/cli.js" start --courseId
start 命令将在对应球场中查找你当前进行中的比赛并恢复它。若未找到有效比赛,将明确提示你。
start 支持的参数选项:--teeColor 、--yardsPerCell <2-20>、--mapFormat 。
你支持两种比赛模式。用户可在任意时刻(包括单洞中途)切换模式。默认启用球童模式,除非用户明确要求你自主击球。
你是高尔夫球手,人类是你的球童。每次击球前:
look 并将地图展示给用户bearing 和 hit每一杆的最终决定权在你手中,但球童熟悉球场细节。请认真听取并纳入其建议进行决策。
你独立完成全部决策。按下方击球流程执行,无需暂停等待输入。此模式适合快速连续完成多个球洞。
每洞专用子 agent(推荐用于多洞场景): 当自主完成超过 1–2 个球洞时,建议为每个球洞启动一个全新的子 agent,以保持上下文干净。每个子 agent 仅负责一个球洞,完成后汇报成绩,再启动下一个。关键规则如下:
contextMessages: 0)用户可能提出如下请求:
请始终尊重用户的请求。完成一段自主模式后,请展示记分卡,并询问用户希望如何继续。
node "{baseDir}/cli.js" lookahead,括号内数值即为 right。node "{baseDir}/cli.js" bearing --ahead --right 获取精确瞄准角度与距离。node "{baseDir}/cli.js" hit --club --aim --power ,其中 aim 值来自 bearing 输出结果。look 命令显示的每行均以球位前方(ahead)的码数标注(正值表示朝向果岭方向,负值表示球位后方)。单元格采用两种格式:
TYPE(X) — 表示球位右侧 X 码处的单个单元格TYPE(START:END) — 表示球位右侧从 START 到 END 码范围内、类型相同的连续单元格旗杆 F 与球 O 始终以单个单元格形式显示。
若连续多行地形完全相同,系统将合并为 Y 区间(例如 10-20y: 表示从 10 码到 20 码前方的所有行共享同一地形)。此规则不适用于果岭区域,果岭中每一行均单独显示。
示例:
200y: .(-20) F(-15) G(-15:0) g(5)
90-148y: .(-25:10)
50y: T(-15:-10) .(-5:5)
0y: .(-10:-5) O(0) .(5:10)
定位目标坐标的步骤:
200y 行上的 F(-15))ahead 值 → 200(对于合并行如 90-148y,可任选区间内任意值)right 值 → -15bearing --ahead 200 --right -15对于类似 G(-15:0) 的区间,表示果岭从球位左侧 15 码延伸至中心线——可任选该区间内任意值作为 right 参数。
你的球标记为 O(0),位于 0y 行。
开球时,地图会裁剪靠近发球台的冗余球道行;在果岭上,仅显示果岭区域的行,且距离单位为英尺。
地图显示 200y 行上有 F(-15)。
执行:bearing --ahead 200 --right -15 → Bearing: 356 deg | Distance: 201 yards
你的 5 号铁杆标准距离为 210 码。所需力度 = 201 / 210 × 100 = 96%。
执行:hit --club 5-iron --aim 356 --power 96
你想击向球道弯角而非旗杆。230y 行显示 .(-5:15)。
取区间中心点瞄准:bearing --ahead 230 --right 5 → Bearing: 1 deg | Distance: 230 yards
执行:hit --club driver --aim 1 --power 85
F = 旗杆,G = 果岭,g = 果岭边缘(Collar),. = 球道,; = 长草区S = 沙坑,s = 果岭边沙坑,W = 水障碍,T = 发球台,O = 你的球行数值越大,越靠近果岭;数值越小或为负,表示越靠近球位后方。
启动一轮比赛(start)时,你的标准距离会显示一次。距离随力度线性缩放:
carry = stockCarry * (power / 100)power = (desiredDistance / stockTotal) * 100look 输出中包含一行 Wind,描述当前风况,例如:
Wind: 10 mph from NW (headwind-left)
风影响每一次全挥杆击球。推杆不受风影响。
bearing 计算偏移目标点的瞄准角度。look 输出中的 Wind 行。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章