# Stp

> 结构化任务规划与分步执行（Structured Task Planning）。支持两种模式：(1) 文件模式 - 从 Markdown 任务文档加载步骤执行；(2) 自然语言模式 - 接受自然语言任务描述，自动生成计划书并确认后执行。触发词：/stp、任务规划、步骤执行。功能包括：步骤分解、状态跟踪、执行日志记录、快速失败策略。

- Skill: `kernel8901/stp` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add kernel8901/stp`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kernel8901/stp/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: kernel8901 (https://skillmd.com/u/kernel8901)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kernel8901/stp

---


# STP（Structured Task Planning）结构化任务规划与分步执行

## 功能概述

1. **任务解析**：从 Markdown 任务文档加载步骤
2. **目录管理**：自动创建任务专属目录（格式：`task-{ID}`）
3. **文档生成**：生成标准化步骤文档和执行日志
4. **状态跟踪**：支持步骤状态标记（待执行/成功/失败）
5. **智能执行**：每个步骤作为子任务执行，附带成功判断标准
6. **快速失败**：步骤失败立即终止，不尝试替代方案
7. **完整日志**：所有 exec 命令和 AI 执行过程完整记录

---

## 两种使用模式

### 模式 A：文件模式（原有）
用户提供写好的任务文档路径：
```
/stp /path/to/task.md
```

### 模式 B：自然语言模式（新增）
用户用自然语言描述任务：
```
/stp 我想查一下腾讯、贵州茅台、Meta 的股票价格
```

---

## 模式 B：自然语言任务规划流程

当用户输入的不是 `.md` 文件路径，而是自然语言描述时，执行以下流程：

### 第一步：任务分析与计划生成

1. **理解用户意图**：分析自然语言，明确任务目标
2. **拆解执行步骤**：将任务分解为可执行的具体步骤
3. **生成计划书**：按标准格式生成 Markdown 任务文档

### 第二步：确认循环

1. **展示计划书**：将生成的计划书完整展示给用户
2. **询问确认**：
   ```
   📋 任务计划书已生成，请确认：
   - 输入 "ok" 或 "确认" → 开始执行
   - 输入修改意见 → 我会调整计划后重新展示
   - 输入 "取消" → 放弃此任务
   ```
3. **修改循环**：如果用户有修改意见，调整计划书后重新展示，直到用户确认

### 第三步：保存并执行

1. **生成文件名**：基于任务内容生成简短文件名（如 `stock-query.md`）
2. **保存位置**：`~/.openclaw/workspace/task-list/<filename>.md`
3. **开始执行**：按原有 STP 流程执行任务

### 计划书标准格式

```markdown
# 任务名称

## 任务描述
用户原始需求的简要描述

## 技术方案
- 使用的工具/库/API
- 关键技术约束

## 核心执行步骤
- [ ] 步骤 1：具体描述（含成功标准）
- [ ] 步骤 2：具体描述（含成功标准）
- [ ] 步骤 3：具体描述（含成功标准）

## 预期产出
- 输出文件/结果说明
```

### 示例流程

**用户输入**：
```
/stp 我想查一下腾讯、贵州茅台、Meta 的股票价格
```

**Agent 生成计划书**：
```markdown
# 三支股票收盘价查询

## 任务描述
查询腾讯控股、贵州茅台、Meta 三支股票的最新收盘价

## 技术方案
- 使用 AkShare 库查询股票数据
- 支持 A股(沪深)、港股、美股三个市场

## 核心执行步骤
- [ ] 步骤 1：编写基于 AkShare 的股票查询脚本，保存至 `temp/scripts/stock_query.py`
- [ ] 步骤 2：查询贵州茅台（600519.SH）收盘价
- [ ] 步骤 3：查询腾讯控股（00700.HK）收盘价
- [ ] 步骤 4：查询 Meta（META.O）收盘价

## 预期产出
- 三支股票的收盘价信息（股票名称、代码、日期、价格、市场）
```

**Agent 询问**：
```
📋 任务计划书已生成，请确认：
- 输入 "ok" 或 "确认" → 开始执行
- 输入修改意见 → 我会调整计划后重新展示
- 输入 "取消" → 放弃此任务
```

**用户确认后**：
- 保存到 `~/.openclaw/workspace/task-list/stock-query-20260207.md`
- 开始执行 STP 任务流程

---

## Agent 执行规范（重要！）

执行每个步骤时，**必须**记录关键命令和输出：

### 方法：步骤完成后补记执行日志

1. **执行步骤时**：正常用 `exec` tool 执行命令
2. **步骤完成后**：把关键命令和输出写入临时文件，然后用 `--exec-file` 记录

```bash
# 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 任务文档

```markdown
# 任务名称

## 核心执行步骤
- [ ] 步骤 1：具体描述
- [ ] 步骤 2：具体描述
- [ ] 步骤 3：具体描述
```

### 步骤2：生成任务目录和步骤文档

```bash
python3 ~/.openclaw/workspace/skills/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/
- 存放自然语言模式生成的任务计划书
- 文件命名格式：`<简短描述>-<日期>.md`

> **注意**：`stp` 是 `structured-task-planning` 的缩写。

