dsh-composer-plus 1.11.3 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +54 -38
- package/README.es.md +54 -38
- package/README.fr.md +54 -38
- package/README.hi.md +54 -38
- package/README.id.md +54 -38
- package/README.ja.md +54 -38
- package/README.ko.md +54 -38
- package/README.md +54 -38
- package/README.pt-BR.md +54 -38
- package/README.ru.md +54 -38
- package/README.tr.md +54 -38
- package/README.vi.md +54 -38
- package/README.zh.md +54 -38
- package/assets/features/promptImprove.webp +0 -0
- package/client.js +302 -15
- package/index.js +258 -34
- package/package.json +3 -2
- package/tether/gateway/server.mjs +16 -7
package/README.pt-BR.md
CHANGED
|
@@ -14,7 +14,7 @@ Recursos práticos no estilo do Codex para a interface desktop e web do [DeepSee
|
|
|
14
14
|
|
|
15
15
|
<p align="center"><img src="docs/images/hero.webp" width="820" alt="DeepSeek Harness com o Composer Plus: o projeto em execução mostra um indicador de carregamento na barra lateral e o painel de alterações mostra um diff do git"></p>
|
|
16
16
|
|
|
17
|
-
Plugin não oficial da comunidade. As únicas chamadas de rede são a verificação de atualizações (releases do GitHub e registro do npm); desative **Atualizações automáticas** para que elas não aconteçam ao iniciar. **Ideias de recursos** chama o próprio modelo do seu chat só quando você clica em **Sugerir recursos**. **Previsão da próxima mensagem** (ativada por padrão) chama o modelo escolhido nas Configurações (o padrão do dsh, a menos que você escolha outro) uma vez após cada turno concluído, sem nenhum clique. Desative-a em **Configurações → Composer Plus** para parar essas chamadas. **Completar ao digitar** (desativado por padrão) chama o modelo escolhido para ele (por padrão, o da previsão) a cada pausa enquanto você digita, depois que você o ativa. **Conexão móvel** (desativada por padrão) só aceita conexões do iPhone vindas da sua rede local ou da sua tailnet depois que você a ativa.
|
|
17
|
+
Plugin não oficial da comunidade. As únicas chamadas de rede são a verificação de atualizações (releases do GitHub e registro do npm); desative **Atualizações automáticas** para que elas não aconteçam ao iniciar. **Ideias de recursos** chama o próprio modelo do seu chat só quando você clica em **Sugerir recursos**. **Previsão da próxima mensagem** (ativada por padrão) chama o modelo escolhido nas Configurações (o padrão do dsh, a menos que você escolha outro) uma vez após cada turno concluído, sem nenhum clique. Desative-a em **Configurações → Composer Plus** para parar essas chamadas. **Completar ao digitar** (desativado por padrão) chama o modelo escolhido para ele (por padrão, o da previsão) a cada pausa enquanto você digita, depois que você o ativa. **Melhorar prompt** só chama um modelo quando você clica na varinha mágica dele. **Conexão móvel** (desativada por padrão) só aceita conexões do iPhone vindas da sua rede local ou da sua tailnet depois que você a ativa.
|
|
18
18
|
|
|
19
19
|
## Instalação
|
|
20
20
|
|
|
@@ -29,46 +29,51 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
29
29
|
|
|
30
30
|
Depois, reinicie o dsh. (A CLI não consegue instalar no perfil desktop; quem gerencia esse perfil é o app.)
|
|
31
31
|
|
|
32
|
-
> O pnpm do dsh ignora versões publicadas há menos de 24 horas. Logo depois de uma nova versão, informe a versão: `dsh-composer-plus@1.
|
|
32
|
+
> O pnpm do dsh ignora versões publicadas há menos de 24 horas. Logo depois de uma nova versão, informe a versão: `dsh-composer-plus@1.12.0`.
|
|
33
33
|
|
|
34
34
|
## Recursos
|
|
35
35
|
|
|
36
|
+
<!-- BEGIN GENERATED FEATURES: edit docs/features.json, then run npm run build:readme -->
|
|
37
|
+
|
|
36
38
|
| Recurso | Como usar | Captura de tela |
|
|
37
39
|
|---|---|---|
|
|
38
|
-
| **Painel de alterações** | Barra lateral direita → `+` → **Alterações**. Escolha **Não confirmadas**, **Não preparadas**, **Preparadas** ou **Branch** para ver os arquivos alterados com as contagens `+/-`; clique em um arquivo para ver o diff dele. **Último turno** abre a revisão do próprio dsh para o turno mais recente. | <a href="assets/features/changesPanel.webp"><img src="assets/features/changesPanel.webp" width="160" alt="Captura de tela: Painel de alterações"></a> |
|
|
39
|
-
| **Ideias de recursos** | Barra lateral direita → `+` → **Ideias de recursos** → **Sugerir recursos**. O próprio modelo do chat lê um breve resumo do projeto do chat (arquivos do nível superior, o início do README e do manifesto, os últimos 15 commits) e sugere até 8 recursos, exibidos como uma pilha de cartões no idioma da interface do dsh. Deslize um cartão para a direita (ou clique em **✓**, ou pressione `→`; em todos os casos, o cartão sai voando para aquele lado) para iniciar um novo chat no mesmo projeto: ele começa no modo de plano com a ideia como pedido, então nada muda antes de você aprovar o plano. Para pular o plano, clique em **▶ Criar agora** (ou pressione `↑`; o cartão sai voando para cima): o novo chat começa na hora com a ideia como um pedido comum, e o modelo faz a alteração e executa as verificações (as aprovações valem como de costume). Deslize para a esquerda (ou **✕**, ou `←`) para pular; **Desfazer** (ou `Z`) traz de volta um cartão pulado. Clique em **↓** (ou pressione `↓`) para salvar uma boa ideia para depois: ela vai para a lista **Depois** do projeto, que aparece em todos os chats da mesma pasta de projeto (também depois de reiniciar). **Depois (N)** abre a lista; **Planejar** inicia o mesmo chat no modo de plano para a ideia e **Criar agora** inicia o chat sem plano; os dois a tiram da lista. **Planejar tudo (N)** inicia um único chat no modo de plano para todas as ideias da lista, então as partes em comum são planejadas uma só vez. **Remover da lista** a exclui. **Copiar como lista de tarefas** copia a lista inteira para a área de transferência como uma lista de tarefas em Markdown (`- [ ] Title — Summary`, uma linha por ideia) para um rastreador de issues ou um arquivo TODO; ele não faz nenhuma chamada de rede. **Mais ideias** adiciona cartões. Para receber ideias sobre uma única área, digite um **Tema de foco** curto no campo ao lado de **Sugerir recursos** (no máximo 80 caracteres; `Enter` também sugere), ou clique em um dos temas fixos abaixo dele: **Desempenho**, **Acessibilidade**, **Testes**, **Segurança**, **Usabilidade** ou **Documentação** (clique de novo para limpá-lo). O modelo então sugere só recursos sobre esse tema; um campo vazio significa qualquer recurso. Uma ideia não é sugerida duas vezes no mesmo projeto: toda ideia sugerida (pulada, salva ou iniciada) vai para o **Histórico** do projeto, o modelo recebe a instrução de não sugeri-las de novo e um título repetido é descartado. **Histórico** lista as ideias como **Iniciada** ou **Sugerida**; **Esquecer** (ou **Esquecer tudo**) deixa uma delas voltar; uma ideia que ainda está na lista **Depois** fica fora das sugestões até você removê-la de lá. O modelo só é executado quando você clica. | <a href="assets/features/featureIdeas.webp"><img src="assets/features/featureIdeas.webp" width="160" alt="Captura de tela: Ideias de recursos"></a> |
|
|
40
|
-
| **Pesquisa no conteúdo** | A pesquisa da própria barra lateral do dsh (a lupa ao lado de **Workspaces**; `Cmd+K` no app desktop, `Cmd+Alt+K` no navegador) também encontra chats pelas palavras das suas mensagens e das respostas, não só pelo título, e mostra o texto correspondente abaixo do chat. O dsh já tem essa pesquisa, mas ela vem desativada; este recurso a ativa com um arquivo de índice de pesquisa no seu computador. O índice é criado na primeira pesquisa depois de iniciar (cerca de 15 s para 250 chats, veja Limites) e fica guardado para as próximas inicializações. Ativado por padrão; uma alteração vale depois que você reinicia o dsh. | <a href="assets/features/contentSearch.webp"><img src="assets/features/contentSearch.webp" width="160" alt="Captura de tela: Pesquisa no conteúdo"></a> |
|
|
41
|
-
| **Reverter turno** | Passe o mouse sobre uma das suas mensagens e clique em **↶** (ao lado de Copiar). **Apenas o chat** remove essa mensagem e tudo o que vem depois dela (respostas, chamadas de ferramentas) do chat e do contexto do modelo, e coloca a mensagem de volta no editor de mensagens: altere-a e envie de novo. **Chat e arquivos** primeiro lista os arquivos do projeto que mudaram desde essa mensagem e depois também os deixa como estavam, incluindo as alterações feitas por comandos (`bash`), não só pelas ferramentas de edição do dsh. Um turno em execução é interrompido primeiro. O log do chat nunca é reescrito: um marcador oculto esconde a parte removida, do mesmo jeito que o `/compact` do próprio dsh esconde mensagens antigas. Quando o [dsh-rewind-plugin](https://www.npmjs.com/package/dsh-rewind-plugin) está instalado, ele faz esse trabalho e o Composer Plus não mostra um segundo botão. | <a href="assets/features/turnRollback.webp"><img src="assets/features/turnRollback.webp" width="160" alt="Captura de tela: Reverter turno"></a> |
|
|
42
|
-
| **Excluir chat** | Barra lateral → menu **…** de um chat (ou clique com o botão direito) → **Excluir…** → **Excluir**. O próprio dsh só consegue arquivar. O chat é interrompido (o turno, as tarefas em segundo plano, os subagentes e os lembretes, como no arquivamento do próprio dsh) e o histórico salvo, com os chats dos subagentes, vai para o Lixo do macOS (em outros sistemas: `$DSH_HOME/trash`). Para recuperá-lo, coloque a pasta de volta e reinicie o dsh: ele aparece na exibição **Somente arquivadas** da barra lateral. | <a href="assets/features/deleteChat.webp"><img src="assets/features/deleteChat.webp" width="160" alt="Captura de tela: Excluir chat"></a> |
|
|
43
|
-
| **Nome do projeto no compositor** | A linha abaixo do editor de mensagens (turnos, tokens, acertos de cache, contexto) começa com o nome do projeto do chat, para você sempre saber em qual projeto um chat trabalha. É o título de projeto do próprio dsh, ou o nome da pasta quando o projeto não tem título. Passe o mouse sobre ele para ver o caminho completo da pasta. Clique nele para encontrar o chat na barra lateral, na visualização em lista ou por projeto: a barra lateral e o projeto se abrem (inclusive um projeto recolhido e o **Mostrar mais** dele), a lista rola até o chat e o chat pisca por 5 segundos. | <a href="assets/features/projectName.webp"><img src="assets/features/projectName.webp" width="160" alt="Captura de tela: Nome do projeto no compositor"></a> |
|
|
44
|
-
| **Histórico de entrada** | Com o editor de mensagens vazio, pressione `↑` / `↓` para percorrer as mensagens que você enviou, como em um terminal. | <a href="assets/features/inputHistory.webp"><img src="assets/features/inputHistory.webp" width="160" alt="Captura de tela: Histórico de entrada"></a> |
|
|
45
|
-
| **
|
|
46
|
-
| **Manter o foco no editor** | Depois que você envia um comando `/` ou uma skill, o cursor continua no editor de mensagens e você pode digitar de novo na hora. Isso também funciona com macros de teclado que digitam um comando e pressionam `Enter`. O dsh deixa o editor de mensagens somente leitura enquanto resolve o comando, e o navegador então tira o foco dele. Este recurso devolve o foco, a menos que um menu, uma caixa de diálogo ou outro campo esteja com ele. | <a href="assets/features/keepFocus.webp"><img src="assets/features/keepFocus.webp" width="160" alt="Captura de tela: Manter o foco no editor"></a> |
|
|
47
|
-
| **Continuar com um clique** | Depois de um turno interrompido, com falha ou cortado, o editor de mensagens vazio mostra **▶**. Um clique retoma a partir da conversa existente, sem escrever no campo de entrada e sem adicionar uma mensagem visível ao chat (o modelo recebe uma breve nota oculta “continue de onde parou”, porque alguns provedores, como o Claude, rejeitam uma solicitação que termina com uma resposta do assistente). As mensagens da fila continuam nela: ▶ retoma só a tarefa interrompida e depois a fila é executada. Um turno concluído mantém o botão de enviar normal. | <a href="assets/features/continueButton.webp"><img src="assets/features/continueButton.webp" width="160" alt="Captura de tela: Continuar com um clique"></a> |
|
|
48
|
-
| **Retomar após reiniciar** | Desativado por padrão: ative em **Configurações → Composer Plus**. Se você sair do dsh (ou ele fechar) enquanto um chat está trabalhando, esse chat continua sozinho quando você abre o dsh de novo, com a mesma nota oculta do Continuar com um clique. Se uma rodada de meta (`/goal`) estava em execução, a meta segue com a próxima rodada (o dsh pausa as metas a cada inicialização até você retomá-las). Chats que você interrompeu, que terminaram ou que falharam não continuam. O próprio dsh não tem uma configuração para isso: ele só marca esse turno como interrompido. | <a href="assets/features/resumeAfterRestart.webp"><img src="assets/features/resumeAfterRestart.webp" width="160" alt="Captura de tela: Retomar após reiniciar"></a> |
|
|
49
|
-
| **Arrastar e soltar na fila** | As mensagens na fila ganham uma alça (⠿). Arraste para reordenar, ou coloque o foco na alça e pressione `↑` / `↓`. `Esc` cancela. | <a href="assets/features/queueReorder.webp"><img src="assets/features/queueReorder.webp" width="160" alt="Captura de tela: Arrastar e soltar na fila"></a> |
|
|
50
|
-
| **Copiar link da sessão** | Clique com o botão direito em um chat na barra lateral → **Copiar link da sessão**. Cole o link `dsh-session:…` em outro chat para anexar aquele chat como contexto somente leitura. O dsh 0.2.1 tem o próprio **Copiar ID da sessão**, que copia só o ID simples; este item aparece logo depois dele. | <a href="assets/features/copyDeeplink.webp"><img src="assets/features/copyDeeplink.webp" width="160" alt="Captura de tela: Copiar link da sessão"></a> |
|
|
51
|
-
| **Exportar chat como Markdown** | Clique com o botão direito em um chat na barra lateral (ou abra o menu **…** dele) → **Exportar como Markdown…**. Uma caixa de diálogo mostra quantas mensagens o chat tem; **Copiar para a área de transferência** copia o chat como Markdown, e **Salvar arquivo .md** o salva como `<chat title>.md` pelo download do navegador (no dsh desktop: na sua pasta Downloads ou por uma caixa de diálogo de salvar, conforme a configuração do seu sistema). O arquivo tem o título do chat, o nome do projeto e a data e, depois, uma seção `## Você` ou `## Assistente` para cada mensagem. Os blocos de código ficam como estão; um bloco de código que uma mensagem deixa aberto é fechado. | <a href="assets/features/exportMarkdown.webp"><img src="assets/features/exportMarkdown.webp" width="160" alt="Captura de tela: Exportar chat como Markdown"></a> |
|
|
52
|
-
| **Copiar caminho do projeto** | Clique com o botão direito em um projeto na barra lateral → **Copiar caminho** copia o caminho completo da pasta dele. | <a href="assets/features/copyProjectPath.webp"><img src="assets/features/copyProjectPath.webp" width="160" alt="Captura de tela: Copiar caminho do projeto"></a> |
|
|
53
|
-
| **Busca de projetos em um novo chat** | Novo chat → o botão de projeto acima do editor de mensagens. Os projetos aparecem em ordem A–Z, com uma caixa **Buscar projetos** no topo. Digite parte de um nome (sem diferenciar maiúsculas, minúsculas e acentos) e pressione `Enter` para escolher o primeiro resultado. Quando nada corresponde, aparece **Nenhum projeto corresponde**. A ordem de projetos salva do dsh na barra lateral não muda. | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="Captura de tela: Busca de projetos em um novo chat"></a> |
|
|
54
|
-
| **Previsão da próxima mensagem** | Ativada por padrão; você pode desativá-la em **Configurações → Composer Plus**. Quando o agente termina um turno (não um turno interrompido ou que falhou), o editor de mensagens vazio mostra em cinza um palpite da sua próxima mensagem, com a dica **Tab para aceitar**. `Tab` coloca o texto no editor, mas não o envia. `Esc` esconde o palpite naquele turno. Começar a digitar também o esconde, e um novo turno o substitui. O menu **Modelo** abaixo da chave lista os próprios modelos do dsh (a mesma lista do menu de modelos do dsh). **Padrão do dsh** vem selecionado por padrão e segue o modelo padrão do dsh. Cada turno concluído custa uma chamada curta ao modelo. No Tether, o palpite aparece acima do editor vazio: toque nele para colocá-lo no campo. | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="Captura de tela: Previsão da próxima mensagem"></a> |
|
|
55
|
-
| **Completar ao digitar** | Desativado por padrão; você pode ativá-lo em **Configurações → Composer Plus**. Enquanto você digita, um texto cinza logo após o cursor mostra como sua mensagem pode continuar. `Tab` adiciona o texto à mensagem, mas não a envia. `Esc` esconde o texto. Ele sugere só as suas próprias próximas palavras: nunca uma resposta para você, nem textos de erro ou nomes inventados. Se a mensagem parecer completa ou o modelo não tiver certeza, nada aparece. Digitar as próximas letras do texto cinza o mantém, sem nova chamada ao modelo. Tem o próprio menu **Modelo** abaixo da sua chave. A primeira opção, **Igual à previsão da próxima mensagem**, usa o modelo da **Previsão da próxima mensagem** (é o padrão); escolha outro modelo para usar um modelo diferente em cada recurso, por exemplo um modelo mais rápido para os complementos. Faz uma chamada ao modelo a cada pausa enquanto você digita, por isso gasta muito mais tokens que a previsão: escolha um modelo rápido e de baixo custo. Não é executado em um comando de barra, em uma mensagem com um chip de arquivo nem quando o cursor não está no final. No Tether, o restante aparece acima do campo enquanto você digita: toque nele para adicioná-lo. | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="Captura de tela: Completar ao digitar"></a> |
|
|
56
|
-
| **
|
|
57
|
-
| **
|
|
58
|
-
| **
|
|
59
|
-
| **
|
|
60
|
-
| **
|
|
61
|
-
| **
|
|
62
|
-
| **
|
|
63
|
-
| **
|
|
64
|
-
| **
|
|
65
|
-
| **
|
|
40
|
+
| **Painel de alterações** | <a id="feature-changespanel"></a>Barra lateral direita → `+` → **Alterações**. Escolha **Não confirmadas**, **Não preparadas**, **Preparadas** ou **Branch** para ver os arquivos alterados com as contagens `+/-`; clique em um arquivo para ver o diff dele. **Último turno** abre a revisão do próprio dsh para o turno mais recente. | <a href="assets/features/changesPanel.webp"><img src="assets/features/changesPanel.webp" width="160" alt="Captura de tela: Painel de alterações"></a> |
|
|
41
|
+
| **Ideias de recursos** | <a id="feature-featureideas"></a>Barra lateral direita → `+` → **Ideias de recursos** → **Sugerir recursos**. O próprio modelo do chat lê um breve resumo do projeto do chat (arquivos do nível superior, o início do README e do manifesto, os últimos 15 commits) e sugere até 8 recursos, exibidos como uma pilha de cartões no idioma da interface do dsh. Deslize um cartão para a direita (ou clique em **✓**, ou pressione `→`; em todos os casos, o cartão sai voando para aquele lado) para iniciar um novo chat no mesmo projeto: ele começa no modo de plano com a ideia como pedido, então nada muda antes de você aprovar o plano. Para pular o plano, clique em **▶ Criar agora** (ou pressione `↑`; o cartão sai voando para cima): o novo chat começa na hora com a ideia como um pedido comum, e o modelo faz a alteração e executa as verificações (as aprovações valem como de costume). Deslize para a esquerda (ou **✕**, ou `←`) para pular; **Desfazer** (ou `Z`) traz de volta um cartão pulado. Clique em **↓** (ou pressione `↓`) para salvar uma boa ideia para depois: ela vai para a lista **Depois** do projeto, que aparece em todos os chats da mesma pasta de projeto (também depois de reiniciar). **Depois (N)** abre a lista; **Planejar** inicia o mesmo chat no modo de plano para a ideia e **Criar agora** inicia o chat sem plano; os dois a tiram da lista. **Planejar tudo (N)** inicia um único chat no modo de plano para todas as ideias da lista, então as partes em comum são planejadas uma só vez. **Remover da lista** a exclui. **Copiar como lista de tarefas** copia a lista inteira para a área de transferência como uma lista de tarefas em Markdown (`- [ ] Title — Summary`, uma linha por ideia) para um rastreador de issues ou um arquivo TODO; ele não faz nenhuma chamada de rede. **Mais ideias** adiciona cartões. Para receber ideias sobre uma única área, digite um **Tema de foco** curto no campo ao lado de **Sugerir recursos** (no máximo 80 caracteres; `Enter` também sugere), ou clique em um dos temas fixos abaixo dele: **Desempenho**, **Acessibilidade**, **Testes**, **Segurança**, **Usabilidade** ou **Documentação** (clique de novo para limpá-lo). O modelo então sugere só recursos sobre esse tema; um campo vazio significa qualquer recurso. Uma ideia não é sugerida duas vezes no mesmo projeto: toda ideia sugerida (pulada, salva ou iniciada) vai para o **Histórico** do projeto, o modelo recebe a instrução de não sugeri-las de novo e um título repetido é descartado. **Histórico** lista as ideias como **Iniciada** ou **Sugerida**; **Esquecer** (ou **Esquecer tudo**) deixa uma delas voltar; uma ideia que ainda está na lista **Depois** fica fora das sugestões até você removê-la de lá. O modelo só é executado quando você clica. | <a href="assets/features/featureIdeas.webp"><img src="assets/features/featureIdeas.webp" width="160" alt="Captura de tela: Ideias de recursos"></a> |
|
|
42
|
+
| **Pesquisa no conteúdo** | <a id="feature-contentsearch"></a>A pesquisa da própria barra lateral do dsh (a lupa ao lado de **Workspaces**; `Cmd+K` no app desktop, `Cmd+Alt+K` no navegador) também encontra chats pelas palavras das suas mensagens e das respostas, não só pelo título, e mostra o texto correspondente abaixo do chat. O dsh já tem essa pesquisa, mas ela vem desativada; este recurso a ativa com um arquivo de índice de pesquisa no seu computador. O índice é criado na primeira pesquisa depois de iniciar (cerca de 15 s para 250 chats, veja Limites) e fica guardado para as próximas inicializações. Ativado por padrão; uma alteração vale depois que você reinicia o dsh. | <a href="assets/features/contentSearch.webp"><img src="assets/features/contentSearch.webp" width="160" alt="Captura de tela: Pesquisa no conteúdo"></a> |
|
|
43
|
+
| **Reverter turno** | <a id="feature-turnrollback"></a>Passe o mouse sobre uma das suas mensagens e clique em **↶** (ao lado de Copiar). **Apenas o chat** remove essa mensagem e tudo o que vem depois dela (respostas, chamadas de ferramentas) do chat e do contexto do modelo, e coloca a mensagem de volta no editor de mensagens: altere-a e envie de novo. **Chat e arquivos** primeiro lista os arquivos do projeto que mudaram desde essa mensagem e depois também os deixa como estavam, incluindo as alterações feitas por comandos (`bash`), não só pelas ferramentas de edição do dsh. Um turno em execução é interrompido primeiro. O log do chat nunca é reescrito: um marcador oculto esconde a parte removida, do mesmo jeito que o `/compact` do próprio dsh esconde mensagens antigas. Quando o [dsh-rewind-plugin](https://www.npmjs.com/package/dsh-rewind-plugin) está instalado, ele faz esse trabalho e o Composer Plus não mostra um segundo botão. | <a href="assets/features/turnRollback.webp"><img src="assets/features/turnRollback.webp" width="160" alt="Captura de tela: Reverter turno"></a> |
|
|
44
|
+
| **Excluir chat** | <a id="feature-deletechat"></a>Barra lateral → menu **…** de um chat (ou clique com o botão direito) → **Excluir…** → **Excluir**. O próprio dsh só consegue arquivar. O chat é interrompido (o turno, as tarefas em segundo plano, os subagentes e os lembretes, como no arquivamento do próprio dsh) e o histórico salvo, com os chats dos subagentes, vai para o Lixo do macOS (em outros sistemas: `$DSH_HOME/trash`). Para recuperá-lo, coloque a pasta de volta e reinicie o dsh: ele aparece na exibição **Somente arquivadas** da barra lateral. | <a href="assets/features/deleteChat.webp"><img src="assets/features/deleteChat.webp" width="160" alt="Captura de tela: Excluir chat"></a> |
|
|
45
|
+
| **Nome do projeto no compositor** | <a id="feature-projectname"></a>A linha abaixo do editor de mensagens (turnos, tokens, acertos de cache, contexto) começa com o nome do projeto do chat, para você sempre saber em qual projeto um chat trabalha. É o título de projeto do próprio dsh, ou o nome da pasta quando o projeto não tem título. Passe o mouse sobre ele para ver o caminho completo da pasta. Clique nele para encontrar o chat na barra lateral, na visualização em lista ou por projeto: a barra lateral e o projeto se abrem (inclusive um projeto recolhido e o **Mostrar mais N sessões** dele), a lista rola até o chat e o chat pisca por 5 segundos. | <a href="assets/features/projectName.webp"><img src="assets/features/projectName.webp" width="160" alt="Captura de tela: Nome do projeto no compositor"></a> |
|
|
46
|
+
| **Histórico de entrada** | <a id="feature-inputhistory"></a>Com o editor de mensagens vazio, pressione `↑` / `↓` para percorrer as mensagens que você enviou, como em um terminal. | <a href="assets/features/inputHistory.webp"><img src="assets/features/inputHistory.webp" width="160" alt="Captura de tela: Histórico de entrada"></a> |
|
|
47
|
+
| **Modo de plano com Shift+Tab** | <a id="feature-plantoggle"></a>`Shift+Tab` adiciona `/plan ` no início do rascunho (pressione de novo para remover). Se o chat já estiver no modo de plano, `Shift+Tab` sai dele. | <a href="assets/features/planToggle.webp"><img src="assets/features/planToggle.webp" width="160" alt="Captura de tela: Modo de plano com Shift+Tab"></a> |
|
|
48
|
+
| **Manter o foco no editor** | <a id="feature-keepfocus"></a>Depois que você envia um comando `/` ou uma skill, o cursor continua no editor de mensagens e você pode digitar de novo na hora. Isso também funciona com macros de teclado que digitam um comando e pressionam `Enter`. O dsh deixa o editor de mensagens somente leitura enquanto resolve o comando, e o navegador então tira o foco dele. Este recurso devolve o foco, a menos que um menu, uma caixa de diálogo ou outro campo esteja com ele. | <a href="assets/features/keepFocus.webp"><img src="assets/features/keepFocus.webp" width="160" alt="Captura de tela: Manter o foco no editor"></a> |
|
|
49
|
+
| **Continuar com um clique** | <a id="feature-continuebutton"></a>Depois de um turno interrompido, com falha ou cortado, o editor de mensagens vazio mostra **▶**. Um clique retoma a partir da conversa existente, sem escrever no campo de entrada e sem adicionar uma mensagem visível ao chat (o modelo recebe uma breve nota oculta “continue de onde parou”, porque alguns provedores, como o Claude, rejeitam uma solicitação que termina com uma resposta do assistente). As mensagens da fila continuam nela: ▶ retoma só a tarefa interrompida e depois a fila é executada. Um turno concluído mantém o botão de enviar normal. | <a href="assets/features/continueButton.webp"><img src="assets/features/continueButton.webp" width="160" alt="Captura de tela: Continuar com um clique"></a> |
|
|
50
|
+
| **Retomar após reiniciar** | <a id="feature-resumeafterrestart"></a>Desativado por padrão: ative em **Configurações → Composer Plus**. Se você sair do dsh (ou ele fechar) enquanto um chat está trabalhando, esse chat continua sozinho quando você abre o dsh de novo, com a mesma nota oculta do Continuar com um clique. Se uma rodada de meta (`/goal`) estava em execução, a meta segue com a próxima rodada (o dsh pausa as metas a cada inicialização até você retomá-las). Chats que você interrompeu, que terminaram ou que falharam não continuam. O próprio dsh não tem uma configuração para isso: ele só marca esse turno como interrompido. | <a href="assets/features/resumeAfterRestart.webp"><img src="assets/features/resumeAfterRestart.webp" width="160" alt="Captura de tela: Retomar após reiniciar"></a> |
|
|
51
|
+
| **Arrastar e soltar na fila** | <a id="feature-queuereorder"></a>As mensagens na fila ganham uma alça (⠿). Arraste para reordenar, ou coloque o foco na alça e pressione `↑` / `↓`. `Esc` cancela. | <a href="assets/features/queueReorder.webp"><img src="assets/features/queueReorder.webp" width="160" alt="Captura de tela: Arrastar e soltar na fila"></a> |
|
|
52
|
+
| **Copiar link da sessão** | <a id="feature-copydeeplink"></a>Clique com o botão direito em um chat na barra lateral → **Copiar link da sessão**. Cole o link `dsh-session:…` em outro chat para anexar aquele chat como contexto somente leitura. O dsh 0.2.1 tem o próprio **Copiar ID da sessão**, que copia só o ID simples; este item aparece logo depois dele. | <a href="assets/features/copyDeeplink.webp"><img src="assets/features/copyDeeplink.webp" width="160" alt="Captura de tela: Copiar link da sessão"></a> |
|
|
53
|
+
| **Exportar chat como Markdown** | <a id="feature-exportmarkdown"></a>Clique com o botão direito em um chat na barra lateral (ou abra o menu **…** dele) → **Exportar como Markdown…**. Uma caixa de diálogo mostra quantas mensagens o chat tem; **Copiar para a área de transferência** copia o chat como Markdown, e **Salvar arquivo .md** o salva como `<chat title>.md` pelo download do navegador (no dsh desktop: na sua pasta Downloads ou por uma caixa de diálogo de salvar, conforme a configuração do seu sistema). O arquivo tem o título do chat, o nome do projeto e a data e, depois, uma seção `## Você` ou `## Assistente` para cada mensagem. Os blocos de código ficam como estão; um bloco de código que uma mensagem deixa aberto é fechado. | <a href="assets/features/exportMarkdown.webp"><img src="assets/features/exportMarkdown.webp" width="160" alt="Captura de tela: Exportar chat como Markdown"></a> |
|
|
54
|
+
| **Copiar caminho do projeto** | <a id="feature-copyprojectpath"></a>Clique com o botão direito em um projeto na barra lateral → **Copiar caminho** copia o caminho completo da pasta dele. | <a href="assets/features/copyProjectPath.webp"><img src="assets/features/copyProjectPath.webp" width="160" alt="Captura de tela: Copiar caminho do projeto"></a> |
|
|
55
|
+
| **Busca de projetos em um novo chat** | <a id="feature-projectpicker"></a>Novo chat → o botão de projeto acima do editor de mensagens. Os projetos aparecem em ordem A–Z, com uma caixa **Buscar projetos** no topo. Digite parte de um nome (sem diferenciar maiúsculas, minúsculas e acentos) e pressione `Enter` para escolher o primeiro resultado. Quando nada corresponde, aparece **Nenhum projeto corresponde**. A ordem de projetos salva do dsh na barra lateral não muda. | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="Captura de tela: Busca de projetos em um novo chat"></a> |
|
|
56
|
+
| **Previsão da próxima mensagem** | <a id="feature-nextprediction"></a>Ativada por padrão; você pode desativá-la em **Configurações → Composer Plus**. Quando o agente termina um turno (não um turno interrompido ou que falhou), o editor de mensagens vazio mostra em cinza um palpite da sua próxima mensagem, com a dica **Tab para aceitar**. `Tab` coloca o texto no editor, mas não o envia. `Esc` esconde o palpite naquele turno. Começar a digitar também o esconde, e um novo turno o substitui. O menu **Modelo** abaixo da chave lista os próprios modelos do dsh (a mesma lista do menu de modelos do dsh). **Padrão do dsh** vem selecionado por padrão e segue o modelo padrão do dsh. Cada turno concluído custa uma chamada curta ao modelo. No Tether, o palpite aparece acima do editor vazio: toque nele para colocá-lo no campo. | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="Captura de tela: Previsão da próxima mensagem"></a> |
|
|
57
|
+
| **Completar ao digitar** | <a id="feature-typingcompletion"></a>Desativado por padrão; você pode ativá-lo em **Configurações → Composer Plus**. Enquanto você digita, um texto cinza logo após o cursor mostra como sua mensagem pode continuar. `Tab` adiciona o texto à mensagem, mas não a envia. `Esc` esconde o texto. Ele sugere só as suas próprias próximas palavras: nunca uma resposta para você, nem textos de erro ou nomes inventados. Se a mensagem parecer completa ou o modelo não tiver certeza, nada aparece. Digitar as próximas letras do texto cinza o mantém, sem nova chamada ao modelo. Tem o próprio menu **Modelo** abaixo da sua chave. A primeira opção, **Igual à previsão da próxima mensagem**, usa o modelo da **Previsão da próxima mensagem** (é o padrão); escolha outro modelo para usar um modelo diferente em cada recurso, por exemplo um modelo mais rápido para os complementos. Faz uma chamada ao modelo a cada pausa enquanto você digita, por isso gasta muito mais tokens que a previsão: escolha um modelo rápido e de baixo custo. Não é executado em um comando de barra, em uma mensagem com um chip de arquivo nem quando o cursor não está no final. No Tether, o restante aparece acima do campo enquanto você digita: toque nele para adicioná-lo. | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="Captura de tela: Completar ao digitar"></a> |
|
|
58
|
+
| **Melhorar prompt** | <a id="feature-promptimprove"></a>Digite um pedido aproximado e clique na varinha mágica (**Melhorar prompt**) ao lado do menu de modelos. Uma chamada ao modelo o reescreve como um prompt mais claro: primeiro o objetivo, passos numerados curtos quando há várias partes e a verificação a executar. Ele lê este chat (sem as mensagens revertidas), o README, o AGENTS.md e o manifesto do projeto, os arquivos alterados e os arquivos cujos nomes combinam com as suas palavras, e mantém o seu idioma. Ele nunca inventa nomes de arquivo. O novo texto substitui o seu rascunho, mas não é enviado: leia, edite e depois pressione `Enter`. `Cmd/Ctrl+Z` traz seu texto de volta em um passo, e o botão (**Desfazer melhoria**) também. Se você digitar enquanto ele trabalha, o seu novo texto fica. `Esc` ou um segundo clique cancela. Tem o próprio menu **Modelo** nas Configurações (padrão: **Igual ao modelo do chat**). Não funciona em comandos de barra nem em uma mensagem com um chip de arquivo. No Tether, a varinha fica ao lado do campo. | <a href="assets/features/promptImprove.webp"><img src="assets/features/promptImprove.webp" width="160" alt="Captura de tela: Melhorar prompt"></a> |
|
|
59
|
+
| **Permitir neste chat** | <a id="feature-allowforchat"></a>Quando a Revisão automática pergunta, o cartão de aprovação ganha **Permitir neste chat**: a mesma ferramenta no mesmo chat passa a ser permitida daí em diante, com quaisquer argumentos. Um chip no cabeçalho lista as autorizações e as revoga. As autorizações continuam valendo depois de reiniciar. | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="Captura de tela: Permitir neste chat"></a> |
|
|
60
|
+
| **Status do projeto** | <a id="feature-projectstatus"></a>A linha de um projeto na barra lateral mostra o mesmo indicador de em execução / aguardando / concluído dos chats dele, então um projeto recolhido ainda avisa que um chat dentro dele está trabalhando ou precisa de você. Primeiro aparece um chat que está esperando você, depois um chat concluído que você ainda não abriu (o ponto verde, mesmo enquanto outro chat ainda está em execução) e depois o indicador de em execução. Passe o mouse sobre ele para ver os detalhes. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Captura de tela: Status do projeto"></a> |
|
|
61
|
+
| **Projetos ativos primeiro** | <a id="feature-activeprojectsfirst"></a>Quando um chat começa a ser executado ou precisa de você, o projeto dele vai para o topo da barra lateral com a própria animação de linha do dsh (o mesmo movimento de arrastá-lo até lá). Projetos concluídos ficam onde estão; arraste-os para qualquer lugar, como de costume. As movimentações são salvas na ordem de projetos do dsh, então desativar este recurso mantém a ordem atual. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Captura de tela: Projetos ativos primeiro"></a> |
|
|
62
|
+
| **Filtro de projetos recentes** | <a id="feature-recentprojects"></a>Barra lateral → opções de exibição (ícone de controles deslizantes) → **Ativos nas últimas 2 horas**. Enquanto essa opção está selecionada, a barra lateral mostra só os projetos com um chat ativo nas últimas 2 horas: um chat atualizado nesse período, um chat em execução ou aguardando, o chat aberto, ou um chat concluído que você ainda não abriu (o ponto verde de “concluído” do dsh), mesmo depois das 2 horas. Projetos sem um chat assim ficam ocultos, inclusive os novos e vazios. Selecione a opção de novo para mostrar todos os projetos. A escolha fica salva neste dispositivo. | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="Captura de tela: Filtro de projetos recentes"></a> |
|
|
63
|
+
| **Recolher todos os projetos** | <a id="feature-collapseprojects"></a>Enquanto um projeto estiver aberto na barra lateral, aparece um botão ao lado das opções de exibição (ícone de controles deslizantes). Clique nele para fechar todos os projetos abertos de uma vez, por exemplo 3 projetos abertos de 5. O botão some de novo quando nenhum projeto está aberto. | <a href="assets/features/collapseProjects.webp"><img src="assets/features/collapseProjects.webp" width="160" alt="Captura de tela: Recolher todos os projetos"></a> |
|
|
64
|
+
| **Ordenar por status** | <a id="feature-statusorder"></a>Barra lateral → opções de exibição → **Ordenar por** → **Por status** (com **Em uma única lista**). Os chats concluídos vêm primeiro (o ponto de “concluído” do dsh, que um turno que terminou com erro também recebe), depois os chats em execução ou aguardando, depois os chats com uma automação ativa (Tarefas de automação) e, por fim, os demais na ordem do dsh. Abrir um chat concluído o move para baixo. Só a exibição muda: selecione **Manual** ou **Última atualização** para voltar. | <a href="assets/features/statusOrder.webp"><img src="assets/features/statusOrder.webp" width="160" alt="Captura de tela: Ordenar por status"></a> |
|
|
65
|
+
| **Notificações em segundo plano** | <a id="feature-notifications"></a>Enquanto o dsh está em segundo plano, você recebe uma notificação quando um turno termina (a primeira linha da resposta) ou quando um chat realmente espera por você: uma aprovação (o nome da ferramenta), uma resposta (a pergunta) ou uma revisão de plano. Um pedido precisa continuar aberto 1,5 s depois, então as aprovações respondidas automaticamente (autorizações da Revisão automática, outros plugins) não geram aviso, e uma notificação é retirada assim que o pedido dela é respondido. O indicador no Dock/barra de tarefas conta os chats que estão aguardando. Clicar na notificação abre esse chat. | <a href="assets/features/notifications.webp"><img src="assets/features/notifications.webp" width="160" alt="Captura de tela: Notificações em segundo plano"></a> |
|
|
66
|
+
| **Idioma do aplicativo** | <a id="feature-language"></a>Configurações → Composer Plus → **Idioma do aplicativo** muda toda a interface do dsh para Türkçe, Español, Português (Brasil), Français, Deutsch, Русский, 日本語, 한국어, Bahasa Indonesia, Tiếng Việt ou हिन्दी (veja abaixo). | <a href="assets/features/language.webp"><img src="assets/features/language.webp" width="160" alt="Captura de tela: Idioma do aplicativo"></a> |
|
|
67
|
+
| **Conexão móvel (iPhone)** | <a id="feature-mobileconnect"></a>Use o dsh no seu iPhone com o app [Tether](tether/), na mesma rede Wi-Fi ou pelo [Tailscale](https://tailscale.com). Ative em **Configurações → Composer Plus** (o recurso vem desativado por padrão, porque abre uma porta de rede neste Mac). Depois, clique em **Conexão móvel** no canto inferior esquerdo da barra lateral: leia o código QR com a Câmera do iPhone (toque em **Open in Tether**) ou com **Scan code** no Tether, toque em **Connect** e clique em **Approve**. Instale o Tether antes: sem ele, a Câmera não consegue abrir o código. O celular mostra seus chats, envia mensagens, responde a aprovações e perguntas, e troca de modelo e de agente. Pareie quantos Macs quiser: o nome do Mac no canto superior esquerdo do app alterna entre eles. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Captura de tela: Conexão móvel (iPhone)"></a> |
|
|
68
|
+
| **Atualizações automáticas** | <a id="feature-autoupdate"></a>Quando o dsh inicia, o plugin verifica a [versão mais recente no GitHub](https://github.com/furkancak1r/dsh-composer-plus/releases/latest). Se ela for mais nova e já estiver no npm, o plugin instala exatamente essa versão pelo próprio gerenciador de plugins do dsh (o mesmo caminho de Configurações → Plugins) e avisa você. Reinicie o dsh para carregá-la. **Configurações → Composer Plus → Atualizações do Composer Plus** mostra a versão e tem **Verificar atualizações** / **Atualizar agora**. Na primeira vez que o dsh abre com a nova versão, uma janela **Novidades do Composer Plus N** mostra uma vez as notas dessa versão (da mesma verificação de atualizações, sem outra chamada de rede); **Fechar** ou `Esc` a fecha. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Captura de tela: Atualizações automáticas"></a> |
|
|
69
|
+
|
|
70
|
+
<!-- END GENERATED FEATURES -->
|
|
66
71
|
|
|
67
72
|
Botões, dicas, avisos e notificações seguem o idioma selecionado no dsh (veja Idioma do aplicativo abaixo).
|
|
68
73
|
|
|
69
74
|
## Configurações
|
|
70
75
|
|
|
71
|
-
Cada recurso pode ser ativado ou desativado separadamente em **Configurações → Composer Plus** do dsh. Cada linha tem uma pequena captura de tela: passe o mouse sobre ela para ver uma prévia maior e clique para abri-la em tamanho real (`Esc` fecha). A caixa **Pesquisar recursos** no topo filtra a página por nome ou descrição (em qualquer idioma, sem diferenciar maiúsculas, minúsculas e acentos); `Esc` limpa a caixa. Cada linha tem uma chave e uma breve descrição; as alterações valem na hora, sem reiniciar, e ficam salvas naquele dispositivo. Tudo vem ativado por padrão, exceto **Conexão móvel**, **Retomar após reiniciar** e **Completar ao digitar**. O Host do dsh guarda as chaves desses três recursos e também de **Pesquisa no conteúdo**, **Reverter turno** e **Previsão da próxima mensagem**, então elas valem para todas as janelas e continuam depois de reiniciar. O Host também guarda o **Modelo** escolhido para a **Previsão da próxima mensagem
|
|
76
|
+
Cada recurso pode ser ativado ou desativado separadamente em **Configurações → Composer Plus** do dsh. Cada linha tem uma pequena captura de tela: passe o mouse sobre ela para ver uma prévia maior e clique para abri-la em tamanho real (`Esc` fecha). A caixa **Pesquisar recursos** no topo filtra a página por nome ou descrição (em qualquer idioma, sem diferenciar maiúsculas, minúsculas e acentos); `Esc` limpa a caixa. Cada linha tem uma chave e uma breve descrição; as alterações valem na hora, sem reiniciar, e ficam salvas naquele dispositivo. O pequeno **?** ao lado do nome de uma linha abre a parte deste README que descreve esse recurso, no README do idioma da interface do dsh. Tudo vem ativado por padrão, exceto **Conexão móvel**, **Retomar após reiniciar** e **Completar ao digitar**. O Host do dsh guarda as chaves desses três recursos e também de **Pesquisa no conteúdo**, **Reverter turno** e **Previsão da próxima mensagem**, então elas valem para todas as janelas e continuam depois de reiniciar. O Host também guarda o **Modelo** escolhido para a **Previsão da próxima mensagem**, o de **Completar ao digitar** (por padrão **Igual à previsão da próxima mensagem**) e o de **Melhorar prompt** (por padrão **Igual ao modelo do chat**). **Pesquisa no conteúdo** só muda depois de reiniciar o dsh (o dsh lê essa chave ao iniciar); até lá, a linha dela diz **Reinicie o dsh para aplicar esta alteração.**
|
|
72
77
|
|
|
73
78
|
<p align="center"><img src="docs/images/settings.webp" width="720" alt="Configurações → Composer Plus: pesquisa de recursos, seletor de idioma, linha de atualização e uma chave para cada recurso, com prévia da captura de tela ao passar o mouse"></p>
|
|
74
79
|
|
|
@@ -120,16 +125,17 @@ Testado no dsh `0.2.0-rc.2` (desktop e web) e `0.2.1-rc.2` (web). A CI executa o
|
|
|
120
125
|
- **Reverter turno:** antes de cada mensagem sua, o Host tira um snapshot git da pasta do chat em um armazenamento próprio, `$DSH_HOME/cache/composer-plus/rollback/<chat>.git` (pasta só para o dono). Ele guarda cópias dos arquivos dessa pasta que o git enxerga (não os arquivos ignorados), então é tão privado quanto o projeto. Ele lê os objetos do seu repositório (sem copiar o que o git já tem) e nunca grava no index, no `HEAD`, nos branches, nas tags, no stash ou na configuração do seu repositório; a única mudança que o git faz ali é atualizar a data e hora dos arquivos de objeto que ele reaproveita (isso adia a limpeza deles pelo `git gc`). Uma reversão com arquivos só grava arquivos comuns dentro da pasta do chat; ela ignora symlinks, pipes e qualquer coisa fora da pasta. Nada sai do seu computador. Você pode excluir o armazenamento enquanto o dsh estiver fechado (aí a reversão só funciona para o chat, até haver novas mensagens). **Excluir chat** também exclui o armazenamento de um chat. A chave fica em `$DSH_HOME/storages/dsh-composer-plus/rollback.json`.
|
|
121
126
|
- **Exportar chat como Markdown:** a parte Host lê só o próprio log do chat (as mesmas mensagens que o dsh mostra) e as entrega à página; ela não lê nenhum arquivo do projeto e não envia nada pela rede. O Markdown vai só para a sua área de transferência ou para o arquivo que você salva.
|
|
122
127
|
- **Excluir chat:** move as pastas de log do próprio chat (`$DSH_HOME/sessions/<project>/<chat>`) para o Lixo. A pasta do projeto não é tocada.
|
|
123
|
-
- **Permitir neste chat:** as autorizações ficam guardadas em `$DSH_HOME/storages/dsh-composer-plus/grants.json` (acesso só para o dono). Uma autorização cobre
|
|
128
|
+
- **Permitir neste chat:** as autorizações ficam guardadas em `$DSH_HOME/storages/dsh-composer-plus/grants.json` (acesso só para o dono). Uma autorização cobre uma ferramenta exata em um chat. Se essa ferramenta pode gravar, a autorização também cobre qualquer gravação. Revogue-a pelo chip no cabeçalho.
|
|
124
129
|
- A Revisão automática continua sendo executada em toda chamada; falhas de revisão nunca são permitidas automaticamente.
|
|
125
|
-
- **Conexão móvel:** fica desativada até você ativar. Enquanto está ativada, a parte Host executa o gateway do Tether: HTTPS na porta 19390, que só aceita a sua sub-rede Wi-Fi e a sua tailnet (100.64.0.0/10), e uma página de pareamento em `127.0.0.1:19391` (só neste Mac). Um celular precisa de um código de uso único do código QR (válido por 5 minutos) e de você clicar em **Approve** no Mac. O celular fixa o certificado do gateway. O Mac guarda só um hash do token de cada celular (30 dias, renovado enquanto estiver em uso); **
|
|
130
|
+
- **Conexão móvel:** fica desativada até você ativar. Enquanto está ativada, a parte Host executa o gateway do Tether: HTTPS na porta 19390, que só aceita a sua sub-rede Wi-Fi e a sua tailnet (100.64.0.0/10), e uma página de pareamento em `127.0.0.1:19391` (só neste Mac). Um celular precisa de um código de uso único do código QR (válido por 5 minutos) e de você clicar em **Approve** no Mac. O celular fixa o certificado do gateway. O Mac guarda só um hash do token de cada celular (30 dias, renovado enquanto estiver em uso); **Remove** fecha na hora as conexões daquele celular. Os celulares só podem chamar uma lista permitida de métodos do dsh (chats, prompts, anexos, comandos de barra, aprovações, perguntas, modelos, agentes, metas), não configurações, credenciais, o navegador de arquivos ou o terminal. Dados: `$DSH_HOME/storages/dsh-composer-plus/mobile/`. Detalhes: [tether/README.md](tether/README.md).
|
|
126
131
|
- **Atualizações:** a parte Host pede a `api.github.com` a versão mais recente e a `registry.npmjs.org` exatamente essa versão; nada sobre você ou seus chats é enviado. A instalação usa o gerenciador de plugins do dsh (`pnpm add dsh-composer-plus@<version>`; quando o dsh 0.2.1 recusa isso para um plugin já instalado, `pnpm add https://registry.npmjs.org/dsh-composer-plus/-/dsh-composer-plus-<version>.tgz`, e o perfil passa a listar essa URL como a origem do plugin), então valem as verificações de registro, de scripts e de compatibilidade de versão do próprio dsh. Tags de pré-lançamento e versões mais antigas nunca são instaladas.
|
|
127
132
|
- **Previsão da próxima mensagem:** vem ativada por padrão; desative-a em **Configurações → Composer Plus** para parar essas chamadas ao modelo. Após cada turno concluído, a parte Host envia as suas próprias mensagens do chat e as respostas em texto do agente (sem saída de ferramentas, sem contexto oculto e sem raciocínio), no máximo cerca de 6.000 caracteres (a parte mais recente), para o modelo escolhido (o padrão do dsh, a menos que você escolha outro). O envio usa as próprias configurações de provedor do dsh, como uma única solicitação. Nada é salvo no chat: o palpite não entra no histórico do chat. A chave e o modelo escolhido ficam em `$DSH_HOME/storages/dsh-composer-plus/predict.json` (arquivo só para o dono).
|
|
128
133
|
- **Completar ao digitar:** fica desativado até você ativar. Enquanto está ativado, a cada pausa enquanto você digita, a parte Host envia o texto que você digitou até ali e as suas próprias mensagens do chat e as respostas em texto do agente (sem saída de ferramentas, sem contexto oculto e sem raciocínio), no máximo cerca de 3.000 caracteres do chat, para o modelo escolhido em **Completar ao digitar** (por padrão, o modelo da **Previsão da próxima mensagem**). Uma pausa mais nova interrompe a solicitação anterior. Nada é salvo no chat. A chave fica em `$DSH_HOME/storages/dsh-composer-plus/complete.json` (arquivo só para o dono).
|
|
134
|
+
- **Melhorar prompt:** nada é executado até você clicar na varinha mágica. Então a parte Host envia o seu rascunho, as suas próprias mensagens do chat e as respostas em texto do agente (sem saída de ferramentas, sem contexto oculto, sem raciocínio e sem mensagens revertidas; no máximo cerca de 6.000 caracteres, a parte mais recente), o mesmo resumo do projeto usado em **Ideias de recursos** (com as mesmas regras de arquivos: sem `.env*` nem arquivos de chave, sem symlink para fora da pasta, sem FIFO), os caminhos que o `git status` lista como alterados e até 30 caminhos rastreados ou não rastreados (não ignorados) cujos nomes têm palavras em comum com o seu rascunho, para o modelo escolhido em **Melhorar prompt** (por padrão, o próprio modelo do chat), como uma única solicitação. Nenhum outro conteúdo de arquivo além desse resumo é enviado. Nada é gravado no chat nem no projeto: a resposta só substitui o seu rascunho no editor de mensagens, e você decide se vai enviá-lo. O modelo escolhido fica em `$DSH_HOME/storages/dsh-composer-plus/improve.json` (arquivo só para o dono).
|
|
129
135
|
|
|
130
136
|
## Solução de problemas
|
|
131
137
|
|
|
132
|
-
- **Sem notificações no macOS:** Ajustes do Sistema → Notificações → DeepSeek Harness → permita. Escolha
|
|
138
|
+
- **Sem notificações no macOS:** Ajustes do Sistema → Notificações → DeepSeek Harness → permita. Escolha Alertas para que elas fiquem na tela.
|
|
133
139
|
- **▶, as alças da fila, o status do projeto, a opção de projetos recentes, Recolher todos os projetos, Copiar caminho, a caixa de busca de projetos, a previsão da próxima mensagem, o complemento ao digitar, Permitir neste chat ou o clique com o botão direito sumiram depois de uma atualização do dsh:** esses recursos se prendem ao HTML atual do dsh, porque o dsh ainda não tem um espaço para eles. Se o dsh mudar essa marcação, eles se escondem sozinhos; nada mais quebra. Abra uma [issue](https://github.com/furkancak1r/dsh-composer-plus/issues).
|
|
134
140
|
- **"Falha na atualização" ou "não foi instalada pelo npm":** uma cópia vinculada a partir de uma pasta local ou renomeada não consegue se atualizar sozinha; reinstale `dsh-composer-plus` em Configurações → Plugins. Nos outros casos, a mensagem mostra a primeira linha do erro do pnpm; **Verificar atualizações** tenta de novo.
|
|
135
141
|
- **A Conexão móvel diz que o gateway não está em execução:** "no IPv4 address on en0" significa que este Mac não tem endereço de Wi-Fi/Ethernet; "EADDRINUSE" significa que outro dsh (ou outro app) usa a porta 19390 ou 19391. Só um dsh pode executar a Conexão móvel por vez.
|
|
@@ -139,7 +145,7 @@ Testado no dsh `0.2.0-rc.2` (desktop e web) e `0.2.1-rc.2` (web). A CI executa o
|
|
|
139
145
|
- **Chat e arquivos está acinzentado:** o projeto não é um repositório git, não há snapshot de antes daquela mensagem (a mensagem é mais antiga que o plugin, ou um dos 50 snapshots mais novos a substituiu), ou nenhum arquivo mudou.
|
|
140
146
|
- **Excluir diz que outro dsh está com este chat aberto:** um segundo dsh no mesmo dsh home está com o bloqueio do chat. Feche essa janela ou esse dsh e exclua de novo. Enquanto isso, o chat continua arquivado.
|
|
141
147
|
- **Um chat não continuou depois de reiniciar:** Retomar após reiniciar estava desativado quando o dsh fechou, você mesmo interrompeu aquele turno, o turno já tinha terminado (concluído ou com falha), o chat foi arquivado, ou mais de 20 chats estavam em execução (os 20 mais novos continuam).
|
|
142
|
-
- **A instalação falha logo depois de uma nova versão:** informe a versão (`dsh-composer-plus@1.
|
|
148
|
+
- **A instalação falha logo depois de uma nova versão:** informe a versão (`dsh-composer-plus@1.12.0`); veja a nota de instalação acima.
|
|
143
149
|
|
|
144
150
|
## Limites
|
|
145
151
|
|
|
@@ -156,7 +162,7 @@ Testado no dsh `0.2.0-rc.2` (desktop e web) e `0.2.1-rc.2` (web). A CI executa o
|
|
|
156
162
|
- A fila do dsh não tem uma ação `move`, então a parte Host do plugin move a própria mensagem na fila do dsh (uma única alteração, a mesma mensagem). Mensagens com imagens ou arquivos também são movidas. Só as suas próprias mensagens são movidas: uma rodada de meta ou uma resposta a uma pergunta na fila fica onde está. Se uma mensagem começar a ser enviada enquanto você arrasta, nada é movido e um aviso informa isso.
|
|
157
163
|
- O dsh 0.2.1 carrega uma atualização imediatamente quando a nova versão não muda nenhuma configuração do dsh; caso contrário, e no dsh 0.2.0, reinicie o dsh para carregá-la. O plugin nunca reinicia o dsh por você. Perfis web/CLI sem o gerenciador de plugins do dsh só avisam que há uma nova versão.
|
|
158
164
|
- **Manter o foco no editor** só devolve o foco depois de um comando `/` ou de uma skill. Enquanto o dsh resolve o comando, o editor de mensagens fica somente leitura por alguns milissegundos, então as teclas pressionadas nesse tempo se perdem. Se o menu `/` do dsh ainda estiver aberto, `Enter` escolhe a linha destacada e não envia.
|
|
159
|
-
- **Conexão móvel** só funciona no macOS (ela usa `en0`, `openssl`, `swift` e `dns-sd`). Ela usa as portas fixas 19390 e 19391, então só um dsh em cada Mac pode executá-la por vez (cada Mac é uma entrada na lista de Macs do celular). O celular só recebe notificações enquanto o Tether está aberto ou acabou de ir para segundo plano (não há serviço de push). O app iOS ainda não está na App Store: compile-o a partir de `tether/ios` com o Xcode.
|
|
165
|
+
- **Conexão móvel** só funciona no macOS (ela usa `en0`, `openssl`, `swift` e `dns-sd`). Ela usa as portas fixas 19390 e 19391, então só um dsh em cada Mac pode executá-la por vez (cada Mac é uma entrada na lista de Macs do celular). O celular só recebe notificações enquanto o Tether está aberto ou acabou de ir para segundo plano (não há serviço de push). O app iOS ainda não está na App Store: compile-o a partir de `tether/ios` com o Xcode. Os pontos verdes do Tether seguem o Mac: um chat que você abre no dsh também perde o ponto no celular. Um chat que você abre no Tether perde o ponto só nos celulares. O ponto do próprio dsh no Mac fica até você abrir o chat no Mac.
|
|
160
166
|
- Um link de sessão funciona dentro dos chats; clicar nele não abre o chat.
|
|
161
167
|
- Uma notificação enviada antes de reiniciar só traz o dsh para a frente quando você clica nela.
|
|
162
168
|
- Os projetos ativos são movidos com a ordem de projetos salva do dsh, então a nova ordem continua depois de reiniciar. Chats fora de qualquer projeto ("Sem grupo") não podem ser movidos; o dsh sempre os lista por último.
|
|
@@ -165,6 +171,7 @@ Testado no dsh `0.2.0-rc.2` (desktop e web) e `0.2.1-rc.2` (web). A CI executa o
|
|
|
165
171
|
- O dsh também não tem um ponto de extensão no menu de projetos de um novo chat, então a caixa **Buscar projetos** e a ordem A–Z se prendem à marcação do menu do dsh. Se uma atualização do dsh mudar essa marcação, o menu aparece como o dsh o desenha: na ordem salva e sem a caixa. A ordem A–Z é só uma visualização: ela não muda a ordem de projetos salva do dsh.
|
|
166
172
|
- O dsh também não tem um ponto de extensão para uma dica no editor de mensagens, então o texto da **Previsão da próxima mensagem** fica sobre o texto de exemplo do próprio dsh (`[data-composer-placeholder]`). Se uma atualização do dsh mudar essa marcação, nenhuma previsão aparece. Enquanto ela está ativada, cada turno concluído custa uma chamada curta ao modelo.
|
|
167
173
|
- **Completar ao digitar** mostra o texto pela própria dica do editor de mensagens do dsh (o estilo `--dsh-composer-hint` que o dsh usa para a dica de argumento de um comando de barra). Ele não é executado em um comando de barra, em uma mensagem com um chip de arquivo ou de símbolo nem quando o cursor não está no final da mensagem. Se uma atualização do dsh mudar esse estilo, nenhum complemento aparece. Cada pausa enquanto você digita custa uma chamada ao modelo.
|
|
174
|
+
- **Melhorar prompt** vê só um resumo curto do projeto, os caminhos alterados e os caminhos cujos nomes combinam com as suas palavras: não o código em si. Por isso, pode não encontrar o arquivo certo, e só cita caminhos que recebeu. Leia o novo texto antes de enviá-lo. Ele não é executado em um comando de barra nem em uma mensagem com um chip de arquivo ou de símbolo (o novo texto é texto simples, então o chip se perderia), e uma mensagem pode ter no máximo 8.000 caracteres. As imagens continuam anexadas: só o texto muda. Cada clique custa uma chamada ao modelo; um modelo forte pode levar um minuto (`Esc` cancela).
|
|
168
175
|
- O suporte nativo foi pedido no projeto original: `move` na fila em [#773](https://github.com/deepseek-ai/deepseek-harness/discussions/773), um estado de Continuar em [#9269](https://github.com/deepseek-ai/deepseek-harness/discussions/9269).
|
|
169
176
|
|
|
170
177
|
## Perguntas frequentes
|
|
@@ -189,6 +196,8 @@ Testado no dsh `0.2.0-rc.2` (desktop e web) e `0.2.1-rc.2` (web). A CI executa o
|
|
|
189
196
|
|
|
190
197
|
**Qual modelo escreve a previsão?** O modelo que você escolhe em **Configurações → Composer Plus → Previsão da próxima mensagem → Modelo**. A lista é a própria lista de modelos do dsh. **Padrão do dsh** segue o modelo padrão do dsh. Se o dsh não listar mais o modelo escolhido, a previsão usa o padrão. **Completar ao digitar** tem o próprio menu **Modelo**: **Igual à previsão da próxima mensagem** (o padrão) segue o modelo da previsão; outra escolha é usada só para os complementos. Se o dsh não listar mais esse modelo, os complementos usam o modelo da previsão.
|
|
191
198
|
|
|
199
|
+
**O dsh pode melhorar meu prompt antes de eu enviá-lo, como o botão Enhance prompt do Roo Code ou do Augment?** Sim, com **Melhorar prompt** (ativado por padrão): digite um pedido aproximado e clique na varinha mágica ao lado do menu de modelos. Ele reescreve o texto com este chat e o projeto como contexto, no seu idioma, e não o envia. `Cmd/Ctrl+Z` ou **Desfazer melhoria** traz o seu texto de volta. Escolha o modelo dele em **Configurações → Composer Plus → Melhorar prompt → Modelo**.
|
|
200
|
+
|
|
192
201
|
**Como reordeno as mensagens na fila do dsh?** Arraste a alça ⠿ de uma mensagem na fila, ou coloque o foco nela e pressione `↑` / `↓`.
|
|
193
202
|
|
|
194
203
|
**Como faço a Revisão automática parar de perguntar sobre a mesma ferramenta em um chat?** Clique em **Permitir neste chat** no cartão de aprovação. Isso cobre só aquela ferramenta exata naquele chat; revogue pelo chip no cabeçalho.
|
|
@@ -219,8 +228,12 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-sidebar-projects.mjs /pa
|
|
|
219
228
|
PLAYWRIGHT=/path/to/playwright node test/browser-recent-finished.mjs /path/to/dsh/lib/bin.js
|
|
220
229
|
# Order by status (fake model + Schedule): real-app test + its thumbnail
|
|
221
230
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-status-order.mjs /path/to/dsh/lib/bin.js
|
|
222
|
-
# every Settings feature row shows a loading screenshot
|
|
231
|
+
# every Settings feature row shows a loading screenshot and a ? link to its README row
|
|
223
232
|
PLAYWRIGHT=/path/to/playwright node test/browser-settings-shots.mjs /path/to/dsh/lib/bin.js
|
|
233
|
+
# What's new after an update: the release notes show once, Esc and Close close them
|
|
234
|
+
PLAYWRIGHT=/path/to/playwright node test/browser-whats-new.mjs /path/to/dsh/lib/bin.js
|
|
235
|
+
# README feature anchors (the ? links) on github.com, headless: each #feature-… shows the start of its row
|
|
236
|
+
PLAYWRIGHT=/path/to/playwright node test/browser-readme-anchors.mjs
|
|
224
237
|
# Keep composer focus (fake model + demo skill): typing goes on after a / command + its thumbnail
|
|
225
238
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-keep-focus.mjs /path/to/dsh/lib/bin.js
|
|
226
239
|
# Mobile connect: switch on, QR popover, a fake iPhone pairs and calls dsh through the gateway, switch off + its thumbnail
|
|
@@ -235,14 +248,17 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-export-markdown.mjs /pat
|
|
|
235
248
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-content-search.mjs /path/to/dsh/lib/bin.js
|
|
236
249
|
# Turn rollback + Delete chat (fake model, made-up git project): bash edit → ↶ Chat and files → files back, .git unchanged; Delete… → Trash + its thumbnails
|
|
237
250
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-turn-rollback.mjs /path/to/dsh/lib/bin.js
|
|
251
|
+
# Improve prompt (fake model, made-up git project): the wand sends the draft with the chat and the project, the answer replaces the draft, Cmd+Z and Undo bring it back + its thumbnail
|
|
252
|
+
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-prompt-improve.mjs /path/to/dsh/lib/bin.js
|
|
238
253
|
```
|
|
239
254
|
|
|
240
255
|
```sh
|
|
241
256
|
npm run build:locales # after editing locales/<id>.json
|
|
257
|
+
npm run build:readme # after editing docs/features.json
|
|
242
258
|
npm test
|
|
243
259
|
```
|
|
244
260
|
|
|
245
|
-
**Regra para novos recursos:** toda linha de recurso em Configurações → Composer Plus mostra uma captura de tela. Adicione o id do recurso a `SHOT_OF` em `client.js` e a `SHOTS` em `index.js`, e inclua `assets/features/<id>.webp` (feita no dsh de demonstração descartável, com a interface em inglês, com cerca de 60 kB ou menos). Adicione o recurso
|
|
261
|
+
**Regra para novos recursos:** toda linha de recurso em Configurações → Composer Plus mostra uma captura de tela. Adicione o id do recurso a `SHOT_OF` em `client.js` e a `SHOTS` em `index.js`, e inclua `assets/features/<id>.webp` (feita no dsh de demonstração descartável, com a interface em inglês, com cerca de 60 kB ou menos). Adicione o recurso, com a mesma imagem, ao `docs/features.json` e execute `npm run build:readme`: ele escreve a tabela de recursos do `README.md` e de cada `README.<id>.md` traduzido, e a lista do `llms.txt`. `test/shots.test.mjs` falha quando um recurso não tem captura de tela, e `test/browser-settings-shots.mjs` verifica a página real de Configurações. A lista de verificação completa para cada alteração está em [AGENTS.md](AGENTS.md).
|
|
246
262
|
|
|
247
263
|
Os testes executam o `client.js` real contra um React/DOM falso e o `index.js` real (parte Host) contra um repositório git temporário. Os testes do gateway do Tether (`test/tether-gateway.test.mjs`) usam um host dsh simulado e um gateway TLS real. O app para iPhone está em `tether/ios` (veja [tether/README.md](tether/README.md) e [tether/AGENTS.md](tether/AGENTS.md)). `node test/browser-history.mjs '<dsh web URL with ?token=…>'` verifica o histórico de entrada em um navegador real, contra um `dsh web` descartável com seu próprio `DSH_HOME`.
|
|
248
264
|
|