-
Notifications
You must be signed in to change notification settings - Fork 58
[Bug]ready 启动日志显示错误的 provider/model #30
Copy link
Copy link
Open
Description
Bug Report: [graph-memory] ready 启动日志显示错误的 provider/model
组件: graph-memory plugin
文件: extensions/graph-memory/index.ts
严重程度: Low(功能正常,仅日志误导)
现象
用户在 openclaw.json 中为 graph-memory 配置了独立的 LLM:
"plugins": {
"entries": {
"graph-memory": {
"config": {
"llm": {
"model": "stepfun-ai/Step-3.5-Flash",
"baseURL": "https://api.siliconflow.cn/v1",
"apiKey": "..."
}
}
}
}
}但每次启动时日志显示:
[graph-memory] ready | db=~/.openclaw/graph-memory.db | provider=bailian | model=qwen3.5-plus
与配置不符,造成用户误以为配置未生效。
根本原因
index.ts 第 132 行调用 readProviderModel(api.config) 读取的是全局配置中的 agents.defaults.model(即 bailian/qwen3.5-plus),而不是 plugin 自身的 pluginConfig.llm.model:
// index.ts:132
const { provider, model } = readProviderModel(api.config); // ← 读全局默认
// index.ts:136
const llm = createCompleteFn(provider, model, cfg.llm); // cfg.llm 才是 plugin configcreateCompleteFn 的实际执行逻辑(llm.ts:56)会优先使用 plugin config:
if (llmConfig?.apiKey && llmConfig?.baseURL) {
const llmModel = llmConfig.model ?? model; // plugin config 优先,全局 model 只是回退
// ...实际用 stepfun-ai/Step-3.5-Flash 调用 API
}但第 719-721 行的启动日志却打印了来自全局配置的 provider/model,而非实际生效的值:
api.logger.info(
`[graph-memory] ready | db=${cfg.dbPath} | provider=${provider} | model=${model}`,
// ^^^^^^^^ ^^^^^
// 这两个是全局回退值,不反映实际使用的模型
);影响
- 功能层面:不受影响。实际 LLM 调用走路径 A(plugin config),
stepfun-ai/Step-3.5-Flash正常工作。 - 可观测性层面:日志误导,用户无法通过启动日志确认 plugin LLM 配置是否生效。
Proposed Fix
将启动日志改为优先显示 plugin config 中的实际生效值,全局配置值降级为回退标注:
// 在 register() 中,紧接第 131 行 cfg 定义之后:
const effectiveProvider = cfg.llm?.baseURL
? new URL(cfg.llm.baseURL).hostname // 从 baseURL 提取可读标识
: provider;
const effectiveModel = cfg.llm?.model ?? model;
// 第 719-721 行改为:
api.logger.info(
`[graph-memory] ready | db=${cfg.dbPath} | provider=${effectiveProvider} | model=${effectiveModel}` +
(cfg.llm?.baseURL ? ` (plugin llm config)` : ` (global fallback)`),
);或者更简单的最小改动方案,直接读 cfg.llm:
// 第 719-721 行:
const logProvider = cfg.llm?.baseURL ?? provider;
const logModel = cfg.llm?.model ?? model;
api.logger.info(
`[graph-memory] ready | db=${cfg.dbPath} | provider=${logProvider} | model=${logModel}`,
);这样当 plugin config 存在时显示实际用到的值,没有 plugin config 时才回退到全局默认,与实际执行路径保持一致。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels