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.
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:
- Con solicitudes en lenguaje natural: esto es más simple y solo requiere escribir una cadena de texto o una plantilla de cadena.
- 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ú desplegableprompt
: 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:
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:
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;
}