← Silent Star

X-Ray · Agent 工具链

ZCode 之后我又拆了 MiniMax 和 Qoder,GLM 对话没有读回那份 Git 包

网上传编程 Agent 会静默上传仓库。上一篇把本机 ZCode 3.10.1 对上了。同一天我在另一台 Mac 上拆 MiniMax Code 3.0.68 和 Qoder CN 0.3.3,再回到本机看 GLM 运行时会不会把已经传走的快照用进对话。

三家客户端都带着云端代码相关实现。打出来的包不一样,开关也不一样。

ZCode 传含 Git 的快照,MiniMax 和 Qoder 远程索引传源文件 ZIP
ZCode 的包能还原 Git 历史。后两家若打开远程索引,传的是当前源文件,给 embedding 用。

MiniMax 桌面版还留着 ZIP 索引,这台机器没跑过

应用在 /Applications/MiniMax Code.app,短版本 3.0.68。asar 大约 461 MB。公开仓库 MiniMax-AI/minimax-code 的 TUI 0.4.12 已经拆掉工作区索引。桌面版还留着完整子系统,名字叫 workspace indexing。代码会把用户选中的项目打成 workspace.zip,旁边再写一份 manifest.json,交给远程 worker。

本地 SQLite 表 local_runtime_workspace_indexing_revisions 的字段里有 archive_oss_keyembedding_modeldimensions。这条路是给语义搜索用的。asar 里搜不到 pack-objects

开关在 resolveWorkspaceIndexingPreference

enabled = forced || persisted === true
forced  = runtimeOwnerKind !== 'tui'
          && (internalBuild || buildEnv === 'test')

正式桌面版默认关着,要把偏好写成 true 才会开。另外 isWorkspaceIndexingSessionEligible 要求 isDefaultWorkspace === false,避免把应用自己的回退目录传上去。注释写得很直白,旧记录如果缺这个字段,把 undefined 当成合格,会扫到应用自己的 fallback 文件夹。

这台机器的 ~/.minimax/v2/sqlite/runtime-state.sqlite 里,local_runtime_workspace_indexing_sessionslocal_runtime_workspace_indexing_revisions 都是 0 行。local_runtime_file_api_uploads 也是 0。代码在,上传记录没有。

eval_snapshot 我只看到过一次超时失败。后来聊天成功,没有对应的快照行。桌面版有没有在对话里另走一条静默快照,这台机器给不出成功样本。

Qoder CN 把远程索引写进产品表里关了

另一台 Mac 装着 Qoder CN 0.3.3。插件 qoder-context 版本 1.0.51.fa026ec3qoder-search.bundle.mjs 里有完整远程索引。本地 mtree 扫工作区,算 Merkle。远端比对之后,未同步文件读 fileContent,deflate 打成 batch_N.zipPUT/algo/api/v2/service/codebase/file/upload。模型写死 text-embedding-v4,512 维。

跳过 node_modules.gitdistoutbuildcoverage,再叠加 gitignore。Git watch 只用 statusdiffrev-parsehash-object 做指纹,不打包 objects。

能力 产品 ID qoder 产品 ID qoder-cn
远程代码索引
云端搜工作区
索引设置界面
知识库远程配置

两张表写在同一份插件里。host 里 dk() 直接返回 qoder-cn。进程环境 QODER_PRODUCT_ID 也是 qoder-cn。daemon 启动时不创建远程 client。tryRemoteSync 第一行看到 remoteCodeIndexing 为 false 就返回。国内网关地址 https://gateway.qoder.com.cn 和国际地址 https://repo2.qoder.sh 并排写在同一张 endpoint 表里。

所以这台 Qoder CN 云端搜代码走不通。登录、扫盘、发 prompt 都发生过。远端没有 codebaseId,语义搜索没有东西可查。设置页也没有索引开关,indexSettings 一并关掉了。

安装包里找不到为什么关。没有合规、PIPL、数据出境这类注释。日志原文是 disabled by product profile,按产品形态禁用。上传实现和国内网关地址都还在包里,客户端没接线。

发提示词后先做本地 Merkle,CN 产品表把远程上传关掉
22 点 55 分打开整个 code 目录,本地扫了约一分钟。codebaseId 从头到尾是 null。

2026 年 9 月 18 日晚上 22 点 53 分,日志写 knowledge remote config disabled by product profile。22 点 55 分打开 /Users/lifcc/Desktop/codeUserPromptSubmit 触发 mtree sync begincodebaseId 仍是 null。CLI 打出 registerWorkspace skipped: non-target org。22 点 57 分 mtree sync endfileCount 等于 100000,codebaseId 还是 null。

本地 index-settings.v1.jsonautoIndex 为 true,树里大约 25 万文件、10.9 万目录,索引文件数顶在 10 万。这是本机扫盘。没有 qoder-search-indexing.log。那份日志只在真正跑 workspace_sync 时写。

自动上传还有文件数门槛。自动触发在文件数大于等于 10000 时跳过。硬顶大于 100000 会失败。这台机器即使打开远程,自动路径也会被 10 万文件挡住。

国际版默认开,是从 CN 包里那张 qoder 表读出来的。我没有另装国际版客户端,也没有国际版运行日志。同一份上传实现,换产品 ID 就会走开着的配置。国际安装包如果换了插件或改写 flag,实际行为可能不一样。

GLM 对话没有把快照读回来

回到本机 ZCode。发提示词时 host 调用 scheduleRepoSnapshotSidecar,错误被 catch 掉。紧接着 await session/send。这一轮 GLM 等不到索引建完。

快照 sidecar 与 GLM session/send 并行,对话读本地磁盘
采集函数和对话请求是两条腿。模型这一轮用不上一秒钟前才开始打的包。

zcode.cjs 里搜不到 snapshot_id,也搜不到 /api/v1/snapshot。asar 里和仓库快照有关的 HTTP 只剩 GET /api/v1/snapshot/upload-credential。没有 search、status、query、retrieve。

本机 3 份 model-io 打给 GLM-5.3。请求字段是 messagestoolssystem 这类。没有 snapshot 字段。挂给模型的工具是 Agent、Read、Bash、Edit、Write、WebSearch 等。22 份 transcript 里实际出现的工具名是 Bash、Read、TodoWrite。agent 在读磁盘。

设置里的即时搜索是 instantGrepIndexingEnabled,本地 grep。和仓库快照上传分开。

服务端拿得到 AES 密钥。包能解开。拿去训练或以后做索引,客户端证明不了。3.10.1 的对话路径没有把快照读回来。

对照

ZCode 3.10.1 MiniMax 3.0.68 Qoder CN 0.3.3
上传物 工作区文件加整个 .git/ workspace.zip 源文件 ZIP 批次
目的 仓库快照,接口名 snapshot 远程 embedding / 语义搜 远程 embedding / 语义搜
默认 host 不读设置页开关 关,除非偏好写成 true 国内产品表关掉远程
这台机器 公开小仓已传成功 索引表 0 行 本地扫了 10 万文件,未上传
对话怎么读代码 Read / Bash 读磁盘 未在这台机器上观察到 ZIP 回读 CN 未建立 codebaseId

这次只覆盖本机 ZCode 3.10.1、另一台 Mac 上的 MiniMax Code 3.0.68 与 Qoder CN 0.3.3。MiniMax 公开 TUI 仓库和桌面版不是同一份二进制。Qoder 国际版只看到 CN 包里的产品表。服务端怎样保存和解开这些包,我没有证据。

文章目录4
Silent Star约 5 分钟