0
49
近 7 天 8
25.6
生态多维模型
3 个月前
2026-05-19
快速安装与配置
opencode.json写入当前项目的 opencode.json,只对这个仓库生效。
opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@floschl/opencode-tmux@0.6.0"]
}写入 ~/.config/opencode/opencode.json,对所有项目生效。
~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@floschl/opencode-tmux@0.6.0"]
}若你要在本地改造这个插件,先装到项目里再从本地路径引用。
shell
pnpm add -D @floschl/opencode-tmuxopencode 启动时会通过内嵌运行时自动加载 npm 依赖并缓存至本地目录,无需手动在全局环境执行安装。
Auto-spawn tmux panes for OpenCode subagent sessions — when OpenCode creates a child session, this plugin splits a new tmux pane and attaches it automatically.
How It Works
When OpenCode fires a session.created event for a child session (one with a parentID), the plugin:
- Splits a new tmux pane horizontally
- Runs
opencode attach <serverUrl> --session <id> --dir <dir>in it - Applies your configured layout
- Closes the pane when the session goes idle (if
autoClose: true)
Pane lifecycle is driven entirely by OpenCode events — no background polling.
Requirements
- tmux ≥ 3.0 installed and in
PATH - OpenCode must be running inside a tmux session (the plugin is a no-op otherwise)
opencodebinary must be inPATH(for theattachcommand in spawned panes)
Usage
OpenCode must be started as a server with an explicit port so the plugin knows the serverUrl to pass to opencode attach in spawned panes:
opencode --port 3000
Without a port, the plugin cannot construct the serverUrl and the opencode attach <serverUrl> --session <id> command in new tmux panes will fail.
Installation
bun add @floschl/opencode-tmux
Register the plugin in your opencode.json (global ~/.config/opencode/opencode.json or project-local):
{
"plugin": ["@floschl/opencode-tmux"]
}
Configuration
Create opencode-tmux.json with the plugin's settings. Keys are flat (no nesting):
Global (~/.config/opencode/opencode-tmux.json):
{
"layout": "main-vertical",
"mainPaneSize": 60,
"autoClose": true
}
Project-local (either path works; <project>/opencode-tmux.json takes precedence):
<project>/opencode-tmux.json<project>/.opencode/opencode-tmux.json
Project-local config overrides global config. Unset keys fall back to defaults.
Configuration Reference
All keys go directly in opencode-tmux.json (flat, no nesting).
| Key | Type | Default | Description |
|---|---|---|---|
layout |
string | "main-vertical" |
tmux layout: main-vertical, main-horizontal, tiled, even-horizontal, even-vertical |
mainPaneSize |
number | 60 |
Main pane size as percentage (10–90). Used with main-vertical / main-horizontal layouts |
autoClose |
boolean | true |
Close pane automatically when session goes idle |
Event Handling
| Event | Action |
|---|---|
session.created (child only) |
Spawn new tmux pane with opencode attach |
session.status → idle |
Close pane (if autoClose: true) |
session.status → busy |
Re-spawn pane if session is known but pane was closed |
session.deleted |
Close pane unconditionally |
Debugging
Set OPENCODE_TMUX_DEBUG=1 to enable verbose stderr logging:
OPENCODE_TMUX_DEBUG=1 opencode --port 4096
Limitations
- tmux only — no support for other terminal multiplexers
- Child sessions only — top-level sessions (no
parentID) are ignored - Requires OpenCode to be started from within an active tmux session
- The
opencode attachcommand must be available in the spawned pane'sPATH