Перейти к основному содержимому
C

agentbridge

chenacc1/agentbridge

AgentBridge for DSH Desktop: run /phone in a conversation to pair a phone console with that exact live Agent.

Установка

dsh plugin --profile web add github:chenacc1/agentbridge

README

AgentBridge

npm version npm downloads DSH plugin license stars

一条命令,把手机变成这台电脑上 Agent 的遥控器。 微信扫码即用,不用装 App,也不用和电脑连同一个 Wi-Fi。

手机端控制台:语音/文字发指令,Agent 流式回复,与桌面同一份对话

在电脑上跑着的 Claude Code / Codex / DeepSeek Harness / DSH Desktop 会话,执行 /phone 会出现一次性二维码:

  • 手机扫码后接管的就是屏幕上那一条对话,不是新建一个"类似的"会话;
  • 消息、工具调用、审批卡片、模型切换、停止任务,两端看到的是同一份事件流;
  • 电脑始终是唯一执行端,凭据和文件访问不出本机。
npx @chenacc/agentbridge        # 起桥并直接打印二维码

然后在 Claude Code / Codex / DSH Desktop 里输入 /phone,扫二维码即可。

觉得有用就给个 star:github.com/chenacc1/agentbridge —— 不点也不影响任何功能,只影响我有没有动力继续写。

桌面端控制台:左侧是 Agent / 项目 / 会话三级导航,右侧是同一段对话与工具活动

手机与桌面共享同一份可追加事件流,因此消息、工具活动、审批和任务状态始终同步。电脑是唯一的执行端:手机只运行界面,不运行 Agent,也拿不到任何供应商凭据。

默认走 Cloudflare 隧道:手机用流量、在外地都能打开;隧道对外开放,因此自动带一道访问密钥门禁。

当前版本: 桥 @chenacc/agentbridge 0.2.1 · DSH 插件 @chenacc/dsh-agentbridge 0.4.1(两个包各自发布,见文末「版本与发布」)。

它是怎么工作的

AgentBridge 架构:电脑上的本地 Bridge 连接已配对手机,并调用获准的编程 Agent 适配器。

三端结构:手机控制面、本地 Bridge、电脑执行端

  1. 手机 只负责界面与指令:扫码进入 H5 控制台,选工作区、选会话,发出消息、审批与停止命令。
  2. 本地 Bridge 是唯一枢纽:校验设备、维持会话与输入租约,把命令写进可追加事件流,再经 SSE 推回手机。
  3. 电脑上的 Agent 子进程 真正执行任务,凭据与文件访问始终留在本机,手机侧拿不到。

远程时中间多一跳,但入口仍然是桥:

手机 ──公网 HTTPS──> Cloudflare 边缘 ──隧道──> cloudflared(你电脑上的进程)
                                                      │
                                                      ▼
                                        AgentBridge 桥(127.0.0.1:8787)
                                                      │
                                                      ▼
                            Claude Code / Codex / DeepSeek Harness / DSH Desktop 里的那条会话

因为上行与下行共用同一条事件流,桌面端和手机看到的是同一份状态,而不是两套各自猜测的界面。

本文中标注为「分镜关键帧」的图片是讲解视频的概念示意图,用于说明结构关系;真实界面见下文「界面」一节。

主要能力

  • 扫码配对:一次性、5 分钟有效的二维码;配对后收藏固定回访地址,之后免扫码进入。
  • 跨网络直接可用:默认自动开 Cloudflare 隧道,二维码就是公网 https 地址,手机无需安装任何 App。
  • 工作区 → 会话导航:一个抽屉管理「Agent → 项目 → 会话」,Bridge 重启后历史与会话不丢失。
  • 完整对话控制:流式输出、停止、接管输入、翻看历史,表格 / 公式 / 代码块正确渲染。
  • 远程协作:审批卡片、提问卡片、限时自动放行(5/10/30 分钟)、消息排队、会话内搜索。
  • 手机输入:上传图片与文件、语音转文字、一键复制命令。
  • 模型切换:只使用 Agent 真实上报的模型目录,绝不编造模型名。
  • 通知推送:需要你处理时推送到企业微信 / Telegram / ServerChan / PushPlus。
  • 多 Agent 统一接入:Codex、Claude Code、DeepSeek Harness、DSH Desktop、ZCode(官方跳转)。

