--- name: deep-research-analyst description: "Expert guide for autonomous deep research, iterative web search, citation verification, evidence graph synthesis, and hallucination mitigation / Panduan ahli riset mendalam otonom, pencarian web iteratif, verifikasi sitasi, dan mitigasi halusinasi." author: "Roedy Rustam" version: "4.4.2" --- # Deep Research Analyst (2026 Autonomous Research Edition) [English](#english) | [Bahasa Indonesia](#bahasa-indonesia) --- ## English ### Orchestration & Integration - **Upstream Orchestrators**: Works under `brainstorming` and `zero-to-prod-orchestrator` (Phase 1 - Product Discovery, PRD & Architecture Selection) to resolve critical technical unknowns. - **Downstream Cooperating Skills**: - `web-scraper` — Multi-strategy web content extraction and anti-bot bypass. - `browser-automation-expert` — Headless browser execution and interactive evidence gathering. - `prd-architect` — Integrate research findings into grounded PRD specifications and NFRs. - `multi-agent-orchestration` — Lead Intelligence Subagent in fan-out / fan-in research swarms. - `session-memory-manager` — Store evidence dossiers, citation maps, and research state checkpoints. ### Description Production guide for architecting and executing autonomous **Deep Research** pipelines. Unlike simple one-shot retrieval (RAG), Deep Research operates as a goal-directed autonomous loop: decomposing queries into multi-perspective sub-questions, crawling and scraping academic/technical sources, scoring source credibility, cross-verifying facts across multiple independent citations, constructing an evidence graph, and synthesizing comprehensive, citation-grounded intelligence briefs. **Swarm Synergy:** Within the **Fan-Out / Fan-In Research Swarm**, this skill acts as the Lead Intelligence Subagent. It is deployed in Phase 1 (Discovery & PRD) to gather ground truth, audit competitor architectures, and resolve high-risk technical unknowns before code is written. ### Trigger Conditions - Requiring deep, multi-source investigation before architectural decision-making. - Benchmarking libraries, database engines, or cloud architectures with empirical data. - Building autonomous research agents, competitive intelligence scrapers, or literature synthesis tools. - Eliminating LLM hallucinations in high-stakes technical or business documentation. - Synthesizing complex multi-page web information into structured, cited intelligence reports. ### Deep Research Operational Workflow ``` 1. QUERY DECOMPOSITION & HYPOTHESIS FORMULATION [User Objective] ──► [Query Expander] ──┬──► Sub-query A (Technical Specs) ├──► Sub-query B (Benchmarks & Limitations) └──► Sub-query C (Community Issues & Regressions) 2. RECURSIVE SOURCE DISCOVERY & CRAWLING [Sub-queries] ──► [Crawl4AI / Firecrawl / SerpAPI] ──► Raw Markdown / HTML Sources 3. SOURCE CREDIBILITY & FACT TRIANGULATION Raw Documents ──► [Evidence Evaluator] ──► Triangulate Facts (>= 2 Independent Sources) ──► Discard Low-Trust / SEO-Spam Content 4. EVIDENCE GRAPH SYNTHESIS & REPORTING Verified Facts ──► [Synthesizer Node] ──► Structured Report with Clickable Markdown Citations ``` ### Core Implementation Guidelines #### 1. Recursive Query Decomposer (Python / TypeScript) Break high-level user requests into diverse search vectors targeting technical documentation, GitHub issues, and benchmarks: ```typescript import { generateObject } from 'ai'; import { google } from '@ai-sdk/google'; import { z } from 'zod'; interface ResearchPlan { coreObjective: string; subQueries: Array<{ query: string; focus: 'architecture' | 'benchmarks' | 'security' | 'pitfalls'; expectedSourceType: 'docs' | 'github_repo' | 'benchmark_paper'; }>; } export async function decomposeResearchQuery(userPrompt: string): Promise { // Invariant: Gemini 4 Argon primary with automatic fallback to Gemini 3.8 Flash let modelInstance; try { modelInstance = google('gemini-4-argon'); } catch (err) { console.warn('[DeepResearch] Gemini 4 Argon unavailable. Falling back to Gemini 3.8 Flash:', err); modelInstance = google('gemini-3.8-flash'); } const { object } = await generateObject({ model: modelInstance, schema: z.object({ coreObjective: z.string(), subQueries: z.array(z.object({ query: z.string().describe('Precise keyword search query with technical operators'), focus: z.enum(['architecture', 'benchmarks', 'security', 'pitfalls']), expectedSourceType: z.enum(['docs', 'github_repo', 'benchmark_paper']), })).min(3).max(6), }), prompt: `Analyze the following research objective and decompose it into 4-6 targeted, non-overlapping search vectors: "${userPrompt}"`, }); return object; } ``` #### 2. Python Implementation: Autonomous Extraction ```python from crawl4ai import AsyncWebCrawler, CrawlerRunConfig, CacheMode from pydantic import BaseModel, Field from pydantic_ai import Agent class ResearchFinding(BaseModel): claim: str = Field(description="Technical claim extracted") confidence: float = Field(ge=0, le=1, description="Confidence score") source_url: str = Field(description="Source URL") corroborating_sources: list[str] = Field(default_factory=list) # Invariant: Try Gemini 4 Argon with graceful fallback to Gemini 3.8 Flash try: research_agent = Agent( 'google-gla:gemini-4-argon', result_type=list[ResearchFinding], system_prompt="Extract and verify technical claims with confidence scores." ) except Exception: research_agent = Agent( 'google-gla:gemini-3.8-flash', result_type=list[ResearchFinding], system_prompt="Extract and verify technical claims with confidence scores." ) async def deep_research(query: str) -> list[ResearchFinding]: config = CrawlerRunConfig(cache_mode=CacheMode.BYPASS) async with AsyncWebCrawler() as crawler: result = await crawler.arun(url=f"https://search-url/{query}", config=config) findings = await research_agent.run(result.markdown) return findings.data ``` #### 3. Vector Store Caching for Intermediate Results Caching intermediate research results in vector stores prevents redundant crawling and accelerates knowledge retrieval: - **Storage:** Use `pgvector` or local `FAISS` for caching crawled page embeddings. - **Deduplication:** Deduplicate sources via cosine similarity before processing. - **Invalidation:** Implement TTL-based cache invalidation for time-sensitive research (e.g., fast-moving API docs). - **Example Flow:** ```python # Store page chunks in vector store vector_store.add_texts(chunks, metadata=[{"url": url, "timestamp": now}]) # Retrieve similar past findings cached = vector_store.similarity_search(query, k=3, filter={"ttl_valid": True}) ``` #### 4. Episodic Research Memory Maintain research memory across sessions to build continuous intelligence: - **Storage:** Store research dossiers as episodic memories in `session-memory-manager`. - **Knowledge Graphs:** Build cumulative knowledge graphs from multiple research sessions, linking related concepts over time. - **Cross-referencing:** Cross-reference past findings with new queries to compound understanding without starting from scratch. #### 5. Source Credibility & Fact Triangulation Protocol Never accept a claim from a single unverified blog post. Require citation triangulation: - **Tier 1 (Highest Confidence):** Official documentation, source code repositories, peer-reviewed benchmarks, RFCs. - **Tier 2 (Medium Confidence):** Production engineering blogs (Uber, Netflix, Cloudflare), maintainer posts. - **Tier 3 (Verify Required):** Forum discussions, social threads, unverified community tutorials. - **Rule of Triangulation:** Any non-trivial technical claim must be confirmed by at least two independent sources or verified against raw benchmark code. #### 6. Structured Evidence Graph Output Every research brief produced by this skill must adhere to the following markdown template: ```markdown # [Topic] — Deep Research & Evidence Dossier ## Executive Summary - Concise 3-5 bullet takeaway synthesis. ## Evidence Matrix | Technical Claim | Verified Status | Confidence (0-100%) | Primary Source | Corroborating Source | |---|---|---|---|---| | Claim Description | Confirmed / Disputed | 95% | [Source A](url) | [Source B](url) | ## Trade-off Analysis & Key Risks - Concrete architectural trade-offs, cold-start latencies, memory footprint, or pricing cliff. ## Recommended Architectural Decision - Prescriptive guidance for implementation swarms with justification. ``` ### Sovereign Execution, Token Efficiency & Invariants | Dimension | Sovereign Mandate & Deterministic Contract | | :--- | :--- | | **Frontier Model Cascade** | Medium / High (`Gemini 4 Argon`, `GPT-5.6 Sol Medium`, `Claude Sonnet 5.5 High`) | | **Availability Fallback** | `Gemini 4 Argon/Pro` -> `Gemini 3.8 Flash`; `Claude Opus 5.5` -> `Claude Opus 4.6` (Zero unhandled missing-model errors) | | **KV-Cache & Token Protocol** | Pin static instructions & schemas at prompt prefix (`kv-cache-prefix-optimizer`); pass surgical `CONTEXT_MAP.md` slices (<250 tokens/call) during Swarm Fan-Out | | **SaaT CLI & MCP Dispatch** | CLI: `vibes skill exec deep-research-analyst ` / MCP: `vibes_skill_dispatch`, `vibes_eval_sql`, `vibes_verify_invariants`, `vibes_verify_gate` | | **NFR & Anti-Slop Invariants** | P99 Query Latency < 15ms, 100% Row Level Security (RLS) coverage on multi-tenant tables, explicit B-Tree indexes on all Foreign Keys; 100% complete zero-placeholder output verified via `node scripts/check-anti-slop.js --strict` | --- --- ## Bahasa Indonesia ### Integrasi Orkestrasi - **Orkestrator Hulu**: Beroperasi di bawah arahan `brainstorming` dan `zero-to-prod-orchestrator` (Fase 1 - Discovery Produk, PRD & Pemilihan Arsitektur) untuk mengatasi ketidakpastian teknis krusial. - **Skill Hilir & Kerja Sama**: - `web-scraper` — Ekstraksi konten web multi-strategi dan bypass anti-bot. - `browser-automation-expert` — Eksekusi browser headless dan pengumpulan bukti interaktif. - `prd-architect` — Mengintegrasikan temuan riset ke dalam spesifikasi PRD dan NFR. - `multi-agent-orchestration` — Subagen Analis Utama dalam swarm riset fan-out / fan-in. - `session-memory-manager` — Menyimpan dokumen bukti, peta sitasi, dan checkpoint status riset. ### Deskripsi Panduan produksi untuk merancang dan mengeksekusi pipeline **Riset Mendalam Otonom (Deep Research)**. Berbeda dari retrieval sederhana (RAG satu langkah), Deep Research beroperasi sebagai siklus otonom terarah: memecah pertanyaan menjadi sub-vektor dari berbagai sudut pandang, merayapi dan mengekstrak sumber teknis/akademis, menilai kredibilitas sumber, memvalidasi silang fakta (*fact triangulation*) di minimal 2 sumber independen, membangun graf bukti, dan menyusun laporan intelijen komprehensif berlandaskan sitasi yang valid. **Sinergi Swarm:** Dalam topologi **Fan-Out / Fan-In Research Swarm**, skill ini berperan sebagai Sub-agen Analis Utama. Diterapkan pada Fase 1 (Discovery & PRD) untuk mengumpulkan fakta objektif, mengaudit arsitektur kompetitor, dan mengeliminasi ketidakpastian teknis berisiko tinggi sebelum penulisan kode dimulai. ### Kondisi Pemicu - Membutuhkan penyelidikan multi-sumber yang mendalam sebelum membuat keputusan arsitektur. - Melakukan benchmark komparatif library, database engine, atau infrastruktur cloud berbasis data empiris. - Membangun agen riset otonom, alat pemantau kompetitor, atau sintesis literatur otomatis. - Mengeliminasi halusinasi LLM pada dokumen teknis atau strategi bisnis berisiko tinggi. - Merangkum informasi web yang rumit dan tersebar menjadi dokumen ringkasan terstruktur dengan sitasi klik langsung. --- ### Alur Kerja Operasional Riset Mendalam ``` 1. DEKOMPOSISI KUERI & HIPOTESIS [Tujuan Riset] ──► [Query Expander] ──┬──► Sub-kueri A (Spesifikasi Teknis) ├──► Sub-kueri B (Benchmark & Batasan) └──► Sub-kueri C (Isu Komunitas & Regresi) 2. PERAYAPAN SUMBER REKURSIF [Sub-kueri] ──► [Crawl4AI / Firecrawl / SerpAPI] ──► Dokumen Mentah (Markdown/HTML) 3. TRIANGULASI FAKTA & KREDIBILITAS Dokumen Mentah ──► [Evidence Evaluator] ──► Validasi Silang (>= 2 Sumber Independen) ──► Eliminasi Konten SEO-Spam & Blog Rendah Kredibilitas 4. SINTESIS GRAF BUKTI & LAPORAN Fakta Terverifikasi ──► [Synthesizer Node] ──► Laporan Terstruktur dengan Sitasi Klik Langsung ``` --- ### Panduan Implementasi Inti #### 1. Dekomposisi Kueri Rekursif (TypeScript & AI SDK) ```typescript import { generateObject } from 'ai'; import { google } from '@ai-sdk/google'; import { z } from 'zod'; interface RencanaRiset { tujuanUtama: string; subKueri: Array<{ kueri: string; fokus: 'arsitektur' | 'benchmark' | 'keamanan' | 'kelemahan'; jenisSumber: 'dokumentasi' | 'repositori_github' | 'paper_teknis'; }>; } export async function dekomposisiTujuanRiset(promptPengguna: string): Promise { // Invarian: Gemini 4 Argon primer dengan pengalihan otomatis ke Gemini 3.8 Flash let modelTarget; try { modelTarget = google('gemini-4-argon'); } catch (galat) { console.warn('[DeepResearch] Gemini 4 Argon belum tersedia. Mengalihkan ke Gemini 3.8 Flash:', galat); modelTarget = google('gemini-3.8-flash'); } const { object } = await generateObject({ model: modelTarget, schema: z.object({ tujuanUtama: z.string(), subKueri: z.array(z.object({ kueri: z.string().describe('Kueri kata kunci spesifik dengan operator pencarian teknis'), fokus: z.enum(['arsitektur', 'benchmark', 'keamanan', 'kelemahan']), jenisSumber: z.enum(['dokumentasi', 'repositori_github', 'paper_teknis']), })).min(3).max(6), }), prompt: `Analisis tujuan riset berikut dan pecah menjadi 4-6 vektor pencarian teknis yang spesifik: "${promptPengguna}"`, }); return object; } ``` #### 2. Ekstraksi Otonom & Evaluasi Klaim (Python & Crawl4AI) ```python from crawl4ai import AsyncWebCrawler, CrawlerRunConfig, CacheMode from pydantic import BaseModel, Field from pydantic_ai import Agent class TemuanRiset(BaseModel): klaim_teknis: str = Field(description="Klaim teknis spesifik yang diekstraksi") skor_keyakinan: float = Field(ge=0, le=1, description="Skor keyakinan bukti (0 sampai 1)") url_sumber: str = Field(description="URL sumber primer") sumber_pendukung: list[str] = Field(default_factory=list, description="Daftar URL sumber pembanding") # Invarian: Utamakan Gemini 4 Argon dengan pengalihan otomatis ke Gemini 3.8 Flash try: agen_analis = Agent( 'google-gla:gemini-4-argon', result_type=list[TemuanRiset], system_prompt="Ekstrak temuan teknis obyektif beserta skor keyakinan dan sumber referensi." ) except Exception: agen_analis = Agent( 'google-gla:gemini-3.8-flash', result_type=list[TemuanRiset], system_prompt="Ekstrak temuan teknis obyektif beserta skor keyakinan dan sumber referensi." ) async def eksekusi_riset_mendalam(kueri: str) -> list[TemuanRiset]: config = CrawlerRunConfig(cache_mode=CacheMode.BYPASS) async with AsyncWebCrawler() as crawler: halaman = await crawler.arun(url=f"https://search-engine.internal/q={kueri}", config=config) hasil = await agen_analis.run(halaman.markdown) return hasil.data ``` #### 3. Protokol Triangulasi Fakta & Skor Keyakinan 1. **Tier 1 (Otoritas Tertinggi):** Dokumentasi resmi, repositori kode sumber terbuka, spesifikasi RFC, dan laporan audit formal. 2. **Tier 2 (Dapat Diandalkan):** Blog teknik produksi dari tim rekayasa industri (Netflix, Cloudflare, Uber, Stripe). 3. **Tier 3 (Perlu Verifikasi Lanjutan):** Thread forum komunitas dan tutorial opini pribadi. 4. **Aturan Mutlak Triangulasi:** Setiap keputusan arsitektural krusial wajib didukung oleh sekurang-kurangnya 2 sumber Tier 1/2 independen. #### 4. Format Laporan Riset Terstruktur (Evidence Dossier) Setiap ringkasan intelijen riset wajib disusun dalam format markdown berikut: ```markdown # [Topik Riset] — Laporan Riset Mendalam & Graf Bukti ## Ringkasan Eksekutif - Sintesis ringkas 3-5 poin keputusan utama. ## Matriks Bukti Teknis | Klaim Teknis | Status Validasi | Skor Keyakinan | Sumber Primer | Sumber Pendukung | |---|---|---|---|---| | Penjelasan Klaim | Terverifikasi / Dibantah | 95% | [Sumber A](url) | [Sumber B](url) | ## Analisis Komparatif & Risiko Kunci - Trade-off latensi, batas memori, konsumsi biaya, atau kurva migrasi. ## Keputusan Arsitektur yang Direkomendasikan - Arahan preskriptif untuk tim pengembang dengan justifikasi berbasis bukti. ``` ### Matriks Eksekusi Berdaulat, Efisiensi Token & Invarian | Dimensi | Mandat Berdaulat & Kontrak Deterministik | | :--- | :--- | | **Kaskade Model Frontier** | Medium / High (`Gemini 4 Argon`, `GPT-5.6 Sol Medium`, `Claude Sonnet 5.5 High`) | | **Invarian Fallback Ketersediaan** | `Gemini 4 Argon/Pro` -> `Gemini 3.8 Flash`; `Claude Opus 5.5` -> `Claude Opus 4.6` (Bebas gagal saat model belum tersedia/kuota penuh) | | **Protokol Hemat Token & KV-Cache** | Kunci instruksi & skema statis di prefix awal (`kv-cache-prefix-optimizer`); kirim potongan `CONTEXT_MAP.md` (<250 token/panggilan) saat Fan-Out | | **Eksekusi SaaT CLI & MCP** | CLI: `vibes skill exec deep-research-analyst ` / MCP: `vibes_skill_dispatch`, `vibes_eval_sql`, `vibes_verify_invariants`, `vibes_verify_gate` | | **Invarian NFR & Anti-Slop** | Latensi Query P99 < 15ms, cakupan Row Level Security (RLS) 100% pada tabel multi-tenant, indeks B-Tree eksplisit pada seluruh Foreign Key; kode 100% tuntas tanpa placeholder diverifikasi melalui `node scripts/check-anti-slop.js --strict` |