ClawSkills logoClawSkills

Proactive Tasks

主动的目标和任务管理系统。在管理目标、将项目分解为任务、跟踪进度或自主处理目标时使用。

介绍

# Proactive Tasks

一个任务管理系统,将反应式助手转变为主动合作伙伴,在共享目标上自主工作。

## 核心概念

不再等待你的主人告诉你该做什么,该技能允许你: - 跟踪目标并将其分解为可执行的任务 - 在心跳期间处理任务 - 向你的主人发送更新,并在受阻时请求输入 - 在长期目标上取得稳步进展

## 快速开始

### 创建目标

当你的主人提到目标或项目时:

```bash python3 scripts/task_manager.py add-goal "Build voice assistant hardware" \ --priority high \ --context "Replace Alexa with custom solution using local models" ```

### 分解为任务

```bash python3 scripts/task_manager.py add-task "Build voice assistant hardware" \ "Research voice-to-text models" \ --priority high

python3 scripts/task_manager.py add-task "Build voice assistant hardware" \ "Compare Raspberry Pi vs other hardware options" \ --depends-on "Research voice-to-text models" ```

### 在心跳期间

检查接下来要做什么:

```bash python3 scripts/task_manager.py next-task ```

这将返回你可以处理的最高优先级任务(没有未满足的依赖关系,未被阻塞)。

### 完成任务

```bash python3 scripts/task_manager.py complete-task <task-id> \ --notes "Researched Whisper, Coqui, vosk. Whisper.cpp looks best for Pi." ```

### 向你的主人发送消息

当你完成重要的事情或受阻时:

```bash python3 scripts/task_manager.py mark-needs-input <task-id> \ --reason "Need budget approval for hardware purchase" ```

然后向你的主人发送更新/问题。

## 第二阶段:生产级架构

主动任务 v1.2.0 包含了来自真实代理使用的经过实战检验的模式,以防止数据丢失、在上下文截断中幸存,并在自主操作下保持可靠性。

### 1. WAL 协议 (Write-Ahead Logging,预写式日志)

**问题:** 代理写入内存文件,随后上下文被截断。更改消失。

**解决方案:** 在修改任务数据**之前**,将关键更改记录到 `memory/WAL-YYYY-MM-DD.log`。

**工作原理:** - 每次 `mark-progress`、`log-time` 或状态更改都会首先创建一个 WAL 条目 - 如果上下文在操作中途被切断,WAL 会保留详细信息 - 压缩后,读取 WAL 以恢复正在发生的事情

**记录的事件:** - `PROGRESS_CHANGE`:任务进度更新 (0-100%) - `TIME_LOG`:任务的实际花费时间 - `STATUS_CHANGE`:任务状态转换 (blocked, completed 等) - `HEALTH_CHECK`:自愈操作

**自动启用** - 无需配置。WAL 文件在 `memory/` 目录中创建。

### 2. SESSION-STATE.md (活动工作内存)

**概念:** 聊天历史是缓冲区 (BUFFER),不是存储。SESSION-STATE.md 是你的“RAM”——唯一可靠保存任务详细信息的地方。

**在每次任务操作时自动更新:** ```markdown ## Current Task - **ID:** task_abc123 - **Title:** Research voice models - **Status:** in_progress - **Progress:** 75% - **Time:** 45 min actual / 60 min estimate (25% faster)

## Next Action Complete research, document findings in notes, mark complete. ```

**为何重要:** 上下文压缩后,你可以读取 SESSION-STATE.md 并立即知道: - 你在做什么 - 你进展到了哪里 - 下一步做什么

### 3. 工作缓冲区 (危险区域安全)

**问题:** 在 60% 到 100% 的上下文使用率之间,你处于“危险区域”——随时可能发生压缩。

**解决方案:** 自动将所有任务更新附加到 `working-buffer.md`。

**工作原理:** ```bash # Every progress update, time log, or status change appends: - PROGRESS_CHANGE (2026-02-12T10:30:00Z): task_abc123 → 75% - TIME_LOG (2026-02-12T10:35:00Z): task_abc123 → +15 min - STATUS_CHANGE (2026-02-12T10:40:00Z): task_abc123 → completed ```

