⚠
High Risk:This skill has significant security concerns. Review the findings below before installing.
stp
⚠Caution·Scanned 2/18/2026
Dangerous skill: instructs unrestricted shell command execution via exec and shows writing/attaching arbitrary files such as /tmp/step_exec.log to logs. It implements structured task planning that creates and writes to ~/.openclaw/workspace/tasks and ~/.openclaw/workspace/tasks/.task_counter.
from clawhub.ai·v2f437a3·24.3 KB·0 installs
Scanned from 1.0.1 at 2f437a3 · Transparency log ↗
$ vett add clawhub.ai/scotthuang/stpReview security findings before installing
路径变量说明(本文档通用):
<STP_ROOT>=~/.openclaw/workspace/skills/stp<STP_SCRIPTS>=<STP_ROOT>/scripts<STP_TASK_LIST>=~/.openclaw/workspace/task-list<STP_TASKS>=~/.openclaw/workspace/tasks
STP(Structured Task Planning)结构化任务规划与分步执行
功能概述
- 任务解析:从 Markdown 任务文档加载步骤
- 目录管理:自动创建任务专属目录(格式:
task-{ID}) - 文档生成:生成标准化步骤文档和执行日志
- 状态跟踪:支持步骤状态标记(待执行/成功/失败)
- 智能执行:每个步骤作为子任务执行,附带成功判断标准
- 快速失败:步骤失败立即终止,不尝试替代方案
- 完整日志:所有 exec 命令和 AI 执行过程完整记录
两种使用模式
模式 A:文件模式(原有)
用户提供写好的任务文档路径:
/stp /path/to/task.md
模式 B:自然语言模式(新增)
用户用自然语言描述任务:
/stp 我想查一下腾讯、贵州茅台、Meta 的股票价格
模式 B:自然语言任务规划流程
当用户输入的不是 .md 文件路径,而是自然语言描述时,执行以下流程:
第一步:任务分析与计划生成
- 理解用户意图:分析自然语言,明确任务目标
- 拆解执行步骤:将任务分解为可执行的具体步骤
- 生成计划书:按标准格式生成 Markdown 任务文档
第二步:确认循环
- 展示计划书:将生成的计划书完整展示给用户
- 询问确认:
📋 任务计划书已生成,请确认: - 输入 "ok" 或 "确认" → 开始执行 - 输入修改意见 → 我会调整计划后重新展示 - 输入 "取消" → 放弃此任务 - 修改循环:如果用户有修改意见,调整计划书后重新展示,直到用户确认
第三步:保存并执行
- 生成文件名:基于任务内容生成简短文件名(如
stock-query.md) - 保存位置:
<STP_TASK_LIST>/<filename>.md - 开始执行:按原有 STP 流程执行任务
计划书标准格式
# 任务名称
## 任务描述
用户原始需求的简要描述
## 技术方案
- 使用的工具/库/API
- 关键技术约束
## 核心执行步骤
- [ ] 步骤 1:具体描述(含成功标准)
- [ ] 步骤 2:具体描述(含成功标准)
- [ ] 步骤 3:具体描述(含成功标准)
## 预期产出
- 输出文件/结果说明
示例流程
用户输入:
/stp 我想查一下腾讯、贵州茅台、Meta 的股票价格
Agent 生成计划书:
# 三支股票收盘价查询
## 任务描述
查询腾讯控股、贵州茅台、Meta 三支股票的最新收盘价
## 技术方案
- 使用 AkShare 库查询股票数据
- 支持 A股(沪深)、港股、美股三个市场
## 核心执行步骤
- [ ] 步骤 1:编写基于 AkShare 的股票查询脚本,保存至 `temp/scripts/stock_query.py`
- [ ] 步骤 2:查询贵州茅台(600519.SH)收盘价
- [ ] 步骤 3:查询腾讯控股(00700.HK)收盘价
- [ ] 步骤 4:查询 Meta(META.O)收盘价
## 预期产出
- 三支股票的收盘价信息(股票名称、代码、日期、价格、市场)
Agent 询问:
📋 任务计划书已生成,请确认:
- 输入 "ok" 或 "确认" → 开始执行
- 输入修改意见 → 我会调整计划后重新展示
- 输入 "取消" → 放弃此任务
用户确认后:
- 保存到
<STP_TASK_LIST>/<任务描述>-<日期>.md - 开始执行 STP 任务流程
Agent 执行规范(重要!)
执行每个步骤时,必须记录关键命令和输出:
方法:步骤完成后补记执行日志
- 执行步骤时:正常用
exectool 执行命令 - 步骤完成后:把关键命令和输出写入临时文件,然后用
--exec-file记录
# 1. 先把执行记录写入临时文件
cat > /tmp/step_exec.log << 'EOF'
[命令1] python3 -c "import akshare; print(akshare.__version__)"
[输出1] AkShare version: 1.18.22
[退出码] 0
[命令2] python3 stock_query.py 600519.SH
[输出2] 贵州茅台 收盘价: 1515.01
[退出码] 0
EOF
# 2. 记录步骤状态时附带执行日志
python3 execute_task.py --log task-8 1 success "脚本执行成功" --exec-file /tmp/step_exec.log
执行日志格式建议
[命令] <执行的完整命令>
[输出] <命令输出(可截断关键部分)>
[退出码] <0=成功, 非0=失败>
模式 A:文件模式使用方式
步骤1:准备 Markdown 任务文档
# 任务名称
## 核心执行步骤
- [ ] 步骤 1:具体描述
- [ ] 步骤 2:具体描述
- [ ] 步骤 3:具体描述
步骤2:生成任务目录和步骤文档
python3 <STP_SCRIPTS>/execute_task.py --task-file /path/to/task.md
任务目录命名规则:task-{自增ID}
- 使用
.task_counter计数器文件记录自增ID - 目录示例:
task-1/、task-2/、task-3/
步骤3:查看生成的文档
任务目录结构:
tasks/
└── task-XXX/
├── task_steps.md # 步骤文档(含状态标记和成功标准)
├── task_execution.log # 完整执行日志(含所有exec命令)
├── result.txt # 结果汇总
└── temp/
├── scripts/
└── downloads/
步骤4:执行步骤并更新状态
主 Agent 读取 task_steps.md,逐个执行步骤,然后更新状态标记:
[ ]→✓(执行成功)[ ]→✗(执行失败)
状态标记
| 标记 | 含义 |
|---|---|
[ ] | 待执行 |
✓ | 执行成功 |
✗ | 执行失败(任务终止) |
执行规则(重要!)
1. 原方案优先原则
必须严格按照任务文档中定义的方案执行,禁止擅自更改实现方式。
示例:
❌ 错误做法:原方案要求用 AkShare,实际改用新浪 API
✅ 正确做法:严格使用 AkShare,遇到问题按失败处理
2. 快速失败策略
原则:一步到位,不做替代方案尝试
- 子任务返回「失败」状态 → 立即终止整个任务链
- 不自动重试、不尝试其他实现方式
- 记录失败原因到日志
3. 失败处理
- 方案执行失败 → 立即终止,不尝试替代方案
- 明确记录失败原因(违反方案/技术限制/接口问题)
- 任务结果标记为 FAILED
资源
scripts/
execute_task.py- 主脚本- 解析任务文档并生成步骤文件
- 管理
.task_counter自增ID - 支持
--subtask模式:生成子任务 prompt - 支持
--exec-file参数:附带执行日志 - 自动记录 exec 命令到日志
task-list/
- 存放自然语言模式生成的任务计划书
- 路径:
<STP_TASK_LIST> - 文件命名格式:
<简短描述>-<日期>.md
注意:
stp是structured-task-planning的缩写。