Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
d325cfb
Config up
willy3087 Jul 21, 2025
8bad76f
produção
willy3087 Jul 21, 2025
ebcaf82
docs: add LinkedIn technical post about DeepResearch architecture
claude Dec 7, 2025
5e455a8
docs: add detailed Rust implementation deep dive
claude Dec 7, 2025
85e2f85
feat(rust): add complete Rust implementation of DeepResearch
claude Dec 7, 2025
6658e5b
Merge pull request #2 from nextlw/claude/linkedin-technical-post-01T6…
willy3087 Dec 8, 2025
efe6201
documentação finalizada
willy3087 Dec 8, 2025
4723b7e
testes criados
willy3087 Dec 8, 2025
1c79c0d
plan
willy3087 Dec 8, 2025
7b06493
criação de logs
willy3087 Dec 8, 2025
24de1b1
tui
willy3087 Dec 8, 2025
9ea2186
atualização
willy3087 Dec 8, 2025
edd8bc8
tui
willy3087 Dec 8, 2025
2c7af03
correção de corte de querie
willy3087 Dec 8, 2025
c16ab4a
token traker
willy3087 Dec 8, 2025
0cd66b1
atualização de importação
willy3087 Dec 8, 2025
0523986
yuiok
willy3087 Dec 8, 2025
e04d765
fix: bug time
willy3087 Dec 8, 2025
e7a9732
time destrichado
willy3087 Dec 8, 2025
1a4293c
alteração de mod
willy3087 Dec 8, 2025
c89da24
scroll
willy3087 Dec 8, 2025
6591745
implemnte expert
willy3087 Dec 8, 2025
5ffe814
code
willy3087 Dec 8, 2025
9a60a76
feat(personas): implementar sistema de metricas e observabilidade (Fa…
Leorlsa Dec 8, 2025
77b5b83
feat(personas): implementar PersonaRegistry para registro dinamico (F…
Leorlsa Dec 8, 2025
dbfbac5
feat(personas): implementar PersonaValidator para validação de contra…
Leorlsa Dec 8, 2025
7ee6395
fix: bug state and lenguage pt-br
willy3087 Dec 8, 2025
2ee9ac0
merge: trazer alterações da branch Deepthink-rs (fix: bug state e pt-br)
Leorlsa Dec 8, 2025
fc21fa9
correção de análise de erros, agentew em background
willy3087 Dec 8, 2025
1c01b64
fle_reader lendo HTML
willy3087 Dec 8, 2025
be0417b
realtime de uso de read
willy3087 Dec 8, 2025
8f1574b
configurar via env treads e modelo de segurança contra envenenamento
willy3087 Dec 8, 2025
539230c
atualização de ui
willy3087 Dec 8, 2025
cc393b8
config
willy3087 Dec 8, 2025
e1dd39c
prompt token
willy3087 Dec 8, 2025
32b2470
histórico
willy3087 Dec 8, 2025
a48a7d6
feat(agent): implementa sistema híbrido de interação usuário-agente
willy3087 Dec 8, 2025
59bb608
feat(sandbox): implementa sandbox multilinguagem JavaScript/Python
willy3087 Dec 9, 2025
3e95bc8
feat(tui): adiciona sistema de tabs, tela de config e follow-up
willy3087 Dec 9, 2025
319e1fc
readme
willy3087 Dec 9, 2025
705075d
feat: Add Paytour and Digisac integrations
cursoragent Dec 9, 2025
224c575
Merge remote-tracking branch 'origin/tools-rs' into feat/pessoa-2-per…
Leorlsa Dec 9, 2025
f3ef924
merge: integrar tools-rs preservando Fase 1 e 2.1
Leorlsa Dec 9, 2025
d5e9d8f
feat(search): implementar Fase 2 completa - observabilidade de busca
Leorlsa Dec 9, 2025
8ec7c79
feat(evaluation): implementar Fase 3 completa - observabilidade de av…
Leorlsa Dec 9, 2025
e3ad2ed
feat: sistema completo de observabilidade para DeepResearch AI
Leorlsa Dec 9, 2025
0656410
demonstração de resultados de benchs na plataforma em TUI
willy3087 Dec 9, 2025
b6930ab
Merge pull request #5 from nextlw/feat/pessoa-2-personas-busca-avaliacao
willy3087 Dec 9, 2025
1545d03
feat(tui): Adiciona sistema de resultados dinâmicos para benchmarks
willy3087 Dec 9, 2025
fe8051c
Merge pull request #6 from nextlw/Deepthink-rs
willy3087 Dec 9, 2025
a19c56a
Merge remote-tracking branch 'origin/main' into cursor/implement-mult…
willy3087 Dec 9, 2025
e777d49
Merge pull request #4 from nextlw/cursor/implement-multi-agent-tools-…
willy3087 Dec 9, 2025
f60d35c
correção de erros do finalizer
willy3087 Dec 9, 2025
691bebe
Tools novas, paytour e reducer e digisac
willy3087 Dec 9, 2025
b504522
Readme
willy3087 Dec 9, 2025
ed55247
feat: adiciona feature 'all' para habilitar todas as features opcionais
willy3087 Dec 9, 2025
af58f80
docs: adiciona exemplo com feature tui na documentação
willy3087 Dec 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
472 changes: 472 additions & 0 deletions .cursor/plans/personas_busca_avaliacao_944fc65e.plan.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
---
name: plano-testes-distribuidos-deepresearch
overview: Este plano divide a responsabilidade de testes do projeto DeepResearch AI entre 3 pessoas, garantindo isolamento de contexto e execução independente. O foco é separado em Lógica do Agente, Domínio/Personas e Performance/Sistema.
todos:
- id: setup-person-1
content: Configurar ambiente local para Pessoa 1 (Agente) e rodar testes unitários iniciais
status: pending
- id: setup-person-2
content: Configurar ambiente local para Pessoa 2 (Personas/Busca) e rodar benchmarks de personas
status: pending
- id: setup-person-3
content: Configurar ambiente local para Pessoa 3 (Performance) e rodar bench E2E para baseline
status: pending
---

# Plano de Testes Distribuídos: DeepResearch AI (Rust)

Este plano divide o trabalho de QA e testes em três frentes independentes. Cada pessoa pode executar seus testes sem bloquear as outras, utilizando comandos específicos do Cargo.

## 👥 Divisão de Responsabilidades

### 👤 Pessoa 1: Lógica do Agente e Estado (Core)

**Foco:** Garantir que o "cérebro" do agente, suas permissões e gerenciamento de estado funcionem corretamente, independente da personalidade ou velocidade.

- **Arquivos Principais:**
- `src/agent/*` (actions, context, permissions, state)
- `src/llm.rs` (Integração base com LLM)
- **Comandos de Teste (Isolados):**
- Testes Unitários: `cargo test agent::`
- Benchmarks: `cargo bench --bench agent_bench`

### 👤 Pessoa 2: Personas, Busca e Avaliação (Domínio)

**Foco:** Garantir que as diferentes personalidades (Research, Academic, etc.) se comportem como esperado, que a busca retorne resultados relevantes e que o sistema de avaliação julgue corretamente as respostas.

- **Arquivos Principais:**
- `src/personas/*` (all_personas, orchestrator, traits)
- `src/search.rs` (Lógica de busca)
- `src/evaluation/*` (pipeline de avaliação)
- **Comandos de Teste (Isolados):**
- Testes Unitários Personas: `cargo test personas::`
- Testes Unitários Busca: `cargo test search::`
- Testes Unitários Avaliação: `cargo test evaluation::`
- Benchmarks:
- `cargo bench --bench personas_bench`
- `cargo bench --bench search_bench`
- `cargo bench --bench evaluation_bench`

### 👤 Pessoa 3: Performance, SIMD e End-to-End (Sistema)

**Foco:** Garantir que o sistema seja rápido (otimizações de baixo nível/SIMD), que a CLI funcione e que o fluxo completo (E2E) não quebre sob carga.

- **Arquivos Principais:**
- `src/performance/*` (simd.rs)
- `src/main.rs` (CLI e entrypoint)
- `src/lib.rs` (Integração geral)
- **Comandos de Teste (Isolados):**
- Testes de Performance: `cargo test performance::`
- Benchmark SIMD: `cargo bench --bench simd_bench`
- Benchmark E2E (Fluxo Completo): `cargo bench --bench e2e_bench`
- Verificação de Build Final: `cargo build --release`

## 🚀 Fluxo de Trabalho Sugerido

1. Cada pessoa deve criar uma branch separada (ex: `test/agent-fix`, `test/persona-update`).
2. Utilizar os comandos de teste isolados listados acima para não esperar a suíte inteira rodar.
3. Reportar falhas categorizadas por área (Agente vs. Domínio vs. Performance).
133 changes: 133 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# DEEP RESEARCH - CONFIGURAÇÃO
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#
# Copie este arquivo para .env e preencha com suas chaves de API.
# Este arquivo NÃO deve ser commitado no git.
#
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

# ──────────────────────────────────────────────────────────────────────────────
# CHAVES DE API (OBRIGATÓRIAS)
# ──────────────────────────────────────────────────────────────────────────────

# Chave da API OpenAI (obrigatória para LLM)
# Obtenha em: https://platform.openai.com/api-keys
OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxx

# Chave da API Jina AI (obrigatória para busca e leitura)
# Obtenha em: https://jina.ai/
JINA_API_KEY=jina_xxxxxxxxxxxxx

# ──────────────────────────────────────────────────────────────────────────────
# CONFIGURAÇÃO DO LLM (Modelo de Linguagem)
# ──────────────────────────────────────────────────────────────────────────────

# Provider de LLM: openai, anthropic, local (padrão: openai)
LLM_PROVIDER=openai

# Modelo principal para geração de texto
# Exemplos OpenAI: gpt-4.1-mini, gpt-4o, gpt-4-turbo, gpt-3.5-turbo
# Exemplos Anthropic: claude-3-opus, claude-3-sonnet
# Padrão: gpt-4.1-mini
LLM_MODEL=gpt-4.1-mini

# URL base customizada da API (opcional, para providers locais ou proxies)
# Exemplos:
# - Ollama: http://localhost:11434/api
# - OpenAI proxy: https://proxy.example.com/v1
# LLM_API_BASE_URL=http://localhost:11434/api

# Temperatura padrão para geração (0.0 a 2.0)
# Menor = mais determinístico, Maior = mais criativo
# Padrão: 0.7
LLM_TEMPERATURE=0.7

# ──────────────────────────────────────────────────────────────────────────────
# CONFIGURAÇÃO DE EMBEDDINGS
# ──────────────────────────────────────────────────────────────────────────────
#
# IMPORTANTE: Você pode usar um provider de LLM (ex: OpenAI) para texto
# e outro provider (ex: Jina) para embeddings!
#

# Provider de embeddings: openai, jina (padrão: openai)
# Use "jina" para usar Jina Embeddings junto com LLM da OpenAI
EMBEDDING_PROVIDER=jina

# Modelo OpenAI para embeddings (usado quando EMBEDDING_PROVIDER=openai)
# Opções: text-embedding-3-small, text-embedding-3-large, text-embedding-ada-002
# Padrão: text-embedding-3-small
LLM_EMBEDDING_MODEL=text-embedding-3-small

# Modelo Jina para embeddings (usado quando EMBEDDING_PROVIDER=jina)
# Opções: jina-embeddings-v4, jina-embeddings-v3, jina-embeddings-v2-base-en
# Padrão: jina-embeddings-v4
JINA_EMBEDDING_MODEL=jina-embeddings-v4

# ──────────────────────────────────────────────────────────────────────────────
# CONFIGURAÇÃO DO AGENTE
# ──────────────────────────────────────────────────────────────────────────────

# Número mínimo de steps antes de permitir resposta (ANSWER)
# 0 = permite resposta imediata, 1 = força pelo menos uma pesquisa
# Padrão: 1 (recomendado)
AGENT_MIN_STEPS=1

# Permite resposta direta sem pesquisa para perguntas triviais
# true = permite, false = sempre pesquisa primeiro
# Padrão: false (recomendado para qualidade)
AGENT_ALLOW_DIRECT_ANSWER=false

# Budget máximo de tokens por pesquisa
# Padrão: 1000000 (1 milhão)
AGENT_TOKEN_BUDGET=1000000

# Máximo de URLs para ler por step
# Padrão: 10
AGENT_MAX_URLS_PER_STEP=10

# Máximo de queries de busca por step
# Padrão: 5
AGENT_MAX_QUERIES_PER_STEP=5

# Máximo de falhas consecutivas antes de forçar resposta
# Padrão: 3
AGENT_MAX_FAILURES=3

# ──────────────────────────────────────────────────────────────────────────────
# CONFIGURAÇÃO DO RUNTIME TOKIO
# ──────────────────────────────────────────────────────────────────────────────

# Número fixo de threads do runtime (opcional)
# Se não definido, usa cálculo dinâmico: min(cpu_cores, TOKIO_MAX_THREADS)
# TOKIO_THREADS=4

# Máximo de threads para cálculo dinâmico
# Padrão: 16
TOKIO_MAX_THREADS=16

# Máximo de blocking threads
# Padrão: 512
TOKIO_MAX_BLOCKING=512

# ──────────────────────────────────────────────────────────────────────────────
# CONFIGURAÇÃO DO WEBREADER
# ──────────────────────────────────────────────────────────────────────────────

# Preferência de método para leitura de URLs
# Opções:
# - jina: Apenas Jina Reader API (mais confiável, depende de API externa)
# - rust: Apenas Rust local (mais rápido, pode falhar em sites complexos)
# - compare: Rust primeiro, Jina como fallback (recomendado)
# Padrão: compare
WEBREADER=compare

# ──────────────────────────────────────────────────────────────────────────────
# CONFIGURAÇÃO DE IDIOMA
# ──────────────────────────────────────────────────────────────────────────────

# Idioma das respostas geradas
# Opções: pt-br, en, es, fr, de, it, ja, zh, ko
# Padrão: pt-br
RESPONSE_LANGUAGE=pt-br
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,17 @@ dist

# Gatsby files
.cache/
rust-implementation/target
rust-implementation/sessions
rust-implementation/logs
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist


# vuepress v2.x temp and cache directory
.temp
.cache
Expand Down
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ COPY --from=builder /app/config.json ./
COPY --from=builder /app/dist ./dist

# Set environment variables (Recommended to set at runtime, avoid hardcoding)
ENV NODE_ENV=production
ENV GEMINI_API_KEY=${GEMINI_API_KEY}
ENV OPENAI_API_KEY=${OPENAI_API_KEY}
ENV JINA_API_KEY=${JINA_API_KEY}
Expand Down
Loading