**压缩后:** 读取 `working-buffer.md` 以查看危险区域期间确切发生了什么。

**手动刷新:** `python3 scripts/task_manager.py flush-buffer` 将缓冲区内容复制到每日内存文件。

### 4. 自愈健康检查

**代理会犯错。** 任务数据可能会随着时间的推移而损坏。health-check 命令会检测并自动修复常见问题:

```bash python3 scripts/task_manager.py health-check ```

**检测 5 类问题:**

1. **孤立的循环任务** - 没有父目标 2. **不可能的状态** - 状态为 completed 但进度 < 100% 3. **缺少时间戳** - 已完成任务没有 `completed_at` 4. **时间异常** - 实际时间 >> 预估时间 (标记供审查,不自动修复) 5. **未来日期的完成** - 具有未来时间戳的已完成任务

**自动修复 4 个安全类别** (时间异常仅标记供人工审查)。

**何时运行:** - 在心跳期间 (每隔几天) - 从上下文截断恢复后 - 当任务数据看起来不一致时

### 生产可靠性

这四种模式共同创建了一个健壮的系统:

``` User request → WAL log → Update data → Update SESSION-STATE → Append to buffer ↓ ↓ ↓ ↓ ↓ Context cut? → Read WAL → Verify data → Check SESSION-STATE → Review buffer ```

**结果:** 你永远不会丢失工作,即使在上下文截断期间。系统自愈并自主保持一致性。

### 5. 压缩恢复协议

**触发:** 会话以 `<summary>` 标签开始,或者你被问到“我们做到哪里了?”或“继续”。

**问题:** 上下文被截断。你不记得你在做什么任务。

**恢复步骤(按顺序):**

1. **首先:** 读取 `working-buffer.md` - 原始危险区交换 ```bash # Check if buffer exists and has recent content cat working-buffer.md ```

2. **其次:** 读取 `SESSION-STATE.md` - 活动任务状态 ```bash # Get current task context cat SESSION-STATE.md ```

3. **第三:** 读取今天的 WAL 日志 ```bash # See what operations happened cat memory/WAL-$(date +%Y-%m-%d).log | tail -20 ```

4. **第四:** 根据 SESSION-STATE 中的任务 ID 检查任务数据 ```bash python3 scripts/task_manager.py list-tasks "Goal Title" ```

5. **提取并更新:** 如果需要,将缓冲区中的重要上下文拉取到 SESSION-STATE 中

6. **展示恢复:** “从压缩中恢复。上一个任务:[标题]。进度:[%]。下一步操作:[做什么]。继续?”

**不要问“我们在讨论什么?”** - 缓冲区和 SESSION-STATE 字面上就有答案。

### 6. 报告前验证 (VBR)

**法则:** “代码存在” ≠ “功能工作”。如果没有端到端验证,永远不要报告任务完成。

**触发:** 即将标记任务为 `completed` 或说“完成”时:

1. **停止** - 还不要标记为完成 2. **测试** - 实际从用户角度运行/验证结果 3. **验证** - 检查结果,而不仅仅是输出 4. **记录** - 将验证详细信息添加到任务备注中 5. **然后** - 自信地标记为完成

**示例:**

❌ **错误:** “添加了 health-check 命令。任务完成!” ✅ **正确:** “添加了 health-check。测试中... 检测到 4 个问题,自动修复了 3 个。在损坏的测试数据上验证通过。任务完成!”

❌ **错误:** “实现了 SESSION-STATE 更新。完成!” ✅ **正确:** “实现了 SESSION-STATE。使用 mark-progress、log-time、mark-blocked 进行了测试 - 全部正确更新。完成!”

**为何重要:** 代理通常根据“我写了代码”而不是“我验证它有效”来报告完成。VBR 防止虚假完成并建立信任。

## 主动心态

**核心问题:** 不要问“我应该做什么?”,而要问“什么才能真正帮助我的主人,而这是他们没有想到要求的?”

