Idea Storm
name: idea-storm
by c4chuan · published 2026-03-22
$ claw add gh:c4chuan/c4chuan-idea-storm---
name: idea-storm
version: 1.0.0
description: 工程问题的自动化迭代实验室。给定一个 idea 或工程问题,自动调研方案、设计实现、验证效果、迭代优化,结果存入 Notion。触发词:"idea-storm"、"实验一下"、"帮我验证"、"迭代优化"、"idea 验证"。当用户提出一个工程问题并希望自动化地调研→设计→验证→迭代时使用此 skill。
---
# Idea Storm
工程问题的自动化 设计→验证→迭代 闭环。后台运行,不阻塞主会话。
运行架构
采用分段 spawn 模式:每个检查点之间的工作在独立子 agent 中运行,状态通过文件传递。
主会话 子 agent (isolated)
│ │
├─ 创建 experiment.yaml │
├─ spawn("idea-storm: 调研+设计") ───→ │
│ (继续聊天) ├─ Phase 2: 调研
│ ├─ Phase 3: 方案设计
│ ├─ 更新 experiment.yaml
│ ◄── announce 方案摘要 ────────────┤ ✅ 检查点1
│ └─ (退出)
│
├─ 用户确认方案
├─ spawn("idea-storm: 实现+验证") ───→ │
│ (继续聊天) ├─ 读 experiment.yaml 恢复状态
│ ├─ Phase 4: 实现
│ ├─ Phase 5: 验证
│ ├─ Phase 6: 评估
│ ├─ 更新 experiment.yaml
│ ◄── announce 迭代结果 ────────────┤ ✅ 检查点2
│ └─ (退出)
│
├─ 用户确认(继续迭代/收敛)
├─ spawn("idea-storm: 迭代N") ───→ ...(重复直到收敛)
│
├─ spawn("idea-storm: 收敛报告") ──→ │
│ ◄── announce 最终报告 ────────────┤ ✅ 检查点3
└─ 完成spawn 任务模板
每次 spawn 时,task 中必须包含:
1. 实验状态文件路径:`experiments/<id>/experiment.yaml`
2. 当前要执行的阶段
3. 用户的确认/反馈内容(如有)
示例:
sessions_spawn(task="执行 idea-storm 实验。
读取实验状态:experiments/facial-gan-20260213/experiment.yaml
执行阶段:Phase 4-6(实现→验证→评估)
用户反馈:方案OK,用 StyleGAN3 路线
按 idea-storm skill 流程执行,完成后更新 experiment.yaml 并汇报结果。")子 agent 启动后:
1. 读 idea-storm SKILL.md 获取流程指引
2. 读 experiment.yaml 恢复实验状态
3. 执行指定阶段
4. 更新 experiment.yaml + Notion
5. announce 结果摘要
---
记忆管理
三层存储,确保状态不丢失:
层级 1:热状态 (SESSION-STATE.md)
主会话的 SESSION-STATE.md 记录当前活跃实验的概要:
idea_lab:
active_experiment: "facial-gan-20260213"
experiment_path: "experiments/facial-gan-20260213/"
current_phase: "等待用户确认检查点2"
last_spawn_label: "idea-storm-facial-gan-iter2"层级 2:实验工作区
每个实验在 workspace 下有独立目录:
experiments/<experiment-id>/
├── experiment.yaml # 实验完整状态(核心)
├── research/ # 调研资料
│ └── findings.md
├── design/ # 方案设计
│ └── plan.md
├── src/ # 实现代码
├── data/ # 输入数据、参考图等
├── results/ # 每轮验证结果
│ ├── iter-1/
│ ├── iter-2/
│ └── ...
└── report.md # 最终报告(本地副本)层级 3:Notion 长期记录
结构化实验报告,按时间和分类组织。详见 [Notion 页面结构](#notion-实验页面结构)。
experiment.yaml 规范
实验的完整状态文件,子 agent 靠它恢复上下文:
id: "facial-gan-20260213"
title: "用 GAN 生成面部微表情"
created: "2026-02-13T12:00:00+08:00"
status: "running" # running | paused | completed | abandoned
# 当前进度
phase: "Phase 5: 验证"
iteration: 2
max_iterations: 5
# 问题定义
problem:
description: "需要生成逼真的面部微表情动画"
constraints: "实时渲染,延迟<50ms"
# 验证配置
validation:
mode: "B" # A=图片对比 B=指标优化 C=功能验证 D=自定义
description: "优化 FID score"
threshold: 50
current_best: 67.3
# 检查点记录
checkpoints:
- phase: 3
time: "2026-02-13T13:00:00+08:00"
status: "approved"
user_feedback: "方案确认,用 StyleGAN3"
- phase: 6
iteration: 1
time: "2026-02-13T14:30:00+08:00"
status: "continue"
user_feedback: "FID 67.3,继续优化学习率"
# 迭代历史
iterations:
- round: 1
changes: "初始实现,lr=0.001"
result: "FID 67.3"
decision: "继续,调整学习率"
- round: 2
changes: "lr=0.0003, 增加数据增强"
result: "pending"
# Notion
notion_page_id: "xxx-xxx-xxx"---
核心流程
Phase 1: 问题定义(主会话执行)
用户输入工程问题或 idea。提取并确认:
1. **问题描述**:要解决什么
2. **成功标准**:怎样算解决了
3. **约束条件**:技术栈、资源限制
4. **验证方式**:见 [验证模式](#验证模式)
如果用户没有明确给出以上信息,主动询问(不要一次问太多)。
确认后:
1. 创建实验目录 `experiments/<id>/`
2. 写入 `experiment.yaml`
3. 创建 Notion 实验页面
4. 更新 SESSION-STATE.md
5. spawn 子 agent 执行 Phase 2-3
Phase 2: 调研(子 agent)
偏向工程化搜索,优先级:
1. GitHub 开源项目和实现
2. 技术博客、Stack Overflow、工程实践
3. 产品文档、API 文档
4. 论文(仅在工程资料不足时补充)
工具:`web_search` + `web_fetch`
输出:
Phase 3: 方案设计(子 agent)
基于调研设计技术方案:
输出:
✅ 检查点 1:方案确认(主会话)
用户确认后,主会话 spawn 新子 agent 执行 Phase 4-6。
Phase 4: 实现(子 agent)
按方案执行。可能包括:编写代码、配置环境、生成资源、调用 API。
输出:
Phase 5: 验证(子 agent)
按 experiment.yaml 中定义的验证方式执行。详见 [验证模式](#验证模式)。
输出:
Phase 6: 评估与迭代决策(子 agent)
根据验证结果判断:
| 情况 | 动作 |
|------|------|
| 达标 | 标记收敛,announce 结果 |
| 接近达标,参数可调 | 自动迭代参数,回到 Phase 4(不超过 max_iterations) |
| 方向有问题 | announce 建议换方案 |
更新 experiment.yaml 后 announce 结果给主会话。
✅ 检查点 2:迭代确认(主会话)
汇报内容:
用户确认后 spawn 下一轮或进入收敛。
Phase 7: 收敛报告(子 agent)
生成最终报告:
✅ 检查点 3:最终确认(主会话)
---
验证模式
由用户在 Phase 1 定义。
模式 A:图片对比
用户提供参考图 + 输入集。Agent 生成输出,与参考图对比。
模式 B:指标优化
用户定义评测函数或指标,Agent 优化实现以提升指标。
模式 C:功能验证
用户定义测试用例或验收标准,Agent 逐项验证。
模式 D:自定义
用户描述验证方式,Agent 按描述执行。
---
Notion 实验页面结构
每次启动实验时创建新页面。配置见 `references/notion-setup.md`。
📋 [实验标题] - [日期]
├── 问题定义
├── 调研记录
├── 方案设计
├── 实验日志(按迭代轮次)
├── 验证结果(按迭代轮次)
└── 最终报告---
工具使用
| 阶段 | 工具 |
|------|------|
| 调研 | `web_search`, `web_fetch` |
| 实现 | Claude Code(首选), `exec`, `write`, `edit` |
| 图片验证 | `image`, `scripts/compare_images.py` |
| 指标验证 | `exec`(运行评测脚本) |
| Notion | Notion API via `exec` |
| 后台运行 | `sessions_spawn` |
| 状态传递 | `experiment.yaml` 文件 |
| 通知用户 | announce(子 agent 自动) |
---
Claude Code 集成
Phase 4(实现)阶段,优先使用 Claude Code 在 Docker 沙盒中完成编码任务。
Docker 沙盒架构
每个实验在独立的 Docker 容器中运行 Claude Code,与宿主机隔离:
宿主机 Docker 容器 (idea-storm-sandbox)
├── openclaw.json ──(env注入)────→ ANTHROPIC_AUTH_TOKEN / BASE_URL
├── experiments/<id>/ ──(volume)──→ /workspace
│ ├── 非 root 用户 (coder)
│ ├── Claude Code CLI + --dangerously-skip-permissions
│ ├── Python3 / Node.js / Git
│ └── 代码写在 /workspace,自动持久化优势:
镜像构建
使用预构建的 `idea-storm-sandbox` 镜像。Dockerfile 位于 `scripts/Dockerfile`:
FROM node:22-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv git curl ca-certificates \
&& rm -rf /var/lib/apt/lists/*
RUN npm install -g @anthropic-ai/claude-code
RUN useradd -m -s /bin/bash coder
RUN mkdir -p /home/coder/.openclaw /workspace && chown -R coder:coder /workspace /home/coder
USER coder
WORKDIR /workspace
CMD ["bash"]构建:`docker build -t idea-storm-sandbox -f scripts/Dockerfile .`
调用方式
从 `openclaw.json` 动态提取 API 配置,注入容器环境变量:
# 提取 API 配置
API_KEY=$(python3 -c "import json; print(json.load(open('/root/.openclaw/openclaw.json'))['models']['providers']['cc']['apiKey'])")
BASE_URL=$(python3 -c "import json; print(json.load(open('/root/.openclaw/openclaw.json'))['models']['providers']['cc']['baseUrl'])")
# 运行 Claude Code(单次任务)
docker run --rm -t \
-e ANTHROPIC_AUTH_TOKEN="$API_KEY" \
-e ANTHROPIC_BASE_URL="$BASE_URL" \
-v experiments/<id>:/workspace \
idea-storm-sandbox \
bash -c 'cd /workspace && git init -q 2>/dev/null; claude --print --dangerously-skip-permissions "<prompt>"'在子 agent 中使用
子 agent 执行 Phase 4 时,通过 `exec` + `pty:true` 调用:
exec(
command="API_KEY=$(python3 -c \"import json; print(json.load(open('/root/.openclaw/openclaw.json'))['models']['providers']['cc']['apiKey'])\") && BASE_URL=$(python3 -c \"import json; print(json.load(open('/root/.openclaw/openclaw.json'))['models']['providers']['cc']['baseUrl'])\") && docker run --rm -t -e ANTHROPIC_AUTH_TOKEN=$API_KEY -e ANTHROPIC_BASE_URL=$BASE_URL -v /root/.openclaw/workspace/experiments/<id>:/workspace idea-storm-sandbox bash -c 'cd /workspace && git init -q 2>/dev/null; claude --print --dangerously-skip-permissions \"<prompt>\"'",
pty=true,
timeout=300
)也可以使用辅助脚本 `scripts/run-sandbox.sh` 简化调用(见下方)。
Prompt 构造原则
给 Claude Code 的 prompt 应包含:
1. **目标**:要实现什么功能
2. **上下文**:当前项目结构、技术栈、已有代码
3. **约束**:文件路径、命名规范、依赖限制
4. **验证**:实现后如何验证(测试命令等)
示例:
基于 design/plan.md 中的方案,在当前目录实现面部微表情生成模块。
技术栈:Python 3.11 + PyTorch + StyleGAN3
要求:
1. 实现 FacialExpressionGenerator 类
2. 支持 6 种基本表情
3. 推理延迟 < 50ms
4. 写好单元测试
完成后运行 pytest 确认测试通过。迭代模式(Ralph Loop)
多轮迭代优化时,循环调用容器中的 Claude Code:
1. 将任务写入实验目录的 `PROMPT.md`
2. 循环调用 Docker 容器,每轮读取 PROMPT.md
3. 通过文件(experiment.yaml)传递迭代状态
4. 检查完成标记决定是否继续
# 单轮实现(在容器中)
scripts/run-sandbox.sh <experiment-id> "$(cat experiments/<id>/PROMPT.md)"
# 宿主机验证结果
cd experiments/<id> && python3 -m pytest
# 如果失败,更新 PROMPT.md 加入错误信息,再跑一轮何时用 Docker 沙盒 vs 宿主机直接执行
| 场景 | 推荐 |
|------|------|
| 创建项目脚手架、多文件编辑 | Docker 沙盒 (Claude Code) |
| 复杂代码重构 | Docker 沙盒 (Claude Code) |
| 安装未知依赖、运行不信任代码 | Docker 沙盒 |
| 简单文件写入、小修改 | 宿主机 OpenClaw `write`/`edit` |
| 运行已验证的命令 | 宿主机 OpenClaw `exec` |
| 需要读取实验状态做决策 | 宿主机 OpenClaw(子 agent 自身) |
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...