@jesonliu/lark-claudecode-bridge 1.4.1 → 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/memory.js CHANGED
@@ -11,13 +11,22 @@
11
11
  // - auth_mode=api_key(root_api_key 配置后):Account/User header 被服务端剥除,身份由
12
12
  // X-API-Key 自带(key = base64url(account).base64url(user).base64url(secret),不可伪造);
13
13
  // user key 经 Admin API 签发(POST /api/v1/admin/accounts/{account}/users,X-API-Key 携带
14
- // root key,seed 参数可得确定性 key——同 seed 重签同值,LCB 无须持久化存储 key)
14
+ // root key)。0.5.0 实测:seed 被忽略、key 非确定性、重复创建 409——重签接口为
15
+ // POST /api/v1/admin/accounts/{account}/users/{uid}/key,详见 ensureMemoryUserKeys 注释
15
16
  import { createHash } from 'node:crypto';
16
17
  /** 记忆插件名(§6.9 自动注入目标;与 ~/.claude 侧 installed_plugins.json 键
17
18
  * "openviking-memory@openviking" 的 @ 前段一致——discoverPlugins 的 name 口径) */
18
19
  export const MEMORY_PLUGIN_NAME = 'openviking-memory';
19
20
  /** 记忆服务缺省端点(dev 模式回环默认;embedded 模式由 B3 分配后回写 config) */
20
21
  export const DEFAULT_MEMORY_ENDPOINT = 'http://127.0.0.1:1933';
22
+ /** 记忆账号缺省名(account 轴)。必须与 OpenViking 服务端自带账号一致:Admin API 对不存在的
23
+ * 账号一律 404「Account not found」(实弹实测 0.5.0),账号名猜错的表现就是「一键初始化全 404」。
24
+ * 服务端初始化后固定存在 default 账号,故以此为缺省 */
25
+ export const DEFAULT_MEMORY_ACCOUNT = 'default';
26
+ /** memory 段的生效账号(缺省 DEFAULT_MEMORY_ACCOUNT;显式配置优先) */
27
+ export function memoryAccount(memory) {
28
+ return memory.account?.trim() || DEFAULT_MEMORY_ACCOUNT;
29
+ }
21
30
  /** memory 段的生效端点(remote 显式配置 > 缺省回环)。参数放宽为 Pick——渲染客户端接入配置
22
31
  * (ovcli.conf 骨架)等场景只有 endpoint/account 子集,只读 endpoint 的纯函数不该要求全段 */
