ambi 0.2.3

A flexible, multi-backend, customizable AI agent framework, entirely based on Rust.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
基于你上传的最新全部代码,以下是 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)` 对于大上下文模型不够友好,可能导致频繁驱逐,影响长对话质量。                                                                          | 提供更宽松的预设,或至少注释说明推荐值及其含义。                                                                                       |

---

以上是当前版本剩余问题,建议在正式发布前将**中等优先级**项逐一修复,低优先级也可选择性处理从而使框架更加健壮、易用。