v0.6.5 - AI Agent platform + Redis memory backend
v0.6.5 - AI Agent platform + Redis memory backend
xhs-saas-console v0.6.5 - AI Agent platform rewrite + Redis memory backend
Highlights
- AI Agent platform is now real (not a stub): LangChain-backed loaders
(PDF, DOCX, GBK-fallback text), LLMClient wrapping OpenAI / Anthropic /
Ollama with mock fallback, ChromaDB-persistent RAG with cross-encoder
rerank, async SQLite memory (short / long / semantic / episodic) with
MemoryManager consolidation, LangGraph-style state machines for
ContentAgent / AnalysisAgent / CoordinatorAgent, MCP stdio transport,
and a FastAPI surface (/api/ai/...) covering chat, streaming RAG, ingest,
memory CRUD, tool call, agent list. - Tool registry now rate-limits every call with a token bucket
(default 60/min per tool, 10 burst). Disabled tools return
ToolResult(success=False, error=..., metadata={reason, retry_after,
limit_per_minute}) so callers can back off instead of getting bare False.
(commit: M7) - RedisMemoryDB is a drop-in replacement for the SQLite MemoryDB.
Same 10-method surface (upsert_item / query_items / delete_item /
upsert_fact / query_facts / upsert_episode / query_episodes / stats /
clear / init); the four memory layers + MemoryManager work unchanged.
get_memory_db(backend=...) factory reads settings.memory_backend.
17 fakeredis-backed tests. (commit: 55b9568) - Rebuilt onedir PyInstaller dist with the new console code path
(PyInstaller 6.21 on Python 3.11). MSI is 159 MB; msiexec /a
verified to install xhs-saas-console.exe and the application icon.
Quick start (MSI)
msiexec /i xhs-saas-console-0.6.5.msi /qn msiexec /i xhs-saas-console-0.6.5.msi /qn INSTALLDIR=%USERPROFILE%\Apps\xhs-saas-console msiexec /x {CB49ED5C-30E2-4F98-99DC-63A15816DC5E}
Known issues / warnings (carryover)
- candle CNDL1098 warning on -out. is cosmetic and pre-existing
(carried since v0.6.0). WiX still produces a valid MSI. - pyinstaller deprecation warning when run as admin: harmless.
PyInstaller 7.0 will block; 6.21 still works. - LongTermMemory SQLite path runs at ~140 qps; swap to
RedisMemoryDB for shared cross-process state.