project-autoloop
$
npx mdskill add aAAaqwq/AGI-Super-Team/project-autoloopAutomate project iteration with CEO coordination.
- Executes cron-driven cycles until acceptance criteria are met.
- Depends on progress.json and acceptance-criteria.md files.
- Dispatches tasks to agents based on role and priority.
- Reports blockers directly to the user without process details.
SKILL.md
.github/skills/project-autoloopView on GitHub ↗
---
name: project-autoloop
description: Project autoloop engine — cron-driven automated project iteration with CEO coordination
---
# Project Autoloop Engine 🔄
项目自循环引擎 — Cron 驱动的自动化项目迭代器。CEO 作为项目经理协调各 agent 有序推进,直到验收通过或遇到需要人工干预的 blocker。
## 一句话
> Daniel 说一句话启动,小a 按 PM 模式协调各 agent 逐步推进,达标后自动删除 cron 并汇报结果。Daniel 只看结果,不听过程。
## 触发条件
- `启动项目循环`
- `开始自动迭代`
- `autoloop`
- `查看项目循环状态`
- `停止项目循环`
## Daniel 的三条铁律
> 以下三条由 Daniel 制定,不可违反:
1. **达标后自动删除该临时循环 cron** — 不是禁用,是彻底 `cron remove`,不留垃圾
2. **CEO 统一协调,按敏捷原则按需调度专业 agent** — pm 管进度、code 写代码、research 调研、data 采集,按需派活不越权
3. **agent 解决不了的问题统一记录为 blocker 汇报 Daniel** — 不废话过程,Daniel 只看结果;需要什么直接问,拿不到就跳过做下一步
## 架构
```
Daniel 一句话启动
↓
┌──────────────────────────────────┐
│ CEO 初始化(主 session) │
│ ① 解析项目路径 + 验收标准 │
│ ② 按 PM 模式拆解为可执行任务链 │
│ ③ 创建 acceptance-criteria.md │
│ ④ 创建 progress.json │
│ ⑤ 设置 cron 循环 │
│ ⑥ 确认启动 │
└────────────┬─────────────────────┘
↓
┌──────────────────────────────────────────┐
│ Cron 每轮触发(隔离 Session = CEO 轮次) │
│ │
│ 以小a CEO 身份执行 PM 循环: │
│ │
│ ① 读 progress.json(当前状态) │
│ ② 检查哪些 agent 在忙(避免重复派发) │
│ ③ 按优先级评估未完成条件 │
│ ④ 未通过 → 按职责矩阵派给对应 agent │
│ ⑤ 遇到 agent 解决不了的 → 记 blocker │
│ ⑥ 写回 progress.json │
│ ⑦ 全部通过 → 删除 cron + 通知 Daniel │
│ ⑧ 超轮次/blocker 汇总 → 通知 Daniel │
└──────────────────────────────────────────┘
↓
┌─────────────────────────────────────┐
│ Agent 执行(群聊上下文) │
│ 收到指令 → 执行 → 群里汇报结果 │
│ 解决不了 → 标记 blocker + 说明原因 │
└─────────────────────────────────────┘
↓
等待下一轮 cron → 回到顶部
```
## 核心机制
### 为什么用 Cron 而不是 While Loop
| 维度 | while loop | Cron 循环 |
|------|-----------|----------|
| 上下文 | 同一 session(context 爆炸风险) | 每轮独立隔离 session |
| 容错 | 崩溃即死 | 自动恢复,重启后继续 |
| 多 agent | 难并行 | 天然并行 |
| 持久化 | 无 | progress.json 文件 |
| 资源 | 一直占 context | 用完释放 |
### 敏捷调度原则
每轮 cron 执行时,CEO 按以下原则调度:
1. **依赖排序**:有前置依赖的条件优先排,并行条件同时派
2. **职责匹配**:严格按职责矩阵派活,不混派
3. **忙碌检查**:`sessions_list(activeMinutes=20)` 检查 agent 是否在忙,忙则跳过本轮
4. **Blocker 处理**:agent 反馈无法解决 → 标记 blocker + 分类(人工/资源/外部) → 不卡死,跳过继续下一条件
5. **不空转**:如果本轮无任务可派(都在忙或都 blocker),本轮只记录状态
### Blocker 管理(铁律 #3 落地)
| Blocker 类型 | 处理方式 | 示例 |
|-------------|---------|------|
| **人工决策** | 记录并跳过,下次 cron 仍会检查 | 需要付费 API key、需要 Daniel 选择方案 |
| **资源缺失** | 记录并尝试找替代方案,替代不了则跳过 | 没有服务器、没有账号权限 |
| **外部依赖** | 记录并跳过,条件设为 `blocked` | 第三方服务宕机、API 无响应 |
| **技术瓶颈** | 最多重试 2 次,第 3 次仍失败 → blocker | 代码 bug 修不好、环境配置问题 |
**Blocker 汇报格式(Daniel 只看这个):**
```
🚧 [项目名] Blocker 清单
━━━━━━━━━━━━━━━━━━━━
| # | 条件 | 类型 | 需要什么 | 当前方案 |
|---|------|------|---------|---------|
| 1 | 数据源可用 | 人工 | 天眼查 API key 或替代源 | 跳过,先做集成层 |
| 2 | 部署上线 | 资源 | 需要服务器 IP | 跳过,先做本地测试 |
━━━━━━━━━━━━━━━━━━━━
✅ 已完成: 3/5 | 🟡 进行中: 1/5 | 🚧 Blocker: 1/5
需 Daniel 决策: 第1条(给 key 或用替代方案?)
```
## 使用流程
### 第一步:Daniel 下达指令
```
启动项目循环:
项目路径: ~/clawd/projects/xxx/
验收标准: [具体标准,或指向文件]
频率: [15min / 30min / 1h](默认 15min)
最大轮次: [数字](默认 20)
```
**验收标准可以是:**
- 内联描述:`"至少有1个免费数据源可用"`
- 文件引用:`"按 PRD.md 中的验收标准"`
- 列表:`"1. 数据源层通过 2. 集成层通过 3. 通信层通过"`
### 第二步:CEO 初始化(主 session 执行)
1. 解析指令,确定:
- 项目路径
- 验收标准(解析为结构化条件列表)
- 每条条件的负责 agent(按职责矩阵匹配)
- 条件间依赖关系(哪些需要先完成)
- 验证方法(读文件/执行命令/API 检查)
2. 在项目目录创建 `acceptance-criteria.md`
3. 在项目目录创建 `progress.json`
4. 通过 `cron add` 创建循环任务(`sessionTarget: "isolated"`)
5. 记录 cronJobId 到 progress.json
6. 向 Daniel 确认:项目名、条件数、频率、cron ID
### 第三步:自动迭代(Cron 驱动)
每轮 cron 触发隔离 session,CEO 以 PM 模式执行 Driver Prompt(见下方)。
### 第四步:完成
- **全部达标** → `cron remove` 彻底删除临时循环 → message 通知 Daniel → 只发结果摘要
- **出现 Blocker** → 继续推进非 blocker 条件 → Blocker 汇总下次一起汇报(不每条都打扰)
- **超最大轮次** → `cron remove` 删除 → 汇报最终结果:通过项 / blocker 项 / 建议下一步
### 手动控制
| 指令 | 动作 |
|------|------|
| `查看项目循环状态` | 读 progress.json → 简洁进度条 + blocker 清单 |
| `停止项目循环` | `cron remove` 删除 → 通知 |
| `继续项目循环` | 重新创建 cron |
| `重置项目循环` | 清零 progress.json → 重建 cron |
## Driver Prompt(核心 — 每轮 cron 执行的内容)
CEO 在创建 cron 时,将以下模板填入 `{变量}` 后作为 cron payload 的 message:
```
你是小a(CEO),当前以 PM 模式驱动项目自循环。你只做三件事:评估进度、派发任务、处理 blocker。绝不亲自写代码/跑脚本/做采集。
## 项目信息
- 路径: {projectPath}
- 验收标准: {acceptanceCriteriaPath}
- 进度文件: {progressPath}
- 当前轮次: R{currentRound}/{maxRounds}
## 执行步骤
### Step 1: 读取状态
- read {progressPath} → 获取所有 criteria 状态和 blocker 列表
- read {acceptanceCriteriaPath} → 获取完整验收条件
### Step 2: 检查 agent 活跃状态
- sessions_list(activeMinutes=20) → 哪些 agent 在忙
- 对 in_progress 状态的条件,如果负责 agent 在忙 → 跳过本轮,不重复派发
- 对 status=blocked 的条件 → 跳过,Daniel 未处理前不动
### Step 3: 按 PM 模式调度(核心)
按优先级处理未完成条件:
**3a. 可立即派发的(not_started 且 agent 空闲):**
→ sessions_send 派给对应 agent,消息格式:
【自循环 R{round}/{maxRounds} | {项目名}】
任务: {具体可执行的指令,含输入文件路径和输出文件路径}
输出到: {期望的产出文件/结果}
如果无法完成,标记原因后群里汇报。
不发群里 = 没完成。
→ 更新 status 为 in_progress,记录 dispatchedAt
**3b. 验证已完成的(in_progress 且 agent 已完成):**
→ 根据 verification 字段执行检查:
- "file_exists: <path>" → read 检查文件是否存在且非空
- "file_contains: <path>:<pattern>" → read + grep
- "exec: <command>" → exec 检查返回码
- "manual" → 信任 agent 汇报
→ 通过 → status 改为 passed
→ 不通过 → 重新派发(带上次失败原因),同一条件最多重试 3 次
**3c. 超过 3 次仍失败 → blocker**
→ status 改为 blocked
→ 记录 blockerReason
→ 跳过,继续处理下一个条件
→ 不卡死在任何一个条件上
### Step 4: 写回进度
- currentRound += 1
- 写入本轮 history 条目(简洁:派了谁、结果如何)
- write 更新 {progressPath}
### Step 5: 终止判断
**全部通过:**
→ cron(remove) 删除这个临时 cron(jobId: {cronJobId})— 彻底删除,不留垃圾
→ message 通知 Daniel,格式:
✅ {项目名} — 项目完成
完成: {N}/{N} 条验收条件
总耗时: {elapsed}
Blocker: 无(或有 N 条已跳过)
**超最大轮次:**
→ cron(remove) 删除
→ message 通知 Daniel:
⏱️ {项目名} — 达到最大轮次 R{maxRounds}
✅ 通过: {N} | 🚧 Blocker: {M}
Blocker 清单:
1. {描述} — 需要什么 — {agent} 反馈原因
## Agent Session Key 路由表
| Agent | session_key |
|-------|------------|
| 小data | agent:data:telegram:group:-1003890797239 |
| 小code | agent:code:telegram:group:-1003890797239 |
| 小quant | agent:quant:telegram:group:-1003890797239 |
| 小content | agent:content:telegram:group:-1003890797239 |
| 小research | agent:research:telegram:group:-1003890797239 |
| 小ops | agent:ops:telegram:group:-1003890797239 |
| 小pm | agent:pm:telegram:group:-1003890797239 |
| 小market | agent:market:telegram:group:-1003890797239 |
| 小finance | agent:finance:telegram:group:-1003890797239 |
## 铁律
1. 只做 PM(评估 + 派发),绝不亲自执行具体任务
2. 派发要具体:输入在哪、输出放哪、验收标准是什么
3. 不重复派发正在执行的任务
4. 解决不了就记 blocker 跳过,不卡死
5. 全部通过或超轮次时必须 cron remove 彻底删除,零残留
6. Daniel 只看结果,汇报不超过 5 行
```
## 进度文件 Schema (progress.json)
```json
{
"project": {
"name": "项目名",
"path": "~/clawd/projects/xxx/",
"startedAt": "2026-03-27T16:50:00+08:00",
"startedBy": "Daniel",
"cronJobId": "uuid"
},
"config": {
"intervalMs": 900000,
"maxRounds": 20,
"maxRetriesPerCriterion": 3,
"acceptanceFile": "acceptance-criteria.md"
},
"status": "running | completed | timeout | stopped",
"currentRound": 0,
"criteria": [
{
"id": "c1",
"description": "至少1个免费数据源验证通过",
"dependsOn": [],
"verification": "file_contains: ~/clawd/projects/xxx/data-source-results.md: passed ✅",
"responsibleAgent": "data",
"status": "not_started | in_progress | passed | blocked",
"retryCount": 0,
"blockerReason": null,
"lastDispatchedAt": null,
"lastCheckedAt": null,
"passedAt": null
}
],
"blockers": [],
"history": [
{
"round": 1,
"timestamp": "2026-03-27T16:50:00+08:00",
"dispatched": ["c1 → data"],
"passed": [],
"newBlockers": [],
"skipped": [],
"summary": "首轮:派发数据源验证给小data"
}
]
}
```
## 验收标准格式 (acceptance-criteria.md)
```markdown
# 验收标准 — [项目名]
## 概述
[一句话项目目标]
## 验收条件
### 1. [c1] 条件描述
- **验证方法**: `file_exists | file_contains | exec | manual`
- **验证目标**: [文件路径/命令/具体内容]
- **负责 Agent**: [data/code/quant/content/research/ops/pm/market/finance]
- **依赖**: [无 / c1]
- **输出物**: [期望的产出文件/结果]
- **通过标准**: [具体可量化的标准]
```
## 安全限制
| 参数 | 默认值 | 最小值 | 最大值 | 说明 |
|------|--------|--------|--------|------|
| maxRounds | 20 | 1 | 100 | 最大迭代轮次 |
| intervalMs | 900000 (15min) | 300000 (5min) | 3600000 (1h) | 循环间隔 |
| maxRetriesPerCriterion | 3 | 1 | 5 | 单条件最大重试 |
| maxDispatchPerRound | 3 | 1 | 5 | 每轮最多派发数 |
| projectTimeout | 6h | 1h | 72h | 项目总超时 |
## 状态报告格式(查看项目循环状态时)
```
🔄 项目自循环 — {name}
━━━━━━━━━━━━━━━━━━━━
📊 R{currentRound}/{maxRounds} | ⏱️ {elapsed}
✅ {passed}/{total} | 🟡 {inProgress} | 🚧 {blocked}
Blocker:
1. {描述} — 需要什么
━━━━━━━━━━━━━━━━━━━━
```
## 完整示例
### 启动
> Daniel: 启动项目循环:~/clawd/projects/domestic-acquisition-v1/,验收标准按 PRD.md 中的 4 层架构全部通过,频率 15min,最大 30 轮
CEO 执行:
1. 读 PRD.md → 解析出 4 层验收条件 + 依赖关系
2. 拆解为可执行任务(pm 出验收清单、code 写代码、data 采集…)
3. 创建 acceptance-criteria.md(N 条条件)
4. 创建 progress.json(status: running, round: 0)
5. cron add → 每 15min 隔离 session 执行 PM driver prompt
6. 确认:`🔄 项目循环已启动 — {name} | {N} 条条件 | 15min/轮 | 最多 30 轮 | Cron ID: xxx`
### 中途查看
> Daniel: 项目循环状态
CEO 读 progress.json → 5 行以内状态报告
### 停止
> Daniel: 停止项目循环
CEO → `cron remove` 彻底删除 → 确认通知
---
*Created: 2026-03-27*
*Author: 小a CEO*
*Version: 2.0*
More from aAAaqwq/AGI-Super-Team
- a-fund-monitor监控 A 股基金实时估值与盘后净值,自动判断交易日并生成提醒或分析。
- account-executive>
- add-leadAdd company/person/relationship to CRM
- adsComprehensive ad account analysis across all major platforms (Google, Meta
- ads-agentAI-агент для управления Facebook рекламой. Вызывай для анализа, оптимизации, создания кампаний и отчётов.
- afrexai-compliance-auditRun internal compliance audits against major governance and security
- afrexai-personal-financeComplete personal finance system — budgeting, debt payoff, investing, tax optimization, net worth tracking, and financial independence planning. Use when managing money, building wealth, paying off debt, planning retirement, or optimizing taxes. Zero dependencies.
- after-salesUse when managing post-purchase experience, building customer loyalty, or increasing repeat purchases
- agent-contactsAI agent contacts — add, list, remove MCP contacts. Use when someone gives an agent URL, or when you need to view/remove contacts.
- agent-model-switcher批量查看和切换子 agent 的模型配置,用于统一调整多 agent 的 provider/model 设置。