Skills parallel-vibe

当用户明确要求"并行执行同一条 Vibe Coding 指令 / 多线程并行尝试多种方案 / 在多个独立工作区里同时推进"时使用。在用户当前工作目录创建 `.parallel_vibe/`,复制出多个独立工作区并按计划运行每个 thread 的 runner(默认串行、可选并行),最后在 `@main/summary.md` 汇总结果。⚠️ 不适用:用户只是想并行跑 shell 命令/单元测试/下载任务(应直接用并发工具或 CI)、没有明确"多工作区并行尝试/多方案对比"意图、要求强安全隔离或处理高度敏感数据(应使用容器/沙箱方案)。

install
source · Clone the upstream repo
git clone https://github.com/huangwb8/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/huangwb8/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/parallel-vibe" ~/.claude/skills/huangwb8-skills-parallel-vibe && rm -rf "$T"
manifest: parallel-vibe/SKILL.md
source content

parallel-vibe

与 bensz-collect-bugs 的协作约定

  • 因本 skill 设计缺陷导致的 bug,先用
    bensz-collect-bugs
    规范记录到
    ~/.bensz-skills/bugs/
    ,不要直接修改用户本地已安装的 skill 源码;若有 workaround,先记 bug,再继续完成任务。
  • 只有用户明确要求“report bensz skills bugs”等公开上报时,才用本地
    gh
    上传新增 bug 到
    huangwb8/bensz-bugs
    ;不要 pull / clone 整个仓库。

目标

把用户的一条指令,拆成多个 thread(任务视角),并在多个**独立工作区(workspace)与多个独立进程(runner 子进程)**中执行:

  • 每个 thread 只运行一条终端命令(例如

    codex ... exec "..."
    claude ... -p "..."
    ),确保进程级独立

  • 默认串行跑 threads(省资源、减少 API 限流/轮询风险);用户明确要求时再并行

  • 最终把每个 thread 的产物与日志落盘,并在

    @main/
    生成可追溯的计划与汇总

  • .parallel_vibe/{project_id}/{thread_id}/...

  • .parallel_vibe/{project_id}/@main/summary.md
    (综合汇总)

输入

  • 必需:
    prompt
    (用户原始指令)
  • 可选:
    n
    (线程数,默认 5,范围 1-9;用户明确要求则以用户为准)
  • 可选:每个 thread 的
    runner/model/prompt
    (通过
    @main/plan.json
    --plan-file
    自定义)
  • 可选:
    --project-id/--resume
    (复用已有 project 目录)
  • 可选:
    --parallel/--max-parallel
    (用户明确要求并行时使用)

输出

你必须向用户返回:

  • 本次运行的结果目录:
    .parallel_vibe/{project_id}/
  • 如何查看汇总:
    .parallel_vibe/{project_id}/@main/summary.md

软护栏(必须遵守的操作规范;不是安全隔离)

当你在某个 thread 的

workspace/
内工作时:

  • 只允许读写当前
    workspace/
    及其子目录
  • 禁止访问父目录(
    ..
    )与任何绝对路径写入
  • 禁止读取/写入
    .parallel_vibe/{project_id}
    下的其他 thread 目录
  • 产物必须落盘到当前
    workspace/
    (便于追溯与汇总)

说明:

parallel-vibe
提供的是“工程隔离”(减少相对路径污染与文件互相覆盖),不是容器/沙箱级的强安全隔离。默认拒绝
--src-dir
中的 symlink(可用
--symlink-policy
覆盖,但存在越界风险);不要把包含敏感文件(如
.env
、SSH key)的目录作为
--src-dir

工作流

  1. 从用户消息提取:
    • 用户指令原文
      prompt
    • 线程数
      n
      :用户明确要求则照做,否则默认 5
    • 是否要求并行:若未明确要求,默认串行
  2. 规划 thread(启发式,必须落到“可执行命令”):
    • 每个 thread 明确:
      thread_id/title/runner/model/prompt
    • 推荐路由(默认策略):
      • claude
        :规划/审查/风险与边界(强推理、强约束)
      • codex
        :实现/修改/测试与验证(代码落地)
    • 模型选择
      • profile=fast|deep|default
        表达”任务强度”,再由
        parallel-vibe/config.yaml:models
        映射到你本机可用的
        model_id
      • 如你已经确定具体模型,也可在计划里直接写
        model=<model_id>
        覆盖 profile
    • effort 等级选择
      low
      /
      medium
      /
      high
      ):
      • 若用户已明确指定,严格遵从用户要求
      • 否则根据 thread 的实际 prompt 自主判断:
        • low
          :指令简单明确,无歧义(如格式化、重命名、简单查询)
        • medium
          :中等复杂度(如功能实现、代码重构、文档生成)
        • high
          :需要深度推理(如架构设计、多步骤分析、有歧义需要深度理解的任务)
      • 每个 thread 可独立设置不同的 effort 等级
  3. 在用户当前目录运行脚本(不要手写编排逻辑):
