@coder.
Os atômicos coexistem com o
@coder — @coder read/search/tree continuam funcionando. A diferença é que o LLM agora pode escolher o tool narrow (mais preciso) quando quiser executar uma única operação read-only.Os quatro tools
@read — leitura de arquivo
Equivalente ao Read do Claude Code. Schema flat:
path, filepath. Faixa de linhas, head/tail e encoding base64 suportados. Cap de output: 80 000 chars (versus 30k global) — arquivos grandes (~1500 linhas) cabem inteiros.
@search — busca por regex
Equivalente ao Grep do Claude Code. Schema flat:
pattern, query, regex. Glob de inclusão, limite configurável de resultados. Cap: 60 000 chars.
@tree — árvore de diretórios
Schema flat (todos opcionais — {} lista o cwd):
@todo — gestão de plano de tarefas
Paridade com TodoWrite do Claude Code. Três subcomandos:
pending | in_progress | completed | failed. O @todo adapter encaminha pra cli/agent/task_tracker.go ativo do AgentMode atual.
Por que narrow tools importam
Multipatch transacional
Novidade no@coder:
Validação por JSON Schema
Cada plugin atômico ship um JSON Schema draft-2020-12. O agent loop valida os args do LLM antes de chamarExecute. Falhas geram ToolResult{IsError:true, ErrorCode:"InvalidArgs"} com path do campo inválido — o modelo recebe feedback claro em vez de um panic/empty.
Plugins legados sem JSONSchemaAware bypassam validação (mudança puramente aditiva).
Capability-aware permission gate
Opolicy_manager agora consulta o capability resolver antes de cair no default ActionAsk:
- Deny rules (estrito)
- Safety-immune (sempre asks)
- Allow/Ask explícito (longest pattern wins)
- Read-only exec heuristic
- NOVO: capability gate — auto-allow para plugin com
IsReadOnly=true - Default: Ask
@read, @search, @tree, @websearch, @webfetch (GET), @scheduler query/list rodam sem prompt enquanto write/exec continuam gated.