dsh-web
zhu1090093659
DeepSeek Harness (DSH) Web 插件聚合生态 · 万物皆插件,通过创意工坊分发||DeepSeek Harness (DSH) Web Plugin Aggregation Ecosystem · Everything is a plugin, distributed via the Creative Workshop
PROJECT TOPICS
PROJECT README
Una app de escritorio para DeepSeek Harness en macOS, pensada para todo lo que no es programar: escribir, investigar, orquestar tareas y quedarte con lo que producen.
No es un tema ni un envoltorio de la interfaz oficial: es un frontend distinto que habla con el harness por su API, servido desde el propio harness y metido en una ventana nativa.
Compatibilidad — léelo antes de instalar. Este frontend habla con la API de dsh 0.1.1-rc.2, que es la versión contra la que está probado. En 0.1.5 el harness renombró toda su superficie RPC (
session.listpasó a sersession/list,session.modelsasession/modelCatalog,agentPreset.*aagentPresets/*), movió el WebSocket de eventos de/api/events.muxa/api/remote.muxy puso/apidetrás de una credencial de sesión que solo se acuña abriendo/?token=<ficha>. La app ya canjea esa credencial; el resto del trasplante está en marcha. Mientras tanto, en 0.1.5 la app abre la interfaz oficial del harness y nuestro frontend sigue servido en/deepharn.

Tres columnas plegables: conversaciones a la izquierda, el chat en medio, y a la derecha lo que está corriendo, lo que ha producido y lo que tiene a mano.
Y cuando algo falla —modelo retirado, clave caducada, cuota agotada— se ve: el error del proveedor sale en la conversación en vez de quedarse en nada.
La respuesta llega en vivo por WebSocket y se pinta según se escribe, con el texto renderizado como markdown: párrafos, viñetas, código.
![]() |
Modelo y esfuerzo. Agrupados por proveedor y con filtro, porque OpenRouter ofrece más de cien. El esfuerzo de razonamiento sale de lo que declara cada modelo. |
![]() |
Ajustes. Proveedores activos, proyectos, skills con aviso si alguna está mal escrita, e instalador de plugins. Sin bajar a la terminal. |
![]() |
Solo chat. Un botón pliega las dos columnas y deja la conversación sola. |
Tres piezas, cada una con un trabajo:
| Pieza | Qué es |
|---|---|
app/ |
Concha de escritorio en Swift + WKWebView. Arranca el harness, lo vigila y lo para al salir. |
plugins/deepharn-front/ |
Plugin de host: sirve el frontend en /deepharn y añade endpoints propios para instalar plugins y gestionar skills. |
plugins/deepharn-piel/ |
Plugin de cliente: reescribe los tokens de color y tipografía de la interfaz oficial. Opcional. |
El frontend es HTML, CSS y JavaScript a pelo. Sin framework, sin compilación, sin dependencias: se edita y se recarga.
Por qué se sirve desde el propio harness: su API compara el Host de cada
petición y rechaza lo que venga de otro puerto. Servir el frontend desde fuera no
funciona; desde dentro, las llamadas a /api salen gratis.
Lo que necesitas: macOS 14+ (Apple Silicon), Node 22+, pnpm, las Command Line
Tools de Xcode y el harness (npm i -g @deepseek-ai/dsh). Si te falta algo, el
instalador te lo dice antes de tocar nada.
git clone https://github.com/AxelGoal/Deepharn.git
cd Deepharn
./instalar.sh
Eso crea un perfil propio llamado deepharn —no toca el que ya uses—, instala
los dos plugins, los monta en el árbol y compila la app en /Applications.
Luego, desde Launchpad, o:
open -a Deepharn
# Un perfil propio, copiado del que ya tienes
cp -R ~/.dsh/profiles/web ~/.dsh/profiles/deepharn
# Los plugins
dsh plugin --profile deepharn add ./plugins/deepharn-front
dsh plugin --profile deepharn add ./plugins/deepharn-piel
Y sus filas en ~/.dsh/profiles/deepharn/cordis.patch.yml. Ojo con el
envoltorio insert: una entrada suelta con id: sobrescribe una fila existente
en vez de añadir una nueva.
- insert:
- id: deepharn-front
name: deepharn-front
- insert:
- id: deepharn-piel
name: deepharn-piel
Luego la app: cd app && ./construir.sh
También vale sin app: dsh --profile deepharn y abrir
http://127.0.0.1:3081/deepharn/ en el navegador.
rm -rf ~/.dsh/profiles/deepharn /Applications/Deepharn.app
Nada más. El perfil que ya usabas queda intacto, y tus conversaciones también:
viven en ~/.dsh/sessions, fuera del perfil.
El harness busca con la API de DeepSeek, que es de pago: si esa cuenta se queda sin saldo, el agente responde «Insufficient Balance» y deja de buscar.
Hay proveedores gratuitos en el ecosistema que sustituyen al de fábrica. El más usado es ModSearch —MIT, sin clave, sobre la capa gratuita de Firecrawl— y se instala desde la caja de plugins de Ajustes:
@liustack/modsearch
Trae su propio bundle, así que se activa solo. Reinicia con ⇧⌘R después.
El directorio donde arranca el harness es el espacio de trabajo del agente, y
con la política workspace-write eso es exactamente lo que puede tocar sin
pedirte permiso. Por eso la app arranca en ~/Deepharn, una carpeta suya que
se crea sola: ahí trabaja libre, y para cualquier cosa fuera de ahí te pregunta.
Merece la pena saberlo antes de cambiarlo: arrancar el harness en tu carpeta personal le da permiso de escritura sobre todo lo que hay en ella.
Abrir la app es lo único que hay que hacer:
dsh instalado, la caché de npx, o
npx -y @deepseek-ai/dsh.Está en COMO-ESTA-HECHO.md: la API del harness, sus métodos y sus trampas. Si vas a construir algo parecido, ahí tienes el mapa.
Deepharn lanza procesos, así que conviene decir cuáles y por qué —los escáneres automáticos del ecosistema lo marcan, y con razón:
dsh como proceso hijo. La app arranca el harness al abrirse y lo para al
salir. Si ya había uno sirviendo, se engancha y no mata nada al cerrarse.dsh plugin add, solo cuando pulsas Instalar en Ajustes, con el paquete
que hayas escrito. Rechaza nombres con caracteres de shell y no usa intérprete.Los endpoints propios (/deepharn/api/…) viven dentro del servidor del harness,
que solo escucha en 127.0.0.1. Ese servidor no tiene autenticación, así que
tampoco la tienen: quien pueda ejecutar código en tu Mac ya podía hacer lo mismo
por otras vías. No expongas el puerto a la red.
Y lo que de verdad decide qué puede tocar el agente no es esto, sino su espacio de trabajo — el apartado de arriba.
El frontend está en plugins/deepharn-front/web/: tres archivos, sin compilación.
Se edita y se recarga con ⌘R. Si tocas la mitad de servidor (lib/), reinicia el
harness con ⇧⌘R.
La piel —colores y tipografías— está en plugins/deepharn-piel/src/piel.css; tras
editarla, node construir.mjs la reensambla.
Si algo no aparece: el harness compone su árbol al arrancar, así que los plugins y las skills nuevas piden reinicio.
Funciona y se usa a diario, pero es joven y el harness que hay debajo está en developer preview, así que rompe compatibilidad de vez en cuando.
Lo que falta: adjuntar archivos, y enseñar el razonamiento del modelo cuando
lo emite (reasoning-delta ya llega por el socket, solo falta pintarlo).
MIT.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: desktop-app、wkwebview。