Agent Ghost Panel Plugin for OpenCode
npm install opencode-agent-ghost-panelAgent Ghost Panel 的 OpenCode 插件,提供无缝的终端多路复用集成。
- 🔌 自动启动:OpenCode 启动时自动启动 AGP 守护进程
- 🛠️ 原生命令:直接在 OpenCode 中使用 /diff、/logs 等命令
- 🌙 幽灵模式:Agent 在后台静默运行,不阻塞交互
- 🎨 语法高亮:通过 lumen 实现 git diff 语法高亮
- 🔄 交互支持:支持 ssh、sudo 等交互式命令
- 📡 多路复用:tmux 窗口管理
``bash1. 安装 AGP
pip install -e .
🚀 使用方法
$3
`bash
一键启动 OpenCode + AGP(自动管理 tmux)
agp opencode这将自动:
1. 启动 AGP 守护进程
2. 创建 tmux 会话 (agp-opencode)
3. 启动 OpenCode
4. 加载 AGP 插件
`$3
启动 OpenCode 后,直接在对话中使用以下命令:
| 命令 | 别名 | 功能 |
|------|------|------|
|
/diff | /d | 在 tmux 新窗口显示 git diff(带高亮) |
| /diff | /d | 显示指定文件的 diff |
| /logs | /l | 实时监控日志文件 |
| /interactive | /i | 打开交互式终端(ssh/sudo 等) |
| /status | /s | 查看 AGP 状态 |
| /sessions | /ss | 列出所有 tmux 会话 |$3
`
用户: 查看当前的 git 修改
Agent: 好的,让我用 AGP 在 diff 窗口显示修改
[执行 /diff 命令]
✅ 已在 tmux diff 窗口显示 git diff(带颜色高亮)用户: 需要登录服务器
Agent: 好的,我来创建一个交互式终端
[执行 /interactive 命令]
✅ 交互式终端已创建,您可以输入 SSH 命令
用户: 监控应用日志
Agent: 好的,启动日志监控
[执行 /logs app.log 命令]
✅ 日志监控已启动
`⌨️ tmux 快捷键
在 tmux 窗口中:
`
Ctrl+b, n # 下一个窗口
Ctrl+b, p # 上一个窗口
Ctrl+b, 0 # 切换到 OpenCode 窗口
Ctrl+b, 1 # 切换到 diff 窗口
Ctrl+b, 2 # 切换到 logs 窗口
Ctrl+b, 3 # 切换到 interactive 窗口
Ctrl+b, d # 分离会话(保留后台运行)
`状态栏会显示当前窗口的操作提示。
🏗️ 架构
`
┌─────────────────────────────────────────────────────────┐
│ OpenCode │
│ │
│ ┌───────────────────────────────────────────────┐ │
│ │ AGP 插件 │ │
│ │ • /diff → 创建 tmux diff 窗口 │ │
│ │ • /logs → 创建 tmux logs 窗口 │ │
│ │ • /interactive → 创建交互式终端 │ │
│ └───────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ AGP 守护进程 (WebSocket) │
│ ws://127.0.0.1:8765 │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Tmux 会话 │
│ agp-opencode │
│ │
│ [opencode] ← OpenCode 主窗口 │
│ │ │
│ ├── [diff] ← lumen git diff(语法高亮) │
│ ├── [logs] ← tail -f 日志监控 │
│ └── [interactive] ← 交互式终端 │
└─────────────────────────────────────────────────────────┘
`🔧 开发
$3
1. 在
__init__.py 中添加命令处理函数:`python
async def _cmd_newcommand(args: list) -> Dict[str, Any]:
"""新命令说明"""
# 1. 检查依赖
# 2. 执行 tmux 命令
# 3. 返回结果 return {
"success": True,
"message": "✅ 命令已执行",
"details": {...}
}
`2. 在
AGPPlugin.execute() 中添加分支:`python
elif cmd in ["newcommand", "nc"]:
return await _cmd_newcommand(args)
`3. 在
get_commands() 中注册命令:`python
{
"name": "newcommand",
"description": "新命令说明",
"usage": "/newcommand",
"aliases": ["nc"]
}
`$3
`bash
安装测试
agp install opencode重启 OpenCode 测试
`📝 命令说明
$3
在 tmux 新窗口显示 git diff,使用 lumen 实现语法高亮。
`
/diff # 当前目录的 diff
/diff src/main.py # 指定文件的 diff
`特点:
- 自动创建 tmux diff 窗口
- 使用 lumen 渲染,带语法高亮
- 状态栏显示操作提示
$3
实时监控日志文件。
`
/logs app.log # 监控日志文件
/logs /var/log/app.log # 绝对路径
`特点:
- 使用
tail -f 实时监控
- 新窗口显示,不阻塞 OpenCode
- 可以同时监控多个日志文件$3
打开交互式终端,用于需要用户输入的命令。
`
/interactive # 打开空白交互终端
/interactive ssh user@host # 直接执行 ssh
`适用场景:
- SSH 登录远程服务器
- sudo 命令需要密码
- 其他需要交互的命令
使用后:
- 输入命令并回车执行
- 输入
exit 退出交互终端
- 使用 Ctrl+b, d 关闭窗口$3
查看 AGP 守护进程状态。
`
/status # 或 /s
`显示:
- 守护进程是否运行
- API 端点地址
- 会话数量
$3
列出所有 tmux 会话。
`
/sessions # 或 /ss
``MIT License
欢迎提交 Issue 或 Pull Request!