Use `dict.get()` instead of `try/except KeyError` for the actor-level
`_caches` lookup; actually store the loaded `symcache` back into
`_caches[provider]` so subsequent opens retrieve any in-mem cache
instance.
Deats,
- swap `_caches[provider]` `KeyError` catch to
`.get()` with `if symcache:` guard.
- assign result back to `_caches[provider]` before
yielding so the cache is persistent across calls.
- rename local `cache` -> `symcache` throughout.
- add `loglevel` param and init `get_console_log()`
at function scope.
Also,
- improve `log.info()` msgs with `{provider!r}`,
load-latency, and cachefile path details.
- demote "no cache exists" from `.warning()` to
`.info()`.
- track `from_msg` to distinguish "NEW request to
provider" vs loaded-from-file in final log line.
- reformat `or` conditions to multiline style.
- move `import time` to module-level.
(this commit msg was generated in some part by [`claude-code`][claude-code-gh])
[claude-code-gh]: https://github.com/anthropics/claude-code