DeepSeek Harness
Cómo crear un plugin de DeepSeek Harness con Cordis
Crea un módulo TypeScript, cárgalo con un parche y aplica dependencias y limpieza según el tutorial oficial.

Qué aprenderás
- A minimal plugin exports apply(ctx) and can be inserted through cordis.yml.
- Absolute module paths make the patch loader resolution explicit.
- Use inject for services and ctx.effect for explicit cleanup.
Antes de empezar
- Basic HTTP and API knowledge
Leave with a concrete implementation checklist and a testable starting point.
Conclusiones clave
- Un plugin mínimo exporta apply(ctx) y se inserta mediante cordis.yml.
- La ruta absoluta hace reproducible la resolución.
- inject declara servicios y effect limpia recursos.
Contrato mínimo
El tutorial define un plugin como un módulo TypeScript que exporta apply(ctx). Cordis entrega el Context para registrar capacidades.
La forma función cubre muchos casos; usa objeto o clase cuando necesites una dependencia declarada o un servicio.
Carga mediante parche
Inserta la ruta absoluta del módulo en un overlay cordis.yml y lanza `pnpm dsh web --patch ...`. El tutorial espera un mensaje de carga.
La ruta absoluta hace explícita la resolución del Loader y no cambia el directorio del perfil.
Dependencias y limpieza
Declara tools o llm en inject para que Cordis espere esos servicios antes de apply.
ctx limpia registros al descargar; usa ctx.effect() para cerrar timers o conexiones externas.
Cómo elegir
| Criterio | Opción A | Opción B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
Pasos de implementación
- 1
Crea el módulo TypeScript.
- 2
Añade su ruta absoluta al parche.
- 3
Lanza con --patch y verifica el log.
- 4
Añade inject/effect solo cuando sea necesario.
Ejemplo para copiar
import type { Context } from '@deepseek-ai/cordis'
export const name = 'hello-plugin'
export function apply(ctx: Context) {
console.log('[hello-plugin] plugin loaded!')
}Preguntas frecuentes
¿Cuándo usar una clase?
Cuando el plugin ofrece un servicio a otros plugins; para registros simples basta la forma función.
Fuentes
- DeepSeek Harness first plugin tutorialFuente verificada 2026-08-27