agilebot-nlu-control
SKILL.md
Agilebot 自然语言控制
概述
让用户用自然语言控制机器人:自动连接指定 IP,生成临时代码并执行,结果回传给客户端。
执行原理(必须遵循)
- 解析用户指令,提取机器人 IP 与自然语言任务内容;缺失时先询问。
- 创建临时 Python 文件并写入执行脚本(放在系统临时目录)。
- 运行该脚本,捕获 stdout/stderr,直接回传给客户端。
- 脚本内流程:连接机器人 -> 生成代码 -> 自动审批 -> 执行代码 -> 输出结果。
自动执行规则
- 不向用户索要审批;若
needs_approval=True,直接调用approve()。 - 任一步骤返回非 OK 状态时立即输出错误并停止后续动作。
- 仅在用户明确要求时才输出生成的代码内容。
脚本工具
scripts/find_python.py:使用系统 Python 执行,用于查找并输出解释器路径(从家目录 conda env 下任意 Python 中选择)。- 前提:用户保证 PATH 中的系统 Python 可用。
scripts/nlu_run.py:使用find_python.py输出的解释器执行。- 用法:
<python_bin> scripts/nlu_run.py [--controller-ip <ip>] <natural_language...> [--print-code] [--timeout SECONDS] --print-code仅输出生成代码后再执行。- 若未指定 IP,默认使用
10.27.1.254。
临时脚本模板(Python)
import sys
from Agilebot.IR.A.arm import Arm
from Agilebot.IR.A.status_code import StatusCodeEnum
def fail(message: str, code: int = 1) -> None:
print(message)
sys.exit(code)
if len(sys.argv) < 3:
fail("用法:script.py <controller_ip> <natural_language>")
controller_ip = sys.argv[1]
natural_language = sys.argv[2]
arm = Arm()
ret = arm.connect(arm_controller_ip=controller_ip)
if ret != StatusCodeEnum.OK:
fail(ret.errmsg, 2)
generated, ret = arm.nlu.execute(natural_language)
if ret != StatusCodeEnum.OK:
fail(ret.errmsg, 3)
if generated.needs_approval:
generated.approve()
result, ret = generated.execute_code()
if ret != StatusCodeEnum.OK:
fail(ret.errmsg, 4)
print(result)
参考
- 参见
references/nlu_control.md了解 API 细节与返回值。
Weekly Installs
3
Source
dev.sh-agilebot.comFirst Seen
6 days ago
Installed on
amp3
cline3
opencode3
cursor3
kimi-cli3
codex3