Skip to content

feat: 支持通过 tmux 启动远程 session,以便本地终端可以 attach #612

@chenbojian

Description

@chenbojian

背景

目前 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 之间无缝切换

控制方式

  1. ~/.hapi/settings.json 中添加 "useTmux": true 作为全局默认值
  2. 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 来实现。请问对这个功能有什么看法或建议?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions