looksLikeSandboxRefusal 检测模型是否"声称"自己处于隔离环境/无法访问工具。 触发的关键词组和 的 _DEGRADED_MARKERS 一致。
(text string)
| 2388 | // looksLikeSandboxRefusal 检测模型是否"声称"自己处于隔离环境/无法访问工具。 |
| 2389 | // 触发的关键词组和 的 _DEGRADED_MARKERS 一致。 |
| 2390 | func looksLikeSandboxRefusal(text string) bool { |
| 2391 | if text == "" { |
| 2392 | return false |
| 2393 | } |
| 2394 | t := strings.ToLower(text) |
| 2395 | markers := []string{ |
| 2396 | "/mnt/data", "/workspace", "/home/oai", "filesystem isolado", "ambiente isolado", |
| 2397 | "root linux", "linux/container", "container atual", "não tem acesso ao diret", |
| 2398 | "nao tem acesso ao diret", "não está montado", "nao esta montado", |
| 2399 | "não foi montado", "nao foi montado", "não existe neste ambiente", |
| 2400 | "nao existe neste ambiente", "não pode continuar neste ambiente", |
| 2401 | "não é possível ler", "nao e possivel ler", |
| 2402 | "não foi possível abrir", "nao foi possivel abrir", |
| 2403 | "não foi possível executar", "nao foi possivel executar", |
| 2404 | "falha na interface de execução", "falha no parsing", |
| 2405 | "inferência baseada na estrutura", "inferencia baseada na estrutura", |
| 2406 | "baseada apenas na estrutura", |
| 2407 | } |
| 2408 | for _, m := range markers { |
| 2409 | if strings.Contains(t, m) { |
| 2410 | return true |
| 2411 | } |
| 2412 | } |
| 2413 | return false |
| 2414 | } |
| 2415 | |
| 2416 | // appendToolDebugLog 把每次工具解析的输入文本和解析结果写入日志文件, |
| 2417 | // 用于排查模型为什么没产生 tool_call。出错不影响主流程。 |