🎨 dsh-output-styles

September 4, 2026 · View on GitHub

🎨 dsh-output-styles

  • Canal 1024 store: npm i -g dsh1024 uma vez, depois dsh1024 plugin --profile web add dsh-output-styles (conta para o ranking de instalações do deepseek1024.com).

O outputStyles do Claude Code para o DeepSeek Harness: alterne o estilo de saída do modelo em tempo de execução, por sessão, de forma durável.

/style concise — e a partir de agora toda resposta é concisa. /style off — de volta ao padrão do projeto.

License DSH plugin Node CI Version npm version npm downloads

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


Compatibility

SurfaceStatus
HarnessDeepSeek Harness 0.1.2-rc.1 (adaptado em 2026-09-02): o envelope de sessão mantém seu campo ignorable apenas para compatibilidade de leitura de logs armazenados - o Session.append ainda não consegue estampá-lo, então o comportamento da porta não muda.
Node`^22.19.0
PlatformsTodas (host + cliente web)
ModelQualquer (injeção no prompt do sistema)

What you get

O dsh-output-styles é o equivalente do outputStyles do Claude Code para o DeepSeek Harness: um comando /style que alterna o estilo de saída do modelo em tempo de execução, persistido por sessão e injetado a cada montagem do prompt.

  • Biblioteca de estilos — um arquivo Markdown por estilo (styles/*.md); frontmatter para metadados, corpo = a diretiva do modelo. Seis estilos integrados (concise, explanatory, formal, learning, proactive, step-by-step), incluindo proactive e learning com paridade Claude Code.
  • Comando /style — sem argumento lista os estilos (com descrições) e a seleção atual; /style <name> alterna; /style off restaura o padrão do projeto.
  • Persistência por sessão — a escolha vive no domínio de armazenamento output_style, indexada por sessionId, e sobrevive a reinícios.
  • Injeção no prompt do sistema — uma contribuição systemPrompt.section() (ordem sectionOrder) injeta o corpo do estilo atual a cada montagem, truncado em um orçamento configurável.
  • Paridade Claude Codekeep-coding-instructions, force-for-plugin (alias force), compatibilidade JSON outputStyles, diretórios stylesDir em camadas, recarga a quente e fallback do projeto sobre a costura de settings do DSH.
  • Registro de renderers (output.render.*)ctx.outputRenderers permite a qualquer plugin registrar um presenter puro, aplicado pela cascata output.render/before; renderers integrados concise e step-by-step.
  • Regras por sessão/por ferramentarules: [{ match: { tool: 'bash' }, style: 'concise' }] nomeiam o renderer para solicitações coincidentes; editáveis pela seção de settings output-style-rules.
  • /export — renderiza a sessão atual para Markdown ou HTML saneado pela pipeline de render; --save <path> escreve o documento saneado nessa rota de workspace após aprovação do usuário. Cada render mantém o texto original ao lado do renderizado.

Quick start

# 1. install the bundle into your profile
dsh plugin --profile web add "github:PerryLink/dsh-output-styles#main"

# or from npm (published releases)
dsh plugin --profile web add dsh-output-styles

# 2. restart and verify the row
dsh --profile web --dump-config | grep -A3 'id: output-styles'

Demo

You > /style
      output style off
      concise — Terse, direct answers — minimal prose, no preamble. (Daily coding work, tool-heavy sessions, or when prompt length matters.)
      explanatory — Educational answers with short "Insights" that teach as you work. (Learning a codebase, onboarding, …)
      formal — Formal, precise prose with complete sentences and defined terms. (Reports, documentation, release notes, …)
      learning — Collaborative learn-by-doing mode with short "Insights" and small hands-on steps for the user. (Pairing, onboarding, …)
      proactive — Execute immediately, assume reasonable defaults, and prefer action over planning. (Routine multi-step work, …)
      step-by-step — Numbered reasoning steps with explicit intermediate results. (Debugging, design decisions, …)

You > /style concise
      switched to concise

You > 请只用一句话介绍你自己。
AI  > 我是运行在 DeepSeek Harness 插件化平台上、基于 deepseek-v4-pro 模型的 AI 编码代理。

How it works

flowchart LR
    U[You type /style concise] --> C[command registry]
    C -->|command/run logged| L[(session log)]
    C -->|put {style, source}| D[(output_style domain)]
    D --> R[OutputStyleRuntime]
    R -->|body at every assembly| S[systemPrompt section order 90]
    S --> M[Model request]
    M -->|full system prompt| H[request/header logged]

Tudo o que o modelo vê é reconstruível a partir do log de sessão — sem novo tipo de evento de sessão, sem alterações no agent-loop. O nome do estilo vem de command/run, o texto exato injetado de request/header, e o marcador de procedência { kind: 'plugin', plugin: 'dsh-output-styles' } viaja no registro do domínio. Os estilos se aplicam apenas à conversa principal; sessões de subagente mantêm seus próprios prompts (como no Claude Code).

Install & uninstall

  • canal git (último main): dsh plugin --profile web add "github:PerryLink/dsh-output-styles#main" — o script prepare compila apenas com dependências de produção.
  • canal npm (versões publicadas): dsh plugin --profile web add dsh-output-styles.
  • canal tarball: pnpm pack neste repo, depois dsh plugin --profile web add ./dsh-output-styles-<version>.tgz.
  • desinstalar: dsh plugin --profile web remove dsh-output-styles.

Configuration

Todos os parâmetros são campos Schemastery Config (alteráveis pelo cordis.yml). Valores inválidos falham a carga.

KeyDefaultMeaning
stylesDir[]Diretórios da biblioteca, resolvidos contra o cwd; entradas posteriores sobrescrevem as anteriores. [] = somente os styles/ integrados
maxStyleChars4000Orçamento do corpo do estilo (≥ 1); corpos mais longos são truncados com um marcador
defaultStyle''Estilo para sessões que nunca escolheram um (e sem padrão em settings); '' = sem estilo
compatJsontrueCarregar entradas JSON outputStyles do Claude Code (objetos avulsos ou arrays)
sectionOrder90Ordem da seção injetada (0 = persona, 100–199 = guia de ferramentas)
truncationMarker"\n\n[style truncated]"Marcador anexado no ponto de truncamento
includeBuiltinstrueIncluir os styles/ do pacote como camada de menor prioridade
watchStylestrueRecarregar a biblioteca quando um arquivo de estilo muda em disco
rules[]Regras de render por sessão/ferramenta: [{ match: { tool?, contentType?, session? }, style, priority? }]
enableExporttrueRegistrar o comando /export (exportação de sessão Markdown/HTML, ciente do renderer; --save escreve com aprovação)
respectCoreOutputStylestrueAo detectar um serviço core outputStyles, omitir a injeção de prompt deste plugin (manter hot-switch / rules / export)

Tools & surfaces

SurfaceKindNotes
/stylecommandLista estilos, alterna ou restaura o padrão do projeto
/exportcommandRenderiza a sessão atual para Markdown ou HTML saneado; --save escreve com aprovação
output_stylestorage domainEscolha de estilo por sessão, indexada por sessionId
systemPrompt.section()contributionInjeta o corpo do estilo atual a cada montagem
output.render.*renderer registryctx.outputRenderers + a cascata output.render/before
styleprojection{ options, currentValue } dobrado a partir de comandos assentados
Web pickerclient entrydsh-output-styles/client decora /style com um seletor pop-up

Command reference

InputOutcome
/styleLista a seleção atual + uma linha por estilo (nome — descrição)
/style conciseAlterna (escrita durável), switched to concise
/style Diagrams firstNomes com várias palavras são o restante inteiro
/style offRestaura o padrão do projeto (default de settings, depois defaultStyle)
/style nopeerror: unknown output style "nope" (available: …)
/exportRenderiza a sessão atual para Markdown pela pipeline de render
/export mdRenderiza para Markdown (md é a forma abreviada de markdown)
/export htmlRenderiza para HTML saneado
/export --renderer=conciseRenderiza forçando um renderer (regras ignoradas)
/export md --save report.mdRenderiza e então escreve o documento saneado em report.md após aprovação

Style library

Um arquivo Markdown por estilo; frontmatter para metadados, corpo = a diretiva do modelo. name toma por padrão o nome do arquivo e pode conter espaços (Diagrams first).

FieldDefaultMeaning
namenome do arquivoAlvo da alternância; letras, dígitos, espaços e hífens (off é reservado)
description— (obrigatório)Uma frase exibida nas listagens e no seletor
whenToUseOrientação opcional anexada às listagens
keep-coding-instructionsfalseManter o prompt do harness quando true; substituí-lo quando false (semântica Claude Code)
force-for-pluginfalseAplicar incondicionalmente, sobrescrevendo qualquer seleção de sessão; force é um alias, no máximo um estilo pode defini-lo

Com compatJson: true, entradas JSON outputStyles do Claude Code ({ name, description, prompt }) carregam ao lado dos estilos Markdown; entradas não analisáveis são omitidas com um aviso.

Renderer protocol

O protocolo output.render.* transforma a apresentação em um ponto de extensão. Um renderer é um presenter puropresenter(text, context) mapeia argumentos para dados de exibição, nunca toca o DOM — emparelhado por nome de ferramenta e tipo de conteúdo, ordenado por prioridade.

  • Waterfall primeiro: toda solicitação de render passa por output.render/before ({ text, context }); os listeners devem chamar next().
  • Rules: rules: [{ match: { tool: 'bash' }, style: 'concise' }] nomeia o renderer para solicitações coincidentes; empates se resolvem por priority e depois pela ordem da regra.
  • Built-ins: concise (compactação de espaços + truncamento por orçamento) e step-by-step (numeração de passos consistente).
  • Auditabilidade: cada resultado de render carrega { original, rendered, rendererId, changed }; o texto renderizado é o que aparece, o original permanece reconstruível a partir do log de sessão.

Web picker

A entrada dsh.client decora a invocação nua do comando /style com um seletor pop-up: uma linha "off" mais uma linha por estilo da biblioteca (description · whenToUse), com a linha ativa marcada. Escolher envia /style <name> pelo Remote de comandos, de modo que cada alternância mantém o ciclo de vida durável do comando host. O seletor segue o par de idiomas zh/en da Web UI.

Differences from Claude Code

Claude Codedsh-output-styles
Arquivos de estilo.claude/output-styles em níveis usuário/projeto/gerenciadodiretórios stylesDir + styles/ integrados, vence o diretório posterior
Estilos personalizadosMarkdown, frontmatter name/description/keep-coding-instructions/force-for-pluginMesmos campos (force-for-plugin aceito textualmente, force como alias) + whenToUse
JSON legadoarray outputStyles em settings.jsonCarregado textualmente (compatJson: true)
Quando entra em vigorApós /clear ou uma sessão novaImediatamente — o prompt do sistema se remonta por solicitação
SubagentesEstilos não se aplicamIgual — sessões de subagente mantêm seus próprios prompts
Alternânciamenu /config ou ajuste outputStyle (o comando /output-style foi removido na v2.1.91)comando /style + Web picker + settings output-style.style

Conflict check

Filtrado contra o ecossistema DSH antes do desenvolvimento (instantânea 2026-08): nenhum repositório style/output-style sob topic:dsh-plugin, nenhuma categoria de output-style nas quatro principais awesome lists, e nenhuma entrada no catálogo dsh-hub. Os vizinhos mais próximos — dsh-soul-md (persona) e dsh-claude-marketplace (estilos de saída diferidos explicitamente para v0.2+) — são adjacentes, não conflitantes.

Permissions & data

  • Permissions: o manifesto de workshop declara fs:read, fs:write, fs:watch, storage:read, storage:write e settings:read.
  • Data: a escolha de estilo vive no domínio de armazenamento output_style (indexada por sessionId); nenhum outro estado é persistido, sem solicitações de rede.
  • Session log: o nome do estilo vem de command/run, o texto exato injetado de request/header; o marcador de procedência { kind: 'plugin', plugin: 'dsh-output-styles' } viaja no registro do domínio.

Security boundaries

  • Somente serviços públicos. Contribui systemPrompt, comandos, armazenamento e settings; sem alterações em engine / agent-loop / apiproxy / UI oficial.
  • Visível para o modelo ⟺ registrado. Tudo o que o modelo vê é reconstruível a partir do log de sessão — sem novo tipo de evento de sessão, sem alterações no agent-loop.
  • Original sempre conservado. Cada render (e /export) mantém o texto original ao lado do renderizado; a exportação HTML usa HTML saneado.
  • Escritas em disco controladas. /export --save escreve somente após o serviço de aprovação conceder, e o conteúdo escrito passa primeiro pela função pura sanitizeText; sem um serviço de aprovação ou fs, nada é escrito (fail-closed).

Known limitations

  • Somente conversa principal. Os estilos se aplicam à conversa principal; sessões de subagente mantêm seus próprios prompts (como no Claude Code).
  • Truncamento. Corpos de estilo mais longos que maxStyleChars são truncados com um marcador.
  • Arquivos omitidos. Um arquivo de estilo defeituoso é omitido com um aviso e nunca quebra o profile.

Development

pnpm install
pnpm run typecheck   # ambos os projetos tsc
pnpm test            # vitest — 127 tests
pnpm run verify      # typecheck + tests + self-contained (a porta de prepublishOnly)
pnpm run build       # artefatos lib/ (bundles host + client)
pnpm pack            # tarball para dsh plugin add

Lançamentos: empurrar uma etiqueta v* cujo sufixo coincide com a versão de package.json dispara o workflow Publish — verificação completa e depois publicação no npm com procedência.

Topics

deepseek-harness, dsh, dsh-plugin, output-style, output-styles, claude-code

Contributors

  • @PerryLink — autor e mantenedor: arquitetura do plugin, biblioteca de estilos, instalação de bundle, Web picker, documentação em cinco idiomas e ferramentas de CI/lançamento.

Este projeto é um dos 33 plugins de DeepSeek Harness mantidos por PerryLink. Se este ajuda você, os outros provavelmente também:

PluginOne-liner
dsh-dsh-auto-reviewAuto-revisão de segundo modelo na cadeia de aprovação, com falha fechada por padrão
dsh-dsh-background-agentsAgentes filhos em segundo plano duráveis com barra lateral de UI web, mensagens e interrupção
dsh-dsh-budgetGovernança de custos para DeepSeek Harness: orçamentos, carbono e latência em um painel.
dsh-dsh-checkpoint-rewindEquivalente ao /rewind do Claude Code: instantâneos, bifurcações de sessão, restauração de uso único
dsh-dsh-claude-moveMigre sessões, memória, habilidades e CLAUDE.md do Claude Code para o DSH
dsh-dsh-clickControle de desktop nativo multiplataforma para DeepSeek Harness — Windows primeiro.
dsh-dsh-composer-historyHistórico de entrada estilo terminal para o compositor web: setas, busca Ctrl+R
dsh-dsh-data-qualityVerificações de qualidade de datasets e verificação de citações (a ponte numérica opcional consumida aqui)
dsh-dsh-defendDefesa contra injeção de prompt, jailbreak e vazamento de segredos para DeepSeek Harness.
dsh-dsh-doublecheckGuardião de disciplina de engenharia: sabatina de requisitos, portões de teste, revisão adversária
dsh-dsh-drawRoteamento unificado de geração de imagens estáticas para DeepSeek Harness.
dsh-dsh-fastDiagnóstico de desempenho só de leitura para DeepSeek Harness.
dsh-dsh-fund-researchRelatórios de pesquisa deterministas para fundos mútuos públicos chineses
dsh-dsh-githubIntegração de PR/issues do GitHub para o DSH, cada escrita controlada por aprovação
dsh-dsh-industry-researchOrquestração de pesquisa setorial que sela as suas entregas através do ctx.researchReport.assemble deste plugin
dsh-dsh-libraryBase de conhecimento documental local para DeepSeek Harness.
dsh-dsh-local-aiIntegração de modelos locais (Ollama) para DeepSeek Harness.
dsh-dsh-lsp-actionsDiagnósticos, formatação, autocompletar, ações de código e renomeação LSP sobre servidores de linguagem
dsh-dsh-maskMiddleware de mascaramento de PII: anonimiza no limite do modelo, restaura na camada de exibição
dsh-dsh-mcp-panelPainel de tempo de execução MCP somente leitura: comando /mcp + aba Settings com status, ferramentas e erros
dsh-dsh-mementoMemória entre sessões controlada por aprovação: costura ctx.memory + SQLite + ferramenta de memória
dsh-dsh-observeExportador de observabilidade OpenTelemetry e Langfuse para DeepSeek Harness.
dsh-dsh-permission-rulesRegras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria
dsh-dsh-plugin-guideBase de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda
dsh-dsh-research-reportMotor de relatórios de pesquisa verificáveis com evidência endereçada por conteúdo
dsh-dsh-scorePontuação de qualidade multidimensional para plugins de DeepSeek Harness.
dsh-dsh-session-pinFixe sessões na barra lateral web com ordenação durável
dsh-dsh-session-syncSincronização de sessões entre dispositivos para DeepSeek Harness — um espelho git dedicado do seu armazenamento de sessões.
dsh-dsh-skill-pack-securityPacote de habilidades de auditoria de segurança: varredura de segredos, revisão de dependências e cadeia de suprimentos
dsh-dsh-talkLoop de sessão com voz para DeepSeek Harness: fale e ouça a resposta.
dsh-dsh-test-driveTest drives isolados de instalação e smoke para plugins de DeepSeek Harness.
dsh-dsh-translateTradução de parâmetros entre fornecedores e reparo determinístico de JSON para DeepSeek Harness.

License

Apache License 2.0 © 2026 dsh-output-styles contributors

Instalar a partir do mercado do DSH Desktop

Todos os plugins PerryLink podem ser explorados no mercado integrado do DSH Desktop: Market → Sources → add source → colar https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json → selecionar. A instalação continua passando pela verificação de identidade npm do mercado e pela sua confirmação.