Initial implementation of the bot: - cmd/chat-bot: CLI entrypoint (serve, reindex, ask, version) - internal/agent: LLM provider client + agent runner with RAG injection - internal/config: YAML config loader (providers, RAG, persona, server) - internal/i18n: response-language detection (EN/ES) - internal/persona: persona system prompt assembly from YAML - internal/portfolio: heading-based chunker + SQLite FTS5 indexer - internal/server: chi router with /api/chat (SSE), /api/health, /api/info, /api/reindex, middleware (RequestID, Logging, CORS, RateLimit) - internal/streaming: SSE protocol helpers (start, chunk, sources, done, error) - web/: drop-in vanilla-JS chat widget (no build, no deps) + demo + README - bench/: reproducible driver benchmark (modernc vs mattn SQLite) - configs/portfolio-bot.yaml: llama.cpp default provider, SQLite RAG, canine persona - docs/architecture.md / .es.md: aligned with SQLite FTS5 + llama.cpp decisions - data/projects/README*.md: project data documentation - README.md / .es.md: updated for current implementation All tests pass (go test ./...). Bot is functional end-to-end with the configured LLM provider.
53 lines
No EOL
1.4 KiB
Markdown
53 lines
No EOL
1.4 KiB
Markdown
# Proyectos del Portfolio
|
|
|
|
> 🌐 **Idioma:** [English](README.md) | [Español](README.es.md)
|
|
|
|
|
|
Coloca aquí un archivo `.md` por cada proyecto que quieras que el bot pueda responder.
|
|
|
|
## Convención de nombres
|
|
|
|
- Un archivo por proyecto: `nombre-del-proyecto.md`
|
|
- Nombre en kebab-case (minúsculas con guiones)
|
|
- Ejemplo: `rony-tui.md`, `rony-llm-agent.md`, `portfolio-astro.md`
|
|
|
|
## Frontmatter (opcional pero recomendado)
|
|
|
|
```markdown
|
|
---
|
|
title: "Rony TUI"
|
|
date: 2026-06
|
|
status: "active" # active | archived | wip
|
|
tags: ["go", "ai", "cli"]
|
|
repo: "https://github.com/VictorVargas/rony-harness"
|
|
demo: "https://..." # opcional
|
|
---
|
|
|
|
# Rony TUI
|
|
|
|
AI agent harness para desarrollo de software...
|
|
```
|
|
|
|
## Cómo se procesan
|
|
|
|
1. El bot escanea este directorio al arrancar
|
|
2. Cada `.md` se divide en chunks de ~500 caracteres
|
|
3. Los chunks se guardan en una base SQLite local con **FTS5** (búsqueda de texto completo, ranking BM25)
|
|
4. Cuando alguien pregunta, se buscan los top-5 chunks más relevantes
|
|
5. Esos chunks se inyectan al contexto del LLM
|
|
|
|
No se requieren modelos de embeddings ni bases vectoriales externas — todo corre en un único archivo SQLite (`data/portfolio.db`).
|
|
|
|
## Re-indexar
|
|
|
|
Si modificas los `.md`, ejecuta:
|
|
|
|
```bash
|
|
./bin/chat-bot reindex
|
|
```
|
|
|
|
Esto reconstruye el índice SQLite FTS5 desde cero.
|
|
|
|
## Ejemplo de proyecto
|
|
|
|
Ver [`example-project.md`](./example-project.md) para una plantilla. |