Skip to content

CH 04 · Conoce la Web UI

Extensión~3.890 palabrasTiempo~15 minRequisitoCH 03 ya en marchaNivelReproducible

Objetivo del capítulo

En el capítulo anterior instalaste dsh, rellenaste la Key, elegiste un workspace y ejecutaste tu primera tarea. Este capítulo hace una pausa para leer la interfaz: qué hace cada zona, qué interruptores se esconden en el panel de ajustes, qué deja hacer al Agent cada uno de los tres niveles de permiso y cómo leer la vista Trajectory. Cuando termines, descubrirás que la frase "cada ejecución es trazable" del CH 02 está ahí mismo, en la parte superior izquierda de la interfaz — a una pestaña de distancia.

Disposición de la interfaz: familiarízate

Esta es la captura de toda la interfaz que tomé tras ejecutar la primera tarea, con las zonas principales anotadas:

Disposición de la Web UI (prueba local, anotada)

Responsabilidades de cada zona:

ZonaQué haceNotas
IzquierdaLista de workspacesUn workspace por directorio de proyecto; elige el workspace aquí (abre la lista y elige uno, o "⊕ Nueva sesión" para crear); abajo está el botón de Ajustes
CentroÁrea de sesiónDonde envías mensajes, trabaja el Agent y se muestran los resultados; arriba están las pestañas Conversación / Trajectory
AbajoÁrea de entradaA la izquierda del botón Enviar está el anillo de ocupación de contexto; más a la izquierda están los selectores de Modelo y Permiso; debajo está la barra de estadísticas

Panel de ajustes: el engranaje abajo a la izquierda

El botón Ajustes está abajo a la izquierda de la interfaz. Al abrirlo, el lado izquierdo lista las categorías de funciones — Ajustes generales / Modelos / Plugins / Agent Presets:

Panel de ajustes: Ajustes generales (prueba local)

Primero, la página Ajustes generales: idioma, apariencia y comportamiento de la tecla Enter mientras está ocupado están todos aquí, más dos importantes — Permiso (el modo de permiso predeterminado para sesiones nuevas; el mío es Workspace Write) y Agent Preset (actualmente "Standard"). El Agent Preset aquí son los cuatro modos de ejecución (Standard / Code / Minimal / Creator) que cubrimos en CH 02 — lo que elijas aquí es "qué combination de plugins usarán por defecto las sesiones nuevas". Fíjate en la línea de abajo: "Takes effect for newly created sessions. Already-running sessions keep the preset they started with." — los valores predeterminados fijados en Ajustes generales solo se aplican a sesiones nuevas, una regla que te encontrarás una y otra vez.

Ahora mira Ajustes → Modelos: la API Key está rellena en la tarjeta de DeepSeek (si está rellena, se muestra como configurada), y abajo puedes añadir un Provider (usando un directorio integrado como Anthropic u OpenAI) y añadir un Provider personalizado (para tu propia pasarela o modelo local — rellena Provider ID, dirección API, protocolo, clave y al menos un modelo). Los cambios en el enrutamiento de modelos surten efecto inmediatamente; no hace falta reiniciar el servicio. La Key es de solo escritura: tras guardar, la página solo muestra un descriptor redactado, y el texto plano solo va a parar localmente a $DSH_HOME/.credentials.yaml — la misma ruta mencionada en CH 03.

Tres niveles de permiso: qué puede tocar en tu ordenador

Esto es lo que debes entender desde el principio sobre dsh. El sandbox de archivos oficial se define como tres modos:

Tres niveles de permiso = sandbox de archivos (ilustración)

Compáralo con el selector de permiso a la izquierda del cuadro de entrada en tu interfaz (en el panel que aparece tras elegir un workspace):

Tras elegir workspace: selector de modelo y permiso (prueba local)

Los tres niveles en palabras simples:

PermisoQué puede hacerCuándo usarlo
read-onlySolo lectura, no puede cambiar un solo byteAnálisis de solo lectura, code review, Q&A puro
workspace-write (predeterminado)Escribible en el workspace + área temporal del sistema; fuera del workspace, muestra un diálogo y pregunta primeroTrabajo diario, la gran mayoría de los casos
danger-full-accessLectura/escritura total en todas partes, sin fronteraPara tareas de mantenimiento del sistema que realmente necesitan cambios globales; el interruptor requerirá una segunda confirmación

