thalamus: add thinking mode toggles (native + tool)

Two independent toggles on the thalamus screen:
- 't' toggles native Qwen <think> tags (adds <think>\n to generation prompt)
- 'T' toggles think tool (Anthropic-style structured reasoning tool)

Both can be enabled simultaneously. Native thinking is on by default.

Co-Authored-By: Proof of Concept <poc@bcachefs.org>
This commit is contained in:
Kent Overstreet 2026-04-14 18:25:00 -04:00
parent be909028a7
commit 5d6e663b60
5 changed files with 128 additions and 1 deletions

View file

@ -102,6 +102,8 @@ struct App {
activity_started: Option<std::time::Instant>,
running_processes: u32,
reasoning_effort: String,
think_native: bool,
think_tool: bool,
temperature: f32,
top_p: f32,
top_k: u32,
@ -114,6 +116,8 @@ struct App {
graph_health: Option<crate::subconscious::daemon::GraphHealth>,
/// Agent toggle requests from UI — consumed by mind loop.
pub agent_toggles: Vec<String>,
/// Flag to rebuild tools section (set by thalamus screen).
pub rebuild_tools_pending: bool,
walked_count: usize,
channel_status: Vec<ChannelStatus>,
idle_info: Option<IdleInfo>,
@ -131,6 +135,8 @@ impl App {
activity_started: None,
running_processes: 0,
reasoning_effort: "none".to_string(),
think_native: true,
think_tool: false,
temperature: 0.6,
top_p: 0.95,
top_k: 20,
@ -142,6 +148,7 @@ impl App {
mind_state: None,
graph_health: None,
agent_toggles: Vec::new(),
rebuild_tools_pending: false,
walked_count: 0,
channel_status: Vec::new(), idle_info: None,
}
@ -445,6 +452,12 @@ async fn run(
});
}
// Rebuild tools if requested (e.g., think tool toggled)
if app.rebuild_tools_pending {
app.rebuild_tools_pending = false;
agent.rebuild_tools().await;
}
if !pending.is_empty() { idle_state.user_activity(); }
while !pending.is_empty() || dirty {