仓库配置 github-app.yml
管理项目指令、生命周期脚本、服务器识别、远程控制与运行时环境变量。
This page has not been translated into English yet. The original Chinese version is shown below.
项目配置位于 .github/github-app.yml;旧名 .github/copilot-desktop.yml 仍兼容。已有文件时,应用 UI 中的项目设置会写回该文件;没有文件时,可从当前项目设置创建。
先接受仓库配置
检测到仓库配置后,应用不会立即采用其中的指令、脚本或设置,需要先审查并接受。从应用 UI 创建或更新的配置自动受信任。
在应用外修改配置,包括只改空白或注释,也需要重新接受。接受前继续使用之前在应用中配置的项目设置。脚本及子进程能获得下文所列 GitHub 凭据,因此审查不能只看脚本名称。
配置示例
下面沿用官方的 Bun 示例结构;项目实际使用其他工具时调整命令:
instructions: |
Use bun instead of npm.
scripts:
- name: Setup
command: bun install
triggers:
- session.create
- name: Run
command: bun run dev
server_ready_pattern: '(?i)Local:\s+(https?://\S+)'
auto_open_in_browser: true
automation:
auto_issue_session: true
remote_control: falseinstructions 注入项目会话的系统提示,在全局指令之后应用。每个 script 包含字符串 name、command,以及可选字符串数组 triggers;无 triggers 的脚本手工运行。
生命周期触发器
规范值为 session.create 与 session.archive。旧别名 workspace.create、workspace.archive 仍可解析,但脚本运行时的 COPILOT_SCRIPT_TRIGGER 总是规范值。
旧对象式 scripts 中,setup 对应创建事件,archive 对应归档事件,run 对应手工脚本,可以是单个命令字符串或 { name, command } 对象列表。新配置优先使用数组结构表达多个脚本。
服务器 URL 与自动打开
server_ready_pattern 使用 Rust regex 语法,应用读取第 1 个捕获组。如果捕获到 HTTP(S) URL,直接使用;如果只捕获端口,例如 3000,转换为 http://localhost:3000。无效正则回退到应用默认识别模式。
auto_open_in_browser 为 true 时,在集成浏览器打开识别到的地址;省略时有效默认值也是 true。
自动会话与远程控制
| 键 | 省略时有效默认值 | 用途 |
|---|---|---|
automation.auto_issue_session | true | 自动以 Issue 上下文启动会话 |
automation.remote_control | false | 从 GitHub 网页或 Mobile 访问会话 |
组织席位还要求 Store local sessions in the Cloud 策略为 View and control。托管 remoteControl 可以进一步限制,项目设置 true 本身不能保证远程控制可用。
脚本环境变量
| 变量 | 含义 |
|---|---|
COPILOT_WORKSPACE_NAME | 当前工作区名称 |
COPILOT_WORKSPACE_PATH | 工作区绝对路径 |
COPILOT_ROOT_PATH | 项目根 checkout 绝对路径 |
COPILOT_DEFAULT_BRANCH | 项目默认分支 |
COPILOT_PORT | 当前工作区上下文的应用 WebSocket 端口 |
COPILOT_SCRIPT_TRIGGER | 仅触发式脚本有值,说明规范触发器 |
GH_TOKEN、GH_HOST | 当前选择的 GitHub 账户令牌和主机 |
COPILOT_GH_ACCOUNT_* | 所有已登录账户的主机、账户专属令牌,包含当前账户 |
账户变量格式为 COPILOT_GH_ACCOUNT_<HOST>_<LOGIN>。主机和登录名先转小写,ASCII 字母数字保持不变,其他每个 UTF-8 字节转换为两侧带下划线的大写十六进制。例如 GitHub.com 的 alice 对应 COPILOT_GH_ACCOUNT_github_2E_com_alice。
不要把 COPILOT_PORT 当作应用开发服务器端口,也不要在脚本输出中打印或持久化上述令牌。