Releases: msb-msb/mycoSwarm
Releases · msb-msb/mycoSwarm
Release list
v0.4.3 — Swarm Body Awareness
- Phase 31c: Monica can feel her hardware
- body.py: GPU temp, VRAM usage, node online/offline status
- Body prompt injected into system prompt (identity → body → vitals → memory)
- Hardware-to-vitals: GPU temp → Calm, VRAM → Clarity, node count → Connectedness
- Timing gate: GPU >85°C or VRAM >90% biases toward GENTLE mode
- Graceful fallback in solo mode (no daemon)
- 35 new tests
v0.4.2 — Per-Category Research Modes
- RLM now default for research-driven, buying-guide, vs, how-to categories
- Standard default for news, model-release, explainer, opinion, experience-driven
- article-full-v2.yaml validated (57/60, 844s with merged synthesizer)
- --research-mode CLI flag overrides category default
- --list-categories shows research mode per category
v0.4.1 — Parallel Subtopic Search
- Phase 40b: parallel subtopic search via ThreadPoolExecutor (all search+fetch concurrent)
- Writer truncation gate raised 1700→1900 (prevents section loss before editor)
- SEO gate unchanged at 1700 as final word count enforcer
v0.4.0 — RLM Pipeline + Quality Gates
- RLM research agent with topic-anchored decomposition
- Editor timeout 300s → 600s (prevents mid-generation cutoff)
- Writer + SEO post-step word-count truncation gates
- Editor verification log stripped before SEO step
- 9 article category profiles with per-category model selection
- article-full-v2.yaml (5-step merged synthesizer pipeline)
v0.3.9 — RLM Pipeline Optimizations
v0.3.9 — RLM Pipeline Optimizations
Improvements
- Synthesizer step skipped in RLM mode (research bundle already structured) — saves ~152s
- Subtopic cap lowered 8→6, prompt prefers 4-5 subtopics for better depth per subtopic
- Writer prompt enforces 1,600 word limit to prevent editor truncation
- Writer prompt requires using data from ALL subtopics (data coverage is graded)
- Editor max_tokens bumped 6144→8192 for full score output
- article-full-v2.yaml — 5-step pipeline with synthesizer-merged (ready for benchmarking)
- Editor bundle fallback chain: synthesizer-v2 > synthesizer-merged > synthesizer
Performance
- RLM mode: 899-1,050s (~15-17 min) vs 1,120s baseline
- Standard mode: 607s unchanged
Files Changed
src/mycoswarm/agents/rlm_research.py— RLM research agent (Phase 40a+40b)src/mycoswarm/pipeline.py— RLM dispatch, synthesizer skip, editor max_tokenssrc/mycoswarm/cli.py—--research-modeflagpipelines/article-full.yaml— writer data coverage + word limitpipelines/article-full-v2.yaml— new merged-synthesizer pipelinetests/test_rlm_research.py— 21 unit tests
v0.3.7 — Per-Category Writer Model + Think Fix
v0.3.7 — Per-Category Writer Model + Think Fix
New Features
- Per-category writer model — quality categories use qwen3.5:35b-a3b,
speed categories use gemma3:27b- qwen3.5:35b-a3b: research-driven, buying-guide, vs, how-to,
experience-driven, explainer, opinion - gemma3:27b: news, model-release
- qwen3.5:35b-a3b: research-driven, buying-guide, vs, how-to,
- --list-categories now shows model= per category
Bug Fixes
- think=false must be top-level in Ollama request body, not inside options.
Fixed in pipeline.py, research.py, and all other Ollama callers. Without this,
qwen3.5 models burn all tokens on hidden reasoning and produce 0 usable output.
Benchmark Results
- qwen3.5:35b-a3b (think=false): ~19 tok/s, 2x output volume, stronger
structure and fact verification vs gemma3:27b - gemma3:27b: ~37 tok/s, 10min pipeline — remains default for speed categories
- qwen3.5:27b eliminated — spills to RAM on RTX 3090, 7.5 tok/s not viable
v0.3.6 — Article Category System
v0.3.6 — Article Category System
New Features
- Article categories — 9 category profiles with different pipeline configs:
research-driven,buying-guide,vs,how-to,news,model-release,
experience-driven,explainer,opinion --categoryCLI flag — select category per run, defaults toresearch-driven--list-categoriesflag — prints all categories with rounds, depth, and context requirementsarticle-short.yaml— 3-step pipeline (writer→editor→seo) for opinion and explainer articlesarticle-full.yaml— full 6-step pipeline, replacesarticle.yamlas canonical path
Improvements
ResearchAgent.run()now acceptsmax_roundsandmin_depthparams (overrides module constants)- Category profile injects
writer_tonedirective into writer step prompt - Warning emitted when
context_required=Truecategory is run without--context article.yamlpreserved for backwards compatibility
Bug Fixes (v0.3.5 followup)
- Research agent early-exit threshold raised from round 3 to round 4
- Forced eval depth mapping relaxed: 2+ signals → depth=7 (was 3+)
v0.3.5 — Agentic Research Agent
What's New
Agentic research agent replaces the old extractor + gap-filler pipeline steps with a single multi-turn loop using Ollama native tool calling (qwen3.5:9b).
Research Agent
ResearchAgentclass with plan → search → fetch → evaluate loop (up to 5 rounds)- Three tools:
web_search(DDG + Perplexity fallback),web_fetch(full page extraction),evaluate_depth(self-assessment with depth rubric) - Forced fetch after searches — injects second inference with only web_fetch available
- Forced evaluate_depth after each round with concrete criteria
- Early-round nudging if model plans without searching
- Context safety valve at ~20k words
- Debug output with per-round search/fetch counts and depth progression
Pipeline Improvements
- Pipeline reduced from 7 steps to 6 (research replaces extractor + gap-filler)
- Synthesizer anti-review guardrail
- Context injection for writer and editor system prompts
- 6-axis editor scoring (/60) with depth hard cap
- Draft/published staging for pipeline output
fetch_page()extracted to module-level for reuse
Full Changelog
https://github.com/msb-msb/mycoSwarm/blob/main/CHANGELOG.md
v0.3.4 — Ground Truth Pipeline
What's New
Ground Truth Pipeline
gpu-reference.jsoninjected into every pipeline step as verified context (21 GPUs, 22 benchmarks, eBay auction pricing)- Models see ground truth before web search results and are instructed not to contradict it
- Benchmark tok/s data included in reference context for each GPU
Self-Tested Benchmarks
- RTX 3060 12GB (rushuna): qwen3.5:9b, deepseek-r1:14b
- RTX 3090 24GB (Miu): gemma3:27b @ 40 tok/s
Perplexity Sonar API Fallback
- Zero-result DDG queries automatically retry via Perplexity Sonar API
- DDG always runs first — Perplexity only fires on empty results
PERPLEXITY_API_KEYloaded from.envvia python-dotenv
Performance: think=false for extraction steps
- Extractor and gap-filler steps disable deepseek-r1 chain-of-thought
- 35 tok/s effective vs 4.9 tok/s with thinking enabled (3x token waste)
- Gap-filler no longer times out at 320s
Editor Prompt Overhaul
- 3-phase review: fact-check → structural → style
- 5-axis scoring (50pt scale): accuracy, coverage, structure, style, actionability
- Misattribution detection: "right number, wrong model" caught and flagged
- Unverified claims cap accuracy at 7/10, misattributions cap at 6/10
Quality of Life
- Human-readable price ranges:
$170–$380 (typical ~$275)(en-dash format) .envadded to.gitignore- Bandwidth-to-tok/s rule of thumb in reference context
Upgrade
pip install --upgrade mycoswarm==0.3.4v0.3.2 — Parallel Retrieval Pipeline & Web Grounding
Highlights
- Phase 37b: Fan-out web search — query variants (keyword + recency), parallel dispatch across light nodes, URL dedup, top-3 page fetch
- Phase 37c: Parallel retrieval pipeline — ThreadPoolExecutor runs web/RAG/procedure searches concurrently, single progress line
- Web grounding — full-page content as PRIMARY source, _grounding=0.8, snippet cap, hierarchy separator
- Gate model upgrade — gemma3:4b preferred for better intent classification
- CLI web_and_rag safety net — catches combined intent when gate model misses
Fixes
- UnboundLocalError on web_context_parts when web search path skipped
- English enforcement in web-present context injection
- web_and_rag examples added to intent prompt in both solo.py and worker.py
571 tests passing