Skip to content

CH 04 · Conheça a Web UI

Tamanho~3.890 palavrasTempo~15 minPré-requisitoCH 03 já em execuçãoNívelReproduzível

Objetivo do Capítulo

No capítulo anterior você instalou o dsh, preencheu a Key, escolheu um workspace e executou sua primeira tarefa. Este capítulo faz uma pausa para ler a interface: o que cada área faz, quais opções estão escondidas no painel de configurações, o que cada um dos três níveis de permissão permite ao Agent fazer, e como ler a visualização Trajectory. Quando terminar, você vai perceber que a frase "cada execução é rastreável" do CH 02 está bem ali no canto superior esquerdo da interface — a uma aba de distância.

Layout da Interface: Familiarize-se

Este é o screenshot de tela cheia que tirei depois de executar a primeira tarefa, com as principais áreas anotadas:

Layout da Web UI (teste local, anotado)

Responsabilidades das áreas:

ÁreaO que fazNotas
EsquerdaLista de workspacesUm workspace por diretório de projeto; escolha o workspace aqui (abra a lista e escolha um, ou "⊕ New Session" para criar); embaixo fica o botão Settings
CentroÁrea de sessãoOnde você envia mensagens, o Agent trabalha e os resultados são mostrados; no topo ficam as abas Conversation / Trajectory
InferiorÁrea de entradaÀ esquerda do botão Send fica o anel de ocupação de contexto; mais à esquerda estão os seletores Model e Permission; abaixo fica a barra de estatísticas

Painel de Configurações: A Engrenagem no Canto Inferior Esquerdo

O botão Settings fica no canto inferior esquerdo da interface. Quando aberto, o lado esquerdo lista categorias de recursos — General Settings / Models / Plugins / Agent Presets:

Painel de configurações: General Settings (teste local)

Primeiro, a página General Settings: idioma, aparência e comportamento da tecla Enter enquanto ocupado estão todos aqui, mais dois importantes — Permission (o modo de permissão padrão para novas sessões; o meu é Workspace Write) e Agent Preset (atualmente "Standard"). O Agent Preset aqui é os quatro modos de runtime (Standard / Code / Minimal / Creator) que cobrimos no CH 02 — o que você escolhe aqui é "qual combinação de plugins novas sessões usarão por padrão". Note a linha abaixo: "Takes effect for newly created sessions. Already-running sessions keep the preset they started with." — padrões definidos em General Settings só se aplicam a novas sessões, uma regra que você vai encontrar várias vezes.

Agora olhe para Settings → Models: a API Key está preenchida no card DeepSeek (se preenchida, aparece como configurada), e no final você pode add a Provider (usando um diretório embutido como Anthropic ou OpenAI) e add a Custom Provider (para seu próprio gateway ou modelo local — preencha Provider ID, endereço da API, protocolo, chave e pelo menos um modelo). Mudanças no roteamento de modelos entram em vigor imediatamente; sem necessidade de reiniciar o serviço. A Key é apenas escrita: depois de salvar, a página mostra apenas um descritor mascarado, e o texto puro só vai para $DSH_HOME/.credentials.yaml localmente — o mesmo caminho mencionado no CH 03.

Três Níveis de Permissão: O que Pode Tocar no Seu Computador

Esta é a coisa que você deve entender logo de cara sobre o dsh. O sandbox de arquivos oficial é definido como três modos:

Três níveis de permissão = sandbox de arquivos (ilustração)

Compare com o seletor de permissão à esquerda da caixa de entrada na sua interface (no painel que aparece depois de escolher um workspace):

Depois de escolher workspace: seletor de modelo e permissão (teste local)

Os três níveis em palavras simples:

PermissãoO que pode fazerQuando usar
read-onlyApenas leitura, não consegue alterar um único byteAnálise somente leitura, revisão de código, Q&A puro
workspace-write (padrão)Gravável no workspace + área temporária do sistema; fora do workspace, exibe um diálogo e pergunta antesTrabalho diário, a grande maioria dos casos
danger-full-accessLeitura/escrita total em qualquer lugar, sem fronteiraPara tarefas de manutenção de sistema que realmente precisam de mudanças globais; o interruptor exigirá uma segunda confirmação

