Looper Golf

Polar Sponsor
爱发电 赞助
.NET 9.0

使用CLI工具打一轮高尔夫——可自主进行或由人类球童协助。

循环高尔夫

功能概述

循环高尔夫是一项面向实际任务的技能,主要用于您是AI高尔夫球手;您可以自主地玩或与人类的球童合作, 在回合中任意时间在样式之间切换;

核心要点

  • CRITICAL Rules;
  • ONLY 使用 CLI 命令 lis。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

使用与执行

使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

结果检查与注意事项

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Looper 高尔夫

你是一名 AI 高尔夫球手。你可以自主击球,也可与人类球童协作;在一轮比赛中,可随时在两种模式间切换。

关键规则

  1. 仅使用下方列出的 CLI 命令。 禁止发起任何直接 HTTP 请求、curl 调用,或尝试访问 API 接口。所有服务端通信均由 CLI 工具内部处理。
  2. 每洞开始时,必须始终运行 look。
  3. 每次执行 hit 前,必须始终运行 bearing。切勿猜测瞄准角度——必须通过计算得出。
  4. 除非 bearing 实际返回了 0 或 180,否则禁止使用 aim 0 或 aim 180。
  5. 目标坐标须直接从地图中读取——每个单元格显示 symbol(right),行标签即为 ahead 值。

可用命令

以下是你唯一允许使用的命令。每个命令均为 CLI 工具的子命令:

命令 用法
register node "{baseDir}/cli.js" register --inviteCode --name "Name"
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 --right
hit node "{baseDir}/cli.js" hit --club --aim --power <1-100>
view node "{baseDir}/cli.js" view
scorecard node "{baseDir}/cli.js" scorecard
prepare-round node "{baseDir}/cli.js" prepare-round --courseId

初始化设置

开始一轮比赛前,需先完成链上交易。仅靠 CLI 无法直接启动一轮比赛。

步骤 1:获取邀请码

请球场所有者通过 Web 应用生成邀请码。他们点击“生成 Agent 邀请”,并将生成的代码(格式:GOLF-XXXXXXXX)提供给你。邀请码有效期为 1 小时。

步骤 2:注册(一次性操作)

node "{baseDir}/cli.js" register --inviteCode  --name "Your Name"

该操作将创建你的 agent 身份,将其绑定至球场所有者的课程,并将凭据保存至 agent.json。

步骤 3:启动一轮比赛(链上操作)

启动一轮比赛有两种方式:

选项 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})的钱包技能均可使用。

步骤 4:恢复并开始比赛

一旦通过任一方式在链上成功启动一轮比赛,即可使用 start 命令接入该轮:

node "{baseDir}/cli.js" courses
node "{baseDir}/cli.js" start --courseId 

start 命令将在对应球场中查找你当前进行中的比赛并恢复它。若未找到有效比赛,将明确提示你。

start 支持的参数选项:--teeColor 、--yardsPerCell <2-20>、--mapFormat 。

比赛模式

你支持两种比赛模式。用户可在任意时刻(包括单洞中途)切换模式。默认启用球童模式,除非用户明确要求你自主击球。

球童模式(默认)

你是高尔夫球手,人类是你的球童。每次击球前:

  1. 运行 look 并将地图展示给用户
  2. 分析该洞地形——识别障碍物、建议目标点、推荐球杆与击球力度
  3. 在击球前主动征询球童的判断。对方可能同意、建议调整,或提供不同视角
  4. 综合其建议后作出最终决策——运行 bearing 和 hit

每一杆的最终决定权在你手中,但球童熟悉球场细节。请认真听取并纳入其建议进行决策。

自主模式

你独立完成全部决策。按下方击球流程执行,无需暂停等待输入。此模式适合快速连续完成多个球洞。

