基于你上传的最新全部代码,以下是 Ambi 0.2.3 当前版本中仍存在的问题清单,按严重性从高到低排列。
> 所有之前已修复的问题(高优先级4项、Token 估算消除、`enable_formatting` 重命名等)均已确认无误,不再列出。
| 严重性 | 文件 | 位置/相关函数 | 问题描述 | 建议修复方案 |
|-------|-------------------------|---------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------|
| **中** | `translator.rs` | `get_request` 中图像处理 | **图像 MIME 类型假设**:对于未带 `data:` 头的 base64 图片,强制拼接 `data:image/jpeg;base64,`,若实际为 PNG 等格式会导致模型解码失败。 | 要求用户提供完整 Data URI,或在 `ContentPart::Image` 中增加 `mime_type` 字段,框架不做猜测。当前可先检查 `base64` 是否以 `data:image/` 开头,否则报错。 |
| **中** | `builder.rs` | `with_eviction_strategy` | **驱逐策略参数含义不清**:三个裸 `usize` 参数,调用时容易传错顺序,可读性差。 | 使用结构体 `EvictionStrategy { keep_head: usize, keep_tail: usize, max_safe_tokens: usize }` 作为参数,或至少加文档注释。 |
| **中** | `prompt.rs` | `build_prompt` | **`tool_id` 未被使用**:构建 Tool 消息时丢弃了 `tool_id` 字段,使得自定义模板无法区分不同工具调用结果。 | 将 `tool_id` 传入 `ChatTemplate` 的 `tool_prefix`/`tool_suffix` 构建逻辑,或预留扩展点。 |
| **低** | `formatter.rs` | `push`(缓冲区溢出分支) | **错误文本直接注入输出流**:溢出时返回的 `"[Error: Tool output exceeded...]"` 是普通文本,可能破坏前端解析逻辑。 | 考虑改为通过 `log::error!` 记录,并让 `push` 返回空字符串,同时终止流或发送带外错误。 |
| **低** | `tool_handler.rs` | `process_tool_calls_output` | **格式错误工具调用被静默忽略**:`__format_error__` 类型的工具调用在格式化输出时被 `continue` 跳过,用户看不到任何提示,模型也得不到反馈。 | 可将格式错误信息作为特殊工具输出插入,或至少记录日志。 |
| **低** | `lib.rs` / `README` | 全局 | **缺少对 Tokio 运行时依赖的说明**:`Agent::make` 内部使用 `tokio::task::spawn_blocking`,如果用户使用其他异步运行时(如 async-std)会崩溃。 | 在文档和 README 中明确标注要求 Tokio 运行时,并注明支持多线程运行时。 |
| **低** | `agent.rs`(AgentConfig) | `Default for AgentConfig` | **默认驱逐策略可能过小**:`(2, 6, 3000)` 对于大上下文模型不够友好,可能导致频繁驱逐,影响长对话质量。 | 提供更宽松的预设,或至少注释说明推荐值及其含义。 |
---
以上是当前版本剩余问题,建议在正式发布前将**中等优先级**项逐一修复,低优先级也可选择性处理从而使框架更加健壮、易用。