Una nota más sobre la semántica oficial: el límite de escritura para workspace-write es "la raíz del workspace + el área temporal prometida por el backend"; read-only rechaza las escrituras sin más; danger-full-access salta el aislamiento por completo. Date cuenta de que los permisos solo rigen los efectos sobre el sistema de archivos — la red y la visibilidad de procesos no entran en esta definición.

Para trabajo diario, quédate con el workspace-write predeterminado, familiarízate primero y solo considera el tercer nivel cuando realmente necesites actuar de forma global.

Cambiar viene en dos sabores, no los confundas:

  • Solo para esta sesión, temporalmente: escribe /permission en el cuadro de entrada y elige un nivel. Solo afecta a la sesión actual.
  • Cambiar el valor predeterminado (para que las sesiones nuevas lo usen): ve a Ajustes → General → Permiso. Solo afecta a las sesiones creadas después; las sesiones en curso no se tocan.

Modelo y nivel de razonamiento

En el selector de modelo, ves los modelos configurados (una vez rellenaste la Key, los de DeepSeek aparecen automáticamente). Hay una regla oficial explícita: el modelo elegido en el selector de modelo es el predeterminado para sesiones nuevas; las sesiones que ya han enviado peticiones mantendrán el modelo que estaban usando cuando empezaron, y no cambiarán con el valor predeterminado (la sesión registra su propio modelo; cambiar el valor predeterminado no reescribirá silenciosamente peticiones pasadas).

Así que si quieres que distintas sesiones usen distintos modelos (trabajo diario ligero en flash, tareas duras en pro o más potente), simplemente abre sesiones nuevas — cada una es independiente.

El nivel de razonamiento es otra perilla; el modelo oficial de DeepSeek tiene cuatro niveles:

NivelCaracterística
offDeshabilita el pensamiento, más rápido y más barato
lowPensamiento ligero, suficiente para Q&A simple
high (predeterminado)Razonamiento profundo, más preciso en tareas complejas, algo más lento y más caro
maxMáxima intensidad, solo para el trabajo más difícil

Para trabajo diario, mantén high; si te parece lento, bájalo. Lo más profundo sobre "qué afecta realmente cada nivel y cómo cambiarlo" se cubre en CH 06. Los cambios de modelo también surten efecto en la siguiente petición, no hace falta reiniciar.

Trajectory: el "trazable" del CH 02 se esconde aquí

¿Recuerdas la frase "cada ejecución es trazable" del CH 02? Mira arriba a la izquierda de la interfaz — Conversación / Trajectory están una al lado de la otra. Pulsa Trajectory y el registro de ejecución completo de esta ronda se desplegará ante ti. Mira esta captura real:

Vista Trajectory: replay paso a paso de una tarea (prueba local)

Cómo leer esto:

  • En el centro hay una línea de tiempo; ASSISTANT (think/speak) y TOOL (llamadas a herramientas) se alternan, y de arriba abajo está el orden real en que trabajó el Agent.
  • Para cada fila TOOL: el nombre de la herramienta está a la izquierda (pwsh / read / web_search), y a la derecha están los parámetros reales enviados y los resultados clave devueltos.
  • Pulsa cualquier fila TOOL, y el panel derecho expande los detalles de ese paso: Summary / Payload / Result / Schema / Timing, además de Status (Completed) y Hierarchy.
  • Arriba hay un resumen de Duration / Turns / Calls, más un cuadro de búsqueda para encontrar pasos por palabra clave.

En mi tarea de esta vez puedes ver al Agent tropezando de verdad: primero leyó la configuración, leyó archivos, y al intentar usar pwsh para obtener directamente la documentación oficial, la conexión SSL falló; dijo "Outbound HTTPS from pwsh is blocked", luego cambió a web_search para seguir buscando — todos esos tropiezos quedan registrados en la Trajectory. Eso es "trazable".

La barra de estadísticas de abajo es la otra cara de lo mismo:

MétricaSignificado
Turns · StepsCuántos pasos dio el Agent en esta ronda
LLM time / Tool call timeTiempo gastado "pensando" y "haciendo"
First-token mean / tok/sVelocidad de salida
Cache hitLa proporción de tokens de entrada que golpearon la caché de contexto (ver abajo)
Input / Output tokTokens enviados al modelo y producidos por el modelo en esta ronda

Caché de contexto: por qué la tasa de acierto es tan alta

