You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The docstring states the fallback chain as MEMSCHEDULER_MODEL -> MEMREADER_GENERAL_MODEL, but get_memreader_general_llm_config() itself has a further fallback to the memreader config (i.e., MEMRADER_MODEL). The actual full chain is MEMSCHEDULER_MODEL -> MEMREADER_GENERAL_MODEL -> memreader config, which is inconsistent with the sibling get_suggestion_llm_config docstring that correctly documents all three hops.
When neither MEMSCHEDULER_MODEL nor MEMREADER_GENERAL_MODEL is set, default_model becomes "". This empty string is then passed to cls(default_model=default_model) and later written to os.environ["MODEL"] and os.environ["MEMSCHEDULER_MODEL"], causing any downstream API call that relies on the model name to fail at runtime.
The previous code had an explicit fallback of "gpt-4o-mini". The terminal or "" should be restored to a concrete default to preserve that behavior for users who have not set any model env var.
💡 Suggested Change
Before:
default_model = (
os.getenv("MEMSCHEDULER_MODEL") or os.getenv("MEMREADER_GENERAL_MODEL") or ""
)
After:
default_model = (
os.getenv("MEMSCHEDULER_MODEL") or os.getenv("MEMREADER_GENERAL_MODEL") or "gpt-4o-mini"
)
This code calls a private method (_build_provider_llm_config) from outside APIConfig, crossing a module boundary. Private methods are considered implementation details and can be renamed or restructured without warning. Since get_scheduler_llm_config() already resolves the model and its provider credentials, consider exposing a dedicated public method on APIConfig (e.g. get_eval_analyzer_llm_config(model)) instead of reaching into the private helper directly.
The OPENAI_API_KEY and OPENAI_API_BASE set here serve no testing purpose. In this fallback test, the model is always resolved to qwen3.6-flash (from MEMREADER_GENERAL_MODEL), so _build_provider_llm_config only consults QWEN_API_*. The OpenAI vars are never read and never asserted against.
In test_task_specific_model_uses_provider_env the pattern is intentional: two competing providers are set to verify that the correct one wins. Here there is no such ambiguity — the model name alone determines the provider. Removing the stale OpenAI lines eliminates misleading noise and makes the test's env setup self-documenting.
Typo in environment variable key: MEMRADER_MODEL is missing the letter E — it should be MEMREADER_MODEL. As written, this pop targets a key that almost certainly never exists, making it a silent no-op. If MEMREADER_MODEL happens to be set in the test runner's environment, it will not be cleared before OpenAIConfig.from_env() is called, which could cause self.assertEqual(config.default_model, "") to fail intermittently.
In the fallback test, MEMREADER_GENERAL_MODEL is set to "qwen3.6-flash", so _build_provider_llm_config will always resolve to the qwen backend and only read QWEN_API_* credentials. The OPENAI_API_KEY and OPENAI_API_BASE values set here are never consulted and are never asserted against, making them pure noise.
This is different from test_task_specific_model_uses_provider_env, where setting both provider envs deliberately verifies that the correct one wins. Here there is no provider ambiguity — the model name alone determines the provider. Remove the unused OpenAI lines to keep the env setup self-documenting.
The test environment encountered an issue that requires manual attention.
Details: Executor error: Command failed: git clone --depth 1 --branch wq-dev-v2.0.32 git@github.com:bittergreen/MemOS.git /data/test-workspaces/ef2daeae7f1a997a/repo
Cloning into '/data/test-workspaces/ef2daeae7f1a997a/repo'...
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists. Branch:wq-dev-v2.0.32
The test environment encountered an issue that requires manual attention.
Details: Executor error: Command failed: git clone --depth 1 --branch wq-dev-v2.0.32 git@github.com:bittergreen/MemOS.git /data/test-workspaces/3da805fdb98d240b/repo
Cloning into '/data/test-workspaces/3da805fdb98d240b/repo'...
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists. Branch:wq-dev-v2.0.32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
doc: update env examples and readmes
fix: route suggestion and scheduler LLM configs by model
Type of change
How Has This Been Tested?
Checklist
Reviewer Checklist