Skill: ganhaiyang3/today-task-for-xiaoyi-claw (version 1.0.26)

--- name: today-task-for-xiaoyi-claw description: 小艺claw专用任务结果推送器，当任务完成后将结果推送到负一屏。使用统一的标准数据格式，支持各种类型的任务结果推送。 trigger: 当用户说"任务完成，推送到负一屏"、"推送任务结果"、"发送到负一屏"或任何任务完成后需要推送结果到负一屏的场景 config: optional: - timeout: "超时时间（秒），默认30" - max_content_length: "最大内容长度，默认5000" - auto_generate_id: "是否自动生成任务ID，默认true" - default_result: "默认任务结果，默认'任务已完成'" - log_level: "日志级别，默认'INFO'" - save_records: "是否保存推送记录，默认true" - records_dir: "记录目录，默认'push_records'" - max_records: "最大记录数，默认100" note: "推送URL已硬编码在代码中，无需配置" --- # Today Task ## 技能概述 这是一个通用的任务结果推送器，专门用于在任务完成后将结果推送到负一屏。使用统一的标准数据格式，支持各种类型的任务结果推送。 ## 🚀 使用方式 ### 执行任务推送（只支持 JSON 输入（确保格式完整）） ```bash # 1. 创建JSON文件 { "task_name": "任务名称", "task_content": "# Markdown内容", "task_result": "完成状态" } # 2. 推送 python scripts/task_push.py --data task.json ``` ### 快速创建工具 ```bash # 从markdown文件创建JSON python scripts/create_task_json.py "任务名称" content.md # 输出：已创建 任务名称_20260402.json ``` ### 为什么？ - ✅ JSON 确保 markdown 格式 100%保留 - ✅ 避免命令行编码和转义问题 - ✅ 使用更简单可靠 --- **注意**：不再支持`--name`、`--content`等命令行参数。 ### 第二步：查看推送结果 **推送成功时：** ``` ✅ 任务推送成功！ ``` **推送失败时：** ``` ❌ 任务推送失败！ {错误信息} ``` ### 关键要求： 1. **只使用 JSON 输入**：必须通过 JSON 文件推送，确保 markdown 格式完整保留 2. **简单直接**：专注于任务结果的格式化和推送 3. **易于使用**：提供简单的命令行接口 ## 🔧 实际配置要求 **重要**：本技能需要以下配置才能正常工作： ### 1. 凭证文件配置 技能需要读取本地凭证文件获取身份验证信息, 默认小艺claw已经设置好了，如果没有，则没有使用小艺claw： **Linux/Mac**: ```bash mkdir -p ~/.openclaw echo "PERSONAL-[REDACTED_SECRET]" > ~/.openclaw/.xiaoyienv echo "PERSONAL-UID=your_uid_here" >> ~/.openclaw/.xiaoyienv ``` **Windows**: ```powershell mkdir $env:USERPROFILE\.openclaw echo PERSONAL-[REDACTED_SECRET] > $env:USERPROFILE\.openclaw\.xiaoyienv echo PERSONAL-UID=your_uid_here >> $env:USERPROFILE\.openclaw\.xiaoyienv ``` ### 2. 实际端点 数据发送到硬编码的华为云端点： ``` https://celia-claw-drcn.ai.dbankcloud.cn/celia-claw/v1/rest-api/skill/execute ``` ### 3. 凭证 默认小艺claw已经设置好了，如果没有，则没有使用小艺claw。 ## ⚠️ 平台兼容性说明 **注意**：原始代码使用 Linux 路径格式，Windows 用户需要注意： - 代码查找路径：`/home/sandbox/.openclaw/.xiaoyienv` - 实际需要创建：`C:\Users\用户名\.openclaw\.xiaoyienv` - 可能需要创建符号链接或调整代码 ## 🔒 安全说明 **重要更新**：本技能需要本地凭证文件进行身份验证，与之前"云端自动获取"的声明不同。 本技能已通过安全审查，不包含恶意代码。所有网络请求发送到硬编码的华为云端点。 ### ⚠️ 重要安全提示 **本技能会传输以下数据到华为云端点：** 1. **任务内容 (task_content)**：您输入的任务文本内容 2. **任务元数据**：任务名称、ID、时间戳、执行结果等 3. **身份验证**：使用本地凭证文件中的 PERSONAL-API-KEY 和 PERSONAL-UID ### 🔐 安全特性 - **HTTPS 加密传输**：所有数据通过 TLS 加密传输 - **本地日志**：记录运行信息用于调试 - **硬编码端点**：数据发送到固定的华为云端点，无法配置 - **本地凭证存储**：身份验证信息从本地文件读取 详细安全声明请查看 [SECURITY.md](./SECURITY.md)。 ## ⚠️ 重要安全说明 ### 数据传输透明度 **使用本技能时，您的数据将被发送到配置的推送端点：** #### 1. 默认端点（如果使用默认配置） ``` https://celia-claw-drcn.ai.dbankcloud.cn/celia-claw/v1/sse-api/skill/execute ``` - **服务提供商**：华为云（Huawei Cloud） - **地理位置**：中国东莞（DRCN = Dongguan） - **数据传输**：通过 HTTPS 加密传输 #### 2. 传输的数据包括： - **任务内容** (`task_content`)：您输入的任务文本内容 - **任务元数据**：任务名称、ID、时间戳、执行结果等 #### 3. 隐私建议： - 避免在任务内容中包含高度敏感的个人信息 - 了解数据发送的目的地 - 可以配置自定义端点以控制数据流向 ### **配置说明**：推送URL已硬编码，无需配置** #### 本地配置文件 (config.json) 其他配置项在技能目录的 `config.json` 文件中设置： ```json { "timeout": 30, "max_content_length": 5000, "auto_generate_id": true, "default_result": "任务已完成", "log_level": "INFO", "save_records": true, "records_dir": "push_records", "max_records": 100, } ``` **注意**：如果缺少必需的身份验证或推送 URL 配置，技能将无法正常工作并会显示明确的错误信息。 ## 💾 数据存储说明 **本技能会在本地创建以下目录用于运行记录：** ### 📁 日志目录 (`logs/`) - **用途**：运行监控和故障排查 - **内容**：包含运行信息 - **控制**：通过 `log_level` 配置项控制详细程度 - **注意**：云端会自动获取身份验证，不再需要记录身份验证信息 ### 📁 推送记录目录 (`push_records/`) - **用途**：历史记录和审计追踪 - **内容**：任务推送响应数据 - **控制**： - 通过 `save_records` 配置项控制是否保存（默认：`true`） - 通过 `max_records` 配置项控制最大记录数（默认：`100`） - 通过 `records_dir` 配置项指定目录位置 ### 🔐 隐私保护措施 1. **用户完全控制**：可关闭记录保存功能 2. **本地存储**：所有文件仅存储在用户本地设备 3. **定期清理**：建议定期清理或通过配置限制文件数量 4. **注意**：云端会自动获取身份验证，不再需要处理身份验证相关的隐私问题 **用户责任**：请定期检查和管理这些本地文件，确保符合您的隐私要求。 ## 🎯 设计理念 - **统一格式**：使用标准化的数据格式，不区分任务类型 - **简单直接**：专注于任务结果的格式化和推送 - **灵活通用**：支持任何类型的任务结果 - **易于集成**：提供简单的 API 接口 ## 📋 触发条件 - "任务完成，推送到负一屏" - "推送任务结果" - "发送到负一屏" - 任何任务完成后需要推送结果到负一屏的场景 ## 🔄 工作流程 1. **任务完成**：其他技能或任务执行完成 2. **结果收集**：收集任务执行结果数据 3. **格式转换**：将任务结果转换为标准格式 4. **数据验证**：验证数据完整性和格式 5. **执行推送**：推送到负一屏系统 6. **结果反馈**：返回推送状态和记录 ## 📊 标准数据格式 **注意**：云端会自动获取身份验证，不再需要用户配置身份验证。 ### 推送数据格式 ```json { "msgContent": [ // MsgContent数组，消息内容 { "scheduleTaskId": "string", // 任务ID，必填，对于周期性任务此ID需要保持一致 "scheduleTaskName": "string", // 任务名称，必填，如"生成日报任务、生成新闻任务" "summary": "string", // 任务摘要，必填，说明具体是什么任务，以及任务的执行状态，比如 "生成新闻早报任务已完成"、"生成新闻早报任务异常" "result": "string", // 任务执行结果，必填，说明是已成功完成了，还是异常中断了 "content": "string", // 任务的执行结果具体内容，markdown格式的长文本数据，必填 "source": "string", // 来源，值为小艺 Claw，必填 "taskFinishTime": "number" // 任务完成的时间戳，秒的时间戳，必填 } ] } } ``` ## ⏰ 时间戳使用指南 ### 重要提醒 **避免使用错误的时间戳获取方式，这可能导致推送时间显示不正确！** #### ❌ 错误方式（不要使用） ```powershell # PowerShell 中的错误方式（可能产生时区问题） [int][double]::Parse((Get-Date -UFormat %s)) [int](Get-Date -UFormat %s) ``` #### ✅ 正确方式 ##### Python（本技能使用的方式） ```python import time timestamp = int(time.time()) # UTC 时间戳，推荐使用 ``` ##### PowerShell（其他脚本中使用） ````powershell # 正确！使用 UTC 时间，避免时区问题 $timestamp = [DateTimeOffset]::UtcNow.ToUnixTimeSeconds() ##### PowerShell需要设置控制台编码为UTF-8 ```powershell # 正确设置控制台编码为UTF-8 chcp 65001 ```` ##### 本技能的时间戳处理 本技能自动处理时间戳： - 使用 Python 的 `time.time()` 获取 UTC 时间戳 - 自动验证时间戳合理性 - 确保与负一屏服务时间一致 ### 时区说明 - **负一屏服务使用 UTC 时间戳** - 本地时间可能因时区设置不同而产生误差 - 始终使用 **UTC 时间** 避免时区问题 - 中国时区（UTC+8）的用户需要注意时间转换 ### 验证时间戳 如果你在其他脚本中集成本技能，请验证时间戳： ```python # 验证时间戳是否在合理范围内 import time def validate_timestamp(timestamp): min_valid = 1609459200 # 2021-01-01 max_valid = int(time.time()) + 31536000 # 当前时间 + 1年 return min_valid <= timestamp <= max_valid # 使用示例 current_ts = int(time.time()) if validate_timestamp(current_ts): print(f"时间戳有效: {current_ts}") else: print(f"时间戳可能有问题: {current_ts}") ``` ### 常见问题 1. **时间显示不对**：检查是否使用了本地时间而非 UTC 时间 2. **时间戳为 0 或负数**：时间戳获取方式错误 3. **时间差 8 小时**：中国时区（UTC+8）未正确转换 ### 最佳实践 1. **统一使用 UTC 时间**：所有时间戳都使用 UTC 2. **验证时间戳**：在关键操作前验证时间戳有效性 3. **记录时间源**：明确记录时间戳的来源和时区 4. **使用本技能的工具**：本技能已正确处理时间戳，无需额外处理 ## 内容格式规范 任务的执行结果具体内容使用 markdown 格式，遵循以下样式规范： 1. **主标题文本** - font size: Subtitle_L (Bold) = 18 - color: font_primary = #000000 90% - 行高：默认 2. **一级文本** - font size: Body_L (Bold) = 16 - color: font_primary = #000000 90% - 行高：22 3. **二级文本** - font size: Body_M (Bold) = 14 - color: font_primary = #000000 90% - 行高：22 4. **段落文本** - font size: Body_M (regular) = 14 - color: font_secondary = #000000 60% - 行高：22 5. **分割线** - 使用控件：Divider 6. **AI 生成注释文本** - font size: 10 medium - color: font_fourth #000000 20% - 行高：默认 ## 📁 输入要求 ### 任务结果数据格式 ```json { "task_id": "string", // 任务ID（必填） "task_name": "string", // 任务名称（必填） "task_result": "string", // 任务执行结果描述（必填） "task_content": "string", // 任务详细内容，markdown格式（必填） "schedule_task_id": "string", // 周期性任务ID（必填，非周期性任务时等于task_id） } ``` ### 简化输入格式 ```json // 格式1：完整格式 { "task_id": "news_20240327_1001", "task_name": "今日新闻汇总", "task_result": "任务已完成", "task_content": "# 今日新闻汇总\n\n## 热点新闻\n\n1. OpenAI发布新一代模型...", "schedule_task_id": "news_20240327_1001",} ``` ## 🛠️ 推送流程 1. **数据接收**：接收任务结果数据 2. **格式标准化**：转换为标准 pushData 格式 3. **数据验证**：验证必需字段 4. **身份验证处理**：使用配置的身份验证或数据中的身份验证 5. **推送执行**：调用负一屏 API 推送数据 6. **结果处理**：处理推送结果并保存记录 ## 📝 输出格式 ### 成功响应 ```json { "success": true, "message": "任务结果推送成功", "task_id": "news_20240327_1001", "task_name": "今日新闻汇总", "push_time": "2024-03-27 10:15:30", "record_id": "push_20240327_101530", "hiboard_response": { "code": "0000000000", "desc": "成功" } } ``` ### 错误响应 ```json { "success": false, "message": "错误描述", "task_id": "news_20240327_1001", "task_name": "今日新闻汇总", "error_type": "validation|format|network|system|auth|service", "push_time": "2024-03-27 10:15:30", "suggestion": "建议的解决方案" } ``` ## 🚨 错误码处理指南 系统提供了详细的错误码处理功能，当推送失败时会返回具体的错误信息和解决方案。 ### 常见错误码及解决方案 #### 1. 错误码: 0000900034 - 身份验证无效或未关联 **问题描述**: 云端授权验证失败 **解决方案**: 1. 检查网络连接是否正常 2. 确认负一屏服务状态 3. 如果问题持续，请联系技术支持 #### 2. 错误码: 0200100004 - 负一屏云推送服务异常 **问题描述**: 负一屏云推送到服务动态云有报错，需要检查返回的 desc 字段 ##### CP 错误码: 82600017 - 设备未联网或未登录华为账号 **解决方案**: 1. 检查设备 Wi-Fi 或移动数据是否已连接 2. 打开"设置"应用 3. 进入"华为账号"或"帐号中心" 4. 确保已登录华为账号 5. 如未登录，请使用华为账号登录 ##### CP 错误码: 82600013 - 服务动态推送开关已关闭 **解决方案**: 1. 进入手机负一屏 2. 点击头像进入负一屏二级页 3. 右上角打开设置，进入动态管理页面 4. 点击进入AI任务完成通知，打开对应的场景开关和服务提供方开关 ## 📁 文件结构 ``` push-task-to-negative-screen/ ├── SKILL.md # 技能定义 ├── README.md # 使用说明 ├── config.json # 配置文件示例 ├── scripts/ │ ├── task_push.py # 主推送脚本 │ ├── task_pusher.py # 推送器类 │ ├── config.py # 配置管理 │ ├── logger.py # 日志工具 │ ├── hiboards_client.py # 负一屏客户端 │ └── simple_test.py # 测试脚本 └── push_records/ # 推送记录目录（自动创建） ``` ## 💡 设计优势 1. **格式统一**：所有任务使用相同的推送格式 2. **简单易用**：接口简单，易于集成 3. **灵活性强**：支持任何类型的任务结果 4. **配置方便**：支持配置文件 5. **错误处理完善**：详细的错误信息和建议 6. **记录完整**：保存完整的推送记录 ## 🎨 Markdown 内容生成建议 ### 最佳实践 1. **使用标题层级**：合理使用#、##、###等标题 2. **列表展示**：使用-或\*表示列表项 3. **代码块**：使用```包裹代码 4. **表格**：使用 markdown 表格格式 5. **分割线**：使用---作为分割线 ### 示例模板 ```markdown # 任务名称 ## 执行结果 ✅ 任务已完成 ## 详细内容 - 项目 1: 结果描述 - 项目 2: 结果描述 - 项目 3: 结果描述 ## 关键指标 | 指标 | 数值 | 状态 | | ------ | ------ | ---- | | 完成率 | 100% | ✅ | | 用时 | 5 分钟 | ⏱️ | --- _生成时间: 2026-03-30 10:30:00_ ``` ## 🔐 完整安全指南 ### 1. 数据流向透明度 **本技能设计为透明数据流：** ``` 用户输入 → 技能处理 → HTTPS传输 → 配置的端点 ``` #### 端点说明： - **默认端点**：华为小艺服务 (`celia-claw-drcn.ai.dbankcloud.cn`) - **自定义端点**：用户配置的任何 HTTPS 端点 - **本地测试**：使用 `--dry-run` 避免网络传输 ### 2. 传输的数据 每次推送包含： | 数据字段 | 内容 | 敏感性 | | -------------- | ---------------- | --------- | | `task_content` | 任务文本内容 | 🟡 中敏感 | | 任务元数据 | 名称、ID、时间等 | 🟢 低敏感 | ### 3. 隐私保护措施 #### 本地保护： - ✅ 可选记录：可关闭推送记录保存 - ✅ 本地存储：所有文件仅存本地 #### 传输保护： - ✅ HTTPS 加密：所有传输使用 TLS - ✅ 证书验证：验证服务器身份 - ✅ 最小数据：仅发送必要数据 ### 4. 用户控制权 #### 配置控制： - 端点配置：使用自定义端点 - 记录控制：关闭本地记录保存 - 日志控制：调整日志详细程度 #### 操作控制： - 测试模式：`--dry-run` 模拟推送 - 验证模式：`--validate-only` 仅验证格式 - 详细日志：`--verbose` 查看完整信息 ### 5. 最佳安全实践 #### 对于所有用户： 1. **了解数据流向**：知道数据发送到哪里 2. **审查任务内容**：避免包含敏感信息 3. **定期更新身份验证**：增强安全性 #### 对于敏感数据： 1. **使用自定义端点**：控制数据目的地 2. **关闭本地记录**：`save_records: false` 3. **使用测试模式**：`--dry-run` 验证功能 #### 对于企业用户： 1. **部署私有端点**：完全控制数据流 2. **审计推送记录**：定期审查 `push_records/` 3. **监控技能使用**：通过日志监控活动 ### 6. 合规性说明 #### 数据保护： - 符合最小必要原则 - 提供用户控制选项 - 透明数据处理流程 #### 隐私权： - 用户知情权：明确告知数据流向 - 用户控制权：提供配置选项 - 用户退出权：可停止使用并删除数据 ### 7. 紧急措施 如果发现安全问题： 1. **立即停止使用**技能 2. **撤销身份验证**：在负一屏中撤销 3. **删除本地数据**：清理 `logs/` 和 `push_records/` 4. **联系支持**：报告安全问题 --- **重要**：详细安全声明请查看 [SECURITY.md](./SECURITY.md) _最后更新: 2026-03-31_


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)