用途
instabox-basic-setup 用于把用户本地已有的凭据与个人开发配置,整理并导入 InstaBox 的指定组织(org)和沙箱。覆盖三类内容:令牌、Git 配置、编辑器与终端配置。
主要能力
- 令牌(Tokens):以组织级加密 key=value Secret 形式保存,每个令牌可单独选择投递模式——
proxy模式在允许的主机上提供 HTTPS 头部替换占位符,适用于客户端在 443 端口把值原样放入 HTTPS 头部的场景;env模式把真实值注入指定沙箱的环境变量,适用于原生数据库协议、本地签名、Git 凭据编码交换等需要真实值的场景。 - Git 配置:
.gitconfig、.config/git/config、全局 gitignore 等,复制到所选沙箱的 home 目录。 - 编辑器与终端:
.vimrc、不含插件检出的 nvim 配置、.tmux.conf等。
配置文件在复制前会经过改写:本机 HOME 路径替换为 /data/home,移除识别出的凭据行,注释掉 macOS 专用行和不支持的签名/SSH 改写;疑似含凭据的结构化配置会被拒绝而非原样复制。这种过滤是尽力而为,不保证任意配置绝不含凭据。
使用方式
流程分四步,需在同一个 shell 会话中执行(或每段重新定义 S、W、ORG_ID):
- 扫描并选择组织:运行
instabox whoami、instabox org ls --json选择自己拥有或管理的组织,并用scan.mjs生成只读清单(仅输出名称、来源位置、大小和手动配置要求,不输出凭据值)。 - 生成计划:用
plan.mjs write生成可编辑的计划,按需重复--sandbox指定目标,或省略以仅保存 Secret 而不授权沙箱。计划中的复选框行必须保持原格式,每个 env 行保留其 Delivery 行,否则严格解析器会拒绝。 - 先干跑后应用:
push.mjs --dry-run读取已批准的凭据源并准备过滤后的配置,但不写入 InstaBox;确认元数据后再正式执行。push 前会校验组织归属、目标组织、Secret ID 与版本、输入限额和总配额。 - 验证与报告:用
instabox secrets show和静默的存在性检查确认,绝不打印变量值;报告保存的 Secret 名称与模式、选择发生变化的沙箱、复制的配置路径、失败项和手动步骤。
本地清单 ~/.config/instabox-basic-setup/pushed.json 只记录组织 ID、Secret ID/版本/模式与已复制路径,不保存值,也不跨组织授予复用权限。
适用场景
希望把自己的令牌、dotfiles、Git 配置带入 InstaBox 沙箱,并让团队内多个沙箱共享组织级凭据,或为特定沙箱准备一致的编辑器/终端环境的用户。
限制与注意事项
- 保存 Secret 值需要组织 owner/admin 登录;API Key 只能读元数据,不能导入值。
- 若 Secret 路由返回 404,或
instabox usage --json .limits中orgSecrets: false,说明服务器未配置 Secret 管理,需回退到旧版 Vault(instabox vault ...)。 - 复制配置要求沙箱正在运行;环境变量投递到已停止沙箱需等下次启动,运行中的进程需重新加载环境或重启。
- env 模式的值可被沙箱代码读取,并可能残留在进程、文件或快照中,取消选择无法回收。
- 更新已有 Secret 会影响所有已获授权使用它的沙箱;单独保存 env Secret 而不指定目标不产生任何授权。
- 该技能不迁移仓库或对话历史,也不处理 shell 别名、SSH 密钥、云凭据文件、智能体登录数据库和仓库。
- 脚本会在内部读取凭据,输出仅限名称、大小和结果;不得打印凭据值、shell 启动文件或
gh auth token输出。 - 无回滚保证:失败运行会报告部分结果,已成功保存的 Secret 仍保留在组织中。