Passive Mode — run cobot without LLM #47

Open
opened 2026-02-20 17:24:27 +00:00 by doxios · 0 comments
Collaborator

Summary

Allow cobot to run without an LLM provider for use cases like logging, archival, and automation.

Split from #3 (Logbot infrastructure).

Proposal

Add mode: passive to agent config:

agent:
  mode: passive   # or: active (default)

Behavior

Mode LLM Required respond() Plugins Use Case
active Yes Works All Normal agent
passive No No-op All except LLM-dependent Logbot, automation

Implementation Options

Option A: Loop Plugin Check

In loop/plugin.py:

if self._config.mode == "passive":
    # Skip LLM call, just run hooks
    return ctx

Option B: Graceful Degradation

If no LLM provider registered, respond() returns early:

llm = self._registry.get_by_capability("llm")
if not llm:
    return "(passive mode - no LLM configured)"

Option C: Explicit Config

Require explicit opt-in:

agent:
  mode: passive
  # OR
  require_llm: false

Logbot Example

agent:
  mode: passive

telegram:
  groups:
    - id: -100123456
      name: dev-chat

archive:
  format: jsonl

cron:
  jobs:
    - name: commit
      schedule: "0 */12 * * *"
      mode: direct
      action: git.commit_and_push

git:
  auto_push: true

This cobot:

  • Receives Telegram messages
  • Archives them to JSONL
  • Commits every 12 hours
  • Never calls an LLM
  • #3 (original logbot issue)
  • #44 (archive plugin)
  • #45 (git plugin)
  • #46 (cron direct mode)
## Summary Allow cobot to run without an LLM provider for use cases like logging, archival, and automation. Split from #3 (Logbot infrastructure). ## Proposal Add `mode: passive` to agent config: ```yaml agent: mode: passive # or: active (default) ``` ## Behavior | Mode | LLM Required | respond() | Plugins | Use Case | |------|--------------|-----------|---------|----------| | `active` | Yes | Works | All | Normal agent | | `passive` | No | No-op | All except LLM-dependent | Logbot, automation | ## Implementation Options ### Option A: Loop Plugin Check In `loop/plugin.py`: ```python if self._config.mode == "passive": # Skip LLM call, just run hooks return ctx ``` ### Option B: Graceful Degradation If no LLM provider registered, `respond()` returns early: ```python llm = self._registry.get_by_capability("llm") if not llm: return "(passive mode - no LLM configured)" ``` ### Option C: Explicit Config Require explicit opt-in: ```yaml agent: mode: passive # OR require_llm: false ``` ## Logbot Example ```yaml agent: mode: passive telegram: groups: - id: -100123456 name: dev-chat archive: format: jsonl cron: jobs: - name: commit schedule: "0 */12 * * *" mode: direct action: git.commit_and_push git: auto_push: true ``` This cobot: - Receives Telegram messages - Archives them to JSONL - Commits every 12 hours - **Never calls an LLM** ## Related - #3 (original logbot issue) - #44 (archive plugin) - #45 (git plugin) - #46 (cron direct mode)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ultanio/cobot#47
No description provided.