佛系程序员
首页
栏目
标签
归档
关于
友链
佛系程序员
首页
栏目
标签
归档
友链
关于
OpenCode「并行派发审查agents」卡死无结果全套解决方案
学习笔记
网站开发
发布日期: 2026-06-05 23:19:01
喜欢量: 5 个
阅读次数:
44
# OpenCode「并行派发审查agents」卡死无结果全套解决方案 现象:触发并行多审查Agent后长时间挂住、无返回、进程僵死,**核心诱因:并发超限、API限流/超时、Agent互相抢占文件锁、队列堆积、大上下文卡死汇总阶段**。下面按从快到根治分步处理。 ## 一、临时急救(立刻生效,当前卡死会话) 1. **终止卡死进程** ```bash # 杀掉所有opencode后台agent进程 pkill -f opencode # 清空本地缓存、任务队列缓存 rm -rf ~/.opencode/cache ~/.opencode/tasks ``` 2. **单次执行禁用并行审查** 指令尾部加参数 `--no-parallel-review`,强制串行跑审查Agent,规避并行分发逻辑: ```bash opencode review ./src --no-parallel-review ``` 3. 精简审查范围:**不要全项目扫描**,指定目录/文件,减少生成Agent数量 ```bash opencode review ./src/api/xxx.js ``` ## 二、配置文件永久优化(opencode.jsonc,最关键) 配置路径: - Linux/macOS:`~/.config/opencode/opencode.jsonc` - Windows:`%USERPROFILE%\.config\opencode\opencode.jsonc` ### 1. 限制并行Agent并发数(根治并发打爆API) ```json { // 全局并发控制:并行审查最大同时运行agent数量 "concurrency": { "defaultConcurrency": 2, "providerConcurrency": 3, "reviewAgentMaxParallel": 2 }, // LLM接口超时(毫秒),默认300000(5min),建议60000~120000 "provider": { "openai": { "options": { "timeout": 120000, "chunkTimeout": 25000 } }, "anthropic": { "options": { "timeout": 120000, "chunkTimeout": 25000 } } }, // 任务全局超时:单agent最长运行时间,防止无限挂机 "task": { "staleTimeoutMs": 180000, "taskTTLMs": 900000 } } ``` > `reviewAgentMaxParallel:2` 是关键:默认自动生成5~7个并行审查Agent(安全、性能、代码质量、文档等),大量并发直接触发API 429限流卡死。 ### 2. 开启文件锁隔离,避免多Agent争抢同一文件死锁 ```json "agent": { "enableWorktreeIsolation": true, "enableFileLock": true } ``` `enableWorktreeIsolation=true`:每个审查Agent在独立临时工作树运行,不会争抢源文件、不会互相阻塞读写。 ## 三、环境变量启动参数优化(可选,全局生效) 启动前设置环境变量,写入`~/.bashrc`或启动脚本: ```bash # 队列容量、最大并发任务、单任务超时(秒) export OC_MAX_CONCURRENT_TASKS=3 export OC_MAX_QUEUE_SIZE=50 export OC_TASK_TIMEOUT=180 # 调度策略轮询,避免资源扎堆 export OC_SCHEDULER_POLICY=round_robin ``` 再启动:`opencode` ## 四、API与模型侧优化(高频卡死根源:接口限速) 1. **多密钥负载均衡(PID偏移)** 配置多组API key,开启`pidAccountOffset:true`,并行Agent自动轮询不同密钥,避免单账号短时间请求超限被封禁: ```json "provider": { "openai": { "accounts": [{"apiKey":"key1"},{"apiKey":"key2"}], "pidAccountOffset": true } } ``` 2. **审查Agent切换廉价小模型** 配置审查任务单独使用低成本小模型,大模型只用于最终汇总: ```json "model": { "smallModel": "gpt-4o-mini", "mainModel": "gpt-4o", "reviewUseSmallModel": true } ``` > 分拆:子Agent用小模型分头审查,汇总阶段用主模型合并结果,大幅降低token耗时与超时概率。 ## 五、插件修复:自动卡死续跑opencode-auto-resume 安装卡死自动恢复插件,检测Agent闲置60s无输出自动重试、终止僵死子Agent: ```bash npm install -g opencode-auto-resume ``` 配置开启:`"plugins":["opencode-auto-resume"]`,插件自动监听并行审查僵死并兜底恢复。 ## 六、日志排查定位根因(精准查卡死环节) ```bash # 调试模式运行,输出详细日志,定位卡在分发/调用/汇总哪个阶段 opencode -vv review ./src 2>&1 | tee opencode_review.log ``` - 日志只有`派发审查agents`无`request sent`:**API网络/密钥失效/限流** - 批量request sent无response:**并发过高触发服务商限流,继续调低reviewAgentMaxParallel** - 全部子Agent跑完、卡在汇总:**汇总上下文超限,拆分审查范围** ## 七、使用规范规避复发 1. 批量代码审查拆分多次,单次审查目录≤3个,不要一次性全仓`./` 2. 大项目固定 `reviewAgentMaxParallel=2~3`,不要>4 3. 遇到频繁卡死,长期改用**串行审查**:全局配置`"reviewAgentMaxParallel":1` 需要我根据你当前使用的模型(OpenAI/Claude/本地vLLM)直接生成一份可一键粘贴的完整opencode.json配置吗?
文章作者:
admin
文章链接:
https://amtb.info/show/NDE5
版权声明:
本博客所有文章除特別声明外,转载请注明来源
佛系程序员
!
分享:
搜索