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