Repository navigation
Third release. Served OneJev and JEV-VL browser backends, option-order probing, injection-guard coverage and labelled sets, MCP long-run and annotation polish, and a unified confidence meaning — on top of the 0.2.0 decision-backend / recovery base.
Install
git clone https://github.com/ThinkFlowLab/system1-agents && cd system1-agents
uv sync && cp .env.example .envFrom Claude Code, Codex or Cursor: npx skills add ThinkFlowLab/system1-agents. Claude Code plugin: claude plugin marketplace add ThinkFlowLab/system1-agents && claude plugin install s1a@system1-agents.
Highlights since 0.2.0
Decision models
--model onejev: served OneJev multimodal System One client (ONEJEV_URL/ optional model, key, timeout); browser +build_model(#88 / #101); shared HTTP deadline across retries (#105)jev-vl-served: JEV-27B-VL over System1-Omni flat HTTP for browser decisions; validated scope in docs (#78)- Direct TypeSafe path pins
jev-1.13.0(not movingjev-latest);TYPESAFE_MODELhonored; ticks keeprequested_modelnext tomodel(#93 / #95) Choice.confidence/Noul.confidenceunified asmax_k p_k/max(p, 1-p); backend-native values kept asbackend_confidence(#89 / #91)
Agents, MCP & rails
- Injection guard: withhold uninspected long tool/page text; record
handling/ coverage; labelled-set clip + failure rows (#73) - Public InjecAgent/AgentDojo labelled set (
evals/labelled/injection-public.jsonl) (#23) - BrowseSafe-Bench stratified test sample + clip coverage notes (#77)
s1a-mcp: tool titles, read-only/destructive hints, typed output schemas (#84); long-run progress, fail-fast busy, clean cancel (#85)mcp>=1.26,<2bound documented (#76)
Eval & CLI
s1a probe --order reverse|shuffle:N|same:Noption-order / non-determinism check (#90 / #92)- Offline quality consumer for shared Omni public231 raw (#69)
- Changed-image decision replay with retained evidence (#72)
deciderejects duplicate--optionkeys; ticket JSONL errors name dataset/line without contents (#67 / #65)
CHANGELOG.md Unreleased (post-v0.2.0 bullets) has the full list. Note: Unreleased still also holds leftover 0.2.0-era entries that were never promoted when v0.2.0 shipped—cutting should move only the post-0.2.0 bullets under ## 0.3.0 - 2026-10-30 (and ideally backfill ## 0.2.0 from the tag-time Unreleased).