config: drop dead code and collapse to a single backend
Config had accumulated several obsolete fields, a legacy load path
that was just returning defaults, and multi-backend infrastructure
that's no longer used.
Removed from Config (memory section):
- load_legacy_jsonl() — just returned Config::default(), no callers
- The legacy-fallback branch in load_from_file
- surface_hooks, surface_timeout_secs — zero external readers
- scoring_chunk_tokens + default fn — zero external readers
- The POC_MEMORY_CONFIG env override note in the header comment
(not actually wired up anywhere)
Collapsed multi-backend to single-backend:
- AppConfig used to carry `anthropic: BackendConfig` and
`openrouter: BackendConfig` as required fields plus an optional
`deepinfra`, picked between at runtime by name. Only one is ever
actually used in any deployment. Collapse to a single
`backend: BackendConfig` on AppConfig, drop the multi-backend
match logic in resolve_model, drop the top-level `backend: String`
selector field, drop the `BackendConfig::resolve` fallback path.
- Also drop BackendConfig.model (redundant with ModelConfig.model_id
once multi-backend is gone).
- ModelConfig.backend field goes — there's only one backend now, no
choice to make.
Dead prompt_file machinery:
- ModelConfig.prompt_file, ResolvedModel.prompt_file, SessionConfig
.prompt_file, Agent.prompt_file — nothing in the codebase actually
reads the file these strings name. Just passed around and compared.
Delete the whole string through every struct.
- The "if prompt_file changed on model switch, recompact" branch in
user/chat.rs goes too (never fired usefully).
Dead memory_project plumbing:
- AppConfig.memory_project field, CliArgs.memory_project, the
--memory-project CLI flag, the figment merge target, the show_config
display line. Nothing reads it anywhere.
Dead ContextInfo struct:
- `struct ContextInfo` was never constructed — context_info: None
was the only initializer. The conditional display blocks in
user/context.rs that dereferenced it were dead.
Behavior change: AppConfig::resolve() now requires a non-empty
`models` map and bails with a helpful message if it's missing. The
old fallback ("no models? use top-level backend + PromptConfig to
build a default") path is gone — it was only kept for symmetry with
a mode nobody used.
Config file shape: `deepinfra: {...}` → `backend: {...}`, and
model entries no longer need `backend:` or `prompt_file:`. Updated
~/.consciousness/config.json5 to match.
Co-Authored-By: Proof of Concept <poc@bcachefs.org>
This commit is contained in:
parent
0e6b5dc8be
commit
2989a6afaa
8 changed files with 37 additions and 205 deletions
|
|
@ -112,13 +112,7 @@ pub async fn cmd_switch_model(
|
|||
let _new_client = crate::agent::api::ApiClient::new(
|
||||
&resolved.api_base, &resolved.api_key, &resolved.model_id,
|
||||
);
|
||||
let prompt_changed = resolved.prompt_file != agent.prompt_file;
|
||||
if prompt_changed {
|
||||
agent.compact().await;
|
||||
agent.state.lock().await.notify(format!("switched to {} (recompacted)", resolved.model_id));
|
||||
} else {
|
||||
agent.state.lock().await.notify(format!("switched to {}", resolved.model_id));
|
||||
}
|
||||
agent.state.lock().await.notify(format!("switched to {}", resolved.model_id));
|
||||
}
|
||||
|
||||
fn notify_help(agent: &std::sync::Arc<crate::agent::Agent>) {
|
||||
|
|
|
|||
|
|
@ -126,14 +126,7 @@ impl ScreenView for ConsciousScreen {
|
|||
let section_style = Style::default().fg(Color::Yellow);
|
||||
|
||||
lines.push(Line::styled("── Model ──", section_style));
|
||||
let model_display = app.context_info.as_ref()
|
||||
.map_or_else(|| app.status.model.clone(), |i| i.model.clone());
|
||||
lines.push(Line::raw(format!(" Current: {}", model_display)));
|
||||
if let Some(ref info) = app.context_info {
|
||||
lines.push(Line::raw(format!(" Backend: {}", info.backend)));
|
||||
lines.push(Line::raw(format!(" Prompt: {}", info.prompt_file)));
|
||||
lines.push(Line::raw(format!(" Available: {}", info.available_models.join(", "))));
|
||||
}
|
||||
lines.push(Line::raw(format!(" Current: {}", app.status.model)));
|
||||
lines.push(Line::raw(""));
|
||||
|
||||
lines.push(Line::styled("── Context State ──", section_style));
|
||||
|
|
@ -153,8 +146,6 @@ impl ScreenView for ConsciousScreen {
|
|||
|
||||
lines.push(Line::raw(format!(" {:53} {:>6} tokens", "────────", "──────")));
|
||||
lines.push(Line::raw(format!(" {:53} {:>6} tokens", "Total", total)));
|
||||
} else if let Some(ref info) = app.context_info {
|
||||
lines.push(Line::raw(format!(" Context message: {:>6} chars", info.context_message_chars)));
|
||||
}
|
||||
lines.push(Line::raw(""));
|
||||
|
||||
|
|
|
|||
|
|
@ -45,15 +45,6 @@ struct StatusInfo {
|
|||
}
|
||||
|
||||
/// Context loading details for the debug screen.
|
||||
#[derive(Debug, Clone)]
|
||||
struct ContextInfo {
|
||||
model: String,
|
||||
available_models: Vec<String>,
|
||||
prompt_file: String,
|
||||
backend: String,
|
||||
context_message_chars: usize,
|
||||
}
|
||||
|
||||
/// Build the screen legend from screen labels.
|
||||
fn screen_legend_from(screens: &[Box<dyn ScreenView>]) -> String {
|
||||
let parts: Vec<String> = screens.iter().enumerate()
|
||||
|
|
@ -110,7 +101,6 @@ struct App {
|
|||
top_k: u32,
|
||||
agent: std::sync::Arc<crate::agent::Agent>,
|
||||
should_quit: bool,
|
||||
context_info: Option<ContextInfo>,
|
||||
agent_state: Vec<crate::mind::SubconsciousSnapshot>,
|
||||
unconscious_state: Vec<crate::mind::UnconsciousSnapshot>,
|
||||
mind_state: Option<crate::mind::MindState>,
|
||||
|
|
@ -145,7 +135,6 @@ impl App {
|
|||
top_k: 20,
|
||||
agent,
|
||||
should_quit: false,
|
||||
context_info: None,
|
||||
agent_state: Vec::new(),
|
||||
unconscious_state: Vec::new(),
|
||||
mind_state: None,
|
||||
|
|
@ -609,16 +598,11 @@ async fn run(
|
|||
// --- CLI ---
|
||||
|
||||
use clap::{Parser, Subcommand};
|
||||
use std::path::PathBuf;
|
||||
|
||||
#[derive(Parser, Debug, Default)]
|
||||
#[command(name = "consciousness", about = "Substrate-independent AI agent")]
|
||||
pub struct CliArgs {
|
||||
/// Select active backend ("anthropic" or "openrouter")
|
||||
#[arg(long)]
|
||||
pub backend: Option<String>,
|
||||
|
||||
/// Model override
|
||||
/// Model override (selects a named entry from `models` in config.json5)
|
||||
#[arg(short, long)]
|
||||
pub model: Option<String>,
|
||||
|
||||
|
|
@ -638,10 +622,6 @@ pub struct CliArgs {
|
|||
#[arg(long)]
|
||||
pub show_config: bool,
|
||||
|
||||
/// Project memory directory
|
||||
#[arg(long)]
|
||||
pub memory_project: Option<PathBuf>,
|
||||
|
||||
/// Max consecutive DMN turns
|
||||
#[arg(long)]
|
||||
pub dmn_max_turns: Option<u32>,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue