activeloopai / activeloopai/hivemind

Embeddings silently disabled for upgrading users (HIVEMIND_EMBEDDINGS unset → enabled=false)

未关闭
#184 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
TypeScript
星标
1.6k
派生
107
平均合并
17 小时 30 分钟
30 天内合并 PR
6

描述

## Symptom

Users upgrading past `bfc8e07` (and fresh installs that don't set `HIVEMIND_EMBEDDINGS=true`) get embeddings **persistently disabled** on first SDK call. `~/.deeplake/config.json` ends up with `{embeddings: {enabled: false}}` forever — until the user explicitly runs `hivemind embeddings install` (which writes `enabled: true`).

## Root cause

`src/user-config.ts:67` documents the migration rule as:

```
HIVEMIND_EMBEDDINGS=false OR unset → enabled: false
HIVEMIND_EMBEDDINGS=true (or any other truthy) → enabled: true
```

And `migrationValueFromEnv()` at line 96 implements that literally:

```ts
if (raw === undefined) return false;
```

So on first call to `getEmbeddingsEnabled()` (no config yet, env var unset), it returns `false` and persists that to disk. The decision becomes sticky.

## Impact

- Users who had working embeddings before upgrading silently lose semantic memory search
- No banner fires because the embeddings-broken signal is the one we removed in #182
- Discovery requires the user to notice grep/recall feels degraded and find the CLI command

## Suggested fix

Per CodeRabbit on #182:

```diff
function migrationValueFromEnv() {
const raw = process.env.HIVEMIND_EMBEDDINGS;
- if (raw === undefined) return false;
+ if (raw === undefined) return undefined;
if (raw === "false") return false;
return true;
}
```

And update `getEmbeddingsEnabled()` to treat `undefined` from migration as "default true" (no opt-out signal present).

## Why not in PR #182

#182's scope is the user-visible banner removal. Changing the migration default touches Emanuele's intentional design rule (`bfc8e07`) — needs his judgment call on opt-in vs opt-out.

## Related

- PR #182 (banner removal) — surfaces this regression because there's now no audible "embeddings off" signal
- `bfc8e07` (feat(embeddings): hello handshake + stuck-daemon recycle + visible signal) — where the rule was introduced
- @emanuele-fenocchi-activeloop's call on the design

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。