安装到你的电脑

从本机启动到手机控制的四步流程。

前置条件

项要求
Node.js22 或更高,node -v 确认
操作系统Windows(一键脚本齐全);Linux / macOS 直接用 npm start
Agent 工具可选,按需安装:Claude Code / Codex / DeepSeek Harness / DSH Desktop
cloudflared不需要手动准备:缺了会自动下载(见下一节)

AgentBridge 不替你安装或登录任何 Agent,只检测本机已安装且已登录的那些;没装的显示「未安装」,不会假装可用。

两种装法

想马上用(推荐):不用下载仓库,一条命令起桥并直接打印二维码。

npx @chenacc/agentbridge

要长期使用、或改配置(项目白名单、远程通道、通知推送),装成全局命令:

npm install -g @chenacc/agentbridge
agentbridge phone --agent claude

要改代码或跑测试:从仓库来。

git clone https://github.com/chenacc1/agentbridge.git
cd agentbridge
npm install
$env:AGENTBRIDGE_PROJECTS = "agentbridge=D:\projects\agentbridge"   # 可选:别名=绝对路径,分号分隔
npm start

打开 http://127.0.0.1:8787,桌面页会显示一次性二维码,用微信「扫一扫」即可。

二维码只用于首次配对,会过期且只能使用一次。配对成功后请收藏手机页显示的固定回访地址,之后从收藏进入;不要收藏 /pair?code=... 临时链接。 AGENTBRIDGE_PROJECTS 可以不写:不设时默认把启动目录作为唯一可用项目,别名 workspace。别名只允许字母、数字、_、-(≤40 字符)。 这些变量必须设在真正启动 Bridge 的那个终端里;.env.example 只是一份清单,程序不会自动读取 .env 文件。

装完自检

npx @chenacc/agentbridge phone --agent echo
# 从仓库跑的话:node .\bin\agentbridge.js phone --agent echo

Echo 适配器不接触任何 AI 工具,只验证「CLI → 本机 Bridge → 生成配对二维码」整条链路。能打印二维码就说明安装正确,扫码后可看到手机与桌面同步。终端里除了二维码,还会打出两行关键信息:

网络: 公网地址,手机用流量也能打开
微信扫码地址: https://xxx.trycloudflare.com/pair?code=…&key=…

第一次运行会自动下载 cloudflared(约 55 MB),所以首次可能要等几秒到几十秒;之后再运行就是秒级。

网络与远程接入

二维码里的地址是怎么定的

CLI 和插件共用同一套逻辑(src/remote.js),按下面的顺序决定二维码写什么:

优先级条件二维码地址
1设了 AGENTBRIDGE_PUBLIC_ORIGIN你给的那个(Tailscale、ZeroTier、自己的域名都走这条)
2已有桥正在用公网地址运行复用它,不再开新通道
3设了 AGENTBRIDGE_NO_TUNNEL=1 或 AGENTBRIDGE_REMOTE=lan局域网
4AGENTBRIDGE_REMOTE 指定了某一条(funnel / named / tailscale / zerotier / cloudflare)只试那一条
5默认 auto按下面「五种远程路径」的顺序试,成功即停
6全都不成立局域网,日志里逐条说明每条为什么失败

五种远程路径

auto(默认)的尝试顺序:命名隧道 → Funnel → Cloudflare quick → Tailscale → ZeroTier → 局域网。下表的“自动”指装好就能用、不需要你手动跑脚本。

