📚 dsh-library

August 30, 2026 · View on GitHub

📚 dsh-library

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

Base de conhecimento local de documentos para o DeepSeek Harness.

Importe, recupere, verifique — busca híbrida com citações que seu agente pode conferir.

License DSH plugin Node CI Version npm version npm downloads

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


Compatibilidade

SuperfícieStatus
HarnessDeepSeek Harness 0.1.1-rc.2 (compatibilidade declarada para 0.1.1-rc.2)
Node^22.19.0 || >=24.0.0
ArmazenamentoQualquer backend de storage-domain (JSON ou SQLite); o índice vive no domínio de armazenamento do host
ModelosNenhum necessário — o embedder integrado é hash determinístico (zero downloads)

O que você ganha

O dsh-library transforma documentos md/txt locais em uma base de conhecimento consultável com um pipeline de qualidade em que seu agente pode confiar:

  • library_add / library_remove / library_list — importa um documento por caminho (dividido em chunks e embutido), remove um com verificação de expurgo (assinaturas do conteúdo removido são sondadas contra o índice restante e qualquer resíduo é reportado) e lista os metadados dos documentos.
  • library_search — ranking híbrido semântico + palavras-chave, re-ranking por diversidade de máxima relevância marginal, filtragem por relevância e evitação do lost-in-the-middle (os chunks mais fortes são fixados na cabeça e na cauda). Com inject: true a página de resultados é injetada no agente chamador; cada resultado carrega um marcador [n] e a injeção é reconstruível a partir do evento de sessão library/inject (condicionado pelo host; veja Permissões e dados).
  • library_cite_check — verifica as citações [n] de uma resposta contra a página de resultados com correspondência difusa de tokens E uma checagem de similaridade semântica.
  • library_diagnose — histograma de tamanhos de chunk, pares de chunks quase duplicados, uma sonda de auto-recuperação e o sinal de penalidade do meio.
  • /library — resumos do índice por biblioteca em uma linha.
documento ── library_add ─▶ chunk (janela deslizante) ─▶ embed (hash / comando externo)

                       domínio de armazenamento (documents / chunks / purges)

consulta ── library_search ─▶ pontuação híbrida ─▶ re-rank MMR ─▶ filtro de relevância
                                     │                        ─▶ ordem lost-in-middle

                    página de resultados com marcadores [n] ── inject: true ─▶ agente + evento library/inject (condicionado pelo host)

Início rápido

# 1. instale o bundle no seu perfil
dsh plugin --profile web add "github:PerryLink/dsh-library#main"

# ou pelo npm (versões publicadas)
dsh plugin --profile web add dsh-library

# 2. reinicie e verifique a linha
dsh --profile web --dump-config | grep -A2 'id: dsh-library'

Depois peça ao agente para importar e usar um documento:

> Adicione ./docs/spec.md à biblioteca docs e responda: o que a spec diz sobre retries? Cite com marcadores [n].

Instalação e desinstalação

  • Canal git (último main): dsh plugin --profile web add "github:PerryLink/dsh-library#main" — o script prepare compila apenas com dependências de produção.
  • Canal npm (versões publicadas): dsh plugin --profile web add dsh-library.
  • Canal tarball: pnpm pack neste repositório e então dsh plugin --profile web add ./dsh-library-<version>.tgz.
  • Desinstalar: dsh plugin --profile web remove dsh-library (ou remova a linha do patch do perfil).

Se o pnpm reportar ERR_PNPM_IGNORED_BUILDS para este pacote (a validação inofensiva do binário do esbuild), adicione allowBuilds: { esbuild: true } ao seu pnpm-workspace.yaml — o CLI dsh imprime o trecho exato.

Configuração

Todos os ajustes são campos Config do Schemastery (alteráveis pelo cordis.yml). Uma sobrescrita direcionada por id substitui a linha inteira — redeclare cada chave que precisar. O cordis.patch.yml documenta cada chave em linha.

ChavePadrãoSignificado
chunkSize900Tamanho do chunk em caracteres (janela deslizante, ≤ 4000)
chunkOverlap120Sobreposição entre janelas; deve ser menor que chunkSize
maxFileBytes5242880Arquivos maiores são rejeitados no library_add
embedding.dims256Dimensionalidade do hash embedding (≥ 8)
embedding.providerhashBackend do embedder: hash (integrado, zero downloads), command (subprocesso externo, requer embedding.command), ollama (Ollama local, sondado e degradado para hash se inalcançável)
embedding.command''Comando de embedder externo opcional (argv separado por espaços, sem shell) via ctx.subprocess; configurá-lo seleciona o backend command
embedding.ollamaUrl / ollamaModelhttp://127.0.0.1:11434 / nomic-embed-textEndpoint e modelo do Ollama local para o backend ollama (zero nuvem)
embedding.timeoutMs / graceMs / maxOutputBytes / maxBatchItems30000 / 1000 / 1048576 / 64Orçamento do subprocesso do embedder
search.topK8Resultados devolvidos após o pipeline completo
search.hybridWeight0.60 = só palavras-chave, 1 = só semântica
search.minRelevance0.15Chunks abaixo deste limiar de relevância são filtrados
search.diversityLambda0.5Compensação MMR: 1 = relevância pura, 0 = diversidade pura
search.lostMiddleHead / lostMiddleTail1 / 1Chunks mais fortes fixados na cabeça / cauda
search.maxResultChars16000Orçamento de caracteres da página de resultados
injection.enabled / maxCharstrue / 12000Comportamento e orçamento de injeção do library_search
citation.windowChars / minScore / minSemantic150 / 40 / 0.1Limiares do library_cite_check
purge.signatureLength / maxProbes4 / 24Assinaturas e orçamento de sondas da verificação de expurgo
diagnose.maxDuplicatePairs / sampleCap / positionBins24 / 200 / 5Limites do library_diagnose

