TypeSafe Jev para o DeepSeek Harness e qualquer outro host MCP.
Jev não é um modelo de chat. Ele responde a perguntas tipadas — noul (sim/não), choice, score — e
devolve probabilidades calibradas. Ele não escreve texto livre, e pedir isso a ele é um erro de
categoria. Este projeto dá a um agente exatamente essa superfície, e nada mais.
Offline por padrão. Saída de dados divulgada. Nada ativado por padrão.
📖 Base de conhecimento do ecossistema — dados medidos, não marketing: guia de desenvolvimento · dados de seleção · critérios de manutenção.
Este plugin faz parte de uma família de mais de 40 plugins para o DeepSeek Harness, todos Apache-2.0. Se você usa, uma estrela não desbloqueia nada, mas ajuda a próxima pessoa a encontrá-lo.
English: part of a 95 plugin family for DeepSeek Harness. If it is useful, a star helps the next person find it — nothing is gated behind it.
| Pacote | O que é | Use quando |
|---|---|---|
jevcore |
As decisões. Não importa nada do DeepSeek Harness nem do Cordis. | Você quer o Jev em um script comum, em um serviço ou no seu próprio harness |
jevcore-dsh |
O plugin do DSH: um serviço, três ferramentas, dois portões opcionais | Você está executando o DeepSeek Harness |
jevcore-mcp |
As mesmas três ferramentas via MCP, com um binário stdio | Seu host fala MCP, mas não é DSH |
Os adaptadores são finos de propósito. packages/dsh são quatro arquivos: ele declara os esquemas das
ferramentas e traduz as cargas úteis dos hooks. Tudo que tem formato de decisão — as primitivas, os
provedores, o contrato de saída, a política, os portões — vive no core, de modo que um novo adaptador não
possa divergir das garantias que os outros oferecem.
Um requisito de runtime difere entre os três: jevcore-dsh acompanha o harness e
precisa de Node ^22.19.0 || >=24.0.0, enquanto jevcore e jevcore-mcp precisam de >=20.
Entre 2026-09-17 e 09-20, surgiram dezenove plugins que integram o Jev ao DSH. A auditoria do código-fonte deles encontrou um padrão consistente: o módulo rotulado como guard, gate ou warden era também o módulo que enviava prompts, argumentos de ferramentas e conteúdos de arquivos a terceiros, e o README em geral não dizia isso. Vários vinham ativados por padrão. Um dos portões podia ser reconfigurado pelo próprio modelo que ele deveria vigiar.
Este projeto é a mesma ideia com esses modos de falha projetados para fora:
| Propriedade | Como ela é garantida aqui |
|---|---|
| Nenhuma chamada de rede a menos que você peça uma | O provedor padrão é um mock offline; o caminho live exige tanto provider: live quanto uma credencial resolvida |
| Toda transmissão nomeada antes de acontecer | Uma linha de log na inicialização por recurso: off ou SENDS <feature> { fields } |
| Portões desativados não registram nada | Verificado por teste, não por política — um portão desativado não adiciona nenhum event listener |
| O modelo não pode ampliar suas próprias restrições | Nenhuma ferramenta expõe a configuração dos portões |
| Um juiz que não consegue responder nunca significa "permitir" | O indecidido é resolvido por configuração explícita, com padrão ask |
Esta é a parte que vale a pena ler antes de instalar.
A transmissão é decidida por recurso, e todo recurso tem padrão desativado. O plugin imprime o próprio contrato ao carregar:
[jevcore] provider=mock endpoint=none egress=OFF (no network calls will be made; every answer is synthetic)
[jevcore] ready - provider=mock - gates: safety=off context=off
Com provider: live e todos os recursos ativados, o mesmo relatório passa a ser explícito sobre o que
sai da máquina:
[jevcore] provider=live endpoint=https://api.typesafe.ai egress=ON
[jevcore] SENDS tool:jev_ask { state<=16000c questions<=4000c }
[jevcore] SENDS tool:jev_rank { state<=16000c questions<=4000c }
[jevcore] SENDS tool:jev_check { state<=16000c questions<=4000c }
[jevcore] SENDS gate:safety { state<=8000c questions<=2000c }
[jevcore] SENDS gate:context { state<=6000c questions<=2000c }
[jevcore] redaction is best-effort; it removes named fields and known secret shapes, and cannot
recognise an unrecognised secret in free text
| Recurso | Desativado por padrão? | O que ele envia |
|---|---|---|
tool:jev_ask |
executa quando o modelo o chama | os argumentos que o modelo passou, após a redação |
tool:jev_rank |
executa quando o modelo o chama | a consulta mais cada candidato |
tool:jev_check |
executa quando o modelo o chama | a afirmação e sua evidência |
gate:safety |
sim — adesão explícita | o nome da ferramenta, seus argumentos, a raiz do workspace |
gate:context |
sim — adesão explícita | um resultado grande de ferramenta que o agente acabou de receber |
As ferramentas só transmitem quando o modelo escolhe chamá-las, o que é visível no transcript. Os portões seriam executados a cada chamada de ferramenta correspondente, o que não é visível, por isso eles são opt-in.
Antes de qualquer envio, src/redact.ts executa duas passagens: valores sob nomes de campos sensíveis
(password, token, apiKey, authorization, …) são substituídos por completo, e strings com formato
de segredo que sobrevivem no texto livre passam por correspondência de padrões (Bearer …, sk-…,
ts_live_…, formatos de chave da AWS/GitHub/Google, JWTs, cabeçalhos de chave privada, credenciais em
connection strings).
Isto é uma mitigação, não uma permissão. Um segredo que esteja sob um nome de chave não reconhecido e não corresponda a um formato conhecido vai passar. Se essa possibilidade for inaceitável para a sua carga de trabalho, não ative o provedor live.
dsh plugin --profile <profile> add jevcore-dshOu a partir de um checkout:
dsh plugin --profile <profile> add /absolute/path/to/jevcore/packages/dshpackages/dsh importa jevcore pelo nome, então um checkout também precisa do core
resolvível a partir do profile (add /absolute/path/to/jevcore/packages/core).
Depois confirme que a linha foi ativada — a lista de plugins deve mostrar jev como active,
e não failed — e verifique o relatório de inicialização no log.
Para um host que fala MCP, as mesmas três ferramentas ficam disponíveis via stdio:
npx -y jevcore-mcpPara conectá-lo especificamente ao DeepSeek Harness, instale um bundle somente de configuração cujo patch insere o próprio cliente MCP do harness:
- insert:
- id: jev-mcp
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: jev
transport: stdio
command: npx
args: ['-y', 'jevcore-mcp']
env:
TYPESAFE_API_KEY: '<the key>'
failOnStartupError: trueO mapa env não é opcional: o DSH remove todo nome com forma de credencial (qualquer um que contenha KEY, PASSWORD, SECRET ou TOKEN, sem diferenciar maiúsculas) do ambiente que entrega a um servidor iniciado, e só depois mescla este mapa. Uma chave exportada no seu shell nunca chega, e o servidor permanece no mock offline sem relatar erro.
O provedor é escolhido a partir do ambiente:
| Variável | Efeito |
|---|---|
TYPESAFE_API_KEY |
Seleciona a rota TypeSafe quando presente |
OPENROUTER_API_KEY |
Seleciona a rota OpenRouter quando presente e não há chave TypeSafe |
JEV_PROVIDER |
mock, live ou openrouter — sobrepõe a heurística acima |
TYPESAFE_MODEL / OPENROUTER_MODEL |
Id do modelo para a rota selecionada |
TYPESAFE_BASE_URL / OPENROUTER_BASE_URL |
Raiz da API para a rota selecionada |
Sem nenhuma das duas chaves, ele permanece no mock offline. Diferentemente do plugin, o servidor MCP
resolve sua credencial uma única vez na inicialização, então uma chave ausente com
JEV_PROVIDER=live é um erro de inicialização, e não uma surpresa a cada chamada.
O relatório de saída dele vai para stderr, nunca para stdout — em um transporte stdio o stdout é o canal do protocolo, e uma linha perdida ali corromperia o fluxo.
Há duas rotas para o Jev. Ambas chamam os mesmos modelos e ambas retornam as mesmas respostas tipadas; elas diferem em quem detém a sua credencial e quais servidores veem o seu estado.
TypeSafe diretamente — use esta se você tem uma chave de console.typesafe.ai:
- insert:
- id: jev
name: 'jevcore-dsh'
config:
provider: live
apiKeyRef: TYPESAFE_API_KEY # a reference, never the key
model: jev-latestAtravés do OpenRouter — use esta se uma chave TypeSafe for inviável e você
já tiver uma chave do OpenRouter. O OpenRouter serve os
modelos System One no mesmo caminho POST /v1/systemone que a TypeSafe usa, um nível
abaixo da sua própria raiz de API, então esta é a rota documentada para o Jev, e não uma
aproximação dela:
- insert:
- id: jev
name: 'jevcore-dsh'
config:
provider: openrouter
openRouterApiKeyRef: OPENROUTER_API_KEY
model: jev-latest # a bare `jev-*` id, or `typesafe/jev-1.13`A rota é alcançada apontando o @typesafe-ai/sdk oficial para
https://openrouter.ai/api com a sua chave do OpenRouter — a integração documentada
pelo próprio OpenRouter, então não há um segundo cliente para manter em sincronia.
Duas coisas a saber sobre a rota OpenRouter:
- Seu estado vai para o OpenRouter, não para a TypeSafe. Um terceiro diferente, com retenção e logging diferentes. O relatório de inicialização nomeia o endpoint exatamente por esse motivo — leia-o em vez de inferir o destino a partir do nome do provedor.
- Ela retorna um custo, o que a rota da própria TypeSafe não faz, então
usage.costUsdé preenchido aqui e ausente lá.
O id do modelo precisa ser de um System One. O jev-latest puro é o padrão e não
precisa de prefixo; typesafe/ é aceito em um id versionado como typesafe/jev-1.13,
mas não na tag móvel — a rota não aceita typesafe/jev-latest. Qualquer outro id seria
encaminhado a um modelo de chat, que responde com texto livre que este
plugin não consegue interpretar como uma decisão, então ele é recusado antes da chamada em vez de
mal interpretado depois dela.
De qualquer forma, a credencial é resolvida primeiro pelo serviço de credenciais do DSH,
depois pela variável de ambiente com esse nome. Ela é lida a cada chamada, então uma chave adicionada
enquanto o processo está em execução é reconhecida. Ela nunca é registrada em log, nunca é retornada
por uma ferramenta e nunca é escrita na configuração. Cada rota tem sua própria referência
(apiKeyRef e openRouterApiKeyRef) para que as duas não possam compartilhar uma chave por acidente.
@typesafe-ai/sdk é a única dependência opcional; o plugin
carrega e funciona offline sem nenhuma delas, e só precisa daquela referente à rota que você
escolher.
| Chave | Padrão | Significado |
|---|---|---|
provider |
mock |
mock (offline, determinístico, sintético), live (TypeSafe) ou openrouter |
apiKeyRef |
TYPESAFE_API_KEY |
Referência de credencial para a rota live |
openRouterApiKeyRef |
OPENROUTER_API_KEY |
Referência de credencial para a rota openrouter |
baseURL |
https://api.typesafe.ai |
Raiz da API para a rota live. Não-HTTPS é recusado, exceto em loopback |
openRouterBaseURL |
https://openrouter.ai/api |
Raiz da API para a rota openrouter. Mesma regra |
model |
jev-latest |
Enviado com toda requisição. Na rota OpenRouter o padrão puro basta; typesafe/ exige um id versionado como typesafe/jev-1.13, e typesafe/jev-latest não é aceito |
logLevel |
warn |
silent | warn | info | debug |
minConfidence |
0.7 |
Abaixo disto, uma resposta não é acionada |
minProbability |
0.6 |
Abaixo disto, uma decisão não é acionada |
maxStateChars |
por recurso | Substitui o limite de state para todos os recursos. 0 significa "manter o limite declarado" |
gates.safety |
false |
Julga chamadas de ferramenta antes do despacho |
gates.context |
false |
Retém resultados de ferramenta grandes e pouco informativos |
Os limites declarados de state são 16.000 caracteres para as três ferramentas e 8.000 / 6.000 para os
portões de safety e de context. maxStateChars substitui todos eles, e o relatório de inicialização mostra
o valor efetivo em vez do declarado, de modo que o que ele imprime é o que é aplicado.
Os portões aceitam um booleano puro (safety: false) ou um objeto com onUndecided: ask (padrão),
allow ou deny.
ask é uma pergunta, portanto precisa de algo a quem perguntar. Uma implantação que não compõe nenhum
serviço de aprovação não consegue escalar para um humano, e o DeepSeek Harness então recusa a chamada
em vez de executá-la: toda ferramenta com que o portão de safety casa é recusada, o que um operador
vive como o plugin ter quebrado todos os comandos de shell. docs/approval.md tem o
mecanismo, e o README do plugin cobre a visão de implantação.
Um valor desconhecido é recusado no carregamento com uma mensagem que nomeia a chave, em vez de ser silenciosamente ignorado — um erro de digitação na configuração não deve mudar discretamente a postura de privacidade.
O serviço é a superfície principal. É este o ponto de um modelo de decisão: uma decisão de roteamento ou de liberação não deveria custar uma ida e volta ao modelo.
const jev = ctx.get('jev')
const result = await jev.ask({
feature: 'tool:jev_ask',
state: { ticket: 'I was charged twice.' },
questions: {
urgent: { type: 'noul', instructions: 'Does this convey urgency?' },
team: {
type: 'choice',
instructions: 'Which team should handle this?',
criteria: { billing: 'Payments, invoices, refunds', technical: 'Bugs, outages' },
},
},
})result.answers carrega probabilidades e confiança. Decidir o que fazer com elas é trabalho do seu
código — veja src/policy.ts para um exemplo completo com um piso de confiança explícito, em que uma
resposta incerta produz ask em vez de allow.
Três ferramentas, deliberadamente poucas e ortogonais:
jev_ask— um lote de perguntas tipadas sobre um estado.jev_rank— pontua e ordena candidatos segundo um critério, uma pergunta por candidato em uma única ida e volta. As probabilidades são julgamentos independentes por candidato, não uma distribuição.jev_check— esta evidência sustenta esta afirmação? Retornasupported,contradicted,conflicted,insufficient,undecidedouunknown. A contradição tem precedência sobre o suporte, porque uma evidência que ao mesmo tempo sustenta e refuta é um conflito, não um "sim" fraco.
O plugin registra uma skill, typesafe-ai-dsh, que ensina a um agente quando um julgamento
do Jev é a ferramenta certa e quando é um erro de categoria. Ela é registrada
pelo registro de skills em vez de ser entregue como um diretório para um provedor
varrer, então não depende de onde um profile guarda suas skills e
desaparece de forma limpa quando o plugin é removido.
O corpo fica em skills/typesafe-ai-dsh/SKILL.md e é lido no carregamento em vez de
incorporado, de modo que o arquivo que uma pessoa edita é o arquivo que é entregue. Um teste garante
que os dois não possam divergir.
O registro é declarado como uma dependência opcional: um profile que não compõe o subsistema de skills ainda recebe o serviço e as três ferramentas, com um aviso de que a skill foi ignorada.
Com provider: mock, toda resposta é derivada de um hash da pergunta e do estado, então os testes podem
afirmar valores exatos e nenhum socket é aberto. Resultados sintéticos são rotulados como tais em três lugares:
provider: "mock", um nome de modelo mock/jev-synthetic e um campo warning no resultado. Um mock
que pudesse ser confundido com um julgamento real seria pior do que nenhum mock.
Prestação de contas honesta do que foi e do que não foi verificado.
Verificado
- 410 testes passam nos três pacotes (314 core, 66 DSH, 30 MCP), sem acesso à rede e sem
TYPESAFE_API_KEY. A CI limpa a variável e espera que a suíte passe mesmo assim. - A rota OpenRouter é verificada contra a API real.
pnpm --filter jevcore run probe:liveaciona o provedor epnpm --filter jevcore-mcp run smoke:liveaciona toda a superfície MCP — transporte, esquemas de ferramentas, serviço e provedor — contra modelos System One reais (typesafe/jev-1.13-20260917). Um lote de três primitivas retornou umnoulem 0,91, umchoiceem 0,97 e umscorede1.05em uma rubrica de quatro níveis, com uso relatado como{ inputTokens: 469, outputTokens: 68, costUsd: 0.000019698 }. Ojev_rankordenou um runbook de credenciais acima de um guia de faturamento; ojev_checkretornoucontradicted. Ambos os scripts precisam deOPENROUTER_API_KEYe são excluídos da CI. - Os formatos de payload são conferidos contra as próprias definições de tipo dos fornecedores.
test/vendor-conformance.test.tsfixa os tipos de pergunta e resposta deste projeto em ambos os SDKs, de modo que uma divergência em qualquer direção é um erro de compilação, e não uma requisição malformada na única rota que custa dinheiro e transmite dados. Foi essa conferência que encontrouscore.criteriasendo enviado como um mapa com chaves quando a API exige um array ordenado — um defeito que os testes unitários com stub haviam deixado passar o tempo todo. Há também um script que analisava nossos payloads contra os esquemas zod publicados do OpenRouter para a rotaalpha/decisions; tanto o script quanto essa rota não existem mais, porque o provedor OpenRouter agora usa o caminho documentado/v1/systemoneatravés do mesmo cliente que a TypeSafe usa, o que o teste de conformidade já cobre. - O plugin é ativado em um harness em execução e suas ferramentas funcionam. A linha do plugin reporta
active;jev_askretornouurgent=true (0.8307)eteam=billing (0.5027)contra o mock em 1 ms, ejev_checkretornouverdict="insufficient"com suas três probabilidades. Todo resultado carregavaprovider: "mock"e uso zero de tokens, então o caminho padrão não fez nenhuma chamada de rede. - A skill empacotada se registra.
typesafe-ai-dshaparece no catálogo de skills da sessão. - O caminho padrão não faz nenhuma chamada de rede: comprovado espionando
globalThis.fetchao montar o plugin e responder através do serviço, e de novo ao montar o runtime do MCP. - Um portão desativado não registra nenhum event listener, e uma saída negada nunca chega ao provedor.
Configsatisfaz o protocolo Standard Schema que o Cordis exige antes de um plugin iniciar.- Toda API do DSH usada aqui (
ctx.provide,ctx.effect,tools.register,defineTool,tools/pre-execute,tools/post-execute,credentials.resolve) foi conferida contra o runtime instalado antes do uso, e os tipos de payload vêm dos arquivos de declaração instalados.
Não verificado, ou sabidamente quebrado
- A rota TypeSafe está exercitada, mas apenas de forma leve.
packages/core/scripts/probe-live.mjs(pnpm --filter jevcore run probe:typesafe) pergunta à API real três coisas: dez pares claim/evidence cujo veredicto é conhecido de antemão, uma pergunta repetida seis vezes e um noul com um limitecriteria: {true, false}. Duas execuções separadas concordaram — a evidência que sustenta obteve 0.95, a que contradiz 0.10, a que se cala sobre a afirmação 0.03, e a pergunta repetida variou 0.01 ou menos. O limite foi aceito. O que continua sem teste é tudo o que envolve a requisição em vez da requisição em si: o comportamento de cota, limite de requisições e entitlement em uma conta real. - A descrição de
jev_askcarrega um travessão corrompido na build que está em execução no momento. Ela exibebranches on —?routingonde deveria haver um travessão em dash seguido de um espaço. Causa: uma ida e volta UTF-8 no início do desenvolvimento substituiu o terceiro byte do travessão em dash por?. Está corrigido em disco — quatro ocorrências, zero restantes, confirmado tanto no código-fonte quanto na saída da build — mas o processo em execução carregou seu módulo antes da correção e não consegue relê-lo sem reiniciar. O travessão em si é cosmético, mas a desatualização não é: o mesmo processo também não tem nenhuma correção feita desde que iniciou, incluindo o campobandque impede que um 0.51 seja lido como um sim resolvido. - O servidor MCP foi acionado de ponta a ponta por um cliente MCP real via stdio
(
pnpm --filter jevcore-mcp run smoke): handshake, descoberta de ferramentas, três chamadas bem-sucedidas e um resultado de erro para um lote inválido. Ele não foi acionado por nenhum outro host de terceiros. - Comportamento dos portões em tráfego live. Os portões são testados contra respostas sintéticas e formatos reais de payload de hook, mas nenhuma chamada de ferramenta real foi filtrada de ponta a ponta.
- O portão de context não consegue recuperar contexto já gasto. Ele impede que um resultado chegue ao agente; ele não poda nada retroativamente, e o README de qualquer plugin que afirme o contrário deve ser lido com ceticismo.
- Nenhum teste de longa duração ou adversarial. A redação é baseada em padrões e vai deixar passar um formato de segredo não reconhecido.
Três decisões que são fáceis de errar e caras de errar:
Um juiz que não consegue responder não pode significar "permitir". Se o Jev está inacessível, ou responde abaixo do
piso de confiança, os portões se resolvem por onUndecided, que tem padrão ask. A única forma de
obter comportamento fail-open é configurá-lo. O portão de context é a exceção deliberada: ele falha
aberto incondicionalmente, porque perder um resultado real de ferramenta para um veredito fantasma de "irrelevante" é pior
do que manter um resultado pouco informativo.
Nada que o modelo possa dizer altera o portão. Nenhuma ferramenta expõe a configuração dos portões, os limites ou o escopo. Um guarda que o processo vigiado pode reconfigurar não é um guarda.
Uma probabilidade não é uma permissão. O Jev retorna números; src/policy.ts os transforma em
allow/ask/deny segundo limites configurados localmente. Uma resposta que nomeia um valor fora dos
critérios declarados é invalid e nega — a garantia de um modelo de decisão tipado é que ele não pode
retornar um valor não declarado, então uma violação significa que algo a montante está errado.
pnpm install
pnpm run check # typecheck + tests + build
pnpm test # tests onlyNenhum teste exige uma credencial ou uma conexão de rede, e a CI reforça isso executando com
TYPESAFE_API_KEY limpa.
Este projeto é um dos 87 plugins ativamente mantidos do DeepSeek Harness da PerryLink. O registro da família tem 95 plugins — 5 congelados, 3 retirados — e fica recolhido abaixo para que cada README mantenha uma primeira tela curta. Expanda para ver cada linha, com o motivo na coluna Status.
Expandir os 95 plugins
| Plugin | Uma linha | Status |
|---|---|---|
| dsh-aqua-input-check | 水产养殖投入品记录核对(按投入品用量、休药期与起捕间隔核对记录自洽,仅提示差异,不作出定性结论) | |
| dsh-archive-check | 档案归档完整性与保管期限核对(依据《档案法》及配套规定,仅提示差异,不作出定性结论) | |
| dsh-auto-review | Second-model auto-review on the approval chain, fail-closed by default | |
| dsh-autotier | Automatic strong/cheap model-tier routing with deterministic risk guards and a /tier command |
|
| dsh-background-agents | Durable background child agents with a Web UI sidebar, messaging and interrupt | 🚫 RETIRADO — ver o README do repositório |
| dsh-bid-ca-precheck | 投标文件符合性预检(按招标文件逐条核对响应情况,仅提示差异,不作出定性结论) | |
| dsh-bid-qual-check | 投标人资格条件核对(按资格条件与证明材料核对逐条响应,仅提示差异,不作出定性结论) | |
| dsh-budget | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | 🧊 CONGELADO — ver o README do repositório |
| dsh-cert-mcp | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
| dsh-checkpoint-rewind | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
| dsh-claude-move | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | 🧊 CONGELADO — ver o README do repositório |
| dsh-click | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
| dsh-composer-history | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
| dsh-contract-stance | 合同条款立场台账核对(按立场、风险等级与退让底线核对台账自洽,仅提示差异,不作出定性结论) | |
| dsh-customs-doc-check | 报关单证一致性核对(按公开的报关单填制规范核对单证间字段一致性,仅提示差异,不作出定性结论) | |
| dsh-data-quality | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | |
| dsh-defend | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | 🧊 CONGELADO — ver o README do repositório |
| dsh-demurrage-ledger | 滞箱费台账核对(按免箱期与费率核对超期天数与金额的自洽性,仅提示差异,不作出定性结论) | |
| dsh-doublecheck | Engineering-discipline guard: requirements grill, test gates, adversary review | |
| dsh-draw | Unified static-image generation routing for DeepSeek Harness. | 🧊 CONGELADO — ver o README do repositório |
| dsh-drill-script-check | 应急演练脚本核对(按阶段、响应分级、指挥与资源要素核对脚本齐备,仅提示差异,不作出定性结论) | |
| dsh-eia-guide-check | 环评导则适用性核对(按要素、导则名称与执行标准核对台账自洽,仅提示差异,不作出定性结论) | |
| dsh-emergency-plan | 应急预案要素齐备性与条款级页码定位(依据 GB/T 29639-2020 等公开文件,仅提示差异,不作出定性结论) | |
| dsh-essay-rubric-check | 作文量表评分核对(按评分项、原文定位与分值算术核对评分自洽,仅提示差异,不作出定性结论) | |
| dsh-evidence-check | 证据清单齐备性核对(按待证事实与证据要素核对清单自洽,仅提示差异,不作出定性结论) | |
| dsh-export-ctl-check | 出口管制物项核对(按管制清单、最终用途与许可证核对台账齐备,仅提示差异,不作出定性结论) | |
| dsh-fast | Read-only performance diagnostics for DeepSeek Harness. | |
| dsh-fmea-table-check | FMEA 分析表要素齐备性与风险顺序数一致性核对(按公开的 FMEA 方法标准核对表内自洽,仅提示差异,不作出定性结论) | |
| dsh-forecast-penalty | 预测准确率考核核对(按准确率、门槛与考核单价核对考核费用的算术自洽,仅提示差异,不作出定性结论) | |
| dsh-fund-research | Deterministic research reports for Chinese public mutual funds | |
| dsh-github | GitHub PR/issues integration for DSH, every write gated by approval | |
| dsh-gongwen-flow-check | 公文流转与办理时限核对(按公开的公文处理规范核对环节完整性与时限,仅提示差异,不作出定性结论) | |
| dsh-gongwen-word-check | 公文格式要素核对(按公开的党政机关公文格式标准核对版头与主体要素,仅提示差异,不作出定性结论) | |
| dsh-guard-plan-qc | 劳动保护与安全防护用品配置表核对(按公开的配备标准核对品名规格与配置数量,仅提示差异,不作出定性结论) | |
| dsh-hazchem-check | 危险化学品临界量与重大危险源辨识核对(按储存量与临界量核对台账自洽,仅提示差异,不作出定性结论) | |
| dsh-hazplan-check | HAZOP 分析表要素齐备性与偏差推导一致性核对(依据公开的危险与可操作性分析标准,仅提示差异,不作出定性结论) | |
| dsh-hidden-risk-map | 安全隐患台账→《工贸企业重大事故隐患判定标准》(应急管理部令第10号)条款映射提示(仅提示差异,不作出定性结论) | |
| dsh-hs-classify | 商品归类层级一致性核对(按章、品目、子目与商品编号的层级关系核对自洽,仅提示差异,不作出定性结论) | |
| dsh-icd-rule-check | ICD 合并编码与星剑号配对提示(依据 GB/T 14396-2016 与公开的 ICD 使用说明,仅提示差异,不作出定性结论) | |
| dsh-industry-research | Industry research orchestration that seals its deliverables through this plugin's ctx.researchReport.assemble |
|
| dsh-lawcite-adapter | 法条引用与文书要素核对(按名称、条号、原文与效力状态核对引用可核验性,仅提示差异,不作出定性结论) | |
| dsh-laya | Laya typed decisions (noul/choice/score) as a first-class Cordis service and model-visible tools |
|
| dsh-lc-doc-check | 信用证单据条款核对(按单据种类、份数、期限与不符点核对交单自洽,仅提示差异,不作出定性结论) | |
| dsh-learning-gap-check | 能力差距与培养计划核对(按能力等级差、培养措施与完成期限核对台账闭环,仅提示差异,不作出定性结论) | |
| dsh-library | Local document knowledge base for DeepSeek Harness. | |
| dsh-local-ai | Local-model (Ollama) integration for DeepSeek Harness. | |
| dsh-lsp-actions | LSP diagnostics, formatting, completion, code actions and rename over language servers | |
| dsh-mask | PII masking middleware: anonymize at the model boundary, restore at the display layer | |
| dsh-mcp-panel | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors | |
| dsh-medrec-qc | 病案首页形式质控与逻辑矛盾提示(依据国卫办医发〔2016〕24号等公开文件,仅提示差异,不作出定性结论) | |
| dsh-memento | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | |
| dsh-nsfc-form-check | 国家自然科学基金申请书形式审查与匿名化提示(依据《国家自然科学基金条例》与申请人导入的当年指南,仅提示差异,不作出定性结论) | |
| dsh-nurse-record-check | 护理记录时限、签名与评估表完整性校验(依据《病历书写基本规范》等公开文件,仅提示差异,不作出定性结论) | |
| dsh-observe | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | |
| dsh-origin-rvc-check | 原产地区域价值成分核对(按 RVC 定义式与门槛核对原产地判定自洽,仅提示差异,不作出定性结论) | |
| dsh-ota-review-check | 在线点评回复台账核对(按回复时限、问题分类与整改状态核对台账闭环,仅提示差异,不作出定性结论) | |
| dsh-output-styles | Claude Code outputStyles-equivalent runtime style switching | |
| dsh-paper-doc-adapter | 试卷解析结构核对(按题型、答案、分值与 yotta 标识核对试卷结构自洽,仅提示差异,不作出定性结论) | |
| dsh-permission-rules | Claude Code-style declarative allow/deny/ask permission rules with audit | |
| dsh-permit-report-check | 行政许可办理核对(按申请材料、法定时限与决定记录核对台账闭环,仅提示差异,不作出定性结论) | |
| dsh-pipeline-check | 项目全流程文件链条核对(按环节先后与金额口径核对链条自洽,仅提示差异,不作出定性结论) | |
| dsh-pleading-draft | 起诉状要素齐备性核对(按诉请、事实、证据、法条四要素核对文书齐备,仅提示差异,不作出定性结论) | |
| dsh-plugin-doctor | Zero-dependency static + sandbox smoke detector for DSH plugins | |
| dsh-plugin-guide | Plugin-development knowledge base as an on-demand agent skill | |
| dsh-plugin-kit | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
| dsh-plugin-upgrade | One-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card | |
| dsh-policy-brief-draft | 政策专报要素核对(按观点、依据、出处与建议核对专报齐备,仅提示差异,不作出定性结论) | |
| dsh-power-loss-split | 线损电量拆分与考核表核对(依据公开的线损计算口径,仅提示差异,不作出定性结论) | |
| dsh-power-ticket-check | 电力工作票要素齐备性与签发许可顺序核对(依据现行电力安全工作规程,仅提示差异,不作出定性结论) | |
| dsh-ppap-check | PPAP 提交要素齐备性核对(按公开的 PPAP 手册与提交等级核对要素齐备与版本填写,仅提示差异,不作出定性结论) | |
| dsh-protest-deadline | 质疑与投诉期限核对(按公开的政府采购质疑投诉规定核对期限与台账自洽,仅提示差异,不作出定性结论) | |
| dsh-railway-window | 铁路施工天窗台账核对(按时间窗、时长算术与命令号核对台账自洽,仅提示差异,不作出定性结论) | |
| dsh-reach | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console | 🧊 CONGELADO — ver o README do repositório |
| dsh-repair-order-qc | 维修工单结算核对(按项目金额、配件工时合计与结算总额核对算术自洽,仅提示差异,不作出定性结论) | |
| dsh-research-report | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
| dsh-review-reply-check | 审稿意见逐条回应覆盖核对(按意见与回应一一对应核对覆盖完整性,仅提示差异,不作出定性结论) | |
| dsh-rulefile-check | 规则库文件自检核对(按条款引用纪律与效力上限核对规则库自身合规,仅提示差异,不作出定性结论) | |
| dsh-safety-brief-check | 安全技术交底记录要素齐备性与签字闭环核对(依据公开的安全生产法规与检查标准,仅提示差异,不作出定性结论) | |
| dsh-score | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
| dsh-session-pin | Pin sessions in the Web sidebar with durable ordering | 🚫 RETIRADO — ver o README do repositório |
| dsh-session-sync | Cross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store. | |
| dsh-site-log-check | 监理日志跨日连续性与旁站覆盖提示(依据 GB/T 50319-2013 等公开文件,仅提示差异,不作出定性结论) | |
| dsh-skill-pack-security | Security-audit skill pack: secret scan, dependency and supply-chain review | |
| dsh-soe-decision-check | 三重一大决策台账核对(按前置研究、会议审议与决议记录核对程序留痕,仅提示差异,不作出定性结论) | |
| dsh-soilwater-check | 土壤与地下水监测台账核对(按点位、监测项目、限值与超标判定核对台账自洽,仅提示差异,不作出定性结论) | |
| dsh-sop-sync-check | 作业规程与 FMEA/控制计划一致性核对(按编号与版本核对三份文件是否同步,仅提示差异,不作出定性结论) | |
| dsh-spc-gbt-adapter | 控制图常数与过程能力指数核对(按 GB/T 4091 的常规控制图常数表核对控制限与 Cp/Cpk 的自洽性,仅提示差异,不作出定性结论) | |
| dsh-talk | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | |
| dsh-team-rooms | Cross-session team rooms: shared message bus, task board and timeline | 🚫 RETIRADO — ver o README do repositório |
| dsh-tender-extract | 招标文件条款摘录核对(按出处与原文逐字核对摘录完整性,仅提示差异,不作出定性结论) | |
| dsh-tender-matrix | 评标因素评分矩阵核对(按分值上限与合计核对矩阵自洽,仅提示差异,不作出定性结论) | |
| dsh-test-drive | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
| dsh-ticktick | TickTick/Dida365 task bridge: session-header panel + 11 tools | |
| dsh-translate | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
| dsh-warranty-calc | 质保期与索赔金额核对(按质保期月数与里程、索赔金额算式核对自洽,仅提示差异,不作出定性结论) |
Apache License 2.0 © 2026 jevcore contributors
TypeSafe, Jev e System One são marcas registradas da TypeSafe AI. Este projeto é uma integração independente e não é afiliado à TypeSafe AI nem endossado por ela.