路径自动?手机要求代价
Cloudflare quick tunnel✅ 缺 cloudflared 会自己下只需浏览器域名每次重建会变
局域网✅ 兜底浏览器 / 微信出门就不可用
Tailscale(私有地址)✅ 已登录且在线才用同一 tailnet(装 App)手机要常驻 VPN 类 App
ZeroTier(私有地址)✅ 检测到 ZeroTier 网卡才用同一私有网络(装 App)同上
Tailscale Funnel🟡 需 AGENTBRIDGE_REMOTE=funnel 显式开启;auto 只复用已开启的只需浏览器要在 Tailscale 管理台开启 Funnel
Cloudflare 命名隧道🟡 需配隧道名 + 域名只需浏览器域名要托管在 Cloudflare

Funnel 单独放在“要显式开启”这一档,是因为开启它会改动你 tailnet 的对外暴露配置——这种事不该由一次扫码替你决定。反过来,已经开着的 Funnel 会被 auto 直接复用。

只想用某一条路径:

$env:AGENTBRIDGE_REMOTE = "funnel"    # 或 named | cloudflare | tailscale | zerotier | lan
agentbridge phone --agent claude

命名隧道需要两个变量:

$env:AGENTBRIDGE_CLOUDFLARE_TUNNEL = "agentbridge"        # cloudflared 里已经建好的隧道名
$env:AGENTBRIDGE_CLOUDFLARE_HOSTNAME = "bridge.example.com"

当前路径会同时出现在三个地方:CLI 输出的「网络:」一行、桥启动日志的 Remote path: 一行、/api/health 的 remoteProvider 字段——二维码打不开时先看这三处。

分镜关键帧:四条网络路径分别接入同一台 Windows Host,其中 Cloudflare 路径还要经过一道访问密钥门禁

任何模式都不要把 TCP 8787 直接映射到公网。Cloudflare 模式会额外启用访问密钥闸门,光有二维码不够。

cloudflared 是自动的

插件和 CLI 都会先在本机找 cloudflared(PATH、两处 Program Files、winget 目录、~/.agentbridge/bin),都找不到时才从 Cloudflare 官方的 GitHub Releases 下载一份到 %USERPROFILE%\.agentbridge\bin\cloudflared.exe:不要管理员权限、不写系统目录、删掉那个文件夹就等于卸载。下载完会先跑一次 cloudflared --version,验不过的文件不会留下。

想自己装也行(winget install --id Cloudflare.cloudflared),已装的那份优先。断网或代理挡住下载时,一切照常,只是退回局域网。

访问密钥:会不会变、怎么换

密钥就是一句口令,不是账号。它只在对公网开放时生效(quick tunnel / 命名隧道);局域网、Tailscale、ZeroTier 默认没有门禁,也就不会有人问你密钥。门禁打开时,所有非本机(loopback)请求都必须带上它:二维码里已内嵌 ?key=…,手机用它换一个 90 天有效的 cookie(agentbridge_key)。

密钥文件有两个位置,取决于谁在开隧道:

谁来开隧道密钥文件
CLI / DSH 插件(默认路径)%USERPROFILE%\.agentbridge\access-key
仓库里的一键脚本 .cmd<仓库>\.agentbridge\access-key

两者都是先读后写:文件存在、内容非空且不短于 16 个字符就原样复用,所以重启、换端口、换隧道地址都不会改它。会变的只有三种情况:删掉(或清空、或写短于 16 个字符)该文件;换了一份代码目录;该目录第一次以 Cloudflare 模式启动。

换法(三步,不需要改代码):

# 1. 停掉桥(安全停止脚本,或结束占用 8787 的进程)
scripts\stop-agentbridge.ps1

# 2a. 让下次启动生成新串
Remove-Item "$env:USERPROFILE\.agentbridge\access-key"
# 或者直接写自己的口令(≥16 字符,别加换行):
# "my-own-long-passphrase" | Set-Content "$env:USERPROFILE\.agentbridge\access-key" -NoNewline -Encoding ascii

# 3. 重启(重启 DSH Desktop,或再跑一次 agentbridge phone)

