|
| 1 | +# Basic Chat — Ejemplo mínimo funcional de acli |
| 2 | + |
| 3 | +> [English](README.md) | [中文](README_zh.md) | [日本語](README_ja.md) | **Español** | [한국어](README_ko.md) |
| 4 | +
|
| 5 | +Muestra cómo iniciar un agente de chat de propósito general con capacidad de búsqueda web usando una configuración mínima. **Toda la inteligencia reside en la configuración de `.acli/` — no hay código de arranque en Python** — descarga y ejecuta `acli` directamente. |
| 6 | + |
| 7 | +## Estructura de directorios |
| 8 | + |
| 9 | +``` |
| 10 | +basic-chat/ |
| 11 | +└── .acli/ |
| 12 | + ├── config.toml # Provider/modelo/user_name por defecto |
| 13 | + ├── custom-extensions.toml # Declaración del provider tongyi + plantillas de comentarios de capability/skill/shell_tool |
| 14 | + ├── hooks.toml # Plantillas de comentarios de hooks de eventos (before/after_tool_call, on_error, etc.) |
| 15 | + ├── system-prompt.md # Persona del agente y reglas de comportamiento |
| 16 | + └── skills/ |
| 17 | + ├── research-topic.md # Busca un tema en la web y genera un resumen (llama a web_search) |
| 18 | + ├── explain-code.md # Explica la lógica del código |
| 19 | + ├── translate.md # Traducción chino-inglés |
| 20 | + └── write-poem.md # Escribe una cuarteta de siete caracteres (demuestra una plantilla de prompt pura) |
| 21 | +``` |
| 22 | + |
| 23 | +## Inicio rápido |
| 24 | + |
| 25 | +```bash |
| 26 | +pip install acli |
| 27 | +export DASHSCOPE_API_KEY="sk-xxx" |
| 28 | + |
| 29 | +# Fusiona el ejemplo en ./.acli/ (los archivos con el mismo nombre se respaldan automáticamente en .acli/backup/; deshazlo con example restore) |
| 30 | +acli example download basic-chat |
| 31 | + |
| 32 | +# Edita .acli/custom-extensions.toml para añadir los providers que necesites |
| 33 | +# Edita .acli/system-prompt.md para definir la persona del agente |
| 34 | +# Añade tus propias plantillas de skill en .acli/skills/ |
| 35 | + |
| 36 | +# Inicia (no hace falta cd; la configuración ya está en el directorio actual) |
| 37 | +acli |
| 38 | +acli --tui |
| 39 | +acli -c "hello" |
| 40 | +``` |
| 41 | + |
| 42 | +> ¿Quieres usarlo en un directorio nuevo? `mkdir my-agent && cd my-agent && acli example download basic-chat`, |
| 43 | +> o usa `acli example download basic-chat --target my-agent`. |
| 44 | +
|
| 45 | +## La configuración como programa |
| 46 | + |
| 47 | +### custom-extensions.toml — Declaraciones de providers |
| 48 | + |
| 49 | +Declara qué providers de LLM puede usar acli. Una configuración mínima solo necesita un bloque `[[providers]]`: |
| 50 | + |
| 51 | +```toml |
| 52 | +[[providers]] |
| 53 | +name = "tongyi" |
| 54 | +base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1" |
| 55 | +api_key_env = "DASHSCOPE_API_KEY" # ← solo guarda el nombre de la variable de entorno; el shell provee el sk-xxx |
| 56 | +default_model = "qwen3.8-max" |
| 57 | +models = ["qwen3.8-max", "qwen3.7-max", "qwen3.7-plus", "qwen-turbo", "qwen-vl-max"] |
| 58 | +vision_models = ["qwen-vl-max"] # ← le indica a acli que estos modelos aceptan entrada de imagen |
| 59 | +protocol = "openai" # ← openai / anthropic / dashscope |
| 60 | +``` |
| 61 | + |
| 62 | +¿Quieres Claude / GPT / un Ollama local? Solo descomenta el bloque `[[providers]]` correspondiente en el toml. |
| 63 | + |
| 64 | +**Tres formas de proporcionar una API key** (en orden decreciente de recomendación): |
| 65 | + |
| 66 | +1. `api_key_env = "FOO_API_KEY"` — `export FOO_API_KEY=sk-xxx` en el shell; el toml se puede subir a git de forma segura |
| 67 | +2. Asistente interactivo `/provider` — escribe `api_key = "ENC:..."` (cifrado vinculado a la máquina) |
| 68 | +3. Texto plano `api_key = "sk-xxx"` — rechazado por el cargador; solo es un ejemplo ilustrativo |
| 69 | + |
| 70 | +### system-prompt.md — Persona del agente |
| 71 | + |
| 72 | +Define quién "es" el agente. acli carga automáticamente `.acli/system-prompt.md` al iniciar (la configuración del workspace tiene prioridad sobre `~/.acli/system-prompt.md`). |
| 73 | + |
| 74 | +### skills/*.md — Plantillas de prompt |
| 75 | + |
| 76 | +Cada archivo `.md` es un prompt reutilizable con frontmatter YAML: |
| 77 | + |
| 78 | +```yaml |
| 79 | +--- |
| 80 | +name: research-topic |
| 81 | +description: Web-search a topic and produce a briefing with source URLs |
| 82 | +arguments: [topic] |
| 83 | +--- |
| 84 | + |
| 85 | +Use the web_search tool to research "{topic}": |
| 86 | +... |
| 87 | +``` |
| 88 | + |
| 89 | +Cómo invocarlo: |
| 90 | +- `/skill research-topic quantum computing` — invocación explícita |
| 91 | +- Lenguaje natural: "help me research the latest progress in quantum computing" — el LLM decide si usarlo |
| 92 | + |
| 93 | +`research-topic` muestra cómo usar un prompt para guiar al LLM a llamar a la herramienta integrada `web_search` para recopilar información en línea. |
| 94 | + |
| 95 | +### config.toml — Valores por defecto |
| 96 | + |
| 97 | +```toml |
| 98 | +user_name = "dashscope" |
| 99 | +provider = "tongyi" |
| 100 | +model = "qwen3.8-max" |
| 101 | +memory_user_id = "acli-basic" |
| 102 | +``` |
| 103 | + |
| 104 | +## Próximos pasos |
| 105 | + |
| 106 | +- **Añadir más providers**: añade bloques `[[providers]]` en `custom-extensions.toml` |
| 107 | +- **Añadir herramientas HTTP**: añade bloques `[[capabilities]]` + `[[capabilities.tools]]` (por ejemplo, generación de imágenes, llamar a un motor de workflows remoto) |
| 108 | +- **Añadir capacidad de visión**: añade una herramienta de capability con `type = "vision"` para que el agente de texto pueda llamar a un LLM de visión bajo demanda |
| 109 | +- **Añadir herramientas de shell**: añade bloques `[[shell_tools]]` para envolver comandos locales comunes |
| 110 | +- **Añadir hooks**: configura hooks pre/post de llamada a herramientas en `.acli/hooks.toml` (por ejemplo, `py_compile` automático tras escribir un archivo `.py`, confirmación antes de `pip install`, bloquear el borrado de archivos). Consulta la plantilla en `.acli/hooks.toml`, que cubre los 5 eventos (`before_tool_call` / `after_tool_call` / `on_error` / `on_message` / `on_response`) × 6 acciones (run/block/confirm/warn/alert/log). |
| 111 | +- **Añadir conocimiento persistente**: coloca en `.acli/references/*.md` los documentos que deban aparecer **siempre** en el system prompt (por ejemplo, un índice de API) |
| 112 | +- **Cambiar la persona**: edita `system-prompt.md` — por ejemplo, conviértelo en un "revisor de código", "analista de datos" o "agente de atención al cliente" |
| 113 | + |
| 114 | +Consulta el `README.md` de la raíz del proyecto para la documentación completa de funcionalidades. |
0 commit comments