dsh-laya

September 22, 2026 · View on GitHub

Decisões tipadas do Layanoul (sim/não), choice, score — como serviço Cordis de primeira classe e ferramentas visíveis para o modelo no DeepSeek Harness.

English · 简体中文 · Español · Português · हिन्दी

Estado: 0.1.4, em desenvolvimento. O plugin monta e ativa no Harness, e o contrato de sidecar que fala está verificado de ponta a ponta numa RTX 5060 (carregamento 9.8 s, 411 ms para três perguntas em CUDA). Ainda não foi exercitado através de um turno de modelo real em CI.


Instalação

Duas peças, porque o Laya é PyTorch e por isso não pode viver dentro de um plugin de Node.

1. O sidecar — é isto que realmente contém o modelo:

pip install "laya-mcp[mcp]"
laya-mcp serve                      # carrega uma vez, escuta em 127.0.0.1:8787

2. Este plugin:

dsh plugin --profile <profile> add dsh-laya

Depois confirma que a linha está active, não failed, e lê a linha de arranque — diz com todas as letras se o estado fica nesta máquina.

Porque é que o sidecar está separado

Um plugin que executasse pip install e depois descarregasse um checkpoint de 650 MB às tuas costas seria hostil, por muito conveniente que fosse. Por isso este plugin não instala nada e não descarrega nada. É um cliente de um processo que tu arrancas, e quando esse processo não está a correr di-lo, em vez de falhar de forma obscura na primeira chamada a uma ferramenta.

A separação também compra o modelo quente: a construção a frio do Laya custa de segundos a dezenas de segundos, e o seu router preguiçoso por defeito reconstrói um checkpoint a cada mudança de idioma. O laya-mcp serve paga isso uma vez.

O que contribui

Um serviço, ctx.laya — para que o código do Host e outros plugins possam pedir um juízo diretamente, sem uma ida e volta ao modelo:

const laya = ctx.get('laya')
const result = await laya.ask({ state, questions })

Expõe ask, plan, health, capabilities, sidecarUrl e loopback — o último é se o estado fica nesta máquina, como facto e não como política. O plan é o preflight: a mesma aritmética que o /ask reporta, sem passagem forward.

Duas ferramentaslaya_ask para um lote de perguntas tipadas, e laya_plan para verificar o orçamento de tokens antes de gastar uma passagem forward.

Do que é honesto

O Laya trunca em silêncio e o seu número de confiança é amplamente mal interpretado, por isso a descrição da ferramenta e a resposta di-lo:

  • Um estado demasiado grande é cortado pelo FIM, e a resposta é então sobre o prefixo sobrevivente. A resposta reporta-o em truncated, e o laya_plan diz-te antes de perguntares. Passa strict: true para ser recusado em vez disso — verificado contra o sidecar em execução, que devolve HTTP 400 com state_truncated e uma dica que nomeia max_len.
  • O confidence não é exatidão. É um estatístico de concentração: baixo quando a probabilidade está espalhada pelas opções mesmo quando a principal está certa, e alto numa resposta errada mas confiante. Um noul traz também uma banda no / uncertain / yes, porque uma probabilidade calibrada não é uma decisão — um exemplo real medido nesta pilha devolveu 0.5457 com a banda uncertain.
  • Uma degradação silenciosa para CPU é reportada. Se o Laya cai para CPU após um erro de dispositivo, nunca regressa ao acelerador, e nada na sua própria saída o admite. A superfície de saúde traz degraded, e o cartão da ferramenta acrescenta CPU (degraded).

Configuração

- insert:
    - id: laya
      name: 'dsh-laya'
      config:
        sidecarUrl: 'http://127.0.0.1:8787'
        requestTimeoutMs: 120000
        lifecycle: never      # 'attach' registra uma verificação de alcance,
                              # 'spawn' arranca o sidecar por ti
        spawnCommand: null    # exigido por 'spawn', p. ex. ['laya-mcp', 'serve']
        spawnTimeoutMs: 120000
        logLevel: info

O lifecycle decide o que acontece quando nada responde em sidecarUrl:

neverNão arrancar nada; assumir que outra coisa gere o sidecar. O padrão.
attachVerificar também /health uma vez ao carregar e registar o que encontrou — útil quando o harness e o sidecar competem no arranque.
spawnExecutar também spawnCommand se nada responder, e esperar que levante.

O spawn existe porque a alternativa era pior. O plugin continua a não instalar nada e a não descarregar nada — uma ferramenta que executasse pip install e depois trouxesse um checkpoint de 650 MB às tuas costas seria hostil, e isso não mudou. Mas lançar um sidecar que já instalaste é um ato diferente, e sem ele cada sessão começava por arrancar à mão um processo de Python num terminal, e voltava a falhar sempre que esse processo desaparecia.

Duas regras tornam-no seguro de deixar ligado:

  • Um sidecar que já está a responder é atendido e nunca tocado, por isso duas sessões do harness não podem pôr dois modelos na mesma porta.
  • Um sidecar que este plugin arrancou é parado quando o plugin é desmontado; um que não arrancou é deixado exatamente como foi encontrado.

Continua a não haver nenhuma opção que instale algo ou traga um modelo, e o spawnCommand não tem valor por defeito: este plugin não adivinha um interpretador.

