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.
📋 Pré-requisitos: Ter completado 02-install.md, Web UI do DSH iniciada com sucesso
1. O Que Você Vai Aprender
- Funções e layout das quatro áreas principais da Web UI
- Seleção e propósito do workspace
- Fluxo completo da sua primeira conversa com o Agent
- Processo de execução de ferramentas pelo Agent e visualização
- Mecanismo de popup de aprovação e políticas de segurança
2. Introdução à Interface da Web UI
(1) Quatro Áreas Principais
A Web UI do DSH consiste em quatro áreas centrais:

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:
┌──────────────────────────────────────────────────┐
│ [Standard ▼] [deepseek-chat ▼] ⚙️ 📋 ❓ │
└──────────────────────────────────────────────────┘
↑Seleção de Modo ↑Seleção de Modelo ↑Config ↑Logs ↑Ajuda
- Seleção de Modo: Standard / PTC / Minimal / Creative
- Seleção de Modelo: Modelo LLM atual
- Configurações: API Key, endpoints, política de sandbox, etc.
- Logs: Ver logs de sessão (visualização Trajectory)
- Ajuda: Atalhos de teclado, links de documentação
(3) Detalhes da Área de Chat
A área de chat é a zona de interação central. Cada mensagem pode conter:
┌─────────────────────────────────────────┐
│ 👤 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:

# 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:
📂 Select Workspace
┌──────────────────────────────────────┐
│ ○ /home/alice/project │
│ ○ /home/alice/another-repo │
│ ● Enter custom path... │
└──────────────────────────────────────┘
Você também pode trocar a qualquer momento nas configurações:
# 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:
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:

Placeholder for user input
Processo completo de resposta do Agent:
🤖 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:

│ │
│ 🔍 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:
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]
// 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.

▶ Exemplo 2:
Quando o Agent quer editar um arquivo, a Web UI mostra um diálogo de aprovação:
┌─ ⚠️ 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:
# 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 |
# 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.

▶ Exemplo 2:
👤 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:
┌─ 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
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.

(2) Trocando de Sessão
Clique em diferentes sessões na lista de sessões à esquerda para trocar. Cada sessão tem independente:
- Histórico de conversas
- Configurações de workspace
- Registros de execução de ferramentas
(3) Persistência de Sessão
Os logs de sessão do DSH usam um modo append-only:

// 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.

❓ Perguntas Frequentes
always nas configurações, ou mude para o modo sandbox permissive. Não recomendamos usar o modo off em ambientes não isolados.📖 Resumo
- A Web UI consiste em quatro partes: lista de sessões, área de chat, painel de ferramentas e barra de controle
- O workspace determina o escopo de operações do Agent; você deve selecionar um no primeiro uso
- O Agent executa operações reais através de ferramentas (search, file_edit, etc.), visualizadas no painel de ferramentas
- O mecanismo de aprovação protege usuários de operações indesejadas: Permitir / Sempre / Negar — três níveis de escolha
- O modo sandbox controla a rigidez da aprovação: strict / permissive / off
- Sessões são automaticamente persistidas; dados não são perdidos ao fechar o navegador
📝 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ê.