python3 parallel-vibe/scripts/parallel_vibe.py --prompt "<用户指令原文>"

如果该 skill 已做系统级安装(推荐),脚本通常位于以下路径之一(按你当前平台选择):

python3 ~/.codex/skills/parallel-vibe/scripts/parallel_vibe.py --prompt "<用户指令原文>"
# 或
python3 ~/.claude/skills/parallel-vibe/scripts/parallel_vibe.py --prompt "<用户指令原文>"

常见参数(按需添加):

# 指定线程数(默认 5)
python3 parallel-vibe/scripts/parallel_vibe.py --prompt "<用户指令原文>" --n 5

# 复用已有 project(便于重跑/续跑;每次运行仍会重建各 thread/workspace)
python3 parallel-vibe/scripts/parallel_vibe.py --prompt "<用户指令原文>" --project-id <32位md5> --resume

# 只生成计划与工作区(不运行 threads),便于你先改 plan
python3 parallel-vibe/scripts/parallel_vibe.py --prompt "<用户指令原文>" --plan-only

# 使用自定义 plan(JSON)
python3 parallel-vibe/scripts/parallel_vibe.py --plan-file /path/to/plan.json --src-dir . --out-dir .

# src_dir 存在 symlink 时的处理策略(默认 error 拒绝;skip 剔除;keep 保留为 symlink)
python3 parallel-vibe/scripts/parallel_vibe.py --prompt "<用户指令原文>" --symlink-policy skip

# 用户明确要求并行时才开启(默认串行)
python3 parallel-vibe/scripts/parallel_vibe.py --prompt "<用户指令原文>" --parallel --max-parallel 3
  1. 打开并阅读汇总:
    • .parallel_vibe/{project_id}/@main/summary.md
  2. 向用户交付:
    • 汇总结论(以
      @main/summary.md
      为准)
    • 指向每个 thread 工作区的路径(用户需要时可直接查看/对比)

自定义 thread(可选)

如需精确控制每个 thread 的

runner/profile/model/prompt
,可直接编辑运行产物:

  • .parallel_vibe/{project_id}/@main/plan.json

然后用同一个

--project-id
+
--resume
续跑。 注意:
--resume
会复用 project 目录与
@main/plan.json
,但每次运行仍会重建各 thread 的
workspace/
(避免复用旧缓存导致不可追溯/不一致)。

⚠️ 安全提示:如计划中使用

runner.type=shell
,它会执行你提供的任意命令模板(仅对受信任的 plan 使用);并且 shell/工具本身可能读写用户全局缓存目录或访问绝对路径,因此不应将其理解为“安全沙箱”。

Runner 命令形态(给规划用)

本 skill 的关键是假设 runner 支持“一条命令 = 一次独立执行”。

常见形态(以官方文档为准;具体参数以你本机 CLI 为准):

# OpenAI Codex CLI(非交互执行;全局参数通常放在子命令 exec 之前)
# <effort> 由 AI 根据 prompt 复杂度自主选择:low / medium / high
# 若用户已明确指定 effort,以用户要求为准
codex -m <model_id> -c 'reasoning_effort="<effort>"' exec "你的指令内容"

# Claude CLI / Claude Code(打印模式)
# <effort> 同上,AI 自主规划或遵从用户指定
claude --model <model_id> --effort <effort> -p "你的指令内容"

计划里 runner 参数约定(用于把

--help
中的参数安全落到“一条命令”):

  • runner.args
    :全局参数(放在子命令前;适合
    codex -c ...
    claude --effort ...
  • runner.sub_args
    :子命令参数(放在子命令后、prompt 前;适合
    codex exec --some-flag ...

清理方式

在触发目录执行:

rm -rf .parallel_vibe