Saltar al contenido principal

Comandos de Barra

Los comandos de barra son atajos que se pueden activar escribiendo '/' y seleccionando del menú desplegable. Por ejemplo, el comando de barra incorporado '/edit' te permite transmitir ediciones directamente a tu editor.

slash-commands

Comandos de Barra Incorporados

Para usar cualquiera de los comandos de barra incorporados, abre ~/.continue/config.json y añádelo a la lista slashCommands.

/edit

Selecciona código con ctrl/cmd + L (VS Code) , y luego escribe "/edit", seguido de las instrucciones para la edición. Continue transmitirá los cambios en un editor de diferencias lado a lado.

{
"name": "edit",
"description": "Editar el código resaltado"
}

/comment

Comment funciona igual que /edit, excepto que solicitará automáticamente al LLM que comente el código.

{
"name": "comment",
"description": "Escribir comentarios para el código resaltado"
}

/share

Escribe "/share" para generar una transcripción en markdown compartible de tu historial de chat actual.

{
"name": "share",
"description": "Exportar la sesión de chat actual a markdown",
"params": { "outputDir": "~/.continue/session-transcripts" }
}

Usa el parámetro outputDir para especificar dónde quieres que se guarde el archivo markdown.

/cmd

Genera un comando de shell a partir de lenguaje natural y (solo en VS Code) pégalo automáticamente en el terminal.

{
"name": "cmd",
"description": "Generar un comando de shell"
}

/commit

Muestra al LLM tu diferencia de git actual y pídele que genere un mensaje de commit.

{
"name": "commit",
"description": "Generar un mensaje de commit para los cambios actuales"
}

/http

Escribe un comando de barra personalizado en tu propio endpoint HTTP. Configura 'url' en el objeto params para el endpoint que hayas configurado. El endpoint debe devolver una secuencia de actualizaciones de cadenas, que se transmitirán a la barra lateral de Continue. Consulta nuestro ejemplo básico de FastAPI como referencia.

{
"name": "http",
"description": "Hace algo personalizado",
"params": { "url": "<mi endpoint de servidor>" }
}

/issue

Describe el problema que te gustaría generar, y Continue lo convertirá en un título y cuerpo bien formateados, luego te dará un enlace al borrador para que lo puedas enviar. Asegúrate de establecer la URL del repositorio para el que deseas generar problemas.

{
"name": "issue",
"description": "Generar un enlace a un borrador de problema de GitHub",
"params": { "repositoryUrl": "https://github.com/continuedev/continue" }
}

/so

El comando de barra StackOverflow extraerá automáticamente resultados de StackOverflow para responder a tu pregunta, citando enlaces junto con su respuesta.

{
"name": "so",
"description": "Referenciar StackOverflow para responder la pregunta"
}

Comandos de Barra Personalizados

Hay dos formas de agregar comandos de barra personalizados:

  1. Con solicitudes en lenguaje natural: esto es más simple y solo requiere escribir una cadena de texto o una plantilla de cadena.
  2. Con una función personalizada: esto te da acceso completo al SDK de Continue y te permite escribir código TypeScript arbitrario.

"Comandos Personalizados" (Usar Lenguaje Natural)

Puedes agregar comandos de barra personalizados agregándolos a la propiedad customCommands en config.json.

  • name: el nombre del comando, que se invocará con /name
  • description: una breve descripción del comando, que aparecerá en el menú desplegable
  • prompt: una solicitud con plantilla para enviar al LLM

Los comandos personalizados son excelentes cuando reutilizas frecuentemente una solicitud. Por ejemplo, si has creado una excelente solicitud y frecuentemente pides al LLM que verifique errores en tu código, podrías agregar un comando como este:

~/.continue/config.json
customCommands=[{
"name": "check",
"description": "Verificar errores en mi código",
"prompt": "{{{ input }}}\n\nPor favor, lee el código resaltado y verifica si hay errores. Deberías buscar lo siguiente, y ser extremadamente vigilante:\n- Errores de sintaxis\n- Errores lógicos\n- Vulnerabilidades de seguridad\n- Problemas de rendimiento\n- Cualquier otra cosa que parezca incorrecta\n\nUna vez que encuentres un error, explícalo lo más claramente posible, pero sin usar palabras adicionales. Por ejemplo, en lugar de decir 'Creo que hay un error de sintaxis en la línea 5', deberías decir 'Error de sintaxis en la línea 5'. Da tu respuesta como un punto por cada error encontrado."
}]

Plantillas

La propiedad prompt admite plantillas con sintaxis de Handlebars. Puedes usar las siguientes variables:

  • input (utilizado en el ejemplo anterior): cualquier entrada adicional ingresada con el comando de barra. Por ejemplo, si escribes /test solo escribe una prueba, input será solo escribe una prueba. Esto también incluirá bloques de código resaltados.
  • Nombres de archivo: Puedes referenciar cualquier archivo proporcionando una ruta absoluta o una ruta relativa al directorio de trabajo actual.

Comandos de Barra Personalizados

Si deseas ir un paso más allá que escribir comandos personalizados con lenguaje natural, puedes escribir una función personalizada que devuelva la respuesta. Esto requiere usar config.ts en lugar de config.json.

Para hacerlo, agrega un nuevo objeto SlashCommand a la lista slashCommands. Este objeto contiene "name", el nombre que escribirás para invocar el comando de barra, "description", la descripción que se ve en el menú desplegable, y "run". La función run es cualquier generador asincrónico que debe generar cadenas como quieres que se transmitan a la interfaz de usuario. Como argumento de la función, tienes acceso a un objeto ContinueSDK con utilidades como acceso a cierta información/acciones dentro del IDE, el modelo de lenguaje actual y algunas otras utilidades. Por ejemplo, aquí hay un comando de barra que genera un mensaje de commit:

~/.continue/config.ts
export function modifyConfig(config: Config): Config {
config.slashCommands?.push({
name: "commit",
description: "Escribir un mensaje de commit",
run: async function* (sdk) {
const diff = await sdk.ide.getDiff();
for await (const message of sdk.llm.streamComplete(
`${diff}\n\nEscribe un mensaje de commit para los cambios anteriores. Usa no más de 20 tokens para dar una breve descripción en modo imperativo (por ejemplo, 'Añadir función' no 'Añadida función'):`,
{
maxTokens: 20,
}
)) {
yield message;
}
},
});
return config;
}