DeepSeek Harness: Primeiro Uso

Última atualização: 2026-08-31

Usar DeepSeek Harness pela primeira vez é como sentar em um carro inteligente pela primeira vez — o painel parece complexo, mas uma vez que você sabe onde estão o volante e o acelerador, pode começar a dirigir. Esta aula te leva do zero à sua primeira conversa com o Agent DSH.

💡 Dica: O Agent DSH não é um chatbot, mas um assistente inteligente que pode operar arquivos, executar comandos e pesquisar código. Sua capacidade central está em "agir" em vez de apenas "falar."

📋 Pré-requisitos: Ter completado 02-install.md, Web UI do DSH iniciada com sucesso

1. O Que Você Vai Aprender

Fluxo de Trabalho Web UI


2. Introdução à Interface da Web UI

(1) Quatro Áreas Principais

A Web UI do DSH consiste em quatro áreas centrais:

pt-br Layout da Web UI

100%
graph TB
    subgraph DSH Web UI
        A[Esquerda: Lista de Sessões]
        B[Centro: Área de Chat]
        C[Direita: Painel de Ferramentas]
        D[Topo: Barra de Controle<br/>Modo + Modelo + Configurações]
    end
    D --> B
    A --> B
    B --> C
Área Posição Função
Lista de Sessões Esquerda Mostra histórico de sessões; suporta criar, pesquisar, excluir
Área de Chat Centro Área de interação principal; enviar mensagens, ver respostas, resultados de execução de ferramentas
Painel de Ferramentas Direita Exibição em tempo real de detalhes de chamadas de ferramentas, ações de aprovação, logs de execução
Barra de Controle Topo Troca de modo, seleção de modelo, entrada de configurações

(2) Detalhes da Barra de Controle Superior

A barra de controle superior contém:

TEXT 📖 Somente leitura
┌──────────────────────────────────────────────────┐
│ [Standard ▼]  [deepseek-chat ▼]  ⚙️  📋  ❓  │
└──────────────────────────────────────────────────┘
   ↑Seleção de Modo   ↑Seleção de Modelo   ↑Config ↑Logs ↑Ajuda

(3) Detalhes da Área de Chat

A área de chat é a zona de interação central. Cada mensagem pode conter:

TEXT 📖 Somente leitura
┌─────────────────────────────────────────┐
│ 👤 Alice                                │
│ Me ajude a analisar a estrutura do      │
│ projeto no diretório atual              │
├─────────────────────────────────────────┤
│ 🤖 Agent                                │
│ 🔍 Using tool: search                   │
│   → Searching in /home/alice/project... │
│ ✅ Found 15 files                       │
│                                         │
│ Este projeto é uma app Express.js.      │
│ Estrutura principal:                    │
│ - src/routes/ — Definições de rotas     │
│ - src/models/ — Modelos de dados        │
│ - src/middleware/ — Middleware           │
└─────────────────────────────────────────┘

3. Selecionando um Workspace

(1) Propósito do Workspace

O workspace é o diretório raiz para operações do Agent. Todas as operações de arquivo e comandos Shell são relativas a ele:

pt-br Selecionar Workspace

BASH
# O workspace determina o "campo de visão" do Agent
/home/alice/project     ← O Agent só pode ver arquivos neste diretório
├── src/
├── package.json
└── README.md

(2) Selecionando um Workspace

Na primeira inicialização, DSH solicita que você selecione um workspace:

TEXT 📖 Somente leitura
📂 Select Workspace
┌──────────────────────────────────────┐
│ ○ /home/alice/project               │
│ ○ /home/alice/another-repo          │
│ ● Enter custom path...              │
└──────────────────────────────────────┘

Você também pode trocar a qualquer momento nas configurações:

BASH
# Pré-configurar workspace via variável de ambiente
export DSH_WORKSPACE="/home/alice/my-project"

# Ou na Web UI: Settings → Workspace → Change

(3) Workspace e Sandbox

O workspace trabalha com o mecanismo de sandbox para limitar o escopo de operações do Agent:

100%
graph TB
    W[Workspace /home/alice/project] -->|Permitido| A1[Ler Arquivos]
    W -->|Permitido| A2[Editar Arquivos]
    W -->|Permitido| A3[Executar Comandos]
    OUT[Fora do Workspace /etc/passwd] -->|Negado| B1[Ler]
    OUT -->|Negado| B2[Editar]

4. Primeira Conversa

(1) Deixe o Agent Analisar um Repositório

Após a seleção do workspace, enviamos nossa primeira mensagem:

pt-br Primeira Conversa

TEXT 📖 Somente leitura
Placeholder for user input

Processo completo de resposta do Agent:

TEXT 📖 Somente leitura
🤖 Agent: Vou te ajudar a analisar este projeto.

🔍 Using tool: search
  → Pattern: *
  → Path: /home/alice/project
  → Max depth: 3

🔍 Using tool: file_edit (read)
  → File: package.json
  → Action: read

📊 Resultados da Análise:

