@asm-agent/coding-agent 0.9.3 → 0.9.4
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/CHANGELOG.md +4 -0
- package/bundled-extensions/00-COMECE-AQUI.txt +233 -0
- package/bundled-extensions/00-INDEX.md +267 -0
- package/bundled-extensions/OLLAMA-TOOL-FORCING-IMPLEMENTATION.md +323 -0
- package/bundled-extensions/OLLAMA-TOOL-FORCING-QUICK-START.txt +113 -0
- package/bundled-extensions/OLLAMA-TOOL-FORCING-TESTS.md +217 -0
- package/bundled-extensions/OLLAMA-TOOL-FORCING.md +155 -0
- package/bundled-extensions/README.txt +178 -0
- package/bundled-extensions/ollama-tool-forcing.ts +90 -0
- package/dist/asm-agent-runtime/run_test.py +19 -0
- package/dist/asm-agent-runtime/src/rlm/__pycache__/__init__.cpython-312.pyc +0 -0
- package/dist/asm-agent-runtime/src/rlm/__pycache__/bash.cpython-312.pyc +0 -0
- package/dist/asm-agent-runtime/src/rlm/__pycache__/repl.cpython-312.pyc +0 -0
- package/dist/asm-agent-runtime/test/__pycache__/test_bash.cpython-312.pyc +0 -0
- package/dist/asm-agent-runtime/test/test_bash.py +5 -3
- package/dist/bundle/{bundled-modules-ZKJOKVMT.js → bundled-modules-ABB56VC3.js} +2 -2
- package/dist/bundle/{chunk-IP6ZYRWR.js → chunk-GUPU2EEK.js} +13 -58
- package/dist/bundle/{chunk-YWSYGTH7.js → chunk-NESKY6T7.js} +2 -2
- package/dist/bundle/{cli-main-YZ2VGIP6.js → cli-main-ZYCGVTZE.js} +2 -2
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/{main-JTKNY7OB.js → main-J36EPND6.js} +2 -2
- package/dist/core/auth-storage.d.ts +0 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +0 -49
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/modes/interactive/auth-flows.d.ts.map +1 -1
- package/dist/modes/interactive/auth-flows.js +1 -1
- package/dist/modes/interactive/auth-flows.js.map +1 -1
- package/dist/postinstall.d.ts.map +1 -1
- package/dist/postinstall.js +40 -3
- package/dist/postinstall.js.map +1 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
# Guia de Implementação - Ollama Tool-Forcing Extension
|
|
2
|
+
|
|
3
|
+
## 🎯 Objetivo
|
|
4
|
+
|
|
5
|
+
Forçar modelos abertos (Qwen, Llama, etc) rodando via Ollama a **sempre chamar ferramentas**
|
|
6
|
+
antes de parar, mantendo o loop autônomo do ASM Agent funcionando continuamente.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 📦 O Que Foi Criado
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
~/.asm-agent/extensions/
|
|
14
|
+
├── ollama-tool-forcing.ts ← Extensão (implementação)
|
|
15
|
+
├── OLLAMA-TOOL-FORCING.md ← Manual completo
|
|
16
|
+
├── OLLAMA-TOOL-FORCING-QUICK-START.txt ← Referência rápida
|
|
17
|
+
└── OLLAMA-TOOL-FORCING-TESTS.md ← Exemplos de teste
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### 📋 Tamanho Total: ~18 KB (minúsculo, impacto zero em performance)
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 🚀 Instalação (Já Feita!)
|
|
25
|
+
|
|
26
|
+
A extensão foi colocada automaticamente em:
|
|
27
|
+
```
|
|
28
|
+
~/.asm-agent/extensions/ollama-tool-forcing.ts
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
ASM Agent a descobrirá automaticamente na próxima inicialização.
|
|
32
|
+
|
|
33
|
+
### ✅ O que você precisa fazer:
|
|
34
|
+
|
|
35
|
+
1. **Nada!** Está pronto para usar.
|
|
36
|
+
|
|
37
|
+
OR
|
|
38
|
+
|
|
39
|
+
2. Se ASM Agent já está rodando:
|
|
40
|
+
- Use `/reload` para recarregar extensões
|
|
41
|
+
- Use `/ollama-tools-info` para verificar se está ativa
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 🎮 Como Usar
|
|
46
|
+
|
|
47
|
+
### Ativação Automática
|
|
48
|
+
|
|
49
|
+
Quando você inicia o ASM Agent, a extensão:
|
|
50
|
+
1. É auto-descoberta (está em ~/.asm-agent/extensions/)
|
|
51
|
+
2. É carregada automaticamente
|
|
52
|
+
3. Injeta a regra de tool-forcing no system prompt
|
|
53
|
+
4. Funciona em TODAS as requisições
|
|
54
|
+
|
|
55
|
+
Você não precisa fazer nada especial.
|
|
56
|
+
|
|
57
|
+
### Verificar Status
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
/ollama-tools-info
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Mostra:
|
|
64
|
+
- Status: ✅ ATIVADO ou ❌ DESATIVADO
|
|
65
|
+
- Permite fazer toggle (ligar/desligar)
|
|
66
|
+
|
|
67
|
+
### Recarregar (se fizer edições)
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
/reload
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Recompila e recarrega todas as extensões.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 🔧 Como Funciona Internamente
|
|
78
|
+
|
|
79
|
+
### Fluxo:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
1. Você envia um prompt ao ASM Agent
|
|
83
|
+
↓
|
|
84
|
+
2. ASM Agent prepara o system prompt
|
|
85
|
+
↓
|
|
86
|
+
3. EXTENSÃO intercepta via before_agent_start
|
|
87
|
+
↓
|
|
88
|
+
4. Extensão adiciona a regra de tool-forcing
|
|
89
|
+
↓
|
|
90
|
+
5. Modelo recebe: system_prompt + regra_de_forcing
|
|
91
|
+
↓
|
|
92
|
+
6. Modelo fica "forçado" a chamar ferramentas
|
|
93
|
+
↓
|
|
94
|
+
7. Loop autônomo continua até completar tarefa
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Regra Injetada:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
## ⚠️ REGRA CRÍTICA: TOOL-FORCING PARA MODELOS LOCAIS
|
|
101
|
+
|
|
102
|
+
Você está rodando num modelo aberto (Ollama/local). Para garantir que trabalhe autonomamente:
|
|
103
|
+
|
|
104
|
+
1. NUNCA pare sem chamar uma ferramenta
|
|
105
|
+
2. Sem gerações vazias
|
|
106
|
+
3. Ferramentas = continuidade
|
|
107
|
+
4. Padrão: pensar → agir → observar → repetir
|
|
108
|
+
5. Proibido terminar sem chamar ferramenta
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 🧪 Teste Rápido
|
|
114
|
+
|
|
115
|
+
Rode isto no ASM Agent com seu Qwen/Llama via Ollama:
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
Crie um arquivo test.txt com "Olá!" e depois exiba seu conteúdo com bash.
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Resultado esperado:**
|
|
122
|
+
- Modelo chama edit para criar
|
|
123
|
+
- Modelo chama bash para exibir
|
|
124
|
+
- Modelo reporta sucesso
|
|
125
|
+
- Não fica preso
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## ⚙️ Personalização
|
|
130
|
+
|
|
131
|
+
### Editar a Regra
|
|
132
|
+
|
|
133
|
+
Para mudar o tom, adicionar regras, etc:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
nano ~/.asm-agent/extensions/ollama-tool-forcing.ts
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Modifique a seção `const toolForceRule = ...`
|
|
140
|
+
|
|
141
|
+
Depois use `/reload` para aplicar.
|
|
142
|
+
|
|
143
|
+
### Criar Variantes
|
|
144
|
+
|
|
145
|
+
Para diferentes comportamentos:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# Cópia para projeto local
|
|
149
|
+
cp ~/.asm-agent/extensions/ollama-tool-forcing.ts .asm-agent/extensions/
|
|
150
|
+
# Edite conforme necessário
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
ASM Agent prioriza extensões locais (.asm-agent/) sobre globais (~/.asm-agent/).
|
|
154
|
+
|
|
155
|
+
### Desativar Temporariamente
|
|
156
|
+
|
|
157
|
+
Use o comando:
|
|
158
|
+
```
|
|
159
|
+
/ollama-tools-info
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Faz toggle entre ✅ e ❌ sem reiniciar.
|
|
163
|
+
|
|
164
|
+
### Remover Permanentemente
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
rm ~/.asm-agent/extensions/ollama-tool-forcing.ts
|
|
168
|
+
/reload
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 🎯 Casos de Uso
|
|
174
|
+
|
|
175
|
+
### ✅ USE QUANDO:
|
|
176
|
+
|
|
177
|
+
- Rodando **Qwen 27b/32b** via Ollama
|
|
178
|
+
- Rodando **Llama** via Ollama
|
|
179
|
+
- Qualquer **modelo aberto local**
|
|
180
|
+
- Modelo que **às vezes congela**
|
|
181
|
+
- Quer **loop autônomo garantido**
|
|
182
|
+
- Quer **evitar gerações vazias**
|
|
183
|
+
|
|
184
|
+
### ❌ PODE DESATIVAR QUANDO:
|
|
185
|
+
|
|
186
|
+
- Rodando **Claude/GPT** (APIs cloud)
|
|
187
|
+
- Modelo está **funcionando bem** já
|
|
188
|
+
- Quer testar **comportamento natural**
|
|
189
|
+
- Rodando teste que espera modelo parar naturalmente
|
|
190
|
+
|
|
191
|
+
Use `/ollama-tools-info` para toggle sem reiniciar.
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## 🐛 Troubleshooting
|
|
196
|
+
|
|
197
|
+
| Problema | Causa | Solução |
|
|
198
|
+
|----------|-------|---------|
|
|
199
|
+
| Extensão não carrega | Erro TypeScript | Verifique sintaxe em ollama-tool-forcing.ts |
|
|
200
|
+
| Modelo ainda fica preso | Extensão não foi recarregada | Use `/reload` depois de iniciar |
|
|
201
|
+
| Regra muito agressiva | Instrução forte demais | Edite e suavize o tom |
|
|
202
|
+
| Funciona às vezes | Dependente do prompt | Teste com prompts mais específicos |
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 📊 Benchmarks Esperados
|
|
207
|
+
|
|
208
|
+
### COM A EXTENSÃO:
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
Tarefa: Criar arquivo + editar + verificar
|
|
212
|
+
|
|
213
|
+
Tempo: ~10-30 segundos
|
|
214
|
+
Chamadas: modelo → bash/edit/ipython → modelo → ... → completo
|
|
215
|
+
Resultado: ✅ Tarefa completada autonomamente
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### SEM A EXTENSÃO (Qwen/Llama pequeno):
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
Tarefa: Criar arquivo + editar + verificar
|
|
222
|
+
|
|
223
|
+
Tempo: ~5-10 segundos
|
|
224
|
+
Chamadas: modelo → pensar → PARAR
|
|
225
|
+
Resultado: ❌ Aguardando sua resposta "e aí?"
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
A extensão sacrifica um pouco de velocidade pelo ganho MASSIVO de confiabilidade.
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## 🔐 Segurança
|
|
233
|
+
|
|
234
|
+
A extensão:
|
|
235
|
+
- ✅ Não executa código seu (apenas injeta texto no prompt)
|
|
236
|
+
- ✅ Não altera ferramentas existentes
|
|
237
|
+
- ✅ Não acessa arquivos/rede
|
|
238
|
+
- ✅ É 100% local
|
|
239
|
+
- ✅ Pode ser auditada (arquivo texto simples)
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## 📚 Documentação Relacionada
|
|
244
|
+
|
|
245
|
+
- **Manual Completo**: OLLAMA-TOOL-FORCING.md
|
|
246
|
+
- **Quick Start**: OLLAMA-TOOL-FORCING-QUICK-START.txt
|
|
247
|
+
- **Testes**: OLLAMA-TOOL-FORCING-TESTS.md
|
|
248
|
+
- **Extensões (ASM Agent)**: ~/dev/ai/asm-agent/packages/coding-agent/examples/extensions/
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 🎓 Aprendizados
|
|
253
|
+
|
|
254
|
+
### Por Que Modelos Menores Congelam
|
|
255
|
+
|
|
256
|
+
Modelos como Qwen 27b (vs Claude 3.5, GPT-4):
|
|
257
|
+
- Não foram treinados tão bem em tool-calling
|
|
258
|
+
- Podem confundir o formato de chamada de ferramenta
|
|
259
|
+
- Podem não entender que devem chamar uma ferramenta
|
|
260
|
+
- Podem gerar um "stop token" por default
|
|
261
|
+
|
|
262
|
+
### Como Essa Extensão Resolve
|
|
263
|
+
|
|
264
|
+
Ela:
|
|
265
|
+
1. Intercepta ANTES do modelo pensar
|
|
266
|
+
2. Injeta uma instrução MUITO CLARA e FORTE
|
|
267
|
+
3. Torna PROIBIDO parar sem ferramentas
|
|
268
|
+
4. Força o modelo a "obedecer" via prompt engineering
|
|
269
|
+
|
|
270
|
+
Não é uma "fix" técnica real — é uma "fix" por prompt.
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 🚀 Próximos Passos
|
|
275
|
+
|
|
276
|
+
1. **Inicialize ASM Agent** (a extensão carrega automaticamente)
|
|
277
|
+
2. **Teste com uma tarefa simples** (criar arquivo + verificar)
|
|
278
|
+
3. **Observe o modelo chamar ferramentas continuamente**
|
|
279
|
+
4. **Ajuste se necessário** usando `/ollama-tools-info` ou edições
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## 💡 Dicas Pro
|
|
284
|
+
|
|
285
|
+
### Combine com Qwen Coder
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
ollama pull qwen2.5-coder:32b
|
|
289
|
+
# MUITO melhor em tool-calling
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Combine com Atualização Ollama
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
ollama --version
|
|
296
|
+
# Atualize se < 0.1.20 (versões antigas engolem tool calls)
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Combine com Outras Extensões
|
|
300
|
+
|
|
301
|
+
Você pode ter múltiplas extensões simultaneamente:
|
|
302
|
+
- ollama-tool-forcing.ts (sua nova regra)
|
|
303
|
+
- git-checkpoint.ts (backup automático)
|
|
304
|
+
- permission-gate.ts (confirmação antes de rm -rf)
|
|
305
|
+
- etc
|
|
306
|
+
|
|
307
|
+
Copie exemplos de:
|
|
308
|
+
~/dev/ai/asm-agent/packages/coding-agent/examples/extensions/
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## 📞 Suporte
|
|
313
|
+
|
|
314
|
+
Se tiver dúvidas:
|
|
315
|
+
|
|
316
|
+
1. Leia: OLLAMA-TOOL-FORCING.md
|
|
317
|
+
2. Teste: OLLAMA-TOOL-FORCING-TESTS.md
|
|
318
|
+
3. Edite: ollama-tool-forcing.ts (é um arquivo simples)
|
|
319
|
+
4. Recarregue: /reload
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
✨ **Tudo pronto! Sua Custom Rule está funcionando.** ✨
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
|
|
2
|
+
╔════════════════════════════════════════════════════════════════════════════════╗
|
|
3
|
+
║ ✅ CUSTOM RULE CRIADA COM SUCESSO! ║
|
|
4
|
+
║ Ollama Tool-Forcing Extension para ASM Agent ║
|
|
5
|
+
╚════════════════════════════════════════════════════════════════════════════════╝
|
|
6
|
+
|
|
7
|
+
📦 ARQUIVO CRIADO:
|
|
8
|
+
~/.asm-agent/extensions/ollama-tool-forcing.ts
|
|
9
|
+
|
|
10
|
+
📖 DOCUMENTAÇÃO:
|
|
11
|
+
~/.asm-agent/extensions/OLLAMA-TOOL-FORCING.md
|
|
12
|
+
|
|
13
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
14
|
+
|
|
15
|
+
🎯 O QUE FAZ:
|
|
16
|
+
|
|
17
|
+
A extensão **força automaticamente** modelos open-weights (Qwen, Llama, etc)
|
|
18
|
+
rodando via Ollama a:
|
|
19
|
+
|
|
20
|
+
✅ NUNCA parar sem chamar uma ferramenta
|
|
21
|
+
✅ Chamar bash/edit/ipython para continuar trabalho
|
|
22
|
+
✅ Manter o loop autônomo do ASM Agent funcionando
|
|
23
|
+
✅ Evitar gerações "vazias" que congelam sessões
|
|
24
|
+
|
|
25
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
26
|
+
|
|
27
|
+
🚀 COMO USAR:
|
|
28
|
+
|
|
29
|
+
1️⃣ A extensão é auto-descoberta
|
|
30
|
+
Ela será carregada automaticamente na próxima sessão
|
|
31
|
+
|
|
32
|
+
2️⃣ Para ativar já em sessão aberta, use:
|
|
33
|
+
/reload
|
|
34
|
+
|
|
35
|
+
3️⃣ Para verificar status e fazer toggle:
|
|
36
|
+
/ollama-tools-info
|
|
37
|
+
|
|
38
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
39
|
+
|
|
40
|
+
📋 SYSTEM PROMPT INJETADO:
|
|
41
|
+
|
|
42
|
+
A extensão adiciona automaticamente esta regra ao final do system prompt:
|
|
43
|
+
|
|
44
|
+
## ⚠️ REGRA CRÍTICA: TOOL-FORCING PARA MODELOS LOCAIS
|
|
45
|
+
|
|
46
|
+
1. NUNCA pare sem chamar uma ferramenta
|
|
47
|
+
2. Sem gerações vazias (só thinking não é permitido)
|
|
48
|
+
3. Ferramentas = continuidade (use bash, edit, ipython constantemente)
|
|
49
|
+
4. Padrão: pensar → agir → observar → repetir
|
|
50
|
+
5. Proibido terminar sem chamar ferramenta
|
|
51
|
+
|
|
52
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
53
|
+
|
|
54
|
+
⚙️ PERSONALIZAÇÕES OPCIONAIS:
|
|
55
|
+
|
|
56
|
+
Você pode editar o arquivo para:
|
|
57
|
+
• Mudar o tom da instrução
|
|
58
|
+
• Adicionar regras específicas do seu workflow
|
|
59
|
+
• Desabilitar para certos tipos de tarefas
|
|
60
|
+
• Adicionar logging de quando a regra foi aplicada
|
|
61
|
+
|
|
62
|
+
Edite: ~/.asm-agent/extensions/ollama-tool-forcing.ts
|
|
63
|
+
|
|
64
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
65
|
+
|
|
66
|
+
📚 DOCUMENTAÇÃO COMPLEMENTAR:
|
|
67
|
+
|
|
68
|
+
Para mais detalhes, leia:
|
|
69
|
+
~/.asm-agent/extensions/OLLAMA-TOOL-FORCING.md
|
|
70
|
+
|
|
71
|
+
Contém:
|
|
72
|
+
• Explicação detalhada do problema
|
|
73
|
+
• Quando usar/não usar
|
|
74
|
+
• Dicas de otimização (Qwen Coder, versão Ollama, etc)
|
|
75
|
+
• Como remover se necessário
|
|
76
|
+
|
|
77
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
78
|
+
|
|
79
|
+
🔧 RELACIONADO:
|
|
80
|
+
|
|
81
|
+
Se quiser mais controle, você também pode:
|
|
82
|
+
|
|
83
|
+
1. Usar --system-prompt flag ao iniciar ASM Agent
|
|
84
|
+
2. Criar um arquivo SYSTEM.md no projeto
|
|
85
|
+
3. Usar múltiplas extensões juntas
|
|
86
|
+
4. Combinar com outras regras (permission-gate, git-checkpoint, etc)
|
|
87
|
+
|
|
88
|
+
Veja exemplos em:
|
|
89
|
+
~/dev/ai/asm-agent/packages/coding-agent/examples/extensions/
|
|
90
|
+
|
|
91
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
92
|
+
|
|
93
|
+
✨ RESUMO DO CICLO:
|
|
94
|
+
|
|
95
|
+
ANTES (problema):
|
|
96
|
+
Modelo → pensa → para → ASM Agent aguarda → você fica preso
|
|
97
|
+
|
|
98
|
+
DEPOIS (com a extensão):
|
|
99
|
+
Modelo → pensa → chama bash → observa resultado → pensa novamente
|
|
100
|
+
→ chama edit/ipython → continua autônomo até completar tarefa
|
|
101
|
+
|
|
102
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
103
|
+
|
|
104
|
+
🎬 PRÓXIMOS PASSOS:
|
|
105
|
+
|
|
106
|
+
1. Reinicie o ASM Agent (a extensão será carregada automaticamente)
|
|
107
|
+
2. Rode uma tarefa com seu Qwen/Llama via Ollama
|
|
108
|
+
3. Observe o modelo sendo forçado a chamar ferramentas constantemente
|
|
109
|
+
4. Se quiser desativar, use /ollama-tools-info ou delete o arquivo
|
|
110
|
+
|
|
111
|
+
╔════════════════════════════════════════════════════════════════════════════════╗
|
|
112
|
+
║ 🎉 Extensão pronta! Teste agora com seu modelo! ║
|
|
113
|
+
╚════════════════════════════════════════════════════════════════════════════════╝
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# Exemplos de Teste - Ollama Tool-Forcing Extension
|
|
2
|
+
|
|
3
|
+
Após ativar a extensão, teste com estes comandos no ASM Agent.
|
|
4
|
+
|
|
5
|
+
## Teste 1: Tarefa Simples com Verificação
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Crie um arquivo chamado "test.txt" com o texto "Olá, Ollama!" e depois verifique
|
|
9
|
+
o conteúdo usando bash.
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
**Resultado esperado:**
|
|
13
|
+
- Modelo vai pensar
|
|
14
|
+
- Modelo chama bash/edit para criar arquivo
|
|
15
|
+
- Modelo chama bash para verificar conteúdo
|
|
16
|
+
- Modelo continua até completar (não fica preso)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Teste 2: Script Python
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
Escreva um script Python que imprime "Hello" 10 vezes e depois execute-o.
|
|
24
|
+
Mostre os resultados.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Resultado esperado:**
|
|
28
|
+
- Modelo chama edit para criar o script
|
|
29
|
+
- Modelo chama bash (ou ipython) para rodar
|
|
30
|
+
- Modelo observa saída e confirma sucesso
|
|
31
|
+
- Loop completo
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Teste 3: Navegação de Projeto
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Você está no diretório atual. Liste os arquivos do diretório pai usando bash,
|
|
39
|
+
analise quantos são diretórios vs arquivos, e reporte os dados.
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Resultado esperado:**
|
|
43
|
+
- Modelo chama bash (pwd, ls, etc)
|
|
44
|
+
- Modelo processa informação
|
|
45
|
+
- Modelo chama bash novamente se precisar de mais dados
|
|
46
|
+
- Completa a análise
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Teste 4: Édição de Arquivo Múltipla
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
1. Crie um arquivo chamado "config.json" com objeto vazio {}
|
|
54
|
+
2. Adicione um campo "version": "1.0"
|
|
55
|
+
3. Adicione um campo "name": "test-app"
|
|
56
|
+
4. Verifique o resultado final
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Resultado esperado:**
|
|
60
|
+
- Modelo chama edit para criar
|
|
61
|
+
- Modelo chama edit novamente para adicionar campos
|
|
62
|
+
- Modelo chama bash para verificar
|
|
63
|
+
- Nunca fica preso entre passos
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Teste 5: Loop Autônomo Completo
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
Implemente uma função em Python que:
|
|
71
|
+
1. Calcula o fatorial de 5
|
|
72
|
+
2. Verifica se o resultado é par ou ímpar
|
|
73
|
+
3. Escreve o resultado em um arquivo
|
|
74
|
+
4. Lê o arquivo para confirmar
|
|
75
|
+
|
|
76
|
+
Faça tudo isso automaticamente sem parar.
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Resultado esperado:**
|
|
80
|
+
- Modelo chama ipython/edit múltiplas vezes
|
|
81
|
+
- Modelo usa bash para ler arquivo
|
|
82
|
+
- Modelo continua autonomamente
|
|
83
|
+
- Completa TODOS os passos sem intervenção
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Como Verificar se Está Funcionando
|
|
88
|
+
|
|
89
|
+
### ✅ Sinais de SUCESSO:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
[Thinking: ... análise do problema ...]
|
|
93
|
+
[Tool Call: bash - pwd]
|
|
94
|
+
[Tool Call: edit - criar arquivo]
|
|
95
|
+
[Tool Call: bash - verificar]
|
|
96
|
+
[Thinking: ... análise dos resultados ...]
|
|
97
|
+
Tarefa completada! Aqui estão os resultados...
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Há uma **sequência clara** de: pensar → agir → observar → repetir
|
|
101
|
+
|
|
102
|
+
### ❌ Sinais de PROBLEMA:
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
[Thinking: ... análise do problema ...]
|
|
106
|
+
[Esperando sua resposta...]
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Se o modelo apenas faz **thinking** e para, a extensão não está funcionando.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Comandos Úteis Durante Testes
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Ver status da extensão
|
|
117
|
+
/ollama-tools-info
|
|
118
|
+
|
|
119
|
+
# Recarregar extensões se fizer edições
|
|
120
|
+
/reload
|
|
121
|
+
|
|
122
|
+
# Ver informações do sistema prompt
|
|
123
|
+
/ollama-tools-info
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Ajustes Se Não Funcionar
|
|
129
|
+
|
|
130
|
+
Se o modelo ainda ficar preso:
|
|
131
|
+
|
|
132
|
+
### Opção 1: Instrução Manual
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
"Está tudo bem com o andamento? Chame uma ferramenta (bash ou ipython) para
|
|
136
|
+
continuar verificando o progresso e avançar a tarefa."
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Opção 2: Usar Qwen Coder
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
ollama pull qwen2.5-coder:32b
|
|
143
|
+
ollama run qwen2.5-coder:32b
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
A versão Coder é muito melhor em tool-calling.
|
|
147
|
+
|
|
148
|
+
### Opção 3: Atualizar Ollama
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
ollama --version
|
|
152
|
+
# Se versão antiga, atualize
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Opção 4: Editar a Extensão
|
|
156
|
+
|
|
157
|
+
Se quiser fazer a regra ainda mais forte, edite:
|
|
158
|
+
```
|
|
159
|
+
~/.asm-agent/extensions/ollama-tool-forcing.ts
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
E aumente o "peso" da instrução ou adicione consequências explícitas.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Dicas de Debug
|
|
167
|
+
|
|
168
|
+
### Ver logs:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# Se algo falhar na compilação da extensão
|
|
172
|
+
tail -f ~/.asm-agent/logs/* # (se existir)
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Verificar se o arquivo está correto:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
ls -la ~/.asm-agent/extensions/ollama-tool-forcing.ts
|
|
179
|
+
wc -l ~/.asm-agent/extensions/ollama-tool-forcing.ts
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Recarregar sem reiniciar:
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
/reload
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Isso recompila e carrega todas as extensões.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Problemas Comuns
|
|
193
|
+
|
|
194
|
+
| Problema | Solução |
|
|
195
|
+
|----------|---------|
|
|
196
|
+
| Modelo ainda fica preso | Tente `/reload`, depois teste novamente |
|
|
197
|
+
| Extensão não carrega | Verifique sintaxe TypeScript do arquivo |
|
|
198
|
+
| Tool-forcing muito agressivo | Edite o arquivo e suavize o tom |
|
|
199
|
+
| Funciona em alguns casos mas não outros | Pode ser dependente do modelo/prompt |
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Para Mais Ajuda
|
|
204
|
+
|
|
205
|
+
Leia o arquivo completo:
|
|
206
|
+
```
|
|
207
|
+
~/.asm-agent/extensions/OLLAMA-TOOL-FORCING.md
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Ou veja exemplos de outras extensões:
|
|
211
|
+
```
|
|
212
|
+
~/dev/ai/asm-agent/packages/coding-agent/examples/extensions/
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
**Boa sorte! 🚀**
|