Mais uma observação sobre a semântica oficial: o limite de escrita para workspace-write é "a raiz do workspace + a área temporária prometida pelo backend"; read-only recusa escritas de qualquer forma; danger-full-access ignora completamente o isolamento. Note que permissões regem apenas efeitos no sistema de arquivos — visibilidade de rede e processos não é coberta por essa definição.

Para o trabalho diário, mantenha o padrão workspace-write, familiarize-se primeiro, e considere o terceiro nível apenas quando precisar realmente agir globalmente.

Trocar vem em dois sabores, não confunda:

  • Apenas para esta sessão, temporariamente: digite /permission na caixa de entrada e escolha um nível. Afeta apenas a sessão atual.
  • Mudar o padrão (para que futuras novas sessões o usem): vá em Settings → General → Permission. Afeta apenas sessões criadas depois; sessões já em execução ficam intocadas.

Modelo e Reasoning Effort

No seletor de modelo, você vê os modelos configurados (depois de preencher a Key, os da DeepSeek aparecem automaticamente). Há uma regra oficial explícita: o modelo escolhido no seletor de modelo é o padrão para novas sessões; sessões que já enviaram requests manterão o modelo que estavam usando quando iniciaram, e não mudarão com o padrão (a sessão registra seu próprio modelo, mudar o padrão não reescreve silenciosamente requests passados).

Então se você quer que sessões diferentes usem modelos diferentes (trabalho diário leve em flash, tarefas pesadas em pro ou mais forte), basta abrir novas sessões — cada uma é independente.

Reasoning effort é outro botão; o modelo oficial DeepSeek tem quatro níveis:

NívelCaracterística
offDesativa pensamento, mais rápido e barato
lowPensamento leve, suficiente para Q&A simples
high (padrão)Raciocínio profundo, mais preciso em tarefas complexas, ligeiramente mais lento e mais caro
maxIntensidade máxima, apenas para o trabalho mais difícil

Para o trabalho diário, mantenha high; se achar lento, diminua. O conteúdo mais profundo sobre "o que cada nível realmente afeta e como mudar" é coberto no CH 06. Mudanças de modelo também entram em vigor no próximo request, sem necessidade de reiniciar.

Trajectory: O "Rastreável" do CH 02 Está Escondido Aqui

Lembra daquela frase "cada execução é rastreável" do CH 02? Olhe para o canto superior esquerdo da interface — Conversation / Trajectory ficam lado a lado. Clique em Trajectory e o registro completo de execução dessa rodada é exibido diante de você. Veja este screenshot real:

Visualização Trajectory: replay passo a passo de uma tarefa (teste local)

Como ler isso:

  • No meio está uma timeline; ASSISTANT (think/speak) e TOOL (chamadas de ferramentas) se alternam, e de cima para baixo está a ordem real em que o Agent trabalhou.
  • Para cada linha TOOL: o nome da ferramenta fica à esquerda (pwsh / read / web_search), e à direita estão os parâmetros reais enviados e os principais resultados retornados.
  • Clique em qualquer linha TOOL, e o painel direito expande os detalhes dessa etapa: Summary / Payload / Result / Schema / Timing, além de Status (Completed) e Hierarchy.
  • No topo há uma visão geral de Duration / Turns / Calls, mais uma caixa de busca para encontrar etapas por palavra-chave.

Na minha tarefa desta vez você pode ver o Agent realmente tropeçando: primeiro leu config, leu arquivos, e quando tentou usar pwsh para buscar diretamente os documentos oficiais, a conexão SSL falhou; ele disse "Outbound HTTPS from pwsh is blocked", então mudou para web_search para continuar procurando — todos esses tropeços estão registrados na Trajectory. Isso é "rastreável".

A barra de estatísticas inferior é o outro lado da mesma moeda:

MétricaSignificado
Turns · StepsQuantas etapas o Agent deu nesta rodada
LLM time / Tool call timeTempo gasto "pensando" e "fazendo"
First-token mean / tok/sVelocidade de saída
Cache hitA proporção de tokens de entrada que acertaram o cache de contexto (veja abaixo)
Input / Output tokTokens alimentados ao modelo e produzidos pelo modelo nesta rodada

