Skip to content

Automate Mode

GhostFrame edited this page May 25, 2026 · 2 revisions

Automate Mode

Automate mode lets the engine pick the right persona for the task. It classifies your work, scores every installed persona, and switches when the domain shifts.

Enable automate mode

# Turn on for the current project:
frameshift automate on

# With a sensitivity dial (0.0 = stable, 1.0 = responsive):
frameshift automate on --sensitivity 0.7

# Check current state:
frameshift automate status

# Pin the current persona (prevent switching):
frameshift automate lock

# Release the pin:
frameshift automate unlock

# Turn off:
frameshift automate off

How selection works

The selection pipeline scores four components for each installed persona:

  1. Language overlap. How well the persona's declared language set matches the languages detected in your project.
  2. Lexical match. IDF-weighted token hits between the task description and persona keywords. Anti-keywords (declared in pack.toml) actively repel selection.
  3. Intent alignment. The engine classifies the task into one of ten intents, then checks which personas declare that intent as primary.
  4. Capability fit. Whether the persona's required tools, filesystem scope, and network egress requirements match the environment.

Scores blend into a ranked list with confidence values. The top-ranked persona is activated unless the switch controller blocks it.

Intent classification

Ten intents: Implementation, Debugging, Review, Security, Writing, Ops, Testing, Refactoring, Performance, and Design.

Personas declare their primary intents in pack.toml:

[capability_manifest]
primary_intents = ["implementation", "security"]
anti_keywords = ["frontend", "css", "react"]

Switch controller

The switch controller prevents thrashing. It applies hysteresis -- a recently-switched persona gets a stability bonus, and rapid back-and-forth switching is damped. The sensitivity dial controls how much hysteresis is applied.

At sensitivity = 0.0, the controller is maximally stable (resists switching). At 1.0, it is maximally responsive (switches freely).

Feedback loop

When the engine picks wrong, record the override:

frameshift feedback --auto-pick web-designer --chosen rust --intent debugging

The engine adjusts per-persona bias for future selections. Feedback entries carry optional intent context and decay over time.

Viewing preferences

# Show current preference biases:
frameshift prefs show

# Reset all preferences:
frameshift prefs reset

Selection without switching

You can score personas without activating one:

# Table output (default):
frameshift select --task "debug a rust compilation error" --library ~/.local/share/frameshift/personas

# JSON output for programmatic use or LLM reranking:
frameshift select --task "debug a rust compilation error" --library ~/.local/share/frameshift/personas --format json

JSON output includes the full context snapshot (detected languages, frameworks, inferred intent), per-candidate component scores, matched tokens, and rationale.

Audit log

Every orchestrator decision is logged to the project's orchestrator/ directory. The audit log records what was selected, what was considered, the scores, and why.

Clone this wiki locally