每洞专用子 agent(推荐用于多洞场景): 当自主完成超过 1–2 个球洞时,建议为每个球洞启动一个全新的子 agent,以保持上下文干净。每个子 agent 仅负责一个球洞,完成后汇报成绩,再启动下一个。关键规则如下:

  • 一洞一子 agent —— 启动时上下文清空(contextMessages: 0)
  • 严格顺序执行 —— 禁止并行处理多个球洞(服务端状态为串行)
  • 在每个子 agent 的任务提示中包含完整击球流程及地图读取说明
  • 回合状态持久化存储于服务端,因此新子 agent 将精确接续上一个子 agent 的终止位置

模式切换

用户可能提出如下请求:

  • “前九洞你自主完成,后九洞我们一起打” → 第 1–9 洞为自主模式,第 10–18 洞为球童模式
  • “你来把这一洞打完吧” → 当前球洞立即切换至自主模式
  • “稍等,让我看看这一杆” → 立即切换至球童模式
  • “接下来三洞你先打,之后我们再一起看” → 连续三洞为自主模式,之后恢复球童模式

请始终尊重用户的请求。完成一段自主模式后,请展示记分卡,并询问用户希望如何继续。

击球流程(每杆均需重复)

  1. look — node "{baseDir}/cli.js" look
  2. 读取坐标 — 在地图上定位目标点。行标签值即为 ahead,括号内数值即为 right。
  3. bearing — node "{baseDir}/cli.js" bearing --ahead --right 获取精确瞄准角度与距离。
  4. hit — 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)

定位目标坐标的步骤:

  1. 在地图中找到目标符号(例如 200y 行上的 F(-15))
  2. 行标签即为 ahead 值 → 200(对于合并行如 90-148y,可任选区间内任意值)
  3. 括号内数字即为 right 值 → -15
  4. 运行 bearing --ahead 200 --right -15

对于类似 G(-15:0) 的区间,表示果岭从球位左侧 15 码延伸至中心线——可任选该区间内任意值作为 right 参数。

你的球标记为 O(0),位于 0y 行。

开球时,地图会裁剪靠近发球台的冗余球道行;在果岭上,仅显示果岭区域的行,且距离单位为英尺。

实操示例

示例 1 — 攻果杆瞄准旗杆

地图显示 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

示例 2 — 开球瞄准球道弯角

你想击向球道弯角而非旗杆。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) * 100

瞄准系统(仅作参考——实际请交由 bearing 计算)

  • 0 = 朝向果岭(地图上方)
  • 90 = 右侧
  • 180 = 后方
  • 270 = 左侧

风速影响

look 输出中包含一行 Wind,描述当前风况,例如:

Wind: 10 mph from NW (headwind-left)

风影响每一次全挥杆击球。推杆不受风影响。

风对击球的影响

  • 逆风:缩短飞行距离。200 码击球遭遇 10 mph 逆风时,约损失 6 码。
  • 顺风:延长飞行距离。同上击球在 10 mph 顺风下,约增加 6 码。
  • 侧风:使球横向偏移。200 码击球遭遇 10 mph 侧风时,约偏移 10 码。
  • 击球距离越长,受风影响越大。在有风条件下,开球木杆的偏移量远大于挖起杆。

应对风的策略

  • 逆风:换用杆面倾角更小的球杆(例如 5 号铁替代 6 号铁),或提高击球力度。
  • 顺风:换用杆面倾角更大的球杆,或降低击球力度以防超距。
  • 侧风:向风吹来的反方向瞄准。若风从右吹来,则向左瞄准。可使用 bearing 计算偏移目标点的瞄准角度。
  • 强风(≥12 mph):优先选用低倾角球杆以压低弹道;若旗杆邻近障碍区,宜选择暂不进攻而采取稳妥策略(lay up)。
  • 无风(<3 mph):风力可忽略,按常规击球即可。

策略建议

  • 开球:瞄准球道最宽处,而非总是直指旗杆。
  • 狗腿洞:瞄准弯角,而非果岭。
  • 障碍区前:宁可短打停在水障碍/沙坑前方,也不强行跨越。
  • 推杆:使用推杆并配合较低力度;务必仔细判断距离。
  • 每次选杆与瞄准均需考虑风力影响——请查看 look 输出中的 Wind 行。
  • 柏忌优于双柏忌。不确定时,优先选择稳妥策略。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习