@coder e a suite de engenharia usada pelo Modo Coder (/coder). Ele fornece ações para ler/procurar arquivos, aplicar patches com segurança, rodar comandos e reverter alterações.
@coder e um plugin builtin — já vem embutido no binario do ChatCLI e funciona imediatamente, sem instalação. Se precisar de uma versão customizada, basta colocar o binario em ~/.chatcli/plugins/ e ele prevalece sobre o builtin. Ao remove-lo, o builtin volta automaticamente no próximo /plugin reload.Referência Rapida
Tabela com todos os subcomandos e suas flags mais usadas:Formatos de Argumentos
O@coder aceita dois formatos de argumentos: JSON e CLI-style. Ambos são equivalentes.
- Formato JSON (recomendado)
- Formato CLI-style
args de um <tool_call>. A estrutura e:Subcomandos — Referência Completa
read -- Ler Arquivos
read -- Ler Arquivos
write -- Escrever Arquivos
write -- Escrever Arquivos
.bak do arquivo existente antes de sobrescrever.Flags
Exemplos
- JSON
- CLI-style
write bem-sucedido (também patch e multipatch), o ChatCLI roda o language server nos arquivos tocados e anexa os achados ao resultado da tool como um bloco [DIAGNOSTICS] — então uma edição quebrada é pega imediatamente, no mesmo turno, em vez de turnos depois quando um teste falha. É silencioso em arquivos limpos, limitado a 5 arquivos / 3000 caracteres, e desligado com CHATCLI_CODER_AUTODIAG=off. Exige um language server disponÃvel para a linguagem do arquivo (veja LSP Diagnostics).patch -- Aplicar Patches
patch -- Aplicar Patches
Flags
--search + --replace) ou o modo diff (--diff). Não combine os dois.Modo Search/Replace
- JSON
- CLI-style
Modo Unified Diff
- JSON
- CLI-style
tree -- Estrutura de Diretorios
tree -- Estrutura de Diretorios
search -- Busca Full-Text
search -- Busca Full-Text
outline -- Esqueleto de SÃmbolos do Arquivo
outline -- Esqueleto de SÃmbolos do Arquivo
go/ast do Go: funções com seu receiver, structs, interfaces, consts, vars); para Python, JS/TS/JSX, Java, Ruby, Rust, Kotlin, C# e PHP um outline baseado em padrões reconhece as formas de declaração comuns. Somente leitura.Flags
Exemplos
- JSON
- CLI-style
map -- Mapa Estrutural do Repositório
map -- Mapa Estrutural do Repositório
.git, node_modules, vendor, dist, build, arquivos ocultos e *_test.go. Somente leitura. Use para se orientar em uma codebase grande sem ler arquivos inteiros.Flags
Exemplos
- JSON
- CLI-style
exec -- Executar Comandos
exec -- Executar Comandos
test -- Rodar Testes
test -- Rodar Testes
git-status -- Status do Repositório
git-status -- Status do Repositório
Exemplos
- JSON
- CLI-style
git-diff -- Diferencas Pendentes
git-diff -- Diferencas Pendentes
git-log -- Histórico de Commits
git-log -- Histórico de Commits
git-changed -- Arquivos Alterados
git-changed -- Arquivos Alterados
rollback -- Reverter Alterações
rollback -- Reverter Alterações
clean -- Remover Backups
clean -- Remover Backups
.bak criados pelo sistema de backup.Não possui flags obrigatórias.Exemplos
- JSON
- CLI-style
checkpoint -- Snapshots Shadow-git
checkpoint -- Snapshots Shadow-git
.bak — cobre edições multi-arquivo e efeitos colaterais do exec, não apenas um arquivo.Um checkpoint é tirado automaticamente antes de todo subcomando mutante (write, patch, multipatch, exec). O snapshot vive num GIT_DIR separado sob ~/.chatcli/checkpoints/<hash> com o seu workspace como work tree, então o seu próprio .git nunca é tocado e o .gitignore do projeto é respeitado.Flags
Exemplos
- JSON
- CLI-style
--restore nunca apaga arquivos adicionados depois do snapshot; ele só rebobina o que o snapshot rastreava. Passa pelo gate de segurança; --list e --create são somente leitura.git não está instalado, e desligados por completo com CHATCLI_CODER_CHECKPOINTS=off.Eles também são limitados: workspaces amplos como o seu diretório home (ou qualquer diretório que o contenha) nunca recebem snapshot automático — hashear tanto disco congelaria todos os comandos — e cada snapshot roda sob um deadline rÃgido (10s automático, 60s para um checkpoint create explÃcito, sobrescrevÃvel em segundos via CHATCLI_CODER_CHECKPOINT_TIMEOUT). Falhas repetidas de snapshot fazem backoff exponencial e, após três seguidas, desativam snapshots automáticos pelo resto da sessão com um aviso de uma linha.Multipatch transacional
Quando uma refatoração precisa tocar vários arquivos como uma unidade (renomear identificador propagado por 5 arquivos, atualizar import em todos os consumidores, etc.), usemultipatch em vez de uma cadeia de patch. O contrato:
Phase 1 — validação (sem escrita)
search→replace em memória, e verifica que o search continua presente após edições anteriores ao mesmo arquivo. Falha em qualquer edição aborta a transação antes de qualquer escrita ao disco.Phase 2 — commit
Concorrência
search→replace exatamente uma vez (strings.Replace com n=1). Para substituir múltiplas ocorrências no mesmo arquivo, declare múltiplas edições. O encoding base64 é suportado por-edição ("encoding":"base64") para payloads com bytes não-UTF8.Sistema de Backup
O@coder implementa um sistema de backup automático para proteger contra alterações indesejadas.
Escrita ou Patch
write ou patch, o plugin verifica se o arquivo-alvo já existe.Criacao do Backup
.bak (ex: main.go -> main.go.bak).Aplicação da Alteracao
Rollback DisponÃvel
rollback --file main.go para restaurar a versão anterior a partir do .bak.Limpeza
clean para remover todos os arquivos .bak quando não precisar mais dos backups.Validação de Caminhos e Segurança
O@coder aplica diversas validações de segurança em todos os caminhos de arquivo:
Limite de Workspace
../../etc/passwd).Resolução de Symlinks
Caminhos Sensiveis
/etc/shadow, /etc/passwd) são bloqueados por padrão, impedindo leitura ou escrita.Comandos Perigosos
exec filtra padroes destrutivos conhecidos como rm -rf /, dd, fork bombs e outros. Esses comandos são rejeitados antes da execução.Exemplo Completo de Uso (no /coder)
No modo/coder, o assistente responde com um bloco reasoning e em seguida um tool_call. O bloco é dimensionado pela tarefa: um pedido de um passo só (uma consulta, um comando, uma resposta) recebe uma linha e nenhuma lista de tarefas, enquanto qualquer coisa com dois ou mais passos recebe um plano numerado curto com marcas [✓] conforme avança. A regra mora no system prompt estável de propósito: decidir por query mudaria o prompt e reescreveria o prefixo cacheado. O mesmo prompt amarra afirmações a evidência: quando resultados de tools fundamentam a resposta, números, datas, prazos, regras e nomes de lugares especÃficos vêm só dessa evidência, e o que vem do conhecimento próprio do modelo é rotulado como não verificado ou estimativa na frase que o usa, nunca apresentado com a autoridade de uma fonte consultada. Aqui está um fluxo completo de engenharia:
Recuperação de JSON e Parsing Robusto
O@coder inclui um sistema de recuperação de JSON que corrige automaticamente argumentos malformados gerados por LLMs:
7 Estrategias de Recovery
Escaped Quotes em Shell
exec --cmd "echo \"hello\"".Normalizacao de Aspas Unicode
Execução Concorrente
Notas Importantes
@coder aparece em /plugin list com a tag [builtin]. Não e possivel desinstala-lo via /plugin uninstall.FAQ do Plugin @coder
O @coder aceita JSON em args?
O @coder aceita JSON em args?
Quando usar patch --diff vs --search/--replace?
Quando usar patch --diff vs --search/--replace?
--search/--replace para substituicoes simples e pontuais em um único local do arquivo. Use --diff quando precisar aplicar múltiplas alterações ao mesmo tempo ou quando a alteracao envolve adicao/remocao de linhas em diferentes trechos do arquivo. O diff pode ser codificado em text ou base64.O exec e perigoso?
O exec e perigoso?
@coder exec bloqueia padroes perigosos por padrão, como rm -rf /, dd em alvos de disco e fork bombs. A proteção e automática e não precisa ser configurada.Existe limite de leitura?
Existe limite de leitura?
--max-bytes 200000 (200KB). Use também --head ou --tail para ler apenas partes do arquivo. Isso evita que saidas muito grandes sobrecarreguem o contexto do modelo.O que acontece se eu fizer write duas vezes no mesmo arquivo?
O que acontece se eu fizer write duas vezes no mesmo arquivo?
.bak e sobrescrito a cada operação. Apenas a versão imediatamente anterior a ultima escrita estara disponÃvel para rollback. Se precisar de histórico completo, use git para gerenciar versões.Posso usar @coder fora do modo /coder?
Posso usar @coder fora do modo /coder?
@coder pode ser invocado em qualquer modo que suporte tool_calls. O modo /coder simplesmente configura o system prompt para guiar o modelo a usar @coder como ferramenta principal.Como substituir o @coder builtin por uma versão customizada?
Como substituir o @coder builtin por uma versão customizada?
~/.chatcli/plugins/. Ele prevalecera sobre o builtin. Para voltar ao builtin, remova o binario customizado e execute /plugin reload.O --encoding base64 e necessário?
O --encoding base64 e necessário?
write e patch quando o conteúdo contem caracteres especiais, aspas, barras invertidas ou múltiplas linhas. O base64 elimina completamente problemas de escape no JSON.Próximos passos
Modo Coder
/coder orquestra @coder num loop ReAct completo.Coder Security
Enhanced Permissions
JSON Recovery
File Staleness
Cookbook: Corrigir testes
@coder para consertar testes autônomamente.