Skip to content

feat(skills): 支持私有 GitHub 安装与静态审计#526

Merged
deepcoldy merged 2 commits into
masterfrom
codex/private-skill-git-auth
Jul 20, 2026
Merged

feat(skills): 支持私有 GitHub 安装与静态审计#526
deepcoldy merged 2 commits into
masterfrom
codex/private-skill-git-auth

Conversation

@xiongz-c

Copy link
Copy Markdown
Collaborator

背景 / 动机

Skill 管理当前允许 Git/SSH 来源,但 GitHub 网页 URL 固定转换为 HTTPS,部署机只有 SSH key 或 gh auth 身份时无法安装私有仓库;daemon 若从后来被删除的 checkout 启动,clone 还会继承失效 cwd。另一方面,Git discover 会留下永久 checkout,预览 URL 与最终安装 URL 不同时产生无 registry 引用的重复缓存,安装成功后也缺少可排障的静态内容摘要。

改动

  • GitHub HTTPS clone 复用 GITHUB_TOKEN / GH_TOKEN~/.botmux/.env 与当前 gh auth 身份;鉴权失败时仅对 GitHub 自动回退 SSH URL。凭证不进入 URL、argv、registry 或错误文本。
  • clone 固定从 Skill source 根目录启动,不再依赖 daemon 的当前工作目录。
  • standalone discover 改用自动清理的一次性 checkout;实际安装和更新仍保留长期 source cache,不做 HTTPS/SSH cache 合并。
  • Dashboard 安装/更新 job 写入 [skills:audit] 静态审计摘要,记录 commit、文件/目录/symlink/字节数、相对可执行文件和 shebang runtime;不执行 Skill 脚本、二进制或测试。
  • Dashboard 将 Git 鉴权错误映射为可操作的登录/token/SSH 提示,并补充安装文档。

默认值 / 兼容性依据

  • 非 GitHub URL、显式 SSH URL和本地/agentbuddy 来源保持原行为。
  • GitHub HTTPS 优先复用现有非交互凭证;只有明确鉴权失败才尝试 SSH,不对网络错误或其它 Git 错误切换协议。
  • discover checkout 不再跨请求缓存,避免预览产生长期孤儿目录;安装/更新 cache 语义不变。
  • 审计只做静态读取,避免把 Skill 安装扩展成宿主机任意代码执行入口。

测试覆盖

  • 覆盖环境 token、全局 env 文件和 gh auth token 的 Git 请求头注入及已有 Git config 保留。
  • 覆盖 GitHub HTTPS 鉴权失败后的 SSH fallback、失效 daemon cwd、同步/异步临时 discover 自动清理。
  • 覆盖复杂 Skill 的静态文件统计、可执行位、symlink 与 bash/python shebang 识别,验证审计不执行资源。
  • 覆盖 Dashboard 安装 UI 与请求解析回归。

验证

  • pnpm vitest run test/github-auth.test.ts test/skill-git-install.test.ts test/skill-registry-store.test.ts test/skill-sources.test.ts test/dashboard-skill-install-request.test.ts test/dashboard-skills-ui.test.ts(70 tests passed)
  • pnpm build
  • git diff --check
  • 远端 Linux 测试环境重复以上 focused tests 与构建,结果通过。
  • 在仅配置 SSH 仓库权限的远端 Linux 环境,以 GitHub HTTPS URL 完成私有 Skill discover/install/update;验证 discover 前后长期 source cache 不变,Dashboard update job 成功写入静态审计日志。

影响范围

改动集中在公共 Skill source/registry 与 Dashboard job 日志路径,同时覆盖 CLI 同步 Git 操作和 Dashboard 异步 Git 操作。不会修改 bot 配置、会话类型、Skill 注入策略或各 CLI adapter;macOS 与 Linux 使用相同的非交互 Git argv/env 路径。

@xiongz-c
xiongz-c requested a review from deepcoldy as a code owner July 19, 2026 08:45
@deepcoldy
deepcoldy merged commit fd4eb91 into master Jul 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants