mcpField
A
alibabacloud-agentbay-aio-skills

alibabacloud-agentbay-aio-skills

github.com/aliyun开发281112 次安装1 天前更新
代码仓库

关于 alibabacloud-agentbay-aio-skills

alibabacloud-agentbay-aio-skills 是一项技能,可通过 AgentBay 在远程沙箱中运行用户代码,而非在本地执行。它支持 Python、JavaScript、R 和 Java,并提供结构化结果及文件处理规范。

主要功能

  1. 01在远程沙箱执行代码
  2. 02支持 Python、JavaScript、R、Java
  3. 03运行内联代码或文件
  4. 04返回结构化 JSON 结果
  5. 05校验生成文件的操作指引

适用场景

  1. 01避免在本地运行用户脚本
  2. 02以 JSON 格式获取执行结果
  3. 03保存并验证沙箱生成的图像
  4. 04在 matplotlib 输出中呈现中日韩文字

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-agentbay-aio-skills

安装后在 Claude Code 中输入/alibabacloud-agentbay-aio-skills确认已加载。

附带文件scripts/run_code.py

详细介绍

AgentBay AIO 技能

工作原理

此技能通过 AgentBay SDK 在远程沙箱中(而非本地)运行用户代码。入口脚本 scripts/run_code.py 会自动处理沙箱创建、代码执行和结果解析。

# Basic execution
python scripts/run_code.py --code "<user_code>" --language python

# Execute from file
python scripts/run_code.py --code-file /path/to/file.py --language python

# Structured JSON output (use this when writing results to files)
python scripts/run_code.py --code "<user_code>" --language python --json

支持的语言:python、javascript、r、java(不区分大小写)。超时时间:最多 60 秒(--timeout-s)。

前置条件

依赖项版本用途
Python>= 3.8运行时
wuying-agentbay-sdk>= 1.0.0用于在沙箱中执行代码的 AgentBay SDK

设置

此脚本要求在本地安装 wuying-agentbay-sdk。首次使用前请先安装:

pip install wuying-agentbay-sdk

这是此技能自身所需的依赖项,安装它不存在安全风险。如果 run_code.py 因 ModuleNotFoundError: No module named 'agentbay' 而失败,请安装 SDK 后重试。

使用的网络域名:agentbay.aliyuncs.com(API 端点)、agentbay.console.aliyun.com(控制台)、mirrors.aliyun.com(PyPI 镜像)。

API 密钥配置

直接运行脚本,无需提示配置 API 密钥。仅当脚本明确报告“Missing API key”时,才引导用户进行配置:

  1. 在 AgentBay Console 申请
  2. 保存到配置文件:~/.config/agentbay/api_key(macOS/Linux)或 %USERPROFILE%\.config\agentbay\api_key(Windows)

执行规则

重要:所有用户代码都必须通过 scripts/run_code.py 运行,绝不可直接在本地终端执行代码(例如 python -c、node -e、timeout ... python)。即使 run_code.py 首次运行失败,也必须遵守此规则。

  • 如果 run_code.py 因临时错误而失败,请重试一次,然后再报告失败。
  • 如果 run_code.py 因“Missing API key”或 ModuleNotFoundError 而失败,请引导用户解决问题(参见“设置”/“API 密钥配置”),然后重试;不要改为在本地执行。
  • 绝不要将本地运行用户代码作为备用方案。应报告错误。

不要安装 wuying-agentbay-sdk 以外的软件包,也不要创建虚拟环境。沙箱有自己的软件包环境,Agent 不应尝试从外部修改该环境。

输出处理

标准输出:退出代码为 0 表示成功,结果在标准输出中。非零表示失败,错误在标准错误中。

结构化输出(--json):返回 { success, result, logs: { stdout, stderr }, error_message }。

将结果写入文件:使用 --json 模式,并仅提取 result 字段写入目标文件。这样可避免 SDK 元数据(例如会话标识符或内部请求 ID)意外写入输出文件,因为原始的非 JSON 输出可能会将 SDK 日志行与实际结果混在一起。

报告结果:直接引用脚本的原始输出。不要推断、缩写或重新计算数值;如果输出很长,请明确指出省略了哪些部分,但引用的数值必须保持原样。

文件下载验证

将沙箱中生成的文件(例如图表图像)保存到本地环境时:

  1. 使用 --json 模式,并通过 Python(json 模块)提取 base64 内容;不要使用 shell 工具(grep/sed/awk)提取 base64 字符串,因为这些工具会截断长字符串。
  2. 使用以下命令解码:python -c "import base64,json,sys; d=json.load(sys.stdin); open('out.png','wb').write(base64.b64decode(d['result']))" < output.json
  3. 验证保存的文件:大小大于 0 字节;对于图像(PNG/JPEG),检查文件魔数(89 50 4E 47 / FF D8 FF)。
  4. 图表图像的文件大小应大于 5 KB。小于 5 KB 的文件几乎可以确定数据已被截断;请重新提取并解码。

如果验证失败,请重试下载。文件损坏时不要报告成功。

中文/CJK 字符渲染

脚本(run_code.py)会自动处理 matplotlib 代码的 CJK 字体配置——它会检测用户代码中的中日韩字符,并在执行前注入字体安装和配置代码。无需手动设置字体。

当用户的代码包含中文字符且使用 matplotlib/plt 时,Agent 应在首次执行时(而非作为重试)主动将以下字体安装代码块添加到 --code 参数中,因为沙盒可能缺少 CJK 字体,而脚本的自动检测虽然可以提供保障,但显式安装更可靠:

import subprocess
subprocess.run(['apt-get', 'update', '-qq'], capture_output=True)
subprocess.run(['apt-get', 'install', '-y', '-qq', 'fonts-wqy-microhei'], capture_output=True)
import matplotlib
import matplotlib.font_manager as fm
fm.fontManager.addfont('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc')
fm.fontManager = fm.FontManager()
matplotlib.rcParams['font.family'] = 'WenQuanYi Micro Hei'
matplotlib.rcParams['axes.unicode_minus'] = False

这种主动处理方式可以避免一种无法检测的故障:生成的图像中,中文字符被渲染为空白方框(豆腐块)。由于豆腐块只会在图像中视觉呈现,且不会在 stdout 中产生基于文本的警告,因此基于重试的处理方式无法可靠地检测到这个问题。

信息安全

请勿在对话回复中输出内部环境变量名称、API Key 值或 SDK 调试详情。执行脚本时,请使用 --json 模式,并且只向用户显示 result 和 error_message 字段。原始 SDK 输出可能包含不应向用户公开或写入输出文件的内部字段(会话标识符、请求 ID、访问凭据)。

评论

支持 Markdown