SDK 本地会话远程访问
把本地 runtime 的会话同步到 GitHub,并按需启停访问。
This page has not been translated into English yet. The original Chinese version is shown below.
Remote sessions 将本地或自有服务器上运行的会话同步到 GitHub,供 agents panel 或移动端访问。它不会把执行迁移到 GitHub 托管计算;需要后者时使用云端会话。
前提是已认证的 GitHub 用户,以及位于 GitHub 仓库中的会话工作目录。
为客户端启用自动同步
import { CopilotClient } from "@github/copilot-sdk";
const client = new CopilotClient({ enableRemoteSessions: true });
const session = await client.createSession({
workingDirectory: "/path/to/github-repo",
});对符合 GitHub 仓库条件的会话,客户端自动建立远程 URL。此选项仅在 SDK 启动 runtime 时生效,包括子进程和进程内宿主;连接已运行的 runtime 时会被忽略。
官方 remote 专题的部分示例权限返回值仍为 { allowed: true },其他 SDK 专题采用 kind/PermissionDecision。这里不混用旧示例形状,权限处理另见SDK 权限。
对当前会话按需启停
const result = await session.rpc.remote.enable();
console.log("Remote URL:", result.url);
// 在应用确实需要停止远程访问时执行。
await session.rpc.remote.disable();这是 CLI /remote on、/remote off 的程序化对应入口。enable 的返回结果含 URL;disable 停止远程访问,不应推断它会删除本地持久化记录或所有历史数据。
展示地址并处理不符合条件的目录
自动模式通过 session.info 事件提供地址,筛选 infoType === "remote" 并读取 url。应用可显示链接或用自己的二维码库编码;SDK 提供地址,不负责生成二维码。
工作目录不属于 GitHub 仓库时,自动模式静默跳过,按需 enable 则返回错误。所以“客户端启动成功”不能证明每个会话都有远程地址。确认 runtime 实际工作目录、用户身份,以及是否误把客户端启动选项用在已有外部 runtime 上。
对照来源中的选项名称
云端专题的比较表概括为 client/session 的 remote 选项,但 remote 专门文档明确列出的常开入口是客户端 enableRemoteSessions,按需入口是 session.rpc.remote.enable() / disable。这里采用专门参考中的可核实接口,不自行补写未展示的 session remote 配置形状。