Apontar o sidecarUrl para algo que não seja loopback é permitido e avisa uma vez no arranque, nomeando o destino: esse é o momento em que a história da privacidade muda, e não deve ser descoberto apenas lendo um ficheiro de configuração.

Limites do upstream que vale a pena conhecer antes de depender disto

Repetidos das próprias medições do upstream, porque uma integração que insinue o contrário está a mentir-te. Os checkpoints base estão perto do acaso em zero-shot em decisões tipadas (0.362 para inglês contra uma linha de base de classe maioritária de 0.461); o score é a primitiva mais fraca (35% contra os 70% do Jev em medição independente); o erro de calibração cru é 0.466 antes de ajustar a temperatura; e a exatidão cai acima de cerca de 20 opções.

A calibração torna uma probabilidade honesta. Não consegue tornar um modelo correto.

Versão do DSH aplicável: verificada com dsh-v0.1.7-alpha.1 (a versão do host que esta compilação visa); requer >=0.1.7-alpha.1 <0.2.0.

This project is one of the 45 DeepSeek Harness plugins maintained by PerryLink. If this one helps you, the others likely will too:

PluginOne-liner
dsh-auto-reviewSecond-model auto-review on the approval chain, fail-closed by default
dsh-autotierAutomatic strong/cheap model-tier routing with deterministic risk guards and a /tier command
dsh-background-agentsDurable background child agents with a Web UI sidebar, messaging and interrupt
dsh-budgetCost governance for DeepSeek Harness: budgets, carbon, and latency in one panel.
dsh-catalogDSH Desktop Market standard catalog source for the PerryLink family
dsh-cert-mcpRead-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence
dsh-checkpoint-rewindClaude Code /rewind-equivalent: snapshots, session forks, one-shot restore
dsh-claude-moveMigrate Claude Code sessions, memory, skills and CLAUDE.md into DSH
dsh-clickCross-platform native desktop control for DeepSeek Harness — Windows first.
dsh-composer-historyTerminal-style input history for the web composer: arrows, Ctrl+R search
dsh-data-qualityDataset quality checks and citation cross-checks (the optional numeric bridge consumed here)
dsh-defendPrompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness.
dsh-doublecheckEngineering-discipline guard: requirements grill, test gates, adversary review
dsh-drawUnified static-image generation routing for DeepSeek Harness.
dsh-fastRead-only performance diagnostics for DeepSeek Harness.
dsh-fund-researchDeterministic research reports for Chinese public mutual funds
dsh-githubGitHub PR/issues integration for DSH, every write gated by approval
dsh-industry-researchIndustry research orchestration that seals its deliverables through this plugin's ctx.researchReport.assemble
dsh-layaLaya typed decisions (noul/choice/score) as a first-class Cordis service and model-visible tools
dsh-libraryLocal document knowledge base for DeepSeek Harness.
dsh-local-aiLocal-model (Ollama) integration for DeepSeek Harness.
dsh-lsp-actionsLSP diagnostics, formatting, completion, code actions and rename over language servers
dsh-maskPII masking middleware: anonymize at the model boundary, restore at the display layer
dsh-mcp-panelRead-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors
dsh-mementoApproval-gated cross-session memory: ctx.memory seam + SQLite + memory tool
dsh-observeOpenTelemetry and Langfuse observability exporter for DeepSeek Harness.
dsh-output-stylesClaude Code outputStyles-equivalent runtime style switching
dsh-permission-rulesClaude Code-style declarative allow/deny/ask permission rules with audit
dsh-plugin-certificationCommunity certification registry with repro-checkable grades and badges
dsh-plugin-doctorZero-dependency static + sandbox smoke detector for DSH plugins
dsh-plugin-guidePlugin-development knowledge base as an on-demand agent skill
dsh-plugin-kitShared zero-runtime-dependency toolkit for the PerryLink DSH plugins
dsh-plugin-upgradeOne-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card
dsh-plugin-upgrade-015Merged 0.1.3-alpha.10.1.5-rc.1 upgrade corridor card plus a zero-dependency seam scanner
dsh-reachMulti-channel approval/question bridge: WeChat/Telegram/Feishu, session console
dsh-research-reportVerifiable research-report engine: content-addressed evidence ledger and sealed versions
dsh-scoreMulti-dimensional quality scoring for DeepSeek Harness plugins.
dsh-session-pinPin sessions in the Web sidebar with durable ordering
dsh-session-syncCross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store.
dsh-skill-pack-securitySecurity-audit skill pack: secret scan, dependency and supply-chain review
dsh-talkVoice-first session loop for DeepSeek Harness: talk to it, hear it answer.
dsh-team-roomsCross-session team rooms: shared message bus, task board and timeline
dsh-test-driveIsolated install-and-smoke test drives for DeepSeek Harness plugins.
dsh-ticktickTickTick/Dida365 task bridge: session-header panel + 11 tools
dsh-translateVendor parameter translation and deterministic JSON repair for DeepSeek Harness.

Licença

Apache-2.0. O Laya é Apache-2.0, da Convai Innovations. Esta é uma integração independente e não está afiliada nem é endossada por esse projeto.