Ferramentas e superfícies

FerramentaNotas
library_add{ path, library, name? } → id do documento; leitura pelo serviço de arquivos do harness
library_remove{ library, documentId } → resumo da remoção + veredicto de expurgo (resíduo reportado)
library_list{ library? } → metadados dos documentos (nunca texto)
library_search{ query, library, topK?, inject? } → resultados ordenados com marcadores [n]; inject: true semeia o agente chamador
library_cite_check{ library, query, answer } → veredictos por citação válida/inválida (difuso + semântico)
library_diagnose{ library } → estatísticas de chunks, duplicados, auto-recuperação, penalidade do meio
/library [name]Comando: resumos de documentos/chunks por biblioteca

Permissões e dados

  • Permissões: o plugin só lê os arquivos apontados pelo library_add (pelo serviço de arquivos do harness e sua política) e escreve no seu próprio domínio de armazenamento dsh_library. Sem requisições de rede; um embedder externo opcional executa via ctx.subprocess sem interpretação de shell.
  • Dados: o texto dos chunks e os embeddings vivem no backend de armazenamento do host (a mesma confiança do restante dos dados duráveis da implantação); o plugin não adiciona criptografia. Caminhos de documentos e embeddings nunca entram no registro de sessão.
  • Registro de sessão: library/inject (id, consulta, ids de chunks, tamanho da página) e library/purge (veredicto) são eventos de auditoria somente-registro — a página injetada visível ao modelo é reconstruível a partir deles. O append é condicionado pelo host: harnesses cujo conjunto de tipos conhecidos cobre o vocabulário recebem os eventos, builds com envelope ignorable os recebem com o marcador, e builds sem envelope (0.1.1-rc.2, 0.1.2-alpha.1) pulam o append — ali, os eventos registrados tool/call + tool/result continuam sendo a trilha de auditoria reconstruível.

Limites de segurança

  • Local por padrão. Zero downloads de modelos, zero chamadas de rede — a pontuação é hash determinístico e matemática de tokens. Apenas um comando de embedder configurado explicitamente executa código, e seu protocolo é verificado por completude e limitado em saída.
  • Sem fabricação. As checagens de citações informam o que o pipeline pode verificar; citações suspeitas são exibidas com honestidade, nunca adivinhadas.
  • O expurgo é verificado. O library_remove sonda o índice restante com assinaturas determinísticas do conteúdo removido e reporta o resíduo em vez de assumir sucesso.
  • Falha ruidosa. Nomes de biblioteca inválidos, documentos grandes demais, arquivos ilegíveis e um seam de embedder configurado mas ausente falham com erro claro.

Limitações conhecidas

  • Embeddings de grau léxico. O embedder hash integrado pontua similaridade superficial, não significado; a qualidade de recuperação em paráfrases é menor que com um modelo real — configure embedding.command para semântica mais forte.
  • Modelo de citação local. O library_cite_check valida contra a página de resultados (a numeração [n]), não contra nomes de fonte livres; a pontuação difusa é uma razão parcial de sequências de tokens limitada.
  • Sem pipeline de ingestão. Os documentos devem ser importados por caminho (md/txt); a extração de PDF/docx fica fora da v0.1.0.
  • Eventos de auditoria condicionados pelo host. library/inject / library/purge só são gravados em harnesses que podem carregá-los (veja Permissões e dados); na linha publicada 0.1.1-rc.2 eles não são gravados, e cada fato continua reconstruível a partir do registro de chamada/resultado da ferramenta.

Desenvolvimento

pnpm install        # node ^22.19 || >=24
pnpm run typecheck  # tsc: src + tests contra o checkout local do harness
pnpm run typecheck:ci  # tsc contra os tipos publicados 0.1.1-rc.2 (sem paths)
pnpm test           # vitest: portas de qualidade, vocabulário núcleo, montagem com pilha real
pnpm run build      # bundle tsdown + declarações tsc (lib/)
pnpm run verify:self-contained  # especificações de dependências resolvem pelo registry
pnpm run verify:artifacts       # face ESM construída + bundle patch presente
pnpm pack           # o tarball publicado

Topics

dsh, dsh-plugin, deepseek-harness, deepseek, cordis, rag, knowledge-base, retrieval, embedding, vector-search, citation-validation, document-library

Contributors

  • @PerryLink — criador e mantenedor: os oito portes de qualidade, o índice de domínio de armazenamento, o pipeline de recuperação híbrido, a verificação de citações/expurgo e a documentação em cinco idiomas.

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-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-output-stylesTroca de estilo em tempo de execução equivalente ao outputStyles do Claude Code
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-library contributors