Cache de Contexto: Por que a Taxa de Acerto É Tão Alta

O "cache hit" na barra de estatísticas não é um recurso do dsh; por trás dele está o cache de contexto em disco da DeepSeek API. A abordagem oficial: armazenar conteúdo esperado para ser reutilizado em um array de discos distribuídos; quando a próxima entrada contém uma porção repetida, lê do cache em vez de recomputar — reduzindo latência e custo.

A cobrança para tokens de entrada que acertam o cache é muito mais barata do que para misses. Tome deepseek-v4-flash como exemplo: no preço oficial atual, entrada com cache-hit custa cerca de 0,1 yuan por milhão de tokens, enquanto entrada com cache-miss custa cerca de 1,5–3 yuan por milhão de tokens (dependendo de horário fora do pico / pico) — essa porção em cache da entrada custa apenas uma fração do custo do miss.

Por que a taxa de acerto é tão alta em uma única sessão? Porque cada entrada de etapa na mesma sessão inclui o system prompt anterior, definições de ferramentas e histórico de conversa — um prefixo repetido estável. A primeira chamada não tem nada em cache, mas a partir da segunda, o segmento anterior é cacheado. Na minha tarefa tive 160K tokens de entrada com alta taxa de acerto, então apenas uma pequena porção foi cobrada pelo preço cheio de miss. É por isso também que tarefas de Agent são melhor feitas na mesma sessão — quanto mais longa a sessão, mais você economiza depois.

Anel de Ocupação de Contexto

O indicador circular à esquerda do botão Send na área de entrada mostra a razão de ocupação da janela de contexto da sessão atual. Veja o teste real:

Anel de ocupação de contexto: parte inferior da área de entrada (teste local)

O anel na imagem mostra "2% context used" — a sessão acabou de começar, quase nenhum uso. A janela de contexto é finita; conforme o Agent executa tarefas longas, o histórico de conversa e os resultados de ferramentas se acumulam, e o anel permite ver de relance quanto espaço resta. Quando estiver quase cheio, você tem três opções: iniciar uma nova sessão, pedir ao Agent para encerrar com um resumo, ou simplesmente digitar /compact na caixa de entrada — ele condensa as informações-chave da conversa atual em um resumo mais enxuto, e a IA continua trabalhando com esse resumo. É como colocar a sessão em uma dieta, sem precisar recomeçar.

Execute a Primeira Tarefa do Início ao Fim

O exemplo de tarefa no README oficial é este:

Summarize this repository and identify its main packages.

Que traduzido é o que você executou no capítulo passado: resumir o repositório do DeepSeek harness e identificar seus módulos principais. Então você já executou o exemplo oficial.

Ao executar, note como a interface "abre" o processo: o Agent primeiro injeta contexto, planeja, depois chama ferramentas (lê arquivos, executa comandos, consulta coisas), cada etapa visível; para ações que precisam de aprovação, exibe um diálogo. Depois que termina, mude para a aba Trajectory e faça replay, depois confira os números com a barra de estatísticas — a primeira tarefa geralmente tem uma entrada enorme (a minha foi 160K tokens), mas com alta taxa de acerto do cache, o custo real é muito baixo.

O que você aprendeu neste capítulo

Você passa se conseguir completar os itens abaixo:

  • [ ] Descrever o que cada área da Web UI (esquerda / centro / inferior) é, e onde escolher um workspace
  • [ ] Conhecer as categorias do painel de configurações (General Settings / Models / Plugins / Agent Presets), e que "padrões só se aplicam a novas sessões"
  • [ ] Explicar a diferença entre os três níveis de permissão read-only / workspace-write / danger-full-access, e por que usar o segundo para o trabalho diário
  • [ ] Saber que /permission muda temporariamente a permissão da sessão atual, enquanto Settings → General → Permission muda o padrão
  • [ ] Saber que a escolha do seletor de modelo é o padrão para novas sessões; sessões que já rodaram mantêm seu modelo original
  • [ ] Ler a visualização Trajectory: timeline ASSISTANT / TOOL + painel de detalhes à direita + barra de estatísticas
  • [ ] Explicar o que é "cache hit", e por que sessões longas têm alta taxa de acerto

Open Source · MIT · Community Driven