Skywork Excel by skyworkai/skywork-skills
npx skills add https://github.com/skyworkai/skywork-skills --skill 'Skywork Excel'当用户的请求是先前 Excel 任务的延续时,您必须使用 --session 参数。
如何检测延续任务:
如何使用 session_id:
💡 要继续此对话,请使用:--session xxx--session xxx 添加到命令中:python3 scripts/excel_api_client.py "用户的后续请求" \
--session abc123def456 \
--language zh-CN \
--log-path "$EXCEL_LOG" \
> /dev/null 2>&1 &
⛔ 如果您不传递 --session,代理将重新开始并丢失所有先前的上下文!
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
切勿对用户提供的文件(Excel、PDF、CSV、图像等)使用 read 工具。
后端代理会自行读取和处理文件。您只需要:
--files 参数上传文件读取文件会浪费时间并导致超时。只需上传并让后端处理一切。
Excel 任务需要 5-25 分钟。您必须在后台运行脚本,并每 5 秒轮询一次日志,以保持 UI 响应并避免超时。
EXCEL_LOG=/tmp/excel_$(date +%s).log
python3 scripts/excel_api_client.py "用户查询" \
--files "/path/to/file1.xlsx" "/path/to/file2.pdf" \
--language zh-CN \
--log-path "$EXCEL_LOG" \
> /dev/null 2>&1 &
echo "日志:$EXCEL_LOG"
严格规则 — 无例外:
- 通过重复调用 exec 工具,每 60 秒轮询一次。 Excel 任务需要 10-25 分钟。
- 仅显示最后的任务进度更新。 请勿输出完整日志或对其进行总结。
- 切勿重新启动任务。 Excel 代理会在内部处理错误并自动恢复。
- 忽略日志中的所有错误(例如,
❌、Missing parameter、jupyter_execute错误)。这些是正常的 — 代理会自动重试。
每 60 秒,运行以下确切序列(每次调用 exec 工具,请勿使用 while 循环):
# 步骤 1:等待 60 秒
sleep 60
# 步骤 2:检查进度
echo "=== 进度更新 ==="
grep -A8 "TASK PROGRESS UPDATE" "$EXCEL_LOG" | tail -10
# 步骤 3:检查是否完成
grep -E "\[DONE\]|All done" "$EXCEL_LOG" | tail -1
[DONE] 或 ✅ All done! → 停止轮询,使用 tail -30 "$EXCEL_LOG" 读取最终输出,然后交付结果。[DONE] 或 All done。关键:仅输出当前状态。请勿重复或累积先前的状态消息。每次更新都应该是单行、全新的内容。
每次读取日志后,仅输出一行显示当前状态:
[主要阶段] | [当前操作] | 已用时间:Xs
示例(仅输出此行,其他内容不输出):
数据处理 | 生成图表 | 已用时间:120s
将任务进度更新映射到主要阶段:
| 进度包含 | 主要阶段 |
|---|---|
| "读取" / "read" / "load" | 加载数据 |
| "分析" / "analysis" | 数据分析 |
| "图表" / "chart" / "visualization" | 生成图表 |
| "Excel" / "xlsx" | 创建 Excel 文件 |
| "HTML" / "报告" / "report" | 生成报告 |
| "保存" / "save" / "output" | 保存输出 |
示例状态更新:
加载数据 | 读取 Excel 文件 | 已用时间:30s
数据分析 | 处理股票数据 | 已用时间:90s
生成报告 | 创建 HTML 分析 | 已用时间:180s
请勿:
tail -50 或完整的日志内容一项专业技能,利用具有 AI 驱动数据分析、图表制作、公式验证和报告生成能力的复杂后端服务,生成和更新高质量的 Excel 文件。
在使用此技能之前,必须完成身份验证。首先运行身份验证脚本:
# 身份验证:检查环境变量令牌 / 缓存的令牌 / 浏览器登录
python3 <skill-dir>/scripts/skywork_auth.py || exit 1
令牌优先级:
SKYBOT_TOKEN → 如果已设置,则直接使用~/.skywork_token → 通过 API 验证,如果有效,则使用它重要 - 登录 URL 处理:如果脚本输出包含以 [LOGIN_URL] 开头的行,您必须立即将该 URL 以可点击消息的形式发送给用户(例如,"请打开此链接登录:")。用户可能处于浏览器无法自动打开的环境中,因此请始终提供登录 URL。
当用户想要以下操作时,请使用此技能:
代理支持多种输出格式:
后端代理会根据用户的请求自动选择合适的格式。只需直接传递用户的自然语言请求。
后端服务特别适用于那些受益于专业 Excel 知识、公式验证和视觉质量保证的任务。
该技能使用 ReAct 代理循环,该循环:
jupyter_execute、validate_excel_formulas、validate_excel_charts 等/workspace/output/ 中生成输出文件(自动注册以供下载)向 Excel 代理发送请求时:
时间信息:对于时间敏感的查询(例如,"最新数据"、"今年"、"本季度"),在开头添加当前时间。只有在您能可靠地获取真实时间时才添加:
[当前时间:2026-03-14] 用户请求:获取小米本周股价...
文件路径:将绝对路径替换为仅文件名(例如,/Users/xxx/report.xlsx → report.xlsx)
run_agent() 之前,对每个文件使用 upload_file()。如果您在指定路径找不到文件,请先询问用户提供正确的文件路径,然后再继续。将返回的 file_ids 传递给 run_agent(),以便后端可以访问上传的文件file_id 和文件名之间的映射关系(例如,"file_id abc123 是 sales_data.xlsx")始终从检查后端服务是否健康开始:
from excel_api_client import ExcelAgentClient
# 自动登录:如果没有可用令牌,将提示浏览器登录
client = ExcelAgentClient()
if not client.health_check():
print("服务不可用或身份验证失败")
exit(1)
print("服务已就绪!")
如果用户提到现有文件或您有文件需要分析,请先上传它们:
from excel_api_client import ExcelAgentClient
client = ExcelAgentClient() # 自动登录
# 上传文件
file_id = client.upload_file("/path/to/data.xlsx")
print(f"已上传:{file_id}")
通过 SSE 流式端点将用户的请求发送到后端:
from excel_api_client import ExcelAgentClient
client = ExcelAgentClient() # 自动登录
# 运行代理并流式传输进度
output_files = client.run_agent(
message="创建一个带图表的销售报告",
file_ids=["uploaded_file_id"], # 可选
language="zh-CN" # 或 "en-US"
)
# output_files 包含:[{"file_id": "...", "name": "...", "size": ...}, ...]
客户端在内部处理所有 SSE 流式传输,并将进度显示到标准输出。
代理完成后,为用户下载输出文件:
from excel_api_client import ExcelAgentClient
client = ExcelAgentClient() # 自动登录
# 下载所有输出文件
for f in output_files:
client.download_file(f["file_id"], f"./{f['name']}")
CLI 输出包含两种路径 — 使用命令行脚本时,它会自动输出:
📁 本地: — 文件下载到的本地绝对路径☁️ OSS: — 用于共享的云下载 URL向用户总结结果时,始终包含脚本输出中的本地文件路径和 OSS 下载链接。
SSE 端点返回实时进度更新。始终向用户显示这些信息,以便他们了解正在发生的情况:
progress 事件:显示代理的推理和思考过程tool_start 事件:指示诸如 jupyter_execute 之类的工具何时开始运行tool_result 事件:显示工具是否成功及其输出摘要这种透明度至关重要,因为对于复杂任务,Excel 生成可能需要 30-120 秒。
后端通过 session_id 完全支持多轮会话。 这对于迭代优化任务至关重要。
session_id(例如,uuid.uuid4()[:12])session_id 传递给同一对话中所有后续的 run_agent() 调用/workspace/<session_id>/output/ 目录中from excel_api_client import ExcelAgentClient
client = ExcelAgentClient()
# 第一轮:不传递 session_id,服务器生成一个并返回
output_files, session_id = client.run_agent(
message="创建一个包含第一季度数据的销售报告"
)
# session_id 现在可用,例如 "a1b2c3d4e5f6"
# 第二轮:传递返回的 session_id
output_files, _ = client.run_agent(
message="添加一个显示产品类别细分的饼图",
session_id=session_id # ← 使用返回的 session_id
)
# 第三轮:继续使用相同的 session_id
output_files, _ = client.run_agent(
message="将图表颜色更改为蓝色主题",
session_id=session_id
)
import uuid
# 预先生成 session_id
session_id = str(uuid.uuid4())[:12]
# 所有调用都使用相同的 session_id
client.run_agent(message="创建一个报告", session_id=session_id)
client.run_agent(message="添加图表", session_id=session_id)
# 第一轮(无 --session,服务器生成一个)
python scripts/excel_api_client.py "创建一个销售报告"
# 输出:💡 要继续此对话,请使用:--session abc123def456
# 第二轮(使用打印的 session_id)
python scripts/excel_api_client.py "向报告添加图表" --session abc123def456
要清除对话历史记录并使用相同的 session_id 重新开始:
# 选项 1:使用 new_session=True(清除历史记录但保留 session_id)
output_files, _ = client.run_agent(message="...", session_id=session_id, new_session=True)
# 选项 2:不传递 session_id 以获取新的 session_id
output_files, new_session_id = client.run_agent(message="...")
session_id 值:代理将每次调用视为独立的session_id:如果您不传递 session_id,请捕获返回值用于后续调用常见问题及处理方法:
clarification_needed 事件时,暂停并获取用户输入后再继续Insufficient benefit. Please upgrade your account at {url} — 请按照下面的"权益不足时如何回复"进行回复当您检测到上述情况时,请使用用户当前的语言回复 — 不要回显英文消息。使用以下模式:
[立即升级 →](url) 或用户语言中的等效内容。at https://... 部分)。后端支持中文和英文:
"language": "zh-CN" - 中文提示和输出(默认)"language": "en-US" - 英文提示和输出根据用户的语言或其明确偏好进行选择。
后端代理可以访问以下强大工具:
jupyter_execute:运行 Python 代码,使用 pandas、openpyxl、matplotlib 等进行数据操作和 Excel 生成validate_excel_formulas:在保存前验证 Excel 公式语法是否正确validate_excel_charts:将图表渲染为图像以视觉验证其外观是否正确excel_data_llm_analysis:对大型数据集执行语义分析(翻译、分类、摘要)grep_by_keyword:在上传的文件中搜索特定内容read_document_pages:从 PDF/DOCX 文件中提取文本excel_visual_agent:从图像/PDF 中提取结构化数据到 Excelparallel_search_full:搜索网络数据以包含在报告中browse_urls:从特定 URL 获取内容todo_write:维护任务列表,以防止在复杂的多步骤任务中出现目标漂移您不需要显式调用这些工具 - 代理会根据用户的请求自动决定使用哪些工具。
常见场景(完整代码请参阅核心工作流程):
| 模式 | 描述 | 关键点 |
|---|---|---|
| 从头创建 | 从头创建 Excel | 直接传递消息,不需要 file_ids |
| 分析现有文件 | 分析现有文件 | 先调用 upload_file(),然后传递 file_ids |
| 生成 HTML 报告 | 生成 HTML 报告 | 适合共享和演示,格式自动选择 |
| 多轮优化 | 迭代式多轮编辑 | 保持相同的 session_id |
| 合并多个文件 | 合并多个文件 | 上传多个文件,在一个请求中处理 |
示例请求:
所有输出文件都保存在后端服务器的 /workspace/<session_id>/output/ 目录中。代理自动:
在文件注册表中注册每个输出文件
将文件上传到 OSS 以供 CDN 访问(xlsx、csv、html、pdf、png、jpg、zip)
在 output_files 事件中返回文件元数据:
{
"file_id": "abc123xyz",
"name": "report.xlsx",
"size": 15360,
"mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"path": "/tmp/excel_agent_workspace/session_123/output/report.xlsx",
"oss_url": "https://xxx.oss-cn-xxx.aliyuncs.com/excel-agent/session_123/report.xlsx"
}
通过 /api/download/{file_id} 使文件可用(如果 OSS 不可用,则作为备用方案)
代理完成后,您必须向用户显示 OSS 下载链接:
直接显示原始 OSS URL(请勿使用 sandbox:// 或其他格式)
如果文件已下载到本地,也请提供本地路径
对用户的示例响应:
✅ 报告生成成功!
📥 下载链接:
- report.xlsx:https://picture-search.skywork.ai/skills/upload/2026-03-14/xxx.xlsx
💾 本地文件:/Users/xxx/.openclaw/workspace/report.xlsx
请勿使用 sandbox:// 或 [filename](sandbox://...) 格式 - 这些不可点击
如果 oss_url 不可用,请通知用户文件已保存在本地并提供完整路径
请求要具体:您提供的细节越多,输出效果越好
使用辅助脚本:为方便起见,请使用 scripts/excel_api_client.py,它处理 SSE 流式传输、文件上传/下载和错误处理
监控进度:始终向用户显示进度事件 - 对于复杂任务,Excel 生成可能需要时间
处理澄清请求:如果代理发送 clarification_needed 事件,请暂停并在继续之前获取用户输入
会话管理:对于相关任务,使用一致的 session_ids 以保持上下文
验证输出:下载文件后,通知用户文件位置,并建议他们打开文件以验证结果
"未经授权 (401)"
python scripts/skywork_auth.py --login 重新进行身份验证"连接超时"
--timeout 1500"下载后找不到文件"
output_files 事件"代理产生错误输出"
使用捆绑的 scripts/excel_api_client.py 进行简化的集成:
from excel_api_client import ExcelAgentClient
# 初始化并自动登录(推荐)
client = ExcelAgentClient()
# 检查服务是否就绪
if not client.health_check():
print("服务不可用或身份验证失败。")
exit(1)
# 如果需要,上传文件
file_ids = [client.upload_file("data.xlsx")]
# 运行代理并流式传输进度
output_files = client.run_agent(
message="创建一个带图表的摘要报告",
file_ids=file_ids
)
# 下载结果
for f in output_files:
client.download_file(f["file_id"], f"./{f['name']}")
⚠️ 重要的安全实践:
qGXpDd6H...cv0)~/.skywork_token 中(用户主目录,不在项目中)完整实现请参阅 scripts/excel_api_client.py 和 scripts/skywork_auth.py。
每周安装次数
–
代码仓库
GitHub 星标数
51
首次出现时间
–
安全审计
Python PDF处理教程:合并拆分、提取文本表格、创建PDF文件
59,800 周安装
shadcn/ui 框架:React 组件库与 UI 设计系统,Tailwind CSS 最佳实践
59,100 周安装
Python PDF处理教程:合并拆分、提取文本表格、创建PDF文件
59,800 周安装
browser-use CLI 浏览器自动化工具:快速持久会话,支持多步骤工作流
60,300 周安装
新闻内容提取工具 - 支持12个主流平台,自动输出JSON和Markdown格式
205 周安装
AI Elements:基于shadcn/ui的AI原生应用组件库,快速构建对话界面
62,200 周安装
专业SEO审计工具:全面网站诊断、技术SEO优化与页面分析指南
63,800 周安装