mirror of
https://github.com/cexll/myclaude.git
synced 2026-02-13 03:31:49 +08:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ba6950d21 | ||
|
|
7f790fbe15 | ||
|
|
06f14aa695 |
@@ -363,6 +363,14 @@ func run() int {
|
|||||||
printHelp()
|
printHelp()
|
||||||
return 0
|
return 0
|
||||||
case "--parallel":
|
case "--parallel":
|
||||||
|
if len(os.Args) > 2 {
|
||||||
|
fmt.Fprintln(os.Stderr, "ERROR: --parallel reads its task configuration from stdin and does not accept additional arguments.")
|
||||||
|
fmt.Fprintln(os.Stderr, "Usage examples:")
|
||||||
|
fmt.Fprintln(os.Stderr, " codex-wrapper --parallel < tasks.txt")
|
||||||
|
fmt.Fprintln(os.Stderr, " echo '...' | codex-wrapper --parallel")
|
||||||
|
fmt.Fprintln(os.Stderr, " codex-wrapper --parallel <<'EOF'")
|
||||||
|
return 1
|
||||||
|
}
|
||||||
// Parallel mode: read task config from stdin
|
// Parallel mode: read task config from stdin
|
||||||
data, err := io.ReadAll(stdinReader)
|
data, err := io.ReadAll(stdinReader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -888,9 +896,15 @@ Usage:
|
|||||||
codex-wrapper - [workdir] Read task from stdin
|
codex-wrapper - [workdir] Read task from stdin
|
||||||
codex-wrapper resume <session_id> "task" [workdir]
|
codex-wrapper resume <session_id> "task" [workdir]
|
||||||
codex-wrapper resume <session_id> - [workdir]
|
codex-wrapper resume <session_id> - [workdir]
|
||||||
|
codex-wrapper --parallel Run tasks in parallel (config from stdin)
|
||||||
codex-wrapper --version
|
codex-wrapper --version
|
||||||
codex-wrapper --help
|
codex-wrapper --help
|
||||||
|
|
||||||
|
Parallel mode examples:
|
||||||
|
codex-wrapper --parallel < tasks.txt
|
||||||
|
echo '...' | codex-wrapper --parallel
|
||||||
|
codex-wrapper --parallel <<'EOF'
|
||||||
|
|
||||||
Environment Variables:
|
Environment Variables:
|
||||||
CODEX_TIMEOUT Timeout in milliseconds (default: 7200000)
|
CODEX_TIMEOUT Timeout in milliseconds (default: 7200000)
|
||||||
|
|
||||||
|
|||||||
@@ -180,11 +180,50 @@ EOF
|
|||||||
|
|
||||||
### Parallel Execution
|
### Parallel Execution
|
||||||
|
|
||||||
|
> Important:
|
||||||
|
> - `--parallel` only reads task definitions from stdin.
|
||||||
|
> - It does not accept extra command-line arguments (no inline `workdir`, `task`, or other params).
|
||||||
|
> - Put all task metadata and content in stdin; nothing belongs after `--parallel` on the command line.
|
||||||
|
|
||||||
|
**Correct vs Incorrect Usage**
|
||||||
|
|
||||||
|
**Correct:**
|
||||||
|
```bash
|
||||||
|
# Option 1: file redirection
|
||||||
|
codex-wrapper --parallel < tasks.txt
|
||||||
|
|
||||||
|
# Option 2: heredoc (recommended for multiple tasks)
|
||||||
|
codex-wrapper --parallel <<'EOF'
|
||||||
|
---TASK---
|
||||||
|
id: task1
|
||||||
|
workdir: /path/to/dir
|
||||||
|
---CONTENT---
|
||||||
|
task content
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Option 3: pipe
|
||||||
|
echo "---TASK---..." | codex-wrapper --parallel
|
||||||
|
```
|
||||||
|
|
||||||
|
**Incorrect (will trigger shell parsing errors):**
|
||||||
|
```bash
|
||||||
|
# Bad: no extra args allowed after --parallel
|
||||||
|
codex-wrapper --parallel - /path/to/dir <<'EOF'
|
||||||
|
...
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Bad: --parallel does not take a task argument
|
||||||
|
codex-wrapper --parallel "task description"
|
||||||
|
|
||||||
|
# Bad: workdir must live inside the task config
|
||||||
|
codex-wrapper --parallel /path/to/dir < tasks.txt
|
||||||
|
```
|
||||||
|
|
||||||
For multiple independent or dependent tasks, use `--parallel` mode with delimiter format:
|
For multiple independent or dependent tasks, use `--parallel` mode with delimiter format:
|
||||||
|
|
||||||
**Typical Workflow (analyze → implement → test, chained in a single parallel call)**:
|
**Typical Workflow (analyze → implement → test, chained in a single parallel call)**:
|
||||||
```bash
|
```bash
|
||||||
codex-wrapper --parallel - <<'EOF'
|
codex-wrapper --parallel <<'EOF'
|
||||||
---TASK---
|
---TASK---
|
||||||
id: analyze_1732876800
|
id: analyze_1732876800
|
||||||
workdir: /home/user/project
|
workdir: /home/user/project
|
||||||
@@ -207,7 +246,7 @@ EOF
|
|||||||
A single `codex-wrapper --parallel` call schedules all three stages concurrently, using `dependencies` to enforce sequential ordering without multiple invocations.
|
A single `codex-wrapper --parallel` call schedules all three stages concurrently, using `dependencies` to enforce sequential ordering without multiple invocations.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
codex-wrapper --parallel - <<'EOF'
|
codex-wrapper --parallel <<'EOF'
|
||||||
---TASK---
|
---TASK---
|
||||||
id: backend_1732876800
|
id: backend_1732876800
|
||||||
workdir: /home/user/project/backend
|
workdir: /home/user/project/backend
|
||||||
@@ -235,6 +274,8 @@ EOF
|
|||||||
- `workdir: <path>`: Optional, working directory (default: `.`)
|
- `workdir: <path>`: Optional, working directory (default: `.`)
|
||||||
- Best practice: use absolute paths (e.g., `/home/user/project/backend`)
|
- Best practice: use absolute paths (e.g., `/home/user/project/backend`)
|
||||||
- Avoids ambiguity and ensures consistent behavior across environments
|
- Avoids ambiguity and ensures consistent behavior across environments
|
||||||
|
- Must be specified inside each task block; do not pass `workdir` as a CLI argument to `--parallel`
|
||||||
|
- Each task can set its own `workdir` when different directories are needed
|
||||||
- `dependencies: <id1>, <id2>`: Optional, comma-separated task IDs
|
- `dependencies: <id1>, <id2>`: Optional, comma-separated task IDs
|
||||||
- `session_id: <uuid>`: Optional, resume a previous session
|
- `session_id: <uuid>`: Optional, resume a previous session
|
||||||
- `---CONTENT---`: Separates metadata from task content
|
- `---CONTENT---`: Separates metadata from task content
|
||||||
@@ -249,7 +290,7 @@ EOF
|
|||||||
**Resume Failed Tasks**:
|
**Resume Failed Tasks**:
|
||||||
```bash
|
```bash
|
||||||
# Use session_id from previous output to resume
|
# Use session_id from previous output to resume
|
||||||
codex-wrapper --parallel - <<'EOF'
|
codex-wrapper --parallel <<'EOF'
|
||||||
---TASK---
|
---TASK---
|
||||||
id: T2
|
id: T2
|
||||||
session_id: 019xxx-previous-session-id
|
session_id: 019xxx-previous-session-id
|
||||||
|
|||||||
Reference in New Issue
Block a user