换完所有手机都要重新扫码(旧 cookie 不再匹配)。.agentbridge/ 已在 .gitignore 中,密钥不会进版本库;但也别把带 ?key= 的完整链接贴到公开场合。推送通知的跳转链接默认不带密钥(notifyLink 需要显式开启),所以换钥匙不影响通知。

局域网地址是怎么挑的

自动选地址时会跳过 169.254.x.x(网卡没拿到租约时的临时地址,手机根本路由不到)和 Hyper-V / WSL / 蓝牙 / Wi-Fi Direct 这类虚拟网卡,优先真实的 Wi-Fi 或以太网地址。扫码后如果微信弹出「该地址为 IP 地址,请使用域名访问网站」,点「继续访问」即可。

一键启动与停止(Windows)

入口用途
启动 AgentBridge.cmd局域网模式:检查服务健康、避免重复占用 8787、后台启动并打开控制台
启动 AgentBridge 远程模式.cmdTailscale 模式,跨网络使用
启动 AgentBridge ZeroTier 远程模式.cmdZeroTier 模式,Tailscale 不稳定时使用
启动 AgentBridge Cloudflare 远程模式.cmdCloudflare Tunnel,手机不需装任何 App(不做自动下载,缺 cloudflared 会直接报错并提示安装)
安全停止 AgentBridge.cmd安全停止:不误杀其它进程、有任务在跑时拒绝停止、绝不强制 kill

这些脚本自己设置 AGENTBRIDGE_PUBLIC_ORIGIN 和访问密钥,和 CLI / 插件的自动模式不要同时用:同一端口只能有一个桥在跑,后启动的那个会连上已有实例而不是另起一个。

日志在 <仓库>\.agentbridge\logs;桌面快捷方式用 .\scripts\install-agentbridge-shortcut.ps1 创建或刷新。

让 Agent 支持 /phone

/phone 不是 Agent 自带的功能,而是 AgentBridge 往对应客户端里装的一个技能(一个 SKILL.md 文件)。它只做一件事:在当前项目目录里调用 agentbridge phone --agent <id>,由 CLI 确保 Bridge 在运行、准备公网地址、创建或附加会话、打印一次性二维码。

三个前提,每个 Agent 都一样:

  1. Bridge 能在本机起来(上一步已自检)。
  2. 目标 Agent 已安装并登录,且在同一个项目目录里打开。
  3. 装完技能后重启该客户端,斜杠命令才会出现。

技能是纯文本文件,删掉对应的 SKILL.md 就等于卸载。

二维码默认是公网地址,三条路径共用同一套逻辑、同一条隧道、同一把访问密钥:cloudflared 缺了就自动下载;DSH 插件已经开着隧道时,CLI 直接复用它,不会再起一条。只想在局域网用就设 AGENTBRIDGE_NO_TUNNEL=1;已有自己的公网入口就设 AGENTBRIDGE_PUBLIC_ORIGIN。

一个例外:如果本机已经有一个以局域网地址运行的桥(比如很久以前启动的旧进程),CLI 不会擅自重启它——那会打断正在跑的会话——只会提示本次沿用那个地址。停掉它或重启 DSH Desktop 即可换成公网地址。

Claude Code

# 用户级(默认):%USERPROFILE%\.claude\skills\phone\SKILL.md
agentbridge install-claude-skill --user

# 只装给某个项目:<项目>\.claude\skills\phone\SKILL.md
agentbridge install-claude-skill --project --cwd D:\projects\agentbridge

重启 Claude Code,在项目目录输入 /phone。技能用官方 ${CLAUDE_SESSION_ID} 绑定当前这段对话,不读私有 transcript、不猜路径;只预授权 agentbridge phone --agent claude … 这一条命令,不授予通用 Bash 权限。

手机接管期间让原来的 Claude 终端保持空闲——Claude 官方说明多个进程写同一会话会交错消息。

Codex Desktop

# 用户级(默认):%USERPROFILE%\.agents\skills\phone\SKILL.md
agentbridge install-codex-skill --user

