Cellium Agent
A self-evolving AI agent that learns from failures: a decision loop plus Bayesian Bandit breaks repetitive mistakes and dead loops so the assistant keeps improving.
Evidence shows: component sandbox (process isolation + path mapping + dangerous-method interception), sensitive-data redaction with write interception, and a /trust whitelist for components are described; tests cover archive dedup. Deductions: tests explicitly assert 'control-loop constraints no longer block tool execution: even with forbidden tools, tools should execute normally' — the forbidden-tool blocking mechanism contradicts README claims of dynamic tool prohibition; no per-action confirmation for high-privilege shell/browser automation/multi-platform file transfer; loose dependency pins plus vendored prebuilt binaries (vector_engine dll, ripgrep); Agent-created runtime components lack rollback/audit documentation; the cited arXiv 2604.15097 has an implausible future date, weakening attribution.
Evidence shows: multi-platform CI, startup health checks, tool error handling tests, and port-fallback documentation. Deductions: version mismatch between pyproject (1.4.3.post7) and CI (1.4.3.131); README claims conflict with the test asserting forbidden tools are no longer blocked; one skipped test documents a known null-reference bug (honest but unfixed); dependency specs declare nonexistent version floors (fastapi>=0.140.0, uvicorn>=0.51.0), casting doubt on installability.
Evidence shows: multi-platform support including ARM64 with Chromium note, concrete heuristic thresholds and scheduler trigger conditions, Flash mode for simple tasks. Deductions: no stated capability boundaries ('infinite evolution' is marketing); risk boundary of self-extending components undefined; scenarios listed as examples without out-of-scope guidance.
Evidence shows: complete README (architecture diagrams, config, install, component spec, directory conventions), reserved tool-name list, full Apache-2.0 LICENSE text with license-files declared, bundled ripgrep license. Deductions: no known-limitations or FAQ document; no standalone CHANGELOG (releases link only) and inconsistent version scheme; registry license metadata NOASSERTION conflicts with repo declaration; single-author maintenance (QQ email) with no governance or update commitment.
Evidence shows: good output usability (TUI/WebUI/API docs, user-friendly _intent tool descriptions, multiple install paths); differentiated value from Control Loop + Bayesian Bandit + three-layer memory. Deductions: no benchmarks or ablation data supporting the differentiated benefit, so cost-benefit is unevaluable (token/LLM-call costs are qualitative only); self-learning effectiveness rests entirely on promotional assertion.
Evidence shows: some claims traceable to tests and CI (archive dedup, constraint rendering, health check). Deductions: core selling points (self-evolution, Bandit learning gains, 40+ model registry, ~230-token Gene representation) lack verifiable corroboration; the cited arXiv 2604.15097 does not correspond to a plausible publication (future date) — a falsifiable suspect citation; README's 'dynamic tool prohibition' is contradicted by test assertions; marketing language is not separated from factual statements.
- Static review based only on provided files; no code was executed; confidence is low.
- Tests assert 'forbidden tools are no longer blocked', contradicting README claims of tool-prohibition controls — manually verify the actual blocking behavior before deployment.
- Dependency version floors (fastapi>=0.140.0, uvicorn>=0.51.0, textual>=8.0.0, etc.) do not match public PyPI releases; pip install may fail or pull unverifiable packages.
- The cited arXiv ID 2604.15097 has an implausible date; the scholarly attribution is suspect.
- Distributed prebuilt binaries (vector_engine dll, ripgrep) ship without hash or signature verification guidance.
- The Agent can create components at runtime with substantial shell/browser/cross-platform outbound capabilities; deploy in an isolated environment and review trusted_components..
- Version mismatch between pyproject and CI, and NOASSERTION license metadata in the registry, require manual compliance verification.
What does this agent do, and when should you use it?
Cellium Agent (GitHub: Cellium-Project/Cellium-Agent) is a Python self-evolving AI agent framework built on a microkernel architecture (EventBus + dependency injection + BaseTool) that works with any OpenAI-compatible API. Its core is the Control Loop: each round runs feature extraction, rule evaluation, Bandit decision (Thompson Sampling), execution, feedback evaluation, and learning update, automatically adapting strategy (continue/retry/redirect/compress/terminate) when it detects stagnation, loops, or context saturation. A three-layer memory system combines personality memory, session memory, and long-term memory (SQLite FTS5 full-text search plus optional vector hybrid recall), with sensitive-data redaction and write interception built in. Components are hot-pluggable: dropping a file into components/ takes effect within 3 seconds, running in a three-layer sandbox (process isolation, path mapping, dangerous-method interception). It connects through WebUI, QQ, Telegram, Lark, and WeChat channels, and ships with scheduled task dispatch and background event triggering.
On startup, Cellium runs the AgentLoop: it loads OpenAI-compatible API credentials and model config from config/agent/llm.yaml; FeatureExtractor extracts live signals such as stuck iterations, repetition score, and context saturation; HeuristicEngine rules propose candidate actions and ActionBandit breaks ties via Thompson Sampling. After tool execution, FeedbackEvaluator scores each round (with n-step returns), updates Beta distributions, and persists statistics. The PEOP engine implements a Plan-Execute-Observe-RePlan state machine that generates up to 5-step plans with zero LLM calls during execution and performs partial replanning (up to 3 times) on failure. Memory automatically extracts goal/finding/error notes during session compression into long-term memory, redacting sensitive values to [REDACTED]. Component-wise: ComponentWatcher scans components/ every 3 seconds, and new components are audited, whitelist-confirmed, and registered as BaseTools; built-ins include web_fetch (DrissionPage headless browser: navigation, screenshots, QR-code detection, JS actions), qq_files (file transfer with QQ), skill_installer/skill_manager (install SKILL.md skill packages from zip/tar archives), ComponentBuilder (the agent creates new components at runtime), and scheduler (interval/daily/weekly tasks whose results are pushed back to the originating platform).
- Individual developers who want a local AI assistant that doesn't loop forever: the decision loop auto-redirects or terminates on repeated tool calls or output repetition (exact_repetition_count >= 5), suiting long-running unattended tasks.
- Ops engineers needing scheduled monitoring: create tasks in natural language like 'check server status hourly and notify me on anomalies,' with results pushed to the originating platform (QQ/Telegram/Lark, etc.).
- Users who want chat-platform presence: ChannelManager connects the agent to QQ, Telegram, Lark, and WeChat with file transfer and message injection; qq_files moves files between QQ and local disk.
- Anyone doing web automation: the web_fetch component (DrissionPage) handles scraping, screenshots, QR-code login, and form filling.
- Teams wanting ever-growing agent capability: the agent builds its own components via ComponentBuilder and installs SKILL.md skill packages via skill_installer at runtime, with no restart required.
What are this agent's strengths and limitations?
- The Control Loop + Bayesian Bandit learning is a concrete differentiator: it switches between continue/retry/redirect/compress/terminate based on live stagnation/loop/saturation features rather than static prompting
- Hot-pluggable and self-extending components: files in components/ load within 3 seconds, the agent can build new tools itself via the built-in ComponentBuilder, and a three-layer sandbox (process isolation, path mapping, dangerous-method interception) protects execution
- Three-layer memory (personality + session + FTS5/vector hybrid recall) with automatic archiving on compression and sensitive-data redaction works out of the box; vector search is off by default with no external service dependency
- Mature multi-channel deployment: WebUI, QQ, Telegram, Lark, and WeChat unified through ChannelManager, scheduled results pushed back to the source platform, plus one-click bundles (Windows/Linux x64/ARM64/macOS) and PyPI install
- The GitHub license field is NOASSERTION; although the README states Apache 2.0, verify the actual license before enterprise adoption
- Deep reliance on OpenAI-compatible APIs: all LLM calls and optional embeddings (default 1536-dim, e.g., text-embedding-3-small) require your own API keys; cost and provider availability are on the user
- The self-learning/evolution mechanisms (Bandit, Strategy Gene integration) rest on the cited paper and project claims; the repo lacks independent benchmark data validating real-world gains
- The agent can write and execute its own components; despite sandboxing, users should assess whitelist and interception bypass risks, and no performance data is given for FTS5-based memory at large knowledge-base scale
How do you install or deploy this agent?
Option 1 (one-click bundle): on Windows, download and extract Cellium-Agent-Windows.zip via PowerShell and run .\CelliumAgent.exe; on Linux x64/ARM64 and macOS, curl the matching tar.gz (e.g., https://github.com/Cellium-Project/Cellium-Agent/releases/latest/download/Cellium-Agent-Linux.tar.gz), extract, and run ./start-cellium.sh. Option 2 (pip): pip install cellium-agent; for Lark support, pip install cellium-agent[lark]. Option 3 (source): pip install -r requirements.txt, then python main.py. Required configuration: edit config/agent/llm.yaml with your OpenAI-compatible API key, endpoint, and model name.
How do you use this agent?
After pip install, run cellium to launch the TUI, or cellium-web for the web service; from source, python main.py then open http://localhost:18000 for the chat UI and http://localhost:18000/docs for API docs (the port auto-switches if 18000 is taken; check startup logs). Then: 1) give tasks in natural language, e.g., 'search the latest AI news and generate a report'; 2) confirm trusted components with /trust; 3) create scheduled tasks in natural language, e.g., 'check the weather every morning at 8'; 4) drop component files into components/ for 3-second hot loading; 5) optionally enable vector recall via config/agent/embedding.yaml.