跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

SDK 本地会话远程访问

把本地 runtime 的会话同步到 GitHub,并按需启停访问。

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 配置形状。