重启 Codex 桌面项目,在本地项目会话输入 /phone。Codex 没对外提供「当前线程 ID」,所以不带参数时它会在同一项目目录新建一个会话并明确标注;只有你已知 thread ID 时才精确附加:

agentbridge phone --agent codex --session <thread-id>

DSH Desktop

前提:DSH Desktop 已安装,且存在桌面 profile %USERPROFILE%\.dsh\profiles\desktop\package.json(或由 DSH_HOME 指定)。

第 0 步:桥。 插件是遥控器,桥是基站。从 0.2.0 起桥随插件一起安装,DSH Desktop 启动时插件会自己在后台把它拉起来;从 0.3.0 起还会再自动开 Cloudflare 隧道。所以正常情况你什么都不用敲,重启桌面等几秒后直接 /phone。

只有自动启动失败(沙箱限制、端口被占)才需要手动来一条:

npx @chenacc/agentbridge

第 1 步:装插件(普通用户走市场):设置 → 插件市场 → 发现,搜 AgentBridge 或 @chenacc/dsh-agentbridge → 安装 → 重启 DSH Desktop。等价的手动安装:

cd "$env:USERPROFILE\.dsh\profiles\desktop"; pnpm add @chenacc/dsh-agentbridge@latest
# 装完还需把 "@chenacc/dsh-agentbridge" 加进该 package.json 的 dsh.profile.bundles(市场安装会自动做)

市场卡片上显示的版本号来自插件目录快照,每天刷新一次;实际安装拉的是 npm 的 latest,所以卡片版本可能比装到的版本旧一天。

从本地源码装(开发者):

npm run install:dsh-phone

这条命令只改 %USERPROFILE%\.dsh:把插件复制进 profile 的 node_modules、在 profile 的 package.json 里登记 @chenacc/dsh-agentbridge 并加入 dsh.profile.bundles,同时留一份 package.json.agentbridge-backup;不会改动 DSH Desktop.exe 或 app.asar。装完重启 DSH Desktop,在项目会话里输入 /phone。

两种装法别同时用:同一插件名同时存在于本地 file: 层和 npm 层时,重启后只有一个会生效。

这是唯一能精确绑定屏幕上那条会话的入口(会话 ID、目录、provider、模型都取自真实会话)。卸载:

npm run uninstall:dsh-phone

发布到插件市场的完整流程见 docs/PUBLISHING.md。

DeepSeek Harness(CLI / ACP)

前提:官方 dsh CLI 已安装并配置好模型与凭据,dsh --profile acp --help 能打印帮助(而不是弹出浏览器界面)。这个适配器没有斜杠技能,直接用 CLI:

agentbridge phone --agent deepseek-harness

一张表汇总

Agent前提要执行的安装命令重启客户端入口二维码默认地址
Claude Code已安装并登录agentbridge install-claude-skill --user需要/phone公网
Codex Desktop已安装并登录agentbridge install-codex-skill --user需要/phone公网
DSH Desktop存在桌面 profile插件市场安装(或 pnpm add)需要/phone公网
DeepSeek Harnessdsh --profile acp --help 可用不需要—phone --agent deepseek-harness公网
Echo无不需要—phone --agent echo公网
ZCode仅官方 Remote Control / Bot Channel不需要—AgentBridge 不代管—

通用说明

  • /phone 只接受来自本机 loopback 的绝对路径,手机会话无法提交任意目录。
  • 想让 agentbridge 成为全局命令,在仓库里跑一次 npm link。
  • 想从固定版本装:npm install --global github:chenacc1/agentbridge#bridge-v0.1.4,然后 agentbridge setup codex 装技能。

支持的 Agent