23
32
  export function memoryEndpoint(memory) {
@@ -45,7 +54,7 @@ export function memoryEnvFor(memory, appId, userId,
45
54
  /** 启动时 Admin API 签发的 per-bot user key(api_key 模式);缺失/未签发则跳过 key 下发 */
46
55
  userKeys) {
47
56
  const env = {
48
- OPENVIKING_ACCOUNT: memory.account ?? 'lcb',
57
+ OPENVIKING_ACCOUNT: memoryAccount(memory),
49
58
  OPENVIKING_MEMORY_ENABLED: '1',
50
59
  OPENVIKING_URL: memoryEndpoint(memory),
51
60
  };
@@ -129,7 +138,7 @@ export function createMemoryProvider(config, userKeys) {
129
138
  ? probeMemoryHealth(memoryEndpoint(config.memory))
130
139
  : Promise.resolve({ healthy: false, detail: 'memory 段未开启' })),
131
140
  namespacesFor: (appId) => ({
132
- account: config.memory?.account ?? 'lcb',
141
+ account: config.memory ? memoryAccount(config.memory) : DEFAULT_MEMORY_ACCOUNT,
133
142
  userPrefix: `${appId}-`,
134
143
  }),
135
144
  userKeys: () => userKeys,
@@ -140,12 +149,21 @@ export function createMemoryProvider(config, userKeys) {
140
149
  * - dev 模式:整体跳过——身份隔离由 OPENVIKING_USER → X-OpenViking-User header 承担,
141
150
  * Admin API 在 dev 模式被服务端禁用(403),跳过是唯一正解而非降级
142
151
  * - api_key 模式:X-API-Key 携带 root key(memory.api_key,只在本函数与配置盘间流转),
143
- * POST /api/v1/admin/accounts/{account}/users 签发;seed = sha256(appId+rootKey) 确定性
144
- * ——同 seed 重签同值,LCB 重启无须持久化 key 存储
152
+ * POST /api/v1/admin/accounts/{account}/users 签发
145
153
  * - 失败不抛出(逐 bot 记 error):记忆不可用不应阻断机器人服务,与插件发现的容错基调一致
154
+ *
155
+ * OpenViking 0.5.0 实弹实测(探针:创建→重复→重签→列表→删除,全绿)修正了三条旧假设:
156
+ * ① key **非确定性**——seed 参数被服务端忽略,同一 user 每次重签都换新 key。因此「同 seed
157
+ * 重签同值、LCB 无须持久化」不成立,重启必须重新拿到 key(靠下面的三级回退拿,不靠 seed)。
158
+ * ② 重复创建返回 **409 ALREADY_EXISTS**,不是「幂等返回同值」。旧实现一旦 409 就记 error 放弃,
159
+ * 于是「首启建过用户 → 之后每次重启都 409 → 永远拿不到 key → 永远无记忆」——本函数的重签
160
+ * 与读回两级回退就是为消灭这个死循环(服务重启、root key 轮换、一键初始化重建用户都会踩)。
161
+ * ③ 服务端只认**已存在的账号**:账号不存在时 Admin API 一律 404「Account not found」,故签发前
162
+ * 先确保账号存在(ensureRemoteAccount,缺账号自动创建)。
146
163
  */
147
164
  export async function ensureMemoryUserKeys(memory, appIds, timeoutMs = 5000) {
148
165
  const out = new Map();
166
+ const base = memoryEndpoint(memory).replace(/\/+$/, '');
149
167
  const health = await probeMemoryHealth(memoryEndpoint(memory), timeoutMs);
150
168
  if (!health.healthy) {
151
169
  for (const appId of appIds) {
@@ -159,7 +177,7 @@ export async function ensureMemoryUserKeys(memory, appIds, timeoutMs = 5000) {
159
177
  }
160
178
  return out;
161
179
  }
162
- const account = memory.account ?? 'lcb';
180
+ const account = memoryAccount(memory);
163
181
  const rootKey = memory.apiKey;
164
182
  if (!rootKey) {
165
183
  for (const appId of appIds) {
@@ -167,29 +185,108 @@ export async function ensureMemoryUserKeys(memory, appIds, timeoutMs = 5000) {
167
185
  }
168
186
  return out;
169
187
  }
188
+ // 账号兜底:账号不存在时后续全部 404(这是「一键初始化全 404」的最常见真因)。先查再建,
189
+ // 建失败只记 error 不用异常中断——签发逐 bot 继续,文案给出可操作指引
190
+ const accountReady = await ensureRemoteAccount(base, account, rootKey, timeoutMs);
170
191
  for (const appId of appIds) {
171
- try {
172
- // seed 确定性:sha256(appId + rootKey) 前 32 位。root key 轮换 → seed 变 → 新 key(旧 key
173
- // 失效),属预期安全行为;同 root key 下重签幂等
174
- const seed = createHash('sha256').update(`${appId}:${rootKey}`).digest('hex').slice(0, 32);
175
- const res = await fetch(`${memoryEndpoint(memory).replace(/\/+$/, '')}/api/v1/admin/accounts/${encodeURIComponent(account)}/users`, {
176
- method: 'POST',
177
- headers: { 'Content-Type': 'application/json', 'X-API-Key': rootKey },
178
- body: JSON.stringify({ user_id: appId, role: 'user', seed }),
179
- signal: AbortSignal.timeout(timeoutMs),
180
- });
181
- const body = (await res.json().catch(() => ({})));
182
- if (res.ok && body.result?.user_key) {
183
- out.set(appId, { appId, userKey: body.result.user_key });
184
- }
185
- else {
186
- out.set(appId, { appId, error: `签发失败:HTTP ${res.status}${body.message ? `(${body.message})` : ''}` });
187
- }
188
- }
189
- catch (e) {
190
- out.set(appId, { appId, error: `签发异常:${e instanceof Error ? e.message : String(e)}` });
192
+ if (!accountReady.ok) {
193
+ out.set(appId, { appId, error: `记忆账号「${account}」不可用:${accountReady.detail}` });
194
+ continue;
191
195
  }
196
+ const r = await signOneUserKey(base, account, appId, rootKey, timeoutMs);
197
+ if (r.userKey)
198
+ out.set(appId, { appId, userKey: r.userKey });
199
+ else
200
+ out.set(appId, { appId, error: r.error ?? '签发失败' });
192
201
  }
193
202
  return out;
194
203
  }
204
+ /** Admin API 调用统一入口(X-API-Key 携 root key;错误文案优先取服务端 error.message——
205
+ * OpenViking 的错误体是 {error:{code,message}},旧实现只读顶层 message,导致 404 变成裸码) */
206
+ async function adminFetch(url, rootKey, method, body, timeoutMs = 5000) {
207
+ try {
208
+ const res = await fetch(url, {
209
+ method,
210
+ headers: { 'Content-Type': 'application/json', 'X-API-Key': rootKey },
211
+ ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
212
+ signal: AbortSignal.timeout(timeoutMs),
213
+ });
214
+ const json = (await res.json().catch(() => ({})));
215
+ const errObj = typeof json.error === 'object' && json.error ? json.error : undefined;
216
+ const message = errObj?.message ?? (typeof json.error === 'string' ? json.error : undefined) ?? json.message;
217
+ const code = errObj?.code ? `${errObj.code}` : undefined;
218
+ return {
219
+ ok: res.ok,
220
+ status: res.status,
221
+ ...(res.ok && json.result && typeof json.result === 'object' ? { result: json.result } : {}),
222
+ ...(message ? { error: [code, message].filter(Boolean).join(': ') } : {}),
223
+ };
224
+ }
225
+ catch (e) {
226
+ return { ok: false, status: 0, error: e instanceof Error ? e.message : String(e) };
227
+ }
228
+ }
229
+ /** 账号存在性兜底:GET 列表命中即真;未命中则 POST 创建(OpenViking 0.5.0 提供
230
+ * POST /api/v1/admin/accounts)。已存在时 POST 语义未验证,故一律先查后建 */
231
+ export async function ensureRemoteAccount(base, account, rootKey, timeoutMs = 5000) {
232
+ const list = await adminFetch(`${base}/api/v1/admin/accounts`, rootKey, 'GET', undefined, timeoutMs);
233
+ if (list.ok && Array.isArray(list.result?.accounts)) {
234
+ return { ok: true, detail: '账号已存在' };
235
+ }
236
+ // 上游 0.5.0 的账号列表把数组放在 result(result: [{account_id,...}]);两种形态都认
237
+ if (list.ok && Array.isArray(list.result)) {
238
+ const accounts = list.result;
239
+ if (accounts.some((a) => a?.account_id === account))
240
+ return { ok: true, detail: '账号已存在' };
241
+ }
242
+ if (list.ok && !Array.isArray(list.result))
243
+ return { ok: true, detail: '账号列表不可解析,按已存在处理' };
244
+ const created = await adminFetch(`${base}/api/v1/admin/accounts`, rootKey, 'POST', { account_id: account }, timeoutMs);
245
+ if (created.ok)
246
+ return { ok: true, detail: `账号已自动创建(${account})` };
247
+ // 并发/已存在等语义差异:创建失败后再查一次,存在即算成功
248
+ const recheck = await adminFetch(`${base}/api/v1/admin/accounts`, rootKey, 'GET', undefined, timeoutMs);
249
+ if (recheck.ok)
250
+ return { ok: true, detail: '账号已存在(自动创建返回异常但复查命中)' };
251
+ return {
252
+ ok: false,
253
+ detail: `自动创建失败(HTTP ${created.status}${created.error ? ` ${created.error}` : ''});请核对 config.yaml 的 memory.account 是否与服务端一致`,
254
+ };
255
+ }
256
+ /** 单个 bot 的 user key 签发(三级回退,消灭 409 死循环):
257
+ * ① POST 创建(首启路径)② 409 已存在 → POST /users/{uid}/key 重签(旧 key 立即失效)
258
+ * ③ 重签失败 → GET /users 列表回读明文 api_key(api_key 模式列表可回带,实测确认)
259
+ * seed 仍随创建请求带上(未来服务端若实现确定性签发即天然幂等),当前版本被忽略也无害 */
260
+ async function signOneUserKey(base, account, appId, rootKey, timeoutMs) {
261
+ const usersBase = `${base}/api/v1/admin/accounts/${encodeURIComponent(account)}/users`;
262
+ const seed = createHash('sha256').update(`${appId}:${rootKey}`).digest('hex').slice(0, 32);
263
+ const created = await adminFetch(usersBase, rootKey, 'POST', { user_id: appId, role: 'user', seed }, timeoutMs);
264
+ if (created.ok) {
265
+ const key = created.result?.user_key;
266
+ if (typeof key === 'string' && key)
267
+ return { userKey: key };
268
+ return { error: '创建成功但响应未带 user_key(服务端 should_expose_user_key=false?)' };
269
+ }
270
+ if (created.status === 409) {
271
+ const re = await adminFetch(`${usersBase}/${encodeURIComponent(appId)}/key`, rootKey, 'POST', undefined, timeoutMs);
272
+ if (re.ok) {
273
+ const key = re.result?.user_key;
274
+ if (typeof key === 'string' && key)
275
+ return { userKey: key };
276
+ }
277
+ const listed = await adminFetch(usersBase, rootKey, 'GET', undefined, timeoutMs);
278
+ const users = Array.isArray(listed.result) ? listed.result : [];
279
+ const hit = users.find((u) => u?.user_id === appId);
280
+ if (hit && typeof hit.api_key === 'string' && hit.api_key)
281
+ return { userKey: hit.api_key };
282
+ return {
283
+ error: `用户已存在但重签与回读均失败(重签 HTTP ${re.status}${re.error ? ` ${re.error}` : ''};`
284
+ + `列表 ${listed.status}${listed.error ? ` ${listed.error}` : ''})——请到配置页「用户与密钥」重置该用户密钥`,
285
+ };
286
+ }
287
+ if (created.status === 404) {
288
+ return { error: `HTTP 404(${created.error ?? 'Account or user not found'})——请核对 config.yaml 的 memory.account 与服务端账号是否一致` };
289
+ }
290
+ return { error: `签发失败:HTTP ${created.status}${created.error ? `(${created.error})` : ''}` };
291
+ }
195
292
  //# sourceMappingURL=memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { DEFAULT_MEMORY_ENDPOINT, MEMORY_PLUGIN_NAME, memoryEndpoint, probeMemoryHealth, } from '../memory.js';
3
- import { EXTERNAL_OV_CONF, MANAGED_OV_CONF, OVCLI_CONF, classifyClientConf, detectUv, isManagedRunning, locateMemoryPlugin, managedStartedAt, resolveServerBin, } from '../memory-installer.js';
3
+ import { EXTERNAL_OV_CONF, MANAGED_OV_CONF, OVCLI_CONF, classifyClientConf, detectUv, getMemoryAutoStartReport, isManagedRunning, locateMemoryPlugin, managedStartedAt, resolveServerBin, } from '../memory-installer.js';
4
4
  import { maskSecret } from './config-api.js';
5
5
  /** 承诺限时(安装探测里 uv 检测最坏要 spawn 子进程,超时按未检出降级,不拖慢 status) */
6
6
  function withTimeout(p, ms) {
@@ -26,6 +26,9 @@ async function detectInstallSummary() {
26
26
  managedRunning: isManagedRunning(),
27
27
  // 受管实例本次拉起时间(前端「运行时间」展示源;外部自管服务无从得知,不输出)
28
28
  ...(isManagedRunning() ? { managedSince: managedStartedAt() } : {}),
29
+ // 最近一次「随 LCB 启动自动拉起记忆服务」的结果(自举失败时前端展示手动开启指引,
30
+ // 免去用户对着「服务未运行」猜该去哪点)
31
+ ...(getMemoryAutoStartReport() ? { autoStart: getMemoryAutoStartReport() } : {}),
29
32
  };
30
33
  }
31
34
  /** GET /api/memory/status 响应:服务探活 + 插件加载状态 + per-bot ns 摘要(全部只读) */
@@ -1 +1 @@
1
- {"version":3,"file":"memory-api.js","sourceRoot":"","sources":["../../src/web/memory-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-api.js","sourceRoot":"","sources":["../../src/web/memory-api.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,15 @@ export interface MemoryUsersSnapshot {
36
36
  totalBytes: number;
37
37
  /** 待初始化鉴权(方案 §六 配套细节 2:服务 api_key 模式但 web 用户不存在) */
38
38
  authInitNeeded: boolean;
39
+ /**
40
+ * Root 密钥状态(**只报存在性与来源,不含明文**):OpenViking Studio 登录框要的
41
+ * 「Root 或账号管理员 API 密钥」此前在页面上没有任何线索,用户只能自己翻 ov.conf 或误填模型
42
+ * API Key。页面据此显示「已配置(来源:…)」并给出复制按钮,把「填哪个」讲死。
43
+ */
44
+ rootKey?: {
45
+ configured: boolean;
46
+ source: 'config' | 'ov-conf' | 'missing';
47
+ };
39
48
  }
40
49
  /** 用户列表聚合:Admin API + 本地磁盘统计。全程容错(服务不可达返回可达性标记,不抛出) */
41
50
  export declare function listMemoryUsers(config: BridgeConfig): Promise<MemoryUsersSnapshot>;
@@ -50,6 +59,27 @@ export interface InitOutcome {
50
59
  * 已存在用户由列表自愈回读 key(创建响应的 user_key 只出现一次,但 api_key 模式列表可回带)。
51
60
  * dev 模式 / 服务不可达:直接说明,不视为失败动作。 */
52
61
  export declare function initMemoryUsers(config: BridgeConfig): Promise<InitOutcome>;
62
+ export interface RevealRootResult {
63
+ ok: boolean;
64
+ key?: string;
65
+ /** 取值来源:config=config.yaml 的 memory.api_key;ov-conf=受管 ov.conf 的 server.root_api_key */
66
+ source?: 'config' | 'ov-conf';
67
+ /** 拿这把 key 实打服务端的校验结果(避免用户拷了把错的去 Studio 里 debug) */
68
+ valid?: boolean;
69
+ /** 校验失败原因(如 HTTP 401:key 与服务端不匹配) */
70
+ validDetail?: string;
71
+ error?: string;
72
+ }
73
+ /**
74
+ * 取 Root 密钥明文(单次放行 + 审计留痕)——**给 OpenViking Studio 的登录框用**。
75
+ * 背景(用户实测卡点):Studio 首屏要填「Root 或账号管理员 API 密钥」,而 LCB 配置页此前
76
+ * 完全没有 root key 的入口,唯一长得像的「模型配置 → API Key」是智谱模型 key,填进去必然 401。
77
+ * Studio 自己的提示写的是「Root API 密钥位于服务端 ov.conf 的 server.root_api_key」,本页就按
78
+ * 同一口径给出处 + 复制按钮,别让用户自己在磁盘上翻配置文件。
79
+ * 顺带校验:带 key 打一次 /api/v1/system/status(api_key 模式下鉴权通过的证明),把「拷贝即用」
80
+ * 的确定性前置到本页,而不是让用户在 Studio 的报错里猜。
81
+ */
82
+ export declare function revealRootKey(config: BridgeConfig): Promise<RevealRootResult>;
53
83
  export interface RevealResult {
54
84
  ok: boolean;
55
85
  key?: string;
@@ -20,7 +20,7 @@ import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renam
20
20
  import { spawn } from 'node:child_process';
21
21
  import { dirname, join } from 'node:path';
22
22
  import { MANAGED_OV_CONF, MEMORY_MANAGED_DIR } from '../memory-installer.js';
23
- import { memoryEndpoint, probeMemoryHealth } from '../memory.js';
23
+ import { DEFAULT_MEMORY_ACCOUNT, memoryAccount, memoryEndpoint, ensureRemoteAccount, probeMemoryHealth } from '../memory.js';
24
24
  import { maskSecret } from './config-api.js';
25
25
  /** 网页管理端用户约定 uid(方案 §四 阶段 3:{"user_id":"web"}) */
26
26
  export const WEB_USER_ID = 'web';
@@ -70,14 +70,20 @@ async function adminCall(memory, rootKey, method, path, body) {
70
70
  signal: AbortSignal.timeout(10_000),
71
71
  });
72
72
  const json = (await res.json().catch(() => ({})));
73
- const msg = typeof json.message === 'string' ? json.message : undefined;
74
- return { ok: res.ok, status: res.status, json, ...(msg ? { message: msg } : {}) };
73
+ // 错误文案:OpenViking 错误体为 {error:{code,message}},顶层 message 形态只在旧版本出现——
74
+ // 只读顶层 message 时,所有 404 都退化成裸「HTTP 404」(账号名写错的真因就此隐身)
75
+ const errObj = json.error && typeof json.error === 'object' ? json.error : undefined;
76
+ const code = typeof errObj?.code === 'string' ? errObj.code : undefined;
77
+ const msg = (typeof errObj?.message === 'string' ? errObj.message : undefined)
78
+ ?? (typeof json.error === 'string' ? json.error : undefined)
79
+ ?? (typeof json.message === 'string' ? json.message : undefined);
80
+ return { ok: res.ok, status: res.status, json, ...(msg ? { message: code ? `${code}: ${msg}` : msg } : {}) };
75
81
  }
76
82
  catch (e) {
77
83
  return { ok: false, status: 0, json: {}, message: e instanceof Error ? e.message : String(e) };
78
84
  }
79
85
  }
80
- const adminPath = (memory, suffix) => `/api/v1/admin/accounts/${encodeURIComponent(memory.account ?? 'lcb')}${suffix}`;
86
+ const adminPath = (memory, suffix) => `/api/v1/admin/accounts/${encodeURIComponent(memoryAccount(memory))}${suffix}`;
81
87
  function loadVault() {
82
88
  try {
83
89
  const doc = JSON.parse(readFileSync(VAULT_FILE, 'utf8'));
@@ -221,26 +227,36 @@ function dirStats(dir) {
221
227
  walk(dir);
222
228
  return { sizeBytes: size, ...(last ? { lastActive: new Date(last).toISOString() } : {}) };
223
229
  }
230
+ /** Root 密钥状态(供快照携带;明文一律不放行,见 MemoryUsersSnapshot.rootKey) */
231
+ function rootKeyStatus(memory) {
232
+ if (!memory)
233
+ return { configured: false, source: 'missing' };
234
+ if (memory.apiKey?.trim())
235
+ return { configured: true, source: 'config' };
236
+ if (managedRootKey())
237
+ return { configured: true, source: 'ov-conf' };
238
+ return { configured: false, source: 'missing' };
239
+ }
224
240
  /** 用户列表聚合:Admin API + 本地磁盘统计。全程容错(服务不可达返回可达性标记,不抛出) */
225
241
  export async function listMemoryUsers(config) {
226
242
  const memory = config.memory;
227
- const account = memory?.account ?? 'lcb';
243
+ const account = memory ? memoryAccount(memory) : DEFAULT_MEMORY_ACCOUNT;
228
244
  const empty = { reachable: false, users: [], totalBytes: 0, authInitNeeded: false };
229
245
  if (!memory)
230
- return { ...empty, error: 'memory 段未配置' };
246
+ return { ...empty, error: 'memory 段未配置', rootKey: rootKeyStatus(undefined) };
231
247
  const health = await probeMemoryHealth(memoryEndpoint(memory));
232
248
  if (!health.healthy)
233
- return { ...empty, error: health.detail ?? '服务不可达', ...(health.authMode ? { authMode: health.authMode } : {}) };
249
+ return { ...empty, error: health.detail ?? '服务不可达', rootKey: rootKeyStatus(memory), ...(health.authMode ? { authMode: health.authMode } : {}) };
234
250
  if (health.authMode !== 'api_key') {
235
251
  // dev 模式:Admin API 被服务端禁用(403)——这是「无需用户密钥」的正常形态而非错误
236
- return { reachable: true, authMode: health.authMode, users: [], totalBytes: 0, authInitNeeded: false };
252
+ return { reachable: true, authMode: health.authMode, users: [], totalBytes: 0, authInitNeeded: false, rootKey: rootKeyStatus(memory) };
237
253
  }
238
254
  const rootKey = resolveRootKey(memory);
239
255
  if (!rootKey)
240
- return { ...empty, authMode: health.authMode, error: 'root key 未配置(memory.api_key 与受管 ov.conf 均未见)——请先「检查修复」对齐鉴权' };
256
+ return { ...empty, authMode: health.authMode, rootKey: rootKeyStatus(memory), error: 'root key 未配置(memory.api_key 与受管 ov.conf 均未见)——请先「检查修复」对齐鉴权' };
241
257
  const r = await adminCall(memory, rootKey, 'GET', adminPath(memory, '/users'));
242
258
  if (!r.ok) {
243
- return { ...empty, authMode: health.authMode, error: `用户列表获取失败:HTTP ${r.status}${r.message ? `(${r.message})` : ''}` };
259
+ return { ...empty, authMode: health.authMode, rootKey: rootKeyStatus(memory), error: `用户列表获取失败:HTTP ${r.status}${r.message ? `(${r.message})` : ''}` };
244
260
  }
245
261
  const rawUsers = (Array.isArray(r.json.result) ? r.json.result : []);
246
262
  const botNames = new Map(config.apps.map((a) => [a.appId, a.name]));
@@ -278,6 +294,7 @@ export async function listMemoryUsers(config) {
278
294
  totalBytes: rows.reduce((s, r2) => s + (r2.sizeBytes ?? 0), 0),
279
295
  // 待初始化:api_key 模式跑着但网页端用户还没建(浏览器打开 1933 会 401 重定向的根因)
280
296
  authInitNeeded: !rows.some((x) => x.userId === WEB_USER_ID),
297
+ rootKey: rootKeyStatus(memory),
281
298
  };
282
299
  }
283
300
  /** 一键初始化(方案 §六:建 web 用户 + 各 bot 用户 → 签 key → 加密落盘)。幂等可重跑:
@@ -300,6 +317,17 @@ export async function initMemoryUsers(config) {
300
317
  const rootKey = resolveRootKey(memory);
301
318
  if (!rootKey)
302
319
  return { ...out, errors: ['root key 未配置'], detail: '「检查修复」可对齐 memory.api_key 与受管 ov.conf' };
320
+ // 账号兜底:服务端只认已存在账号,账号不存在时下面每个用户都会 404(历史上表现为
321
+ // 「创建 xxx 失败:HTTP 404」全红,用户无从判断是账号问题还是服务没起)→ 缺账号先自动建
322
+ const account = memoryAccount(memory);
323
+ const accountReady = await ensureRemoteAccount(memoryEndpoint(memory).replace(/\/+$/, ''), account, rootKey);
324
+ if (!accountReady.ok) {
325
+ return {
326
+ ...out,
327
+ errors: [`记忆账号「${account}」不可用:${accountReady.detail}`],
328
+ detail: '请核对 config.yaml 的 memory.account(缺省 default)是否与服务端账号一致',
329
+ };
330
+ }
303
331
  // 期望用户:web + 每个 bot(appId 即 OpenViking 侧 user_id,与 ensureMemoryUserKeys 签发口径一致)
304
332
  const desired = [WEB_USER_ID, ...config.apps.map((a) => a.appId)];
305
333
  // 先列表自愈:已存在用户的 key 直接刷保险库(避免对已存在用户重复创建撞 409)
@@ -335,7 +363,11 @@ export async function initMemoryUsers(config) {
335
363
  out.errors.push(`${uid} 已创建但响应未含密钥——已尝试从用户列表回读`);
336
364
  }
337
365
  else {
338
- out.errors.push(`创建 ${uid} 失败:HTTP ${r.status}${r.message ? `(${r.message})` : ''}`);
366
+ const why = r.message ? `(${r.message})` : '';
367
+ const hint = r.status === 404
368
+ ? '——服务端不存在该账号或用户,请核对 config.yaml 的 memory.account(缺省 default)'
369
+ : r.status === 409 ? '(用户已存在,可直接「重置密钥」)' : '';
370
+ out.errors.push(`创建 ${uid} 失败:HTTP ${r.status}${why}${hint}`);
339
371
  }
340
372
  }
341
373
  out.ok = out.errors.length === 0;
@@ -343,6 +375,47 @@ export async function initMemoryUsers(config) {
343
375
  auditMemory('init', { created: out.created, existing: out.existing, errors: out.errors });
344
376
  return out;
345
377
  }
378
+ /**
379
+ * 取 Root 密钥明文(单次放行 + 审计留痕)——**给 OpenViking Studio 的登录框用**。
380
+ * 背景(用户实测卡点):Studio 首屏要填「Root 或账号管理员 API 密钥」,而 LCB 配置页此前
381
+ * 完全没有 root key 的入口,唯一长得像的「模型配置 → API Key」是智谱模型 key,填进去必然 401。
382
+ * Studio 自己的提示写的是「Root API 密钥位于服务端 ov.conf 的 server.root_api_key」,本页就按
383
+ * 同一口径给出处 + 复制按钮,别让用户自己在磁盘上翻配置文件。
384
+ * 顺带校验:带 key 打一次 /api/v1/system/status(api_key 模式下鉴权通过的证明),把「拷贝即用」
385
+ * 的确定性前置到本页,而不是让用户在 Studio 的报错里猜。
386
+ */
387
+ export async function revealRootKey(config) {
388
+ const memory = config.memory;
389
+ if (!memory)
390
+ return { ok: false, error: 'memory 段未配置' };
391
+ const fromConfig = memory.apiKey?.trim();
392
+ const rootKey = resolveRootKey(memory);
393
+ if (!rootKey) {
394
+ return {
395
+ ok: false,
396
+ error: 'Root 密钥未配置:config.yaml 的 memory.api_key 与受管 ov.conf 的 server.root_api_key 均为空。'
397
+ + '请到「服务与配置」点「检查修复」重新生成,或手工把 ov.conf 里的 server.root_api_key 回写到 memory.api_key',
398
+ };
399
+ }
400
+ const source = fromConfig ? 'config' : 'ov-conf';
401
+ auditMemory('reveal-root', { source });
402
+ // 校验:/system/status 在 api_key 模式下带 X-API-Key 通过即有效;dev 模式不校验直接视为有效
403
+ const health = await probeMemoryHealth(memoryEndpoint(memory));
404
+ if (health.authMode && health.authMode !== 'api_key') {
405
+ return { ok: true, key: rootKey, source, valid: true, validDetail: `服务为 ${health.authMode} 模式,Studio 无需密钥` };
406
+ }
407
+ if (!health.healthy) {
408
+ return { ok: true, key: rootKey, source, valid: false, validDetail: `服务不可达,未能校验(${health.detail ?? '未知原因'})` };
409
+ }
410
+ const r = await adminCall(memory, rootKey, 'GET', '/api/v1/system/status');
411
+ return {
412
+ ok: true,
413
+ key: rootKey,
414
+ source,
415
+ valid: r.ok,
416
+ ...(r.ok ? {} : { validDetail: `校验未通过:HTTP ${r.status}${r.message ? `(${r.message})` : ''}——这把密钥与服务端不匹配` }),
417
+ };
418
+ }
346
419
  /** 取某用户密钥明文(单次放行 + 审计留痕)。保险库未命中时尝试列表自愈回读(服务端 api_key
347
420
  * 模式列表可回带明文),再未命中提示重置。root key / 他人密钥的边界:本接口只服务本机配置页 */
348
421
  export async function revealUserKey(config, uid) {
@@ -429,7 +502,7 @@ export async function deleteMemoryUser(config, uid) {
429
502
  const rootKey = resolveRootKey(memory);
430
503
  if (!rootKey)
431
504
  return { ok: false, detail: 'root key 未配置' };
432
- const account = memory.account ?? 'lcb';
505
+ const account = memoryAccount(memory);
433
506
  // 备份前置:打包失败绝不删除(磁盘明文数据是唯一正本)
434
507
  let backupPath;
435
508
  try {