1. Stack Tecnológico:
   - Runtime: Node.js 20.x
   - Framework: Express 4.18
   - Database: PostgreSQL (pg 8.12)
   - Testing: Jest 29.x

2. Estrutura de Diretórios:
   src/
   ├── routes/    — 8 arquivos de rotas
   ├── models/    — 5 modelos de dados
   ├── middleware/ — 3 middleware
   └── utils/     — Funções utilitárias

3. Sugestões:
   - Faltam definições de tipos TypeScript
   - Recomendo adicionar camada src/services/ para separar lógica de negócio

(2) Processo de Execução de Ferramentas do Agent

Cada chamada de ferramenta é exibida em tempo real no painel de ferramentas à direita:

pt-br Painel de Ferramentas

TEXT 📖 Somente leitura
│                                                  │
│ 🔍 search                                        │
│ ├─ Status: ✅ Completo                           │
│ ├─ Duração: 0.3s                                 │
│ └─ Arquivos encontrados: 23                      │
│                                                  │
│ 📄 file_edit (read)                              │
│ ├─ Status: ✅ Completo                           │
│ ├─ Duração: 0.1s                                 │
│ └─ File: package.json (1.2KB)                    │
│                                                  │
│ 📊 Total de ferramentas: 2                       │
│ 📊 Tempo total: 0.4s                             │
└──────────────────────────────────────────────────┘

(3) Pipeline de Execução de Ferramentas

Cada chamada de ferramenta passa por três estágios:

100%
graph LR
    A[pre-execute<br/>Validação de Parâmetros<br/>Verificação de Permissão] --> B[execute<br/>Execução Real]
    B --> C[post-execute<br/>Processamento de Resultado<br/>Registro de Log]
TYPESCRIPT
// Pseudocódigo do pipeline de execução de ferramentas
async function executeTool(tool, params) {
  // 1. pre-execute: validação + aprovação
  await preExecute(tool, params);
  
  // 2. execute: execução real
  const result = await tool.execute(params);
  
  // 3. post-execute: registro de log
  await postExecute(tool, params, result);
  
  return result;
}

5. Mecanismo de Popup de Aprovação

(1) Por Que a Aprovação É Necessária

O Agent tem poderosas capacidades operacionais (editar arquivos, executar comandos), mas operações impróprias podem causar danos. O mecanismo de aprovação permite que os usuários confirmem antes que o Agent execute operações perigosas.

pt-br Mecanismo de Popup de Aprovação

▶ Exemplo 2:

Quando o Agent quer editar um arquivo, a Web UI mostra um diálogo de aprovação:

TEXT 📖 Somente leitura
┌─ ⚠️ Aprovação Necessária ───────────────────────┐
│                                                   │
│ O Agent quer:                                     │
│ 📝 Editar arquivo: src/index.ts                   │
│                                                   │
│ Mudanças:                                         │
│ - Linha 12: Adicionar declaração de import        │
│ - Linha 45: Modificar tratador de erro            │
│                                                   │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐           │
│ │  ✅ Permitir │ │ 🔁 Sempre│ │  ❌ Negar │           │
│ └──────────┘ └──────────┘ └──────────┘           │
└───────────────────────────────────────────────────┘

Significado das três opções:

Opção Significado Caso de Uso
Permitir Permitir desta vez; ainda requer aprovação na próxima Operação única
Sempre Sempre permitir este tipo de operação; sem mais popups Tipos de operação confiáveis
Negar Negar esta operação Operações indesejadas

(3) Configuração de Política de Aprovação

Você pode pré-configurar políticas de aprovação nas configurações:

YAML
# dsh.config.yaml
approval:
  # Leituras de arquivo: sempre permitir
  file_read: always
  
  # Edições de arquivo: requer aprovação
  file_edit: ask
  
  # Comandos Shell: baseado no nível de perigo
  shell:
    safe_commands: always     # ls, cat, grep, etc.
    unsafe_commands: ask      # rm, chmod, sudo, etc.
    dangerous_commands: deny  # rm -rf /, dd, etc.
  
  # Operações de busca: sempre permitir
  search: always

(4) Relação entre Modo Sandbox e Aprovação

Modo Sandbox Comportamento de Aprovação Nível de Risco
strict Todas as operações requerem aprovação 🟢 Seguro
permissive Apenas operações perigosas requerem aprovação 🟡 Moderado
off Sem aprovação; Agent opera livremente 🔴 Alto risco
BASH
# Configurar modo sandbox
export DSH_SANDBOX=strict    # Mais seguro
export DSH_SANDBOX=permissive # Padrão
export DSH_SANDBOX=off        # Não recomendado

6. Prática: Uma Interação Completa com o Agent

(1) Descrição do Cenário

Alice quer que o Agent adicione um endpoint de health check ao seu projeto.

pt-br Interação Completa com o Agent

▶ Exemplo 2:

TEXT 📖 Somente leitura
👤 Alice: Crie health.ts em src/routes/, adicione um endpoint GET /health
        que retorna { status: "ok", timestamp: Date.now() }

🤖 Agent: Vou criar o endpoint de health check para você.

