ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

treg run --server 远程执行原理:密钥永不到达你机器的完整机制(6层防护拆解)

treg run --server 远程执行原理:密钥永不到达你机器的完整机制(6层防护拆解) treg run --server 远程执行原理密钥永不到达你机器的完整机制6层防护拆解【免费下载链接】tregOpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn项目地址: https://gitcode.com/GitHub_Trending/treg/tregtreg 是一个开源的 agent 工具统一密钥网关定位类似 “OpenRouter for agent tools”用一把 treg 密钥即可调用 2000 供应商 API 与 CLI。本文拆解treg run --server远程执行模式的完整机制——供应商密钥如何在服务端解密、注入、执行、清理以及为什么它从头到尾不会落到你的电脑上。一、先搞清楚treg 的三种“用到密钥但不持有密钥”treg 的核心承诺只有一句话供应商密钥永远由服务端保管按次注入。围绕它共有三种执行方式方式密钥在哪解密适合场景treg call服务端直接代理 HTTP API 请求treg run默认--local服务端下发、本机专用treg-run用户下短暂注入需要访问本机文件或 localhost 的 CLItreg run --server全程只在服务端CLI 在服务器执行密钥一个字节的明文都不经过你的机器--local已经把密钥藏在一个你无法读取的专用系统用户之下详见 local-run 架构文档而--server项目里称 Tier 0更彻底命令行工具根本不在你机器上运行你的终端只负责把参数发上去、把输出流回来。二、treg run --server远程执行的完整流程步骤 1客户端只上传“哪个工具、什么参数”一条命令比如treg run --server agentmail-cli inboxes list客户端做的事少得惊人它把{tool, args, timeout_s}打包带着你自己的 treg 令牌 POST 到服务端的/run接口然后把返回的stdout/stderr/exit_code原样写回终端——行为和“本地直接跑这个 CLI”完全一致。整个客户端逻辑就几十行见 _run_server。注意这里上传的“钥匙”是 treg 令牌证明你是谁而不是供应商密钥——因为你机器上根本没有它。步骤 2白名单与权限校验然后才解密服务端的/run入口在 run_tool_server执行前先过一道闸门必须是 member 及以上角色沙箱演示组织直接 403走常规的每成员工具 ACL、deny 规则、每日调用额度二进制白名单要执行的bin必须在允许列表里目录中已知的 CLI管理员可用TREG_RUN_ALLOWED_BINS扩充。白名单校验和实际执行调用同一个解析函数 resolve_exec_bin保证“检查的”和“执行的”绝不可能是两个不同的命令。校验通过后才轮到 collect_secret_env按工具的cli.inject配置在服务端把加密存储的供应商密钥解密成环境变量值。步骤 3净化环境 一次性 HOME——密钥只活在子进程里这是防泄漏的关键设计见 _child_env子进程不继承服务端进程的环境变量——因为服务端环境里放着TREG_SECRET_KEY等所有服务端机密继承等于“全家福”式泄漏只给 CLI 运行所需的最小集PATH、语言环境、以及注入的密钥HOME指向一个临时目录mkdtemp(prefixtreg-run-)。很多 CLI 会把登录态、token 缓存写进~/.config这里让并发运行的不同组织各用各的“家目录”互不串扰。步骤 4资源限额 超时 输出上限防 DoS 沙箱在 子进程创建处 还叠了三层“笼子”独立进程组start_new_sessionCLI 及其所有后代自成一组随时可以整组处决POSIX 资源限额限制 CPU 秒数与最大文件大小并禁用 core dump——因为 core 文件会把注入的密钥连同进程内存一起倒到磁盘输出上限每条流最多捕获 1MBrunner 顶部常量失控的 CLI 撑不爆服务器内存超时默认 120 秒、上限 600 秒--timeout可调。步骤 5结束即清理 输出脱敏——两条“收尾”防线整组击杀无论正常退出、超时还是被取消_kill_group 都会 SIGKILL 整个进程组。为什么正常退出也要杀因为 CLI 可能偷偷 fork 了后台子进程它继承了密钥还能活得比这次运行更久删掉一次性 HOME配置缓存随之蒸发输出脱敏返回前 _redact 把 stdout/stderr 中出现的密钥明文比如某些 CLI 的--debug配置转储替换成***长值优先替换短值不会漏网。也就是说密钥的明文生命周期 子进程存活的那几十秒且只存在于服务端。三、并发控制与审计谁在什么时候跑了什么并发槽位全局最多 4 个服务端运行、单用户最多 2 个满了立刻返回 429 而不是无限排队run_slot——防止单个成员耗尽主机全量审计每次运行都会写入运行台账——工具名、参数内联出现的凭证样式的 token 会被脱敏、退出码、耗时、调用方身份见 audit.record_run。用treg runs --limit 20或treg audit随时回查团队成员都能看清“谁在什么时候、用哪个 API Key 跑了什么”。四、怎么选--server、--local 还是 treg call你的情况推荐理由调 HTTP APItreg call最轻无 CLI 参与CLI 要读你本机文件 / 访问 localhosttreg run--local密钥在treg-run专用用户下隔离你仍无法读取机器是共享的、CI 环境、或者“就是不想让密钥出现在这台机器上”treg run --server密钥零落地输出流回终端团队想让某个工具固定走服务端treg cli shell start --server-for stripe,render按工具名路由见 shell 文档一个小坑提前说--server、--timeout这类标志要放在工具名之前treg run --server mytool -- ls写成treg run mytool --server -- ls会被当成传给 CLI 的参数cmd_run 会直接报错并告诉你正确写法。五、30 秒上手pip install tools-registry # 轻量 CLI treg login # 登录你的 treg 账号 treg run --server agentmail-cli inboxes list输出与本地运行一模一样stdout、stderr、退出码只是执行体在 1500 公里外。更多细节见 CLI 命令文档、接口文档 与 使用说明。六、总结密钥永不到达你机器的 6 层防护 客户端只上传工具名与参数不携带也不持有供应商密钥️ 二进制白名单 成员权限 工具 ACL deny 规则 每日额度层层拦截 净化环境子进程不继承服务端机密密钥只注入指定变量 一次性 HOME 独立进程组 CPU/文件大小/core dump 资源限额 结束含正常结束即整组击杀 删除临时 HOME 输出密钥脱敏 每次运行全量审计treg runs可回查。这就是 treg 作为“agent 工具的 OpenRouter”敢做出“密钥永不到达你机器”承诺的工程基础不靠信任靠隔离。【免费下载链接】tregOpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn项目地址: https://gitcode.com/GitHub_Trending/treg/treg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进