name: opc-architecture description: OPC架构理解 user-invocable: false
OPC架构理解
OPC(Orchestrated Parallel Claude)扩展了Claude Code - 它并不替代Claude Code。
核心概念
Claude Code CLI是执行引擎。OPC通过以下方式添加编排:
- 钩子 - 拦截Claude Code事件(PreToolUse、PostToolUse、SessionStart等)
- 技能 - 将提示加载到Claude Code中
- 脚本 - 由钩子/技能调用以进行协调
- 数据库 - 在Claude Code实例之间存储状态
代理如何工作
当您生成一个代理时:
- 主Claude Code实例(您的终端)在Task工具上运行钩子
- 钩子调用
subprocess.Popen(["claude", "-p", "prompt"]) - 一个新的Claude Code实例作为子进程生成
- 子进程独立运行,读取/写入协调数据库
- 父进程通过数据库中的PID跟踪子进程
$ claude ← 主Claude Code(您的终端)
↓ Task工具触发钩子
↓ subprocess.Popen(["claude", "-p", "..."])
├── claude -p "research..." ← 子代理1
├── claude -p "implement..." ← 子代理2
└── claude -p "test..." ← 子代理3
OPC不是什么
- OPC不是独立的应用程序
- OPC没有Claude Code无法运行
- OPC不直接拦截Claude API调用
- OPC不修改Claude Code的内部行为
OPC是什么
- OPC是Claude Code从
.claude/hooks/加载的钩子 - OPC是Claude Code从
.claude/skills/加载的技能 - OPC是钩子/技能调用以进行协调的脚本
- OPC是用于跨Claude Code实例状态的后端数据库
关键文件
.claude/
├── hooks/ ← Claude Code运行的TypeScript钩子
├── skills/ ← Claude Code加载的SKILL.md提示
├── settings.json ← 钩子注册,Claude Code读取此文件
└── cache/ ← 状态文件,代理输出
opc/
├── scripts/ ← 钩子调用的Python脚本
├── docker-compose.yml ← PostgreSQL、Redis、PgBouncer
└── init-db.sql ← 数据库架构
协调流程
- 用户在终端中运行
claude - Claude Code从
.claude/settings.json加载钩子 - 用户说“生成一个研究代理”
- Claude使用Task工具
- PreToolUse钩子触发,检查资源
- 钩子生成
claude -p "research..."作为子进程 - 钩子将PID存储在PostgreSQL中
- 子代理运行,将输出写入
.claude/cache/agents/<id>/ - 子代理完成,向PostgreSQL广播“完成”
- 父代理检查数据库,读取子代理的输出文件
记住
- 每个“代理”只是另一个
claude -p进程 - 钩子拦截事件,它们不创建新功能
- 所有协调通过文件和PostgreSQL进行
- Claude Code始终是执行引擎