SuperAPI AI 工具集

daytona-secrets-volume

部署与运维

查看项目

更新于 10-15 21:10

技能介绍

用途:当 Daytona 测试需要 provider key 或其他仅用于评测的密钥时使用本技能。核心原则是从不把密钥提交到仓库,也从不打印密钥值。

密钥卷:可复用的 Daytona 卷为 openwork-eval-secrets:/daytona-secrets。Electron 沙箱通过 .devcontainer/test-on-daytona.sh 自动挂载它,Electron starter 会 source 所有匹配 /daytona-secrets/*.env 的文件。注意这是 Daytona 可复用卷,不是宿主机目录,无法从本地文件系统直接查看;要增删或测试文件,需将其挂载到临时 Daytona 沙箱,或使用已挂载该卷的现有沙箱。

添加密钥文件:先创建本地 env 文件,再复制进卷:bash .devcontainer/setup-daytona-secrets-volume.sh <local-env-file> <name>.env。示例:bash .devcontainer/setup-daytona-secrets-volume.sh .newtoken openai.env;bash .devcontainer/setup-daytona-secrets-volume.sh .anthropic anthropic.env;bash .devcontainer/setup-daytona-secrets-volume.sh .google google.env。目标必须是简单的 .env 文件名(如 openai.env)。脚本复制时不打印密钥值并设置严格权限。不要把密钥作为命令行参数传入,只传本地 env 文件名。

env 文件格式:使用普通 shell env 格式,如 OPENAI_API_KEY=...、ANTHROPIC_API_KEY=...、GOOGLE_CLIENT_ID=...、GOOGLE_CLIENT_SECRET=...。只包含评测所需变量,文件保持小而专用。

重载已有沙箱:若沙箱已在运行,重启 Electron 以重新加载 /daytona-secrets/*.env:daytona exec "$SANDBOX" -- "bash -lc 'pkill -f electron || true; pkill -f electron-dev || true; pkill -f opencode || true'",sleep 3,再执行 daytona exec "$SANDBOX" -- "bash -lc 'cd /workspace && bash /opt/openwork-daytona/start-daytona-electron.sh --detach'"。不要把 kill 与重启串在同一条 daytona exec 命令中,pkill 模式可能终止 exec 包装进程本身。

不打印密钥的验证:只检查文件名或预期变量是否存在:daytona exec "$SANDBOX" -- 'ls -la /daytona-secrets';daytona exec "$SANDBOX" -- "bash -lc 'set -a; source /daytona-secrets/openai.env; test -n "${OPENAI_API_KEY:-}"'"。切勿运行会打印 token 值的命令。

常见问题:更新卷不会更新正在运行的 Electron 进程,需重启 Electron 才会重新 source;server 沙箱不会自动使用 Electron provider 密钥,除非 server helper 显式挂载并 source;test -n "$OPENAI_API_KEY" 是安全的,env、printenv 或 cat 不安全。此卷中的密钥仅用于评测,除非流程明确测试基于 UI 的 provider 保存,否则不要复制到仓库文件或工作区配置。