| name | tmux-opencode |
| description | Control OpenCode sessions via tmux for background and parallel coding tasks. |
| metadata | {"openclaw":{"emoji":"๐ฅ๏ธ"}} |
tmux-opencode
tmux๋ก OpenCode ์ธ์
์ ์ ์ดํด์ ์ฝ๋ ์์
์ ์ํจ๋ค.
์ธ์ ์ฐ๋
- ์ฝ๋ ์์
(๊ตฌํ, ๋ฆฌํฉํ ๋ง, ๋ฒ๊ทธ ํฝ์ค)
- ๋ฉํฐ์คํ
ํ์คํฌ
- ๋ณ๋ ฌ ์์
(์ฌ๋ฌ ์ธ์
๋์ ์คํ)
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
(์ฑํ
๋ธ๋ก ์ ํจ)
Quick Start
SOCKET="${TMPDIR:-/tmp}/openclaw-tmux-sockets/openclaw.sock"
tmux -S "$SOCKET" new -d -s "opencode-myproject" -c ~/myproject
tmux -S "$SOCKET" resize-window -t "opencode-myproject" -x 300 -y 80
tmux -S "$SOCKET" send-keys -t "opencode-myproject" 'opencode' Enter
sleep 3
tmux -S "$SOCKET" send-keys -t "opencode-myproject" -l 'ulw Fix bug in auth module. Commit and push when done.'
tmux -S "$SOCKET" send-keys -t "opencode-myproject" Enter
ํ๋กฌํํธ ๊ท์น
- ์์ด๋ก ์์ฑ (OpenCode ์ต์ ํ)
-l ํ๋๊ทธ ํ์ (ํน์๋ฌธ์ ์ฒ๋ฆฌ)
ulw ๋ก ์์ (๋ณต์กํ ์์
)
- ๋์ "Commit and push when done"
์ํฌํ๋ก์ฐ
1. ์ธ์
์์ฑ
tmux -S "$SOCKET" new -d -s "$SESSION" -c "$PROJECT_DIR"
tmux -S "$SOCKET" resize-window -t "$SESSION" -x 300 -y 80
tmux -S "$SOCKET" send-keys -t "$SESSION" 'opencode' Enter
2. ํ๋กฌํํธ ์ ์ก
tmux -S "$SOCKET" send-keys -t "$SESSION" -l 'ulw Your task here. Commit and push when done.'
tmux -S "$SOCKET" send-keys -t "$SESSION" Enter
3. ์ํ ํ์ธ
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -100
์ํ ํ๋จ:
| ์ํ | ์ ํธ |
|---|
| thinking | ํ๋ก๊ทธ๋ ์ค๋ฐ ์์ง์, tool ์คํ ์ค |
| ready | ์
ธ ํ๋กฌํํธ (โฏ), ์ฒดํฌ๋ฆฌ์คํธ ์๋ฃ |
| error | ์๋ฌ ๋ฉ์์ง, rate limit |
| stuck | 15๋ถ ์ด์ ๋ณํ ์์ |
4. ์๋ฃ ํ์ธ
- ์
ธ ํ๋กฌํํธ ๋ณต๊ท (
โฏ ๋๋ โ)
- "Committed and pushed" ๋ฉ์์ง
- ์ฒดํฌ๋ฆฌ์คํธ ์ ๋ถ
[โ]
๋ชจ๋ธ ๋ณ๊ฒฝ
tmux -S "$SOCKET" send-keys -t "$SESSION" C-x m
sleep 0.5
tmux -S "$SOCKET" send-keys -t "$SESSION" -l 'opus'
tmux -S "$SOCKET" send-keys -t "$SESSION" Enter
์์ด์ ํธ ์ ํ
Tab ํค๋ก ์ํ (@ ๋ฉ์
์ ๋จ):
- Sisyphus โ Hephaestus โ Prometheus โ Atlas โ ...
| ์์ด์ ํธ | ์ฉ๋ |
|---|
| Sisyphus | ํ์์ ์์
|
| Hephaestus | ๋ช
ํํ ๊ตฌํ ์์
|
| Oracle | ์ํคํ
์ฒ, ๋๋ฒ๊น
, ๋ฆฌ๋ทฐ |
| Librarian | ๋ฌธ์ ๊ฒ์ |
Rate Limit ๋ณต๊ตฌ
tmux -S "$SOCKET" send-keys -t "$SESSION" Escape
tmux -S "$SOCKET" send-keys -t "$SESSION" Escape
sleep 1
tmux -S "$SOCKET" send-keys -t "$SESSION" -l 'continue'
tmux -S "$SOCKET" send-keys -t "$SESSION" Enter
Idle ์ธ์
์ฑ์ฐ์ง
tmux -S "$SOCKET" send-keys -t "$SESSION" Escape
tmux -S "$SOCKET" send-keys -t "$SESSION" -l 'continue'
tmux -S "$SOCKET" send-keys -t "$SESSION" Enter
๋ณ๋ ฌ ์ด์ ์์
git worktree add ../project-issue-1 -b feature/issue-1
git worktree add ../project-issue-2 -b feature/issue-2
tmux -S "$SOCKET" new -d -s "issue-1" -c ~/project-issue-1
tmux -S "$SOCKET" new -d -s "issue-2" -c ~/project-issue-2
์ธ์
์ถ์
memory/tmux-sessions.json:
{
"sessions": {
"opencode-myproject": {
"project": "~/myproject",
"task": "Fix auth bug",
"status": "running"
}
}
}
status: running | completed | failed | stuck
์๋ ์๋ฃ ์๋ฆผ
watch-session.sh ๋ก ์ธ์
์๋ฃ ์ Discord ์๋ฆผ:
~/clawd/scripts/watch-session.sh "opencode-myproject" > /tmp/watch.log 2>&1 &
์ธ์
์ข
๋ฃ
tmux -S "$SOCKET" kill-session -t "$SESSION"