Skip to content

feat(team): long-running implementation tasks on deepseek-v4-flash hit the hard 600s idle timeout #286

Description

@terisuke

Summary

/team や background worker で deepseek-v4-flash に複数ファイル実装を依頼すると、600 秒のハードタイムアウトTimed out waiting for worker session ... after 600s (status busy) が発生し、作業が途中で破棄される。実装タスクはブランチ作成まで済んでいても、テスト実行・lint・複数ファイル編集を 600 秒内に完走できない。

実績(2026-08-03、Grift リポジトリ)

  • Opencode not loading, OTel bug? anomalyco/opencode#1719 実装(worktree + M-4/L-1〜L-6 の 7 項目): ブランチ fix/1719-ordering-followups 作成後に 600s タイムアウト(コミット 0 件)
  • 過去にも同様のタイムアウトが複数回発生:
    • pr-2-playwright-4-spec(deepseek-v4-flash): 600s タイムアウト
    • pr-3-alpha-deploy-sh(deepseek-v4-flash): 600s タイムアウト
    • fix-pr-1732-driver-review / fix-pr-1731-playwright-review(GLM-5.2): 600s タイムアウト
  • 短い調査タスク(no_patch=true)や GPT-5.4 の読み取りタスクは成功

根本原因

packages/guardrails/profile/plugins/team.ts:

const defaultIdleTimeout = 10 * 60 * 1000  // 600s
...
const timeout = millis("OPENCODE_TEAM_IDLE_TIMEOUT_MS", defaultIdleTimeout)
...
if (Date.now() - started > timeout) {
  throw new Error(`Timed out waiting for worker session ${id} after ${Math.round(timeout / 1000)}s (${last})`)
}
  • このタイムアウトは idle 検出ではなくハードリミット(worker が何をしていても 600 秒で強制終了)
  • OPENCODE_TEAM_IDLE_TIMEOUT_MS 環境変数で上書き可能だが、未設定時は 600s 固定
  • deepseek-v4-flash は実装タスク(編集 + テスト実行 + lint)で 600 秒を超過する

提案

  1. 環境変数の発見性向上: OPENCODE_TEAM_IDLE_TIMEOUT_MS が存在すること自体をドキュメント化(AGENTS.md の Commands 表 or team.ts のコメント)
  2. デフォルトの延長: 実装タスクの実測(600s 超過が複数回)を踏まえ、デフォルトを 15〜20 分(900〜1200s)に引き上げる
  3. モデル別タイムアウト: モデル/エージェント別にタイムアウトを設定できるオプション(実装系エージェントは長め、調査系は短め)
  4. タイムアウト時のブランチ/作業保全: 強制終了前に git commit --allow-empty 的なチェックポイントを打つか、タイムアウトメッセージに進行状況(最後のツールコール)を含める

影響範囲

packages/guardrails/profile/plugins/team.ts(1 ファイル)とテスト。上流の opencode 本体ではなく fork 側のガードレールプラグイン。

Refs

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions