跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

配置文件与作用域

区分 settings、运行状态、权限和会话文件,理解覆盖顺序与迁移。

Copilot CLI 默认将配置和本地运行数据放在 ~/.copilot。并非所有文件都应手工编辑,也并非把整个目录删除就能完成云端数据清理。

应该编辑哪个文件

文件或目录用途
settings.json用户偏好,支持 JSONC,也可通过 /settings 修改
config.json自动管理的认证、插件元数据及运行状态
permissions-config.json按项目位置保存工具和目录批准
mcp-config.json用户级 MCP server 定义
lsp-config.json用户级语言服务器定义
providers.jsonBYOK 提供商和模型注册表
copilot-instructions.md、instructions/个人指令及 *.instructions.md 文件
agents/、skills/、hooks/、extensions/个人扩展内容

旧版本曾把用户偏好和运行状态同时写进 config.json。当前版本会在启动时把可识别的用户设置迁移到 settings.json;loggedInUsers、installedPlugins、firstLaunchAt、staff 等内部状态保留在原文件。不要据此把整个 config.json 复制成设置文件。

配置覆盖顺序

通常按以下顺序加载,后者覆盖前者:内置默认值 → MDM 管理设置 → 用户设置 → 仓库设置 → 本地设置 → 环境变量 → 命令行参数。

作用域位置适用范围
用户~/.copilot/settings.json所有仓库的个人默认值
仓库.github/copilot/settings.json随仓库共享
本地.github/copilot/settings.local.json当前仓库个人覆盖,加入 .gitignore

这不是对每个字段都简单覆盖的承诺。仓库配置只支持官方列出的子集;其他字段即使在用户设置中有效,放到仓库文件也会被忽略。本地配置与仓库配置使用相同 Schema。

例如,deniedUrls、disabledMcpServers、disabledSkills 合并为并集,仓库只能追加;respectGitignore 只能收紧,不能通过仓库关闭用户的限制。仓库的 model、effortLevel、contextTier 仅在工作目录可信时生效。

MDM 的 permissions.disableBypassPermissionsMode 若设为 "disable",用户不能覆盖;管理方的 sandbox 值构成不可放宽的最低限制,sandbox.failIfUnavailable 仅管理员可设。CLI 还会读取 .claude/settings.json 和 .claude/settings.local.json 中受支持的跨工具仓库配置子集,不表示兼容这些文件里的所有键。

改变配置位置

export COPILOT_HOME=/path/to/my/copilot-config

这个变量替换整个 ~/.copilot 路径。旧位置的设置、会话、插件和权限不会自动在新位置出现;要保留它们,应有意识地复制或迁移所需内容。

缓存目录单独使用 COPILOT_CACHE_HOME 覆盖,不随 COPILOT_HOME 改变。默认位置是 macOS 的 ~/Library/Caches/copilot、Linux 的 $XDG_CACHE_HOME/copilot 或 ~/.cache/copilot、Windows 的 %LOCALAPPDATA%/copilot。

会话、日志与凭据后备存储

session-state/ 按会话 ID 保存 events.jsonl、计划、检查点和工作区文件,用于恢复会话。command-history-state/ 保存输入历史;session-store.db 是跨会话索引数据库。会话内输入 /session info 可查看当前日志路径,普通日志位于 logs/process-{timestamp}-{pid}.log。

installed-plugins/ 应通过插件卸载命令管理,以免元数据与文件不一致。mcp-oauth-config/ 和 mcp-secrets/ 可保存系统钥匙串不可用时的 MCP 后备凭据数据,不能把它们当作普通缓存随意公开。

删除本地 session-state/ 会失去本地恢复记录,不会删除已经同步到 GitHub 的会话。删除 session-store.db 后可用 /chronicle reindex 重建,但该命令还会同步会话数据,不只是本地重建。

配置没有生效

settings.json 读取、解析或校验失败时,CLI 会显示启动警告并忽略无效值;可识别的旧 config.json 设置仍可能合并。打开 /settings 的 Problems 标签定位问题。未知顶层键也会在该标签列出,$schema 例外。

如果文件本身有效,继续核对是否写到了错误作用域,或被仓库、管理员、环境变量和启动参数覆盖。日常修改方式见设置编辑器与命令。

托管字段的具体规则

官方总顺序将 MDM 描述为默认基线,但 MDM 专门章节又说明多数托管键会锁定。应优先检查具体字段:模型默认可在会话选择中改变,autoTier 普通值锁定,插件和市场逐条锁定,沙箱形成不可放宽的底线。不要把一般顺序用于证明用户总能覆盖企业设置,详见设备与托管配置。