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