Background Exec + Tool sa Proseso¶
Pinamamahalaan ng process tool ang mga background session na iyon. Kailangan ng totoong TTY?
exec tool¶
Mga pangunahing parameter:
command(kinakailangan)yieldMs(default 10000): awtomatikong i-background pagkatapos ng delay na itobackground(bool): i-background kaagadtimeout(segundo, default 1800): patayin ang proseso pagkatapos ng timeout na itoelevated(bool): patakbuhin sa host kung naka-enable/allowed ang elevated mode- Itakda ang
pty: true. Setpty: true. workdir,env
Pag-uugali:
- Ang mga foreground run ay direktang nagbabalik ng output.
- Kapag na-background (explicit o dahil sa timeout), ibinabalik ng tool ang
status: "running"+sessionIdat isang maikling tail. - Ang output ay pinananatili sa memory hanggang ma-poll o ma-clear ang session.
- Kung hindi pinapayagan ang
processtool, tumatakbo angexecnang synchronously at binabalewala angyieldMs/background.
Pag-bridge ng child process¶
Kapag naglulunsad ng mga pangmatagalang child process sa labas ng exec/process tools (hal., mga CLI respawn o gateway helper), ikabit ang child‑process bridge helper upang maipasa ang mga termination signal at matanggal ang mga listener sa exit/error. Iniiwasan nito ang mga orphaned process sa systemd at pinananatiling pare‑pareho ang shutdown behavior sa iba’t ibang platform.
Mga override ng environment:
PI_BASH_YIELD_MS: default na yield (ms)PI_BASH_MAX_OUTPUT_CHARS: limitasyon ng output sa memory (mga character)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: cap ng pending stdout/stderr bawat stream (chars)PI_BASH_JOB_TTL_MS: TTL para sa mga natapos na session (ms, naka-bound sa 1m–3h)
Config (inirerekomenda):
tools.exec.backgroundMs(default 10000)tools.exec.timeoutSec(default 1800)tools.exec.cleanupMs(default 1800000)tools.exec.notifyOnExit(default true): i-enqueue ang isang system event + mag-request ng heartbeat kapag lumabas ang isang backgrounded exec.
process tool¶
Mga aksyon:
list: tumatakbo + natapos na mga sessionpoll: i-drain ang bagong output para sa isang session (nag-uulat din ng exit status)log: basahin ang pinagsama-samang output (sumusuporta saoffset+limit)write: magpadala ng stdin (data, opsyonal naeof)kill: i-terminate ang isang background sessionclear: alisin ang isang natapos na session mula sa memoryremove: patayin kung tumatakbo, kung hindi ay i-clear kung tapos na
Mga tala:
- Tanging mga backgrounded na session ang naka-lista/nananatili sa memory.
- Nawawala ang mga session kapag nag-restart ang proseso (walang disk persistence).
- Ang mga log ng session ay nase-save lamang sa chat history kung patatakbuhin mo ang
process poll/logat maire-record ang resulta ng tool. - Ang
processay scoped bawat agent; nakikita lamang nito ang mga session na sinimulan ng agent na iyon. - Ang
process listay may kasamang derived naname(command verb + target) para sa mabilisang pag-scan. - Ang
process logay gumagamit ng line-based naoffset/limit(alisin angoffsetpara kunin ang huling N linya).
Mga halimbawa¶
Magpatakbo ng long task at mag-poll sa ibang pagkakataon:
{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }
{ "tool": "process", "action": "poll", "sessionId": "<id>" }
Magsimula kaagad sa background:
{ "tool": "exec", "command": "npm run build", "background": true }
Magpadala ng stdin:
{ "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" }