适配器状态说明
Echo可用进程内回声,安全验证扫码、同步与断线重连
OpenAI Codex安装后可用codex app-server --stdio;流式、取消、审批、提问、历史发现
Claude Code安装后可用claude --print --input-format stream-json;恢复、取消、审批与提问
DeepSeek Harness安装官方 dsh 后可用dsh --profile acp 的独立 ACP 会话
DSH Desktop安装本地 bundle 后可用绑定屏幕上的会话,可双向同步、切换模型、新建会话
ZCode官方原生交接走 ZCode Desktop 的 Remote Control / Bot Channel,本身不伪造会话接口

分镜关键帧:多 Agent 适配层——统一控制台环绕四类可接入 Agent,ZCode 位于外圈并标为官方原生入口

每个适配器只承诺它真实支持的能力:缺哪项能力,界面就显示「未安装」或「仅桌面附着」,而不是摆一个按不动的按钮。

界面

桌面端控制台

手机端把同一份事件流重新排进窄屏:

手机端 ①手机端 ②
手机端控制台 1手机端控制台 2

常用配置

完整变量见 .env.example。

桥本身:

变量默认值含义
AGENTBRIDGE_PORT8787HTTP 监听端口
AGENTBRIDGE_HOST0.0.0.0监听地址
AGENTBRIDGE_PROJECTS当前目录项目白名单,分号分隔 别名=绝对路径
AGENTBRIDGE_DATA_DIR~/.agentbridge(CLI / 插件)/ 启动目录(npm start)会话、事件、密钥、隧道状态的目录
AGENTBRIDGE_PUBLIC_ORIGIN自动(公网隧道或局域网地址)写进二维码的访问地址;设了它就不再自动开隧道
AGENTBRIDGE_ACCESS_KEY未设置访问密钥;对公网开放时自动生成并写入 access-key 文件
AGENTBRIDGE_PAIRING_TTL_MS300000配对码有效期(5 分钟)
AGENTBRIDGE_SESSION_TTL_MS259200000设备会话有效期(72 小时)
AGENTBRIDGE_CLAUDE_MODEL供应商默认可选的 Claude / Kimi 模型 ID
AGENTBRIDGE_NOTIFY_WEBHOOK未设置通知 Webhook;未设置时该功能静默
AGENTBRIDGE_NOTIFY_IMPORT未设置通知设置存在旧数据目录时,指向它一次即可自动迁过来

通知设置(webhook / token / 静默开关)保存在桥的数据目录下的 notify.json,默认是 %USERPROFILE%\.agentbridge。DSH 插件接管网关后数据目录换过位置,老配置如果留在原来的 .agentbridge 里,用 AGENTBRIDGE_NOTIFY_IMPORT=<旧目录> 启动一次就会自动迁过去;也可以直接在桌面控制台的「通知」面板重填一次。桥启动日志里有一行 Notifications: pushplus/clawbot 或 Notifications: off — no webhook configured in …,能直接看出它到底读到了哪个文件。

跨网络(CLI 与插件都认):

变量默认值含义
AGENTBRIDGE_REMOTEauto走哪条路径:auto / cloudflare / named / funnel / tailscale / zerotier / lan
AGENTBRIDGE_NO_TUNNEL未设置设为 1 等价于 AGENTBRIDGE_REMOTE=lan
AGENTBRIDGE_TUNNEL_URL未设置直接指定隧道域名(给"隧道自己管"的人)
AGENTBRIDGE_CLOUDFLARE_TUNNEL未设置Cloudflare 命名隧道的名字;设了它 auto 会优先用它
AGENTBRIDGE_CLOUDFLARE_HOSTNAME未设置命名隧道对应的公网域名
AGENTBRIDGE_CLOUDFLARED自动查找用你自己那份 cloudflared;设了它既不搜索也不下载
AGENTBRIDGE_CLOUDFLARED_URL官方 Releases换下载源(内网镜像),下载后照样过 --version 校验
AGENTBRIDGE_NO_DOWNLOAD未设置设为 1 禁止自动下载 cloudflared
AGENTBRIDGE_TAILSCALE自动查找指定 tailscale 可执行文件(装在非常规位置时用)
AGENTBRIDGE_ZEROTIER自动检测网卡直接指定 ZeroTier 分配到的 IPv4

