结论
anet hub dashboard 不分通道,一律拉 @preview 的 Dashboard。
所以一个装了稳定版 CLI(当前 latest = 2.2.21)的用户,起出来的是
@sleep2agi/agent-network-dashboard@preview(当前 0.6.3-preview.56)。
而紧挨着这段代码的注释写的是相反的意思。
证据(origin/main,只读)
agent-network/bin/cli.ts:1484:
function dashboardReleaseTag(): string {
const envOverride = process.env.ANET_DASHBOARD_VERSION;
if (envOverride) return envOverride;
return "preview"; // ← 无条件
}
它是 tag 的唯一来源,全文件只有一处赋值、没有别处覆盖:
6107: const tag = dashboardReleaseTag();
6188: : spawn("npx", ["-y", `@sleep2agi/agent-network-dashboard@${tag}`], …)
而 6176-6177 的注释是:
// Default stays channel-matched (see #61 + dashboardReleaseTag). A global
// binary is used only after the explicit ANET_DASHBOARD_LOCAL=1 opt-in.
「channel-matched」与代码不符 —— 代码里没有任何读取 CLI 自身版本/通道的逻辑。
当前各通道的实际版本(实测)
@sleep2agi/agent-network latest 2.2.21 preview 2.3.0-preview.39
@sleep2agi/commhub-server latest 0.8.8 preview 0.9.0-preview.29
@sleep2agi/agent-network-dashboard latest 0.6.0(06-10) preview 0.6.3-preview.56(08-12)
所以默认组合是:稳定 CLI + 稳定 hub + preview Dashboard。
latest 的 Dashboard 0.6.0 在这条路径上几乎永远不会被用到。
为什么这值得修(或至少值得写明)
- 注释在说谎,下一个人读它会以为通道是匹配的,不会去查;
- 用户拿到的是 preview UI,但他并不知道 ——
guide/dashboard.md:283 有一节
「Preview 通道(下一个 stable WIP)」把 preview 描述成需要显式选择的东西,
而实际上默认就是它;
ANET_DASHBOARD_VERSION 这个唯一的逃生口在文档里每个文件只出现 1 次
(deploy/npm.md / guide/dashboard.md 各 1 处,中英各一),不容易被发现。
建议(三选一,都不大)
- 要么改代码:让 tag 真的跟随 CLI 自身通道(注释描述的行为);
- 要么改注释:直接写「默认固定 preview,
ANET_DASHBOARD_VERSION 可覆盖」,
并在 guide/dashboard.md 那节说明"默认就是 preview,不需要你切";
- 要么钉住:如果希望稳定 CLI 配稳定 UI,那就让
latest 通道返回 latest。
我倾向第二个 —— 现状(默认 preview)可能是有意为之(Dashboard 的 stable 落后两个月),
那么问题就只是注释和文档没说实话,改字比改行为安全。
我没做的事
没有真起 Dashboard 去验(那会占端口、起服务)。
上述结论全部来自 origin/main 的源码;已发布的 2.2.21 里这段逻辑是否相同,
我没有验 —— 它的 dist 是字符串表混淆的,grep 不能证明不存在
(这一点我在 #777 里踩过,见那条更正)。要确认 2.2.21 的实际行为,
需要在隔离环境里真跑一次 anet hub dashboard 并看它打印的
[anet] spawning dashboard @<tag> 那一行。
(只读:git show origin/main:... + npm view;未起服务、未改代码、未碰生产。)
结论
anet hub dashboard不分通道,一律拉@preview的 Dashboard。所以一个装了稳定版 CLI(当前
latest=2.2.21)的用户,起出来的是@sleep2agi/agent-network-dashboard@preview(当前0.6.3-preview.56)。而紧挨着这段代码的注释写的是相反的意思。
证据(
origin/main,只读)agent-network/bin/cli.ts:1484:它是
tag的唯一来源,全文件只有一处赋值、没有别处覆盖:而
6176-6177的注释是:「channel-matched」与代码不符 —— 代码里没有任何读取 CLI 自身版本/通道的逻辑。
当前各通道的实际版本(实测)
所以默认组合是:稳定 CLI + 稳定 hub + preview Dashboard。
latest的 Dashboard0.6.0在这条路径上几乎永远不会被用到。为什么这值得修(或至少值得写明)
guide/dashboard.md:283有一节「Preview 通道(下一个 stable WIP)」把 preview 描述成需要显式选择的东西,
而实际上默认就是它;
ANET_DASHBOARD_VERSION这个唯一的逃生口在文档里每个文件只出现 1 次(
deploy/npm.md/guide/dashboard.md各 1 处,中英各一),不容易被发现。建议(三选一,都不大)
ANET_DASHBOARD_VERSION可覆盖」,并在
guide/dashboard.md那节说明"默认就是 preview,不需要你切";latest通道返回latest。我倾向第二个 —— 现状(默认 preview)可能是有意为之(Dashboard 的 stable 落后两个月),
那么问题就只是注释和文档没说实话,改字比改行为安全。
我没做的事
没有真起 Dashboard 去验(那会占端口、起服务)。
上述结论全部来自
origin/main的源码;已发布的2.2.21里这段逻辑是否相同,我没有验 —— 它的 dist 是字符串表混淆的,grep 不能证明不存在
(这一点我在 #777 里踩过,见那条更正)。要确认
2.2.21的实际行为,需要在隔离环境里真跑一次
anet hub dashboard并看它打印的[anet] spawning dashboard @<tag>那一行。(只读:
git show origin/main:...+npm view;未起服务、未改代码、未碰生产。)