背景
目前 runner 在远程 spawn session 时,直接通过 child_process.spawn 启动 agent 进程(detached 模式)。这样启动的 session 虽然可以通过 web 控制,但用户回到终端后无法直接 attach 到正在运行的 agent 进程。
提议
增加一个选项,让 runner 通过 tmux 来启动 agent 进程。例如:
tmux new-session -d -s hapi-<id> -- hapi claude --hapi-starting-mode remote ...
这样用户可以:
- 在 web/手机上远程创建 session
- 回到电脑后
tmux attach -t hapi-xxx 直接进入正在运行的 agent 交互界面
- 在本地终端和远程 web 之间无缝切换
控制方式
~/.hapi/settings.json 中添加 "useTmux": true 作为全局默认值
- Web 创建 session 页面增加一个 toggle,可以针对单个 session 控制是否使用 tmux
兼容性
- 默认关闭(
false),不影响现有行为
- tmux 未安装时返回清晰的错误信息
- webhook 机制不受影响(HTTP 回调与终端无关)
实现思路
主要改动点:
cli/src/runner/run.ts - spawn 时根据设置选择直接 spawn 或通过 tmux 启动
cli/src/persistence.ts - Settings 增加 useTmux 字段
- Hub 层透传
useTmux 参数
- Web 创建 session 页面增加 toggle
如果觉得这个方向可行,我可以提交一个 PR 来实现。请问对这个功能有什么看法或建议?
背景
目前 runner 在远程 spawn session 时,直接通过
child_process.spawn启动 agent 进程(detached 模式)。这样启动的 session 虽然可以通过 web 控制,但用户回到终端后无法直接 attach 到正在运行的 agent 进程。提议
增加一个选项,让 runner 通过 tmux 来启动 agent 进程。例如:
这样用户可以:
tmux attach -t hapi-xxx直接进入正在运行的 agent 交互界面控制方式
~/.hapi/settings.json中添加"useTmux": true作为全局默认值兼容性
false),不影响现有行为实现思路
主要改动点:
cli/src/runner/run.ts- spawn 时根据设置选择直接 spawn 或通过 tmux 启动cli/src/persistence.ts- Settings 增加useTmux字段useTmux参数如果觉得这个方向可行,我可以提交一个 PR 来实现。请问对这个功能有什么看法或建议?