插件 / CLI 专用:

变量默认值含义
AGENTBRIDGE_ORIGINhttp://127.0.0.1:8787插件连接的本地桥地址
AGENTBRIDGE_LOCAL_ORIGINhttp://127.0.0.1:8787CLI 连接的本地桥地址
AGENTBRIDGE_NO_AUTOSTART未设置设为 1 关掉"插件加载时自动起桥"

变量要设在真正启动 DSH Desktop / 终端的环境里,不是设在跑桥的另一个窗口里。

安全边界

访问边界:本地配对与管理接口只允许 loopback;远程访问使用私有网络或受访问密钥保护的隧道。

  • 二维码里是一次性配对码,不是 Agent 凭据;磁盘只保存设备 token 的 SHA-256 摘要。
  • 设备 cookie 为 HttpOnly + SameSite=Strict;修改型请求校验同源,命令 ID 防重放,同一会话同时只有一台设备持有输入租约。
  • 对公网开放时访问密钥强制开启,非 loopback 请求一律要求带密钥;密钥不写进命令行、不进日志。
  • 桥的本地管理接口(配对、注册、停止、cloudflared 状态)只接受 loopback;即便是同一台机器上的"要求桥重启"这类动作,也要带上插件在启动时生成的一次性 token。
  • Agent 凭据与子进程始终留在电脑上,手机永远不是执行环境。
  • 当前不提供多用户授权、静态加密事件日志、重启后活动子进程恢复或云端 Relay。

默认公网可用意味着二维码等同于钥匙:别截图外传,也别把带 ?key= 的链接贴到公开场合。只想在家里用时设 AGENTBRIDGE_NO_TUNNEL=1。

验证

npm run check           # 语法检查(38 个文件)
npm test                # 单元与集成测试(当前 240 项全部通过)
npm run verify:release  # 插件发布验收(17 项:registry / tarball / 可导入性)
npm run verify:remote   # 端到端验证 Cloudflare 远程链路,需要 cloudflared 与网络
npm run verify:mobile   # 可选:真实浏览器端到端,需要 Chrome 或 Edge

其余 verify:* 脚本(navigation、models、scrim、notify、attach、features、blocks、questions、quicknav、responsive、guide)各自启动真实 Bridge 与无头浏览器做界面验证。

版本与发布

两个 npm 包,各自独立发版,都由 GitHub Actions 用 tag 触发(OIDC 可信发布,带 SLSA provenance):

包当前版本tag 前缀装到哪
@chenacc/agentbridge0.2.0bridge-v*全局命令 / npx / 插件依赖
@chenacc/dsh-agentbridge0.4.0dsh-v*DSH Desktop 的 profile

最近的阶段性变化:

  • 0.2.0(桥):路径选择抽成 provider(src/remote.js)——Cloudflare quick / 命名隧道 / Tailscale / Tailscale Funnel / ZeroTier 共用一套顺序与回退,AGENTBRIDGE_REMOTE 可指定单条;/api/health 与启动日志会报出当前走的是哪条。
  • 0.1.1–0.1.4(桥):二维码地址改按"能不能被手机路由到"排序(跳过 169.254 与虚拟网卡);/api/health 汇报自己广播的地址;新增只有本机 token 能调的自动重启入口;隧道能力下沉到本包,CLI 的 /phone 因此也默认公网。
  • 0.4.0(插件):改用桥包里的同一套路径选择,本地行为不变但多了 Funnel / Tailscale / ZeroTier 三条可选路径。
  • 0.3.0–0.3.3(插件):加载时自动起桥、自动开 Cloudflare 隧道、cloudflared 缺失时自动下载。

升级方式:

npm install -g @chenacc/agentbridge@latest            # CLI / 桥
cd "$env:USERPROFILE\.dsh\profiles\desktop"
pnpm add @chenacc/dsh-agentbridge@latest              # DSH 插件(或直接在插件市场点安装)

更多文档

Похожие плагины