Merge pull request #431 from Bill-Billion/fix_374_idle_poll

s17: remove redundant idle_poll agent_name parameter and sync READMEs
This commit is contained in:
Yang Haoran
2026-06-27 01:03:50 +08:00
committed by GitHub
4 changed files with 19 additions and 20 deletions

View File

@@ -42,13 +42,13 @@ After completing a task, the teammate doesn't exit. It enters the IDLE phase —
IDLE_POLL_INTERVAL = 5 # seconds
IDLE_TIMEOUT = 60 # seconds
def idle_poll(agent_name, messages, name, role) -> str:
def idle_poll(name, messages, role) -> str:
"""Return 'work', 'shutdown', or 'timeout'."""
for _ in range(IDLE_TIMEOUT // IDLE_POLL_INTERVAL):
time.sleep(IDLE_POLL_INTERVAL)
# ① Check inbox (priority)
inbox = BUS.read_inbox(agent_name)
inbox = BUS.read_inbox(name)
if inbox:
# shutdown_request handled immediately
for msg in inbox:
@@ -63,7 +63,7 @@ def idle_poll(agent_name, messages, name, role) -> str:
unclaimed = scan_unclaimed_tasks()
if unclaimed:
task = unclaimed[0]
result = claim_task(task["id"], agent_name)
result = claim_task(task["id"], name)
if "Claimed" in result:
messages.append(...)
return "work"
@@ -126,7 +126,7 @@ while True:
break # WORK phase ends
# IDLE phase
idle_result = idle_poll(name, messages, name, role)
idle_result = idle_poll(name, messages, role)
if idle_result == "shutdown":
break
if idle_result == "timeout":
@@ -268,4 +268,4 @@ Teaching version's `idle_poll()` merges CC's four mechanisms into one polling fu
</details>
<!-- translation-sync: zh@v1, en@v1, ja@v1 -->
<!-- translation-sync: zh@v2, en@v2, ja@v2 -->

View File

@@ -42,13 +42,13 @@ S16 の教学版 MessageBus とプロトコルツールを踏襲。本章の追
IDLE_POLL_INTERVAL = 5 # seconds
IDLE_TIMEOUT = 60 # seconds
def idle_poll(agent_name, messages, name, role) -> str:
def idle_poll(name, messages, role) -> str:
"""Return 'work', 'shutdown', or 'timeout'."""
for _ in range(IDLE_TIMEOUT // IDLE_POLL_INTERVAL):
time.sleep(IDLE_POLL_INTERVAL)
# ① 受信箱確認(優先)
inbox = BUS.read_inbox(agent_name)
inbox = BUS.read_inbox(name)
if inbox:
# shutdown_request は即座に処理
for msg in inbox:
@@ -63,7 +63,7 @@ def idle_poll(agent_name, messages, name, role) -> str:
unclaimed = scan_unclaimed_tasks()
if unclaimed:
task = unclaimed[0]
result = claim_task(task["id"], agent_name)
result = claim_task(task["id"], name)
if "Claimed" in result:
messages.append(...)
return "work"
@@ -126,7 +126,7 @@ while True:
break # WORK フェーズ終了
# IDLE フェーズ
idle_result = idle_poll(name, messages, name, role)
idle_result = idle_poll(name, messages, role)
if idle_result == "shutdown":
break
if idle_result == "timeout":
@@ -268,4 +268,4 @@ s18 Worktree Isolation → 各タスクに専用の作業ディレクトリ、
</details>
<!-- translation-sync: zh@v1, en@v1, ja@v1 -->
<!-- translation-sync: zh@v2, en@v2, ja@v2 -->

View File

@@ -42,13 +42,13 @@ s16 的队友能通信、能握手关机。但每个队友等 Lead 分配任务
IDLE_POLL_INTERVAL = 5 # seconds
IDLE_TIMEOUT = 60 # seconds
def idle_poll(agent_name, messages, name, role) -> str:
def idle_poll(name, messages, role) -> str:
"""Return 'work', 'shutdown', or 'timeout'."""
for _ in range(IDLE_TIMEOUT // IDLE_POLL_INTERVAL):
time.sleep(IDLE_POLL_INTERVAL)
# ① 检查收件箱(优先)
inbox = BUS.read_inbox(agent_name)
inbox = BUS.read_inbox(name)
if inbox:
# shutdown_request 立即处理
for msg in inbox:
@@ -63,7 +63,7 @@ def idle_poll(agent_name, messages, name, role) -> str:
unclaimed = scan_unclaimed_tasks()
if unclaimed:
task = unclaimed[0]
result = claim_task(task["id"], agent_name)
result = claim_task(task["id"], name)
if "Claimed" in result:
messages.append(...)
return "work"
@@ -126,7 +126,7 @@ while True:
break # WORK 阶段结束
# IDLE phase
idle_result = idle_poll(name, messages, name, role)
idle_result = idle_poll(name, messages, role)
if idle_result == "shutdown":
break
if idle_result == "timeout":
@@ -268,4 +268,4 @@ s18 Worktree Isolation → 每个任务有自己的工作目录,互不干扰
</details>
<!-- translation-sync: zh@v1, en@v1, ja@v1 -->
<!-- translation-sync: zh@v2, en@v2, ja@v2 -->

View File

@@ -301,14 +301,13 @@ def scan_unclaimed_tasks() -> list[dict]:
return unclaimed
def idle_poll(agent_name: str, messages: list,
name: str, role: str) -> str:
def idle_poll(name: str, messages: list, role: str) -> str:
"""Poll for 60s. Return 'work', 'shutdown', or 'timeout'."""
for _ in range(IDLE_TIMEOUT // IDLE_POLL_INTERVAL):
time.sleep(IDLE_POLL_INTERVAL)
# Check inbox — dispatch protocol messages first
inbox = BUS.read_inbox(agent_name)
inbox = BUS.read_inbox(name)
if inbox:
# Check for shutdown_request
for msg in inbox:
@@ -331,7 +330,7 @@ def idle_poll(agent_name: str, messages: list,
unclaimed = scan_unclaimed_tasks()
if unclaimed:
task = unclaimed[0]
result = claim_task(task["id"], agent_name)
result = claim_task(task["id"], name)
if "Claimed" in result:
messages.append({"role": "user",
"content": f"<auto-claimed>Task {task['id']}: "
@@ -498,7 +497,7 @@ def spawn_teammate_thread(name: str, role: str, prompt: str) -> str:
break
# IDLE phase (s17 new)
idle_result = idle_poll(name, messages, name, role)
idle_result = idle_poll(name, messages, role)
if idle_result == "shutdown":
break
if idle_result == "timeout":