📝 Using tool: file_edit
  → Action: create
  → Path: src/routes/health.ts
  → Content: 
    import { Router } from 'express';
    const router = Router();
    router.get('/health', (_req, res) => {
      res.json({ status: 'ok', timestamp: Date.now() });
    });
    export default router;

⚠️ Aprovação Necessária: Criar arquivo src/routes/health.ts
  → [Alice clica Permitir]

✅ Arquivo criado: src/routes/health.ts

Agora precisamos registrar esta rota em app.ts:

📝 Using tool: file_edit
  → Action: edit
  → Path: src/app.ts
  → Changes: 
    + import healthRouter from './routes/health';
    + app.use('/health', healthRouter);

⚠️ Aprovação Necessária: Editar arquivo src/app.ts
  → [Alice clica Permitir]

✅ Arquivo editado: src/app.ts

Pronto! Endpoint de health check adicionado. Teste em GET /health.

▶ Exemplo 3:

TEXT 📖 Somente leitura
┌─ Painel de Ferramentas ────────────────────────┐
│ 📝 file_edit (create)                            │
│ ├─ Path: src/routes/health.ts                    │
│ ├─ Status: ✅ Aprovado & Completo                │
│ └─ Duração: 0.2s                                 │
│                                                   │
│ 📝 file_edit (edit)                              │
│ ├─ Path: src/app.ts                              │
│ ├─ Changes: +2 linhas                            │
│ ├─ Status: ✅ Aprovado & Completo                │
│ └─ Duração: 0.1s                                 │
└──────────────────────────────────────────────────┘

7. Gerenciamento de Sessões

(1) Criando uma Nova Sessão

TEXT 📖 Somente leitura
Lista de sessões à esquerda → Clique no botão + → Nova sessão

Sessões são nomeadas automaticamente (com base no conteúdo da primeira conversa), ou podem ser renomeadas manualmente.

pt-br Gerenciamento de Sessões

(2) Trocando de Sessão

Clique em diferentes sessões na lista de sessões à esquerda para trocar. Cada sessão tem independente:

(3) Persistência de Sessão

Os logs de sessão do DSH usam um modo append-only:

pt-br Log de Sessão

TYPESCRIPT
// Cada SessionEvent é automaticamente persistido
interface SessionEvent {
  type: 'user_message' | 'agent_message' | 'tool_call' | 'tool_result' | 'approval';
  timestamp: number;
  data: Record<string, unknown>;
}

Após fechar o navegador, os dados da sessão não são perdidos — basta reabrir a Web UI para restaurá-los.

pt-br Sandbox e Workspace


❓ Perguntas Frequentes

P E se o Agent não responder?
R Verifique: 1) A API Key está configurada corretamente; 2) A rede está conectada ao endpoint LLM; 3) Há mensagens de erro no painel de ferramentas à direita. Você pode tentar reiniciar o DSH.
P Os popups de aprovação são muito frequentes. Como posso reduzi-los?
R Configure tipos de operação confiáveis como always nas configurações, ou mude para o modo sandbox permissive. Não recomendamos usar o modo off em ambientes não isolados.
P O Agent modificou o arquivo errado. O que devo fazer?
R Os efeitos colaterais do DSH são reversíveis. Encontre a operação correspondente no painel de ferramentas e clique no botão de rollback. Você também pode restaurar para qualquer ponto no tempo através da visualização Trajectory.
P Como posso ver o que o Agent está executando atualmente?
R O painel de ferramentas à direita mostra o status da chamada de ferramenta atual em tempo real. Se o Agent estiver travado, o painel exibirá o motivo específico da espera (ex.: aguardando aprovação, timeout de rede, etc.).
P Posso trocar o workspace se tiver selecionado o errado?
R Sim. Clique em Settings → Workspace → Change no topo para trocar. O histórico de conversas existente não é afetado, mas operações de arquivo subsequentes serão baseadas no novo workspace.
P A Web UI suporta múltiplos usuários simultaneamente?
R DSH usa modo de usuário único por padrão. Acesso multi-usuário requer iniciar instâncias DSH separadas (em portas diferentes) para cada usuário, ou aguardar suporte oficial multi-usuário.

📖 Resumo


📝 Exercícios

1. ⭐ Básico: Inicie a Web UI do DSH, selecione um workspace e envie ao Agent "Me ajude a ver o conteúdo do package.json do projeto." Registre quais ferramentas o Agent usou.

2. ⭐⭐ Intermediário: Peça ao Agent para criar um arquivo hello-dsh.txt no workspace com o conteúdo "Hello, DSH!". Observe o popup de aprovação, tente tanto Permitir quanto Negar, e registre os diferentes comportamentos subsequentes.

3. ⭐⭐⭐ Desafio: Configure o modo sandbox permissive e peça ao Agent para completar simultaneamente três operações: 1) Criar um novo arquivo; 2) Editar um arquivo existente; 3) Executar o comando Shell ls -la. Registre quais operações acionaram popups de aprovação e quais não acionaram, e analise por quê.

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%