跳到主要内容

dsh-prompt-history

已验证

dsh-prompt-history · v1.2.15 · MIT · Web 界面

DSH web plugin: terminal-style input for the composer — bash-like Up/Down prompt history with prefix search and Ctrl+R, selection toolbar with copy and quote (Codex-style > blockquote), right-click paste, toggleable draggable chat TOC, fully international

安装

dsh plugin add dsh-prompt-history

用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。

源码

标签

作者

说明文档

⌨️ dsh-prompt-history

Entrada estilo terminal para o compositor da Web GUI do DeepSeek Harness: histórico de prompts tipo bash, copiar e citar, e colar com botão direito.

Pressione ↑ como num terminal — histórico, citações e colagem em um único plugin.

License DSH plugin Node npm version npm downloads

English · 简体中文 · Español · Português


Compatibilidade

Superfície Estado
Plataforma Somente Web GUI (plugin de cliente; estado local do navegador; sem rede, sem código nativo)
Node >=20
Modelo Qualquer (não faz requisições ao modelo — comportamento puro de UI)
Idioma da interface 中文 / English (segue o idioma do app DSH, alterável em Configurações)

O que você obtém

dsh-prompt-history coloca o histórico de um terminal no compositor da Web GUI do DeepSeek Harness:

  1. Recuperação com setas estilo shell — com o rascunho vazio, ↑ recupera a mensagem enviada mais recente (a mais nova primeiro); com um prefixo digitado, ↑ salta para a mensagem mais recente que começa com esse prefixo (history-search-backward do bash); continue pressionando ↑ para voltar pelas correspondências; ↓ avança (inclusive pelas correspondências de prefixo) e, na borda inferior, restaura a linha que você digitava antes de começar a navegar (comportamento pending-line do readline).
  2. Editar sai da navegação — editar o rascunho durante a navegação volta para a linha ativa.
  3. Busca reversa com Ctrl+R — busca incremental no histórico com correspondência em tempo real (overlay estilo bash (reverse-i-search)consulta``); Ctrl+R novamente vai para a correspondência mais antiga; Enter aceita, Escape cancela e restaura o rascunho anterior.
  4. Copiar + citar (dois modos, em Configurações) — qualquer seleção não vazia na página — o campo do compositor, mensagens do chat, blocos de código — é tratada conforme o modo escolhido:
    • Barra de ferramentas (padrão): botões Copiar / Citar aparecem acima da seleção — copiar grava na área de transferência apenas ao clicar (sem inundar o Win+V); Citar insere o TEXTO COMPLETO selecionado como um blockquote markdown limpo com prefixo > no compositor (renderizado como citação ao enviar).
    • Auto (estilo terminal): copia a seleção direto para a área de transferência do sistema ao selecionar.
  5. Botão direito cola diretamente — um clique com o botão direito no compositor cola a área de transferência — sem menu de contexto, como num terminal Linux. A colagem usa o mesmo pipeline do Ctrl+V (imagens e chips de referência se comportam igual), com fallback da Clipboard API quando o caminho execCommand está bloqueado.
  6. Histórico entre sessões (alternância em Configurações, desligado por padrão) — mantém o histórico de ↑/↓ entre sessões, armazenado em localStorage do navegador (limite 200), sobrevive a recarregamentos e trocas de sessão.
  7. TOC do chat (índice da conversa) — quando a conversa fica longa, uma alça sutil, semitransparente e arrastável na borda esquerda do chat (acende no hover) expande um índice de cada mensagem de usuário em ordem — clique em qualquer item para saltar para aquele ponto e role por todas as entradas quando a lista ficar longa; clique fora ou pressione Esc para fechar. Pode ser desativado nas Configurações.

Comportamento puro de UI: sem eventos de sessão, sem mudanças no loop do agente, sem requisições ao modelo. O texto recuperado ou citado só entra no rascunho comum do compositor — chega ao modelo apenas se você pressionar Enter.

Início rápido

# 1. instale o bundle no seu perfil
dsh plugin --profile web add dsh-prompt-history

# 2. recarregue a página — sem necessidade de reiniciar o serviço

Instalar e desinstalar

  • Canal npm (versões publicadas): dsh plugin --profile web add dsh-prompt-history
  • Canal git (desenvolvimento local, último main): dsh plugin --profile web add "github:Xiaofei-fei/dsh-prompt-history#main" (um checkout de código precisa ser compilado primeiro — pnpm run build; um bundle não compilado se recusa a iniciar)
  • Desinstalar: dsh plugin --profile web remove dsh-prompt-history

Configuração

Abra Configurações → >_ Terminal Input (armazenado em localStorage do navegador, efeito imediato):

Opção Padrão Significado
Modo de cópia (ao selecionar) Barra de ferramentas Barra (recomendado; grava na área de transferência só ao clicar) / Copiar automaticamente ao selecionar (estilo terminal)
Histórico entre sessões Desligado O histórico de ↑/↓ persiste entre sessões em localStorage (limite 200)
TOC do chat Ligado Mostrar a alça arrastável na borda esquerda do chat; pode ser desativado
Colar com botão direito Ligado Desligado restaura o menu de contexto nativo do navegador

O histórico de ↑/↓ está sempre ligado, independentemente dessas alternâncias.

Recursos

  • O histórico vem do registro de mensagens da própria sessão: lê os nós de usuário (user / steering) do snapshot da conversa e os anexa conforme chegam — estritamente consistente com a transcrição, persistido com a sessão, sobrevive a recarregamentos de página e não precisa de configuração nem armazenamento extra.
  • Duplicados consecutivos são colapsados; o estado de navegação é redefinido ao trocar de sessão.
  • Interface internacionalizada: cada texto (configurações, barra de ferramentas, avisos, TOC, overlay de busca) segue o idioma do app DSH (中文 / English).
  • O bundle do cliente pesa ~12 KB compactado e depende apenas dos pacotes peer oficiais @deepseek-ai/*.

Limitações conhecidas

  • Ctrl+R: com o compositor focado, Ctrl+R é busca reversa — ele não recarrega mais a página (clique fora do campo primeiro para recarregar).
  • O diretório da conversa puxa automaticamente o histórico mais antigo do host (página por página até completar), então pode localizar qualquer posição anterior; a recuperação com ↑/↓ ainda cobre apenas a janela carregada.
  • Apenas texto simples: mensagens só com imagens ou chips não são recuperadas; os rascunhos recuperados são texto simples.

Desenvolvimento

pnpm install
pnpm run typecheck   # tsc --noEmit
pnpm run build       # tsc (lib/types) + tsdown (lib/index.js / lib/invariant.js / lib/client.js)

A metade do navegador (src/client/) se registra no slot conversation.input.right; o build emite o formato de closure __ModuleLoader__ do DSH com react como único externo (o resto vem da tabela de módulos do navegador). Os dicionários vivem em src/client/locales.ts (zh autoritativo, en com paridade de chaves) e se registram via ctx.locale.register.

Como funciona

O plugin é uma entrada de slot invisível do compositor que monta um listener keydown em fase de captura no documento. Ele assume ↑/↓ apenas quando o alvo é o campo do compositor, sem modificadores pressionados, sem composição IME ativa, sem menu de sugestões aberto e com a sessão não ocupada — então escreve o texto recuperado via inputActions.setDraft. A lista de histórico é alimentada pelos nós user/steering do snapshot (deduplicados por seq); a posição de navegação (índice mais a linha pendente de restauração) vive em refs do componente.

Licença

MIT