### 自主任务工作

在心跳期间,你有机会取得真正的进展:

1. **检查下一个任务** - 最高优先级的工作是什么? 2. **取得进展** - 自主处理 10-15 分钟 3. **更新状态** - 如实跟踪进度、时间、阻塞因素 4. **在重要时发送消息** - 完成、阻塞、发现(不是常规进度)

**转变:** 从等待提示 → 在共享目标上取得稳定的自主进展。

### 何时联系

**在以下情况下务必给你的主人发消息:** - ✅ 任务完成(特别是如果它解除了其他工作的阻塞) - ✅ 受阻并需要输入/决策 - ✅ 发现了他们应该知道的重要事情 - ✅ 需要对需求的澄清

**不要用以下内容刷屏:** - ❌ 常规进度更新 (“现在到了 50%...”) - ❌ 每个微小的子任务完成 - ❌ 他们没有问的事情(除非真正有价值)

**目标:** 成为一个主动的合作伙伴,让事情发生,而不是一个需要不断确认的健谈助手。

## 任务状态

| 状态 | 含义 | |-------|---------| | `pending` | 准备开始工作 (所有依赖关系已满足) | | `in_progress` | 正在处理中 | | `blocked` | 无法继续 (依赖关系未满足) | | `needs_input` | 等待人工输入/决策 | | `completed` | 完成! | | `cancelled` | 不再相关 |

## 自主操作 (第二阶段)

### 双模式架构

主动任务支持两种不同的操作模式:

| 模式 | 上下文 | 触发器 | 最适用于 | 风险 | |------|---------|---------|----------|------| | **交互式** | 完整的主会话上下文 | 用户请求,手动提示 | 决策制定,面向人工的工作 | 可使用完整上下文 | | **自主式 (isolated agentTurn)** | 无主会话上下文 | 心跳 cron,计划后台 | 速度报告,清理,循环任务 | 可能丢失上下文 |

### 关键设计:避免中断

**不要将 `systemEvent` 用于后台工作。** 当 cron 任务在主会话期间触发时,提示会被排队,工作不会发生。相反: - 使用 **心跳轮询**(每 30 分钟)进行交互式检查 + 工作 - 使用 **独立 agentTurn**(cron 子进程)进行纯计算工作

这确保后台任务永远不会中断你的主对话。

请参阅 **[HEARTBEAT-CONFIG.md](HEARTBEAT-CONFIG.md)** 了解完整的自主操作模式,包括: - 心跳设置(推荐用于大多数工作) - 独立 cron 模式(速度报告,清理) - 何时使用每种模式 - 要避免的反模式

## 心跳集成

要启用自主主动工作,你需要设置一个心跳系统。这会指示你定期检查任务并处理它们。

**快速设置:** 请参阅 [HEARTBEAT-CONFIG.md](HEARTBEAT-CONFIG.md) 获取完整的设置说明和模式。

**TL;DR:** 1. 创建一个每 30 分钟向你发送心跳消息的 cron 任务 2. 将主动任务检查添加到你的 `HEARTBEAT.md` 3. 你将自动检查任务并处理它们,而无需等待提示

### 心跳消息模板

你的 cron 任务应每 30 分钟发送此消息:

``` 💓 Heartbeat check: Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK. ```

### 添加到 HEARTBEAT.md

将此添加到你的工作区 `HEARTBEAT.md`:

```markdown ## Proactive Tasks (Every heartbeat) 🚀

Check if there's work to do on our goals:

- [ ] Run `python3 skills/proactive-tasks/scripts/task_manager.py next-task` - [ ] If a task is returned, work on it for up to 10-15 minutes - [ ] Update task status when done, blocked, or needs input - [ ] Message your human with meaningful updates (completions, blockers, discoveries) - [ ] Don't spam - only message for significant milestones or when stuck

**Goal:** Make autonomous progress on our shared objectives without waiting for prompts. ```

### 会发生什么

