Yar's DeepSeek Copilot
DeepSeek Platform

Decisiones técnicas

La extensión separa el estado de dominio, el transporte de DeepSeek, las capacidades de VS Code y el renderizado React para que las reglas de seguridad sean autoritativas en el host.

Límites entre capas

  • core contiene la conversación, el contexto y el dominio de herramientas independientes del proveedor, y no importa React ni clientes HTTP concretos.
  • deepseekApi contiene las peticiones, validación de respuestas, parsing SSE, reintentos acotados y orquestación de tool calls.
  • vscodeApi contiene secretos, workspace, almacenamiento, comandos, procesos de terminal, confirmaciones y comunicación host-webview.
  • ui contiene la webview React y solo cambia el estado autoritativo de una herramienta después de recibir mensajes del host.

Modelo cronológico de eventos

  • La presentación del asistente se persiste como eventos tipados de razonamiento, contenido y grupos de herramientas, no como marcadores de control dentro de texto.
  • El mismo contrato de timeline renderiza el stream en vivo y el historial restaurado, conservando el orden think -> tool -> think -> response.
  • Los deltas de texto se agrupan por frame de animación y se vacían antes de los grupos de herramientas, finalización, cancelación o persistencia.
  • Los IDs de mensajes, eventos, conversaciones y tool calls de respaldo usan crypto.randomUUID().

Herramientas y terminal

  • El estado de herramientas tiene un único ciclo nativo que termina en completed, rejected, cancelled o error; un rechazo no se codifica como error de ejecución.
  • Las llamadas se ejecutan secuencialmente para preservar el orden de escritura y las aprobaciones independientes; el orquestador bloquea duplicados con el mismo nombre y argumentos.
  • El terminal usa spawn, cancelación del árbol de procesos, resultados estructurados, salida acotada por principio y final, y detección de códigos de salida distintos de cero.
  • La autorización de rutas resuelve rutas reales y ancestros existentes para impedir escapes por symlinks o junctions. La conversación conserva el URI del workspace elegido en entornos multi-root.
  • Las escrituras confirmadas llevan guardas SHA-256 para que una edición falle si el contenido en disco cambia después de la previsualización.

API, contexto y persistencia

  • SSE admite comentarios, CRLF, campos data con o sin espacios, eventos multilínea, finalización del decoder, diagnósticos de JSON inválido y cancelación del reader.
  • Las peticiones a DeepSeek normalizan URLs, usan un timeout de 60 segundos por intento y un máximo de tres intentos para fallos transitorios, respetando Retry-After.
  • Los ajustes y el historial viven bajo ~/.yrs-dpsk-copilot/. El historial usa un archivo JSON validado por conversación y deriva la lista directamente de esos archivos.
  • El contexto tiene presupuestos agregados, detección de binarios, datos Git staged y unstaged, fuentes AGENTS.md acotadas y delimitadores explícitos de datos no confiables.