This unifies the parameter naming convention across file-related tools
(edit, write_file, read_file) to consistently use file_path.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Add ModelSpec dataclass to hold model name and optional auth_type
- Update RunConfig.models to use List[ModelSpec]
- Add auth_type field to RunRecord with serialization support
- Parse models from config as string or {name, auth_type} dict
- Pass --auth-type flag to qwen command when specified
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Resolve worktree_dir to absolute path before using as cwd and QWEN_CODE_ROOT
- Load keep_worktree option from JSON config in load_config()
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Remove npm install and npm run build from worktree initialization
- Remove INITIALIZING status enum and related code
- Add keep_worktree config option (default: false)
- When keep_worktree is true, worktree is preserved for debugging
- Renumber execution steps after removing initialize step
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Remove --output-format json from CLI commands
- Change output filenames from output-{N}.json back to stdout-{N}.txt
- Keep outputs in outputs/ subdirectory for clean structure
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Add git diff capture after each run, saved as diff.patch
- Add session log collection from ~/.qwen/projects/{id}/chats/
- Store session logs in outputs/{run_id}/chats/ with original filename
- Add session_id field to track chat recording UUID
- Modify cwd in session logs to actual runner working directory
- Remove stdout_file/stderr_file from top-level, keep only in prompt_results
- Rename logs folder to openai-logs
- Add File Writer task example for testing file creation
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Add optional branch configuration to specify which git branch to use
for worktree creation.
Features:
- New branch config option to specify base branch (e.g., main, develop)
- Each worktree creates a unique branch based on the specified branch
(format: branch-run-id)
- If branch is not specified, uses the repository default branch
- Falls back gracefully when branch already exists
Changes:
- Add branch field to RunConfig dataclass
- Update GitWorktreeManager.create() to accept branch parameter
- Create unique branches for each worktree to avoid conflicts
- Update load_config() to parse branch from config
- Update config.example.json with branch option
- Update README.md documentation
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Enhance the concurrent runner with two key features:
1. Sequential Prompt Execution:
- Run multiple prompts sequentially instead of joining them
- Use --continue flag for prompts 2+ to pick up chat history
- Generate separate output files per prompt (stdout-1.txt, stdout-2.txt, etc.)
- Stop execution if any prompt fails
- Track per-prompt results in results.json
2. Auto Git Initialization:
- Automatically initialize git repo if source is not a git repository
- Run git init → git add . → git commit automatically
- Improves UX - users can point runner at any directory
Changes:
- Add PromptResult dataclass for per-prompt tracking
- Modify RunRecord to include prompt_results list
- Update QwenRunner.run() to execute prompts sequentially
- Add GitWorktreeManager.ensure_git_repo() method
- Update _build_command() to support --continue flag
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Add a Python-based concurrent runner that executes multiple Qwen CLI tasks
across different models in parallel using isolated git worktrees.
Features:
- Execute N tasks × M models concurrently with configurable concurrency
- Create isolated git worktrees for each run under ~/.qwen/worktrees
- Real-time progress display with Rich library
- Capture stdout, stderr, and OpenAI API logs per run
- Atomic JSON tracking of all runs with status and metadata
- Automatic cleanup of worktrees after each run
Structure:
- runner.py: Main implementation with asyncio
- requirements.txt: Python dependencies
- README.md: Documentation and usage
- config.example.json: Configuration template
- examples/: Toy example with sample config and project
Usage:
python runner.py config.json
Each run creates an isolated output directory:
outputs/{run_id}/
├── stdout.txt
├── stderr.txt
└── logs/openai-*.json
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>