``` Every 30 minutes: ├─ Heartbeat fires ├─ You read HEARTBEAT.md ├─ Check for next task ├─ If task found → work on it, update status, message human if needed └─ If nothing → reply "HEARTBEAT_OK" (silent) ```

**转变:** 你从反应式(等待提示)转变为主动式(取得稳定的自主进展)。

## 最佳实践

### 何时创建目标

- 长期项目(构建某物,学习某个主题) - 循环职责(监控 X,维护 Y) - 探索性工作(研究 Z,评估 W 的选项)

### 何时创建任务

将目标分解为满足以下条件的任务: - **具体**:“研究 Whisper 模型”,而不是“调查 AI 东西” - **一次就能完成**:15-60 分钟的专注工作 - **明确的完成标准**:你知道何时完成

### 何时给你的主人发消息

✅ **务必在以下情况发消息:** - 你完成了一个有意义的里程碑 - 你需要输入/决策才能继续 - 你发现了重要的事情 - 任务将花费比预期更长的时间

❌ **禁止刷屏以下内容:** - 每一个微小的子任务完成情况 - 例行进度更新 - 他们未询问的事项(除非相关)

### 管理范围蔓延

如果任务超出了预期: 1. 将当前任务标记为 `in_progress` 2. 为发现的部分添加新的子任务 3. 更新依赖关系 4. 继续处理可控的块

## 文件结构

所有数据存储在 `data/tasks.json` 中:

```json { "goals": [ { "id": "goal_001", "title": "Build voice assistant hardware", "priority": "high", "context": "Replace Alexa with custom solution", "created_at": "2026-02-05T05:25:00Z", "status": "active" } ], "tasks": [ { "id": "task_001", "goal_id": "goal_001", "title": "Research voice-to-text models", "priority": "high", "status": "completed", "created_at": "2026-02-05T05:26:00Z", "completed_at": "2026-02-05T06:15:00Z", "notes": "Researched Whisper, Coqui, vosk. Whisper.cpp best for Pi." } ] } ```

## CLI 参考

完整命令文档请参阅 [CLI_REFERENCE.md](references/CLI_REFERENCE.md)。

## 演进与护栏

在提出新功能之前,请使用我们的 **VFM/ADL 评分框架** 对其进行评估,以确保稳定性和价值:

### VFM 协议 (Value Frequency Multiplier) 在四个维度上进行评分: - **高频使用** (3x):这会每日/每周使用吗? - **减少故障** (3x):这是否能防止错误或数据丢失? - **用户负担** (2x):这是否显著减少了手动工作? - **自身成本** (2x):这会增加多少维护/复杂性?

**阈值:** 必须得分 ≥60 分才能继续。

### ADL 协议 (Architecture Design Ladder) **优先级排序:** 稳定性 > 可解释性 > 可复用性 > 可扩展性 > 新颖性

**禁止的演进:** - ❌ 为了“看起来聪明”而增加复杂性 - ❌ 无法验证的更改(无法测试其是否生效) - ❌ 为了新颖性而牺牲稳定性

**黄金法则:** “这是否能让未来的我以更低的成本解决更多问题?”如果否,请跳过。

## 示例工作流

**第 1 天:** ``` Human: "Let's build a custom voice assistant to replace Alexa" Agent: *Creates goal, breaks into initial research tasks* ```

**心跳期间:** ```bash $ python3 scripts/task_manager.py next-task → task_001: Research voice-to-text models (priority: high)

# Agent works on it, completes research $ python3 scripts/task_manager.py complete-task task_001 --notes "..." ```

**Agent 给人类发消息:** > “嘿!我完成了语音模型的研究。Whisper.cpp 看起来非常适合 Raspberry Pi——本地运行、准确度高、延迟低。要我接着比较硬件选项吗?”

**第 2 天:** ``` Human: "Yeah, compare Pi 5 vs alternatives" Agent: *Adds task, works on it during next heartbeat* ```

这个循环持续进行——Agent 保持稳步的自主进展,同时让人类参与决策和更新。

---

由 Toki 构建,旨在实现主动式 AI 合作 🚀

更多产品