工程问题的自动化迭代实验室。给定一个 idea 或工程问题,自动调研方案、设计实现、验证效果、迭代优化,结果存入 Notion。触发词:"idea-lab"、"实验一下"、"帮我验证"、"迭代优化"、"idea 验证"。当用户提出一个工程问题并希望自动化地调研→设计→验证→迭代时使用此 skill。
Idea Storm是一项面向实际任务的技能,主要用于工程问题的自动化 设计→验证→迭代 闭环;后台运行,不阻塞主会话;
实验状态文件路径: experiments/<id>/experiment.yaml;当前要执行的阶段;用户的确认/反馈内容(如有。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
工程问题的自动化 设计→验证→迭代 闭环。后台运行,不阻塞主会话。
采用分段 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 时,task 中必须包含:
experiments//experiment.yaml 示例:
sessions_spawn(task="执行 idea-storm 实验。 读取实验状态:experiments/facial-gan-20260213/experiment.yaml 执行阶段:Phase 4-6(实现→验证→评估) 用户反馈:方案OK,用 StyleGAN3 路线 按 idea-storm skill 流程执行,完成后更新 experiment.yaml 并汇报结果。")
子 agent 启动后:
三层存储,确保状态不丢失:
主会话的 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"
每个实验在 workspace 下有独立目录:
experiments// ├── experiment.yaml # 实验完整状态(核心) ├── research/ # 调研资料 │ └── findings.md ├── design/ # 方案设计 │ └── plan.md ├── src/ # 实现代码 ├── data/ # 输入数据、参考图等 ├── results/ # 每轮验证结果 │ ├── iter-1/ │ ├── iter-2/ │ └── ... └── report.md # 最终报告(本地副本)
结构化实验报告,按时间和分类组织。详见 Notion 页面结构。
实验的完整状态文件,子 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"
用户输入工程问题或 idea。提取并确认:
如果用户没有明确给出以上信息,主动询问(不要一次问太多)。
确认后:
experiments// experiment.yaml偏向工程化搜索,优先级:
工具:web_search + web_fetch
输出:
research/findings.md:调研结果基于调研设计技术方案:
输出:
design/plan.md:方案详情用户确认后,主会话 spawn 新子 agent 执行 Phase 4-6。
按方案执行。可能包括:编写代码、配置环境、生成资源、调用 API。
输出:
src/ 下的实现代码按 experiment.yaml 中定义的验证方式执行。详见 验证模式。
输出:
results/iter-N/:本轮验证数据根据验证结果判断:
| 情况 | 动作 |
|---|---|
| 达标 | 标记收敛,announce 结果 |
| 接近达标,参数可调 | 自动迭代参数,回到 Phase 4(不超过 max_iterations) |
| 方向有问题 | announce 建议换方案 |
更新 experiment.yaml 后 announce 结果给主会话。
汇报内容:
用户确认后 spawn 下一轮或进入收敛。
生成最终报告:
report.md:本地完整报告由用户在 Phase 1 定义。
用户提供参考图 + 输入集。Agent 生成输出,与参考图对比。
scripts/compare_images.py(SSIM / 像素差异)或 image 工具(视觉分析)用户定义评测函数或指标,Agent 优化实现以提升指标。
用户定义测试用例或验收标准,Agent 逐项验证。
用户描述验证方式,Agent 按描述执行。
每次启动实验时创建新页面。配置见 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 自动) |
Phase 4(实现)阶段,优先使用 Claude Code 在 Docker 沙盒中完成编码任务。
每个实验在独立的 Docker 容器中运行 Claude Code,与宿主机隔离:
宿主机 Docker 容器 (idea-storm-sandbox) ├── openclaw.json ──(env注入)────→ ANTHROPIC_AUTH_TOKEN / BASE_URL ├── experiments// ──(volume)──→ /workspace │ ├── 非 root 用户 (coder) │ ├── Claude Code CLI + --dangerously-skip-permissions │ ├── Python3 / Node.js / Git │ └── 代码写在 /workspace,自动持久化
优势:
--dangerously-skip-permissions 自动跳过权限openclaw.json 动态注入,换中转改一处即可使用预构建的 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/:/workspace
idea-storm-sandbox
bash -c 'cd /workspace && git init -q 2>/dev/null; claude --print --dangerously-skip-permissions ""'
子 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/:/workspace idea-storm-sandbox bash -c 'cd /workspace && git init -q 2>/dev/null; claude --print --dangerously-skip-permissions ""'",
pty=true,
timeout=300
)
也可以使用辅助脚本 scripts/run-sandbox.sh 简化调用(见下方)。
给 Claude Code 的 prompt 应包含:
示例:
基于 design/plan.md 中的方案,在当前目录实现面部微表情生成模块。 技术栈:Python 3.11 + PyTorch + StyleGAN3 要求: 1. 实现 FacialExpressionGenerator 类 2. 支持 6 种基本表情 3. 推理延迟 < 50ms 4. 写好单元测试 完成后运行 pytest 确认测试通过。
多轮迭代优化时,循环调用容器中的 Claude Code:
PROMPT.md# 单轮实现(在容器中) scripts/run-sandbox.sh"$(cat experiments/ /PROMPT.md)" # 宿主机验证结果 cd experiments/ && python3 -m pytest # 如果失败,更新 PROMPT.md 加入错误信息,再跑一轮
| 场景 | 推荐 |
|---|---|
| 创建项目脚手架、多文件编辑 | Docker 沙盒 (Claude Code) |
| 复杂代码重构 | Docker 沙盒 (Claude Code) |
| 安装未知依赖、运行不信任代码 | Docker 沙盒 |
| 简单文件写入、小修改 | 宿主机 OpenClaw write/edit |
| 运行已验证的命令 | 宿主机 OpenClaw exec |
| 需要读取实验状态做决策 | 宿主机 OpenClaw(子 agent 自身) |
相关专题
热门下载
相关下载
精品课程
共0课时 | 0人学习
共0课时 | 0人学习
共0课时 | 0人学习