
A2UI 评估仓库拉取代码时出现 Transcrypt 解密错误怎么排查【免费下载链接】a2ui项目地址: https://gitcode.com/GitHub_Trending/a2/a2ui在 a2ui 仓库中做评估工作时经常需要读取eval/datasets/*.yaml里的评测数据集。这些文件在 Git 里以密文形式存储如果你刚 clone 或git pull了仓库可能会遇到三种现象git pull或 checkout 时出现解密错误、看到 OpenSSL 的 deprecation 警告或者打开数据集文件发现内容不是 YAML 而是以U2FsdGVk开头的 Base64 串。本文基于 eval/README.md、eval/CONTRIBUTING_USE_CASES.md 和 eval/DESIGN.md 给出的说明梳理这些现象各自的成因与对应处理命令。为什么数据集文件需要解密评测数据集用 Transcrypt 静态加密目的是防止训练爬虫索引到评测提示词并污染基准结果base model contamination详见 eval/README.md 与 eval/DESIGN.md。Transcrypt 是一个随仓库提交的 Bash 脚本eval/bin/transcrypt通过 OpenSSL 的对称加密和 Git 的 clean/smudge filter 实现透明加解密不需要单独安装系统级包。datasets 目录的.gitattributes中配置了*.yaml filtercrypt diffcrypt mergecrypt因此解锁后 Git 在 checkout 时自动解密、在git add时自动加密。密文是 Base64 编码前缀固定为U2FsdGVk。仓库里的 eval/datasets/core_v0_9_1.yaml 未解锁时读到的就是这样一串 Base64。如果只是想查看一个未加密的完整数据点结构可以直接看 eval/examples/example_eval_case.json。先判断你遇到的是哪种现象文档给出了以下现象与成因的对应关系先对号入座再选处理路径现象成因文档依据git pull时出现解密错误或看到 OpenSSL deprecation 警告拉取的更新改变了加密设置例如从 MD5 迁移到 PBKDF2eval/README.md “Upgrading Transcrypt”一节数据集文件仍是U2FsdGVk...密文没有解密成 YAML本地 Transcrypt 还没有解锁Git 没有执行 smudge 解密eval/CONTRIBUTING_USE_CASES.md运行bin/transcrypt --upgrade时报no existing transcrypt configuration found本地仓库从未初始化过 Transcrypt 配置不能走升级路径需要先做首次解锁eval/bin/transcrypt 中的报错文案初始化时报Unexpected new dirty files ... please check your password密码不正确eval/bin/transcrypt 中的报错文案注意脚本的 smudge 逻辑解密失败时会静默回退、输出原始密文而不一定打印报错。所以“文件依然是密文”本身就可能是解密失败的信号而不仅仅是“还没解锁”。路径一仓库尚未解锁时的首次初始化如果你是刚 clone 的仓库或本地从未配置过 Transcrypt按 eval/CONTRIBUTING_USE_CASES.md 的说法向 A2UI 团队成员索取评测密码然后在eval/目录下初始化cd eval bin/transcrypt -p PASSWORDPASSWORD替换为你从 A2UI 团队拿到的共享密码。执行前注意脚本自带的安全检查如果工作区有未提交的改动会直接报the repo is dirty; commit or stash your changes before running transcrypt并退出所以先 commit 或 stash 你的改动。该命令会做几件事见 eval/bin/transcrypt 的实现把 cipher 和密码写入本地 git config、把 filter 脚本安装到.git目录然后强制 checkout 所有加密文件完成解密。密码会保留在本地 git config 中后续操作无需重复输入。解锁后即可验证数据集.yaml文件应变成可读的 YAMLgit add时文件会被透明加密回密文。路径二拉取后出现解密错误时的升级与重新解密这是标题场景的主路径git pull拉到了改变加密设置的更新文档举的例子是从 MD5 迁移到 PBKDF2旧配置无法正确解密新密文于是出现解密错误或 OpenSSL deprecation 警告。eval/README.md 给出的处理分两步工作目录保持在eval/升级本地 Transcrypt 配置到最新设置bin/transcrypt --upgrade该命令会更新.git目录中的本地 filter 脚本同时保留你已保存的 cipher 和密码升级逻辑会读取现有transcrypt.cipher/transcrypt.password再重新写入。强制 Git 重新解密文件让内容走一遍升级后的 smudge filtergit checkout HEAD -- $(git ls-crypt)副作用说明这条命令会用 HEAD 版本覆盖这些加密文件在工作区的现有内容。如果这些文件里有你尚未提交的改动会丢失执行前先确认。另注意脚本帮助中说明git ls-crypt即transcrypt --list输出的路径是相对于仓库顶层目录的如果在eval/子目录下执行时路径匹配不上可改到仓库根目录执行这条 checkout 命令。如果第 1 步报no existing transcrypt configuration found说明本地其实从未初始化过此时改走上面“路径一”用密码初始化而不是升级。验证当前状态与解密结果以下命令都来自 eval/bin/transcrypt 的帮助文本用于核对配置和文件状态# 查看当前仓库已保存的 cipher 和密码配置要求仓库已初始化过 Transcrypt bin/transcrypt --display # 列出所有被透明加密的文件 git ls-crypt # 查看某个文件在 Git commit 对象中保存的原始内容用于确认它是否按预期以密文存储 bin/transcrypt --show-raw eval/datasets/core_v0_9_1.yaml判断标准--show-raw输出应为 Base64 密文以U2FsdGVk开头而工作区里同一文件应为可读 YAML。两者不一致——尤其是工作区仍是密文——说明解密没有生效先--display核对本地保存的 cipher 和密码是否正确必要时按路径一重新初始化。前提与限制运行环境需要openssl以及脚本安全检查依赖的column、grep、mktemp、sed、teeeval/bin/transcrypt 的run_safety_checks会逐一检查并报错。脚本的 smudge 解密会先尝试 PBKDF2、再回退到旧版 MD5两者都失败时直接输出原始密文所以“没报错但文件是密文”属于正常可能出现的结果不要忽略。密码保存在本地 git config 中--flush-credentials可以清除本地凭据并把已解密文件重新加密回密文同时会执行 git gc 清理缓存的明文对象在共享机器上使用完后可考虑执行该命令有交互确认。数据集文件在仓库里始终应提交为密文未加密示例参考 eval/examples/example_eval_case.json。按上述任一路径完成后eval/datasets/*.yaml可正常读取为 YAML后续的uv run main.py等评测命令才有可读的数据输入见 eval/README.md “Running Evaluations”一节。【免费下载链接】a2ui项目地址: https://gitcode.com/GitHub_Trending/a2/a2ui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考