Dev & Engineering self-evolving-agentcontrol-loopbayesian-bandithot-pluggable-componentsthree-layer-memoryqqbottelegram-botscheduler

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.

FollowAgents review · FARS-2.1
Not recommended
49/ 100 5-point scale 2.5 / 5
1 2 3 4 5 6
1Trust11 / 29 · 1.9/5

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.

2Reliability8 / 14 · 2.9/5

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.

3Adaptability10 / 18 · 2.8/5

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.

4Convention10 / 18 · 2.8/5

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.

5Effectiveness7 / 13 · 2.7/5

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.

6Verifiability3 / 8 · 1.9/5

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.

Evidence confidence: Low Reviewed Sep 10, 2026 Reviewed revision 9c0e975e62cf
Before you use it
  • 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.
Review evidence [1][2][3][4][5][6][7][8]
See the full review method →

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).

  1. 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.
  2. 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.).
  3. 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.
  4. Anyone doing web automation: the web_fetch component (DrissionPage) handles scraping, screenshots, QR-code login, and form filling.
  5. 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?

Pros
  • 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
Limitations
  • 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.

FAQ

Which model provider is required?
Any OpenAI-compatible API works; configure key, endpoint, and model in config/agent/llm.yaml. A built-in 40+ model registry auto-detects context window and tool support.
Does vector search need an extra service?
It is off by default. You can optionally configure an OpenAI-compatible embedding API (config/agent/embedding.yaml); otherwise only FTS5 full-text search is used, with no external dependency.
Are agent-generated components safe?
Components run in isolated subprocesses (crashes don't affect the main process), file paths map into sandbox_root/, os.system/subprocess are intercepted at runtime, and components require user /trust confirmation for the whitelist.
What happens if the agent gets stuck or loops?
Built-in handling: redirect triggers when stagnation/repetition scores exceed thresholds, compress/stop triggers at context saturation above 0.7/0.95, terminate at 5+ exact output repetitions, with max-iteration and token-budget rules as backstops.
How do I connect QQ/Telegram and other platforms?
ChannelManager unifies message routing, file transfer, and injection across platforms; QQ uses a websockets client, Lark needs cellium-agent[lark], and the WebUI plus API docs are served on port 18000 after startup.

Related agents