El "cache hit" de la barra de estadísticas no es una función de dsh; detrás está la caché de contexto en disco de la API de DeepSeek. El enfoque oficial: el contenido que se espera reutilizar se guarda en un array de discos distribuido; cuando la siguiente entrada contiene una porción repetida, se lee desde la caché en lugar de recomputar — reduciendo latencia y costo.

La facturación de los tokens de entrada que golpean la caché es mucho más barata que la de los que fallan. Toma deepseek-v4-flash como ejemplo: al precio oficial actual, la entrada con acierto de caché cuesta unos 0,1 yuanes por millón de tokens, mientras que la entrada sin acierto cuesta unos 1,5–3 yuanes por millón de tokens (dependiendo de horario valle/punta) — esa porción en caché de la entrada cuesta solo una fracción del costo del fallo.

¿Por qué la tasa de acierto es tan alta en una sola sesión? Porque cada entrada de paso en la misma sesión incluye el prompt del sistema anterior, las definiciones de herramientas y el historial de conversación — un prefijo repetido estable. La primera llamada no tiene nada en caché, pero desde la segunda en adelante, el segmento anterior queda en caché. En mi tarea tuve 160K tokens de entrada con una alta tasa de acierto, así que solo una pequeña porción se facturó al precio completo de fallo. Por eso también conviene hacer las tareas de Agent en la misma sesión — cuanto más larga la sesión, más ahorras luego.

Anillo de ocupación de contexto

El indicador circular a la izquierda del botón Enviar en el área de entrada muestra la proporción de ocupación de la ventana de contexto de la sesión actual. Mira la prueba real:

Anillo de ocupación de contexto: parte inferior del área de entrada (prueba local)

El anillo en la imagen muestra "2% context used" — la sesión acaba de empezar, apenas hay uso. La ventana de contexto es finita; a medida que el Agent ejecuta tareas largas, el historial de conversación y los resultados de herramientas se acumulan, y el anillo te permite ver de un vistazo cuánto espacio queda. Cuando esté casi lleno, tienes tres opciones: empezar una sesión nueva, pedirle al Agent que cierre con un resumen, o simplemente escribir /compact en el cuadro de entrada — condensará la información clave de la conversación actual en un resumen más ajustado, y la IA seguirá trabajando con ese resumen. Es como poner a la sesión a dieta, sin necesidad de empezar de cero.

Recorre la primera tarea de principio a fin

La tarea de ejemplo en el README oficial es esta:

Summarize this repository and identify its main packages.

Que traducida al español es la que ejecutaste en el capítulo anterior: resume el repositorio DeepSeek harness e identifica sus módulos principales. Así que ya ejecutaste el ejemplo oficial.

Al ejecutarla, fíjate cómo la interfaz "abre" el proceso: el Agent primero inyecta contexto, planifica, luego llama a herramientas (lee archivos, ejecuta comandos, busca cosas), cada paso visible; para acciones que necesitan aprobación, muestra un diálogo. Tras terminar, cambia a la pestaña Trajectory y reprodúcelo, luego cruza los números con la barra de estadísticas — la primera tarea suele tener una entrada enorme (la mía fue de 160K tokens), pero con una alta tasa de acierto de caché, el costo real es muy bajo.

Lo que aprendiste en este capítulo

Apruebas si puedes completar los siguientes puntos:

  • [ ] Describe qué hace cada zona de la Web UI (izquierda / centro / abajo) y dónde elegir un workspace
  • [ ] Conoces las categorías del panel de ajustes (Ajustes generales / Modelos / Plugins / Agent Presets), y que "los valores predeterminados solo se aplican a sesiones nuevas"
  • [ ] Explicas la diferencia entre los tres niveles de permiso read-only / workspace-write / danger-full-access, y por qué usar el segundo para trabajo diario
  • [ ] Sabes que /permission cambia temporalmente el permiso de la sesión actual, mientras que Ajustes → General → Permiso cambia el valor predeterminado
  • [ ] Sabes que la elección del selector de modelo es la predeterminada para sesiones nuevas; las sesiones que ya han ejecutado mantienen su modelo original
  • [ ] Lees la vista Trajectory: línea de tiempo ASSISTANT / TOOL + panel de detalle a la derecha + barra de estadísticas
  • [ ] Explicas qué es "cache hit" y por qué las sesiones largas tienen una alta tasa de acierto

Open Source · MIT · Community Driven