跳转到主要内容
此项目的所有重要更改都记录在此。 格式遵循 Keep a Changelog。版本对应于 Roadmap 里程碑。

[未发布]

Added

  • 非英文文档现在显示完整的 API 参考(OpenAPI 端点)和通道配置页面。 之前只有英文站点呈现这些部分——zh / ja / ko / de / fr 导航缺少 Endpoints 组和 Configuration > Channels 子组,导致这些语言的读者无法访问自动生成的 API 演练场或 Feishu 通道设置指南。这是迁移 docs/docs.json 到单一英文源(docs/nav.template.json + scripts/docs-nav-glossary.json)的副作用而得到修复;该源确定性地重新生成所有六种语言环境,不再需要在添加新文档页面时进行手动的按语言环境同步。
  • 管理员用户:按用户无限配额 + 已注册列。 现在将配额字段留空会继承全局限制;将其设置为 0 会授予用户无限使用权。之前两者都会折叠为同一状态,因此授予个人无限访问权限需要直接编辑数据库。用户表还新增了一个”已注册”列用于入职审计。

已修复

  • 智能体设置:绑定资源在进入时不再闪烁显示”(已删除)”。 KB / 连接器 / MCP服务器选择器之前从selected − available同步派生孤立徽章,因此任何库存列表获取速度慢于智能体获取的智能体都会在快速恢复到正确状态之前短暂地将每个链接资源标记为已删除——对于拥有多个连接器的组织智能体最为明显。孤立徽章现在会等待每个库存获取完成后再进行渲染。
  • 提示框现在遵循浅色/深色主题。 根提示框之前被硬编码为深色,不管用户偏好如何。
  • 按智能体的使用情况分解不再重复”直接聊天”行。 与已删除智能体关联的对话之前会为每个孤立的agent_id生成一行;现在它们会折叠为单一行。
  • 自托管部署不再因container name already in use而间歇性失败。 新的幂等./deploy.sh包装器在docker compose up之前清扫哈希前缀的僵尸容器和DooD沙箱子进程,因此重复部署不再在沙箱服务名称上发生碰撞。
  • 推送后不再出现冗余的chore(i18n): sync translations提交。 预提交翻译钩子在磁盘上更新了.translation-cache.json但忘记暂存它,因此CI会看到陈旧的缓存条目,重新翻译相同的部分,并由于LLM的非确定性而自动提交略有不同的输出。钩子现在会将缓存与翻译文件一起暂存——CI检测到无差异并按预期静默退出。
  • 智能体聊天在确认必需的工具在未绑定智能体会话中运行时不再崩溃。 调用标记为requires_confirmation=true的内置工具的纯模型对话之前会触发硬500错误(或UI中的红色”无agent_id”闸门错误),因为按智能体的审批路由器没有要查询的配置。当没有智能体可路由时,闸门现在会优雅地退出,聊天流不再在缺失agent_cfg时出错。
  • 在严格交替提供商的历史记录包含孤立用户消息时,重试不再失败。 停止并重试一个回合会在对话历史中留下”已停止”的用户消息;将该历史记录重放到Claude(它强制交替的用户/助手回合)之前会返回HTTP 400并静默丢弃早期消息。相同角色的连续消息现在在分发前会折叠为单一回合,因此每个孤立消息都会作为上下文被携入下一次调用——即使您停止、添加”我还没说完——继续这个…”并重试,重试也能工作。
  • 演练场重试不再短暂显示查询两次。 重试流程同时重放了历史记录中的已停止回合并为进行中的回合渲染了新的用户气泡;在流前窗口期间两者都可见。现在当历史记录已经渲染相同内容时,进行中的气泡会被抑制。
  • ReAct智能体在操作员拒绝审批请求后不再重试改述的工具调用——它会确认拒绝并停止。

已更改

  • 翻译权威从语言环境文件转移到词汇表:翻译规则现在位于scripts/translation-glossary.md——一个加载到每个LLM翻译调用中的单一真实来源(JSON、MDX、README)。预提交钩子现在无条件地拒绝对生成的语言环境文件的手动编辑(移除了之前的ALLOW_LOCALE_EDIT=1覆盖),因为分散的按语言环境编辑会悄悄漂移并在完整重新翻译时被覆盖。要修复误翻译,请编辑词汇表(一个适用于所有五种语言的永久规则)并使用--force重新生成受影响的文件。之前嵌入在三个系统提示中的内联词汇表规则已合并到外部词汇表文件中。

[v0.8.5] - 2026-04-23

新增

  • 贡献者友好的 i18n 工作流:贡献者不再需要配置 LLM_API_KEY 即可提交涉及英文源文件的 PR。如果跳过本地 pre-commit 翻译步骤(无密钥),新的 .github/workflows/i18n-sync.yml 工作流会在 PR 合并后在 master 上将 EN → ZH/JA/KO/DE/FR 进行翻译,并自动提交结果。pre-commit 钩子现在还会拒绝对生成的语言环境文件进行手动编辑(可使用 ALLOW_LOCALE_EDIT=1 覆盖以进行合法的翻译修复),防止 EN 源文件和翻译输出之间出现无声漂移。
  • i18n CI 回退端到端验证:烟雾测试推送(仅 EN,本地翻译钩子已跳过)确认 GitHub Actions 工作流检测到更改的源文件,翻译成所有五种语言环境,并使用 [skip ci] 自动提交结果到 master 以防止递归。
  • Exa 集成文档页面:侧边栏中的专用集成部分,包含一流的 Exa 页面,涵盖完整的 Exa 搜索表面(neural / fast / deep-reasoning / instant)、过滤、内容检索和三个针对新闻监控、研究论文检索和深度推理智能体的调优预设。作为 Exa 集成目录的合作伙伴面向登陆页面。
  • 信创数据库支持:数据库连接器现在列出 KingbaseES(人大金仓)、HighGo(瀚高)和 DM8(达梦),与 PostgreSQL/MySQL 并列。KingbaseES 和 HighGo 与 PG 兼容,重用 asyncpg,无需额外依赖;DM8 使用官方 dmPython 供应商轮子。独立的 scripts/test_xinchuang_dbs.py 让运营人员可以从 CLI 验证实时连接。
  • 飞书频道 + 通过 IM 的确认门:新的 Channel 资源类型(组织范围,凭证静态加密)让组织连接飞书应用以进行出站消息传递。标记为 requires_confirmation=True 的工具现在会向配置的飞书群组发送 Approve/Reject 交互卡片,而不仅仅在门户中显示确认对话框——群组的任何授权成员都可以直接从飞书中批准或拒绝。涵盖设置 → 频道管理 UI(列表、创建/编辑带脏状态保护、带可复制回调 URL 的详情、测试发送)、CRUD API(/api/channels)和飞书事件回调端点(/api/channels/{id}/callback),具有签名验证和 URL 质询支持。v0.9 IM 频道集成路线图项目的第一步,提前为 2026-04-24 路演发布。
  • 智能体钩子系统(骨架)src/fim_one/core/hooks/ 中的新 PreToolUseHook / PostToolUseHook 抽象让确定性逻辑在 LLM 循环外运行——FeishuGateHook 是第一个具体实现,附加到确认门流程。完整的钩子生命周期 + 用户定义的 YAML 钩子仍在 v0.9 范围内。
  • 钩子系统现已在 ReAct 和 DAG 运行时中运行:在其 model_config_json 中声明 hooks.class_hooks 的智能体在每个聊天会话上都会实例化并注册这些钩子。第一个消费者——FeishuGateHook——在智能体调用其连接器操作标记为 requires_confirmation=True 的工具时自动触发,向组织的飞书群组发布 Approve/Reject 卡片,阻止该工具,并根据判决恢复或中止。以前钩子抽象已就位,但 web 层中没有任何东西将其连接到实时聊天。
  • 频道和钩子系统架构已记录:新的 docs/architecture/hook-system.mdx 解释了三个钩子点、为什么钩子在 LLM 循环外运行,并端到端演示了 FeishuGateHook。现有架构页面(system-overview、organization、react-engine、philosophy)交叉链接到它。README 现在将消息频道列为一流的 v0.8 功能,应用层图表在 Portal/API/iframe 旁边包括 IM 目标。
  • 钩子批准游乐场:频道详情表现在有一个”测试批准流程”操作,可以模拟敏感工具调用,向链接的飞书群组推送真实确认卡片,并实时轮询审核者的决定。与现有预览按钮不同,这会执行完整的生产路径(真实的 ConfirmationRequest 行、真实的飞书回调、状态转换),因此演示和预发布排练使用与生产钩子相同的代码路径。
  • 按智能体任务完成通知:智能体现在可以在长时间运行的 ReAct 或 DAG 任务完成时向组织的频道(当前为飞书)推送摘要卡片。可在设置 → 智能体 → 通知中按智能体配置。通用出站通知模式的第一个消费者。
  • 可配置的确认门——内联频道:每个智能体现在在设置中都有一个”批准”部分,包含三种路由模式(自动 / 仅内联 / 仅频道)、批准者范围选择器(发起者 / 智能体所有者 / 组织中的任何人)、“要求每个工具调用都确认”覆盖和显式批准频道选择器。自动模式使用链接的频道(如果存在)并优雅地回退到聊天流中的内联批准卡片——因此没有任何频道的智能体仍然会获得真实的批准 UX,而不是无声失败。新的 POST /api/confirmations/{id}/respond 端点与飞书 webhook 共享单一决策记录路径,因此每个批准——无论是在聊天中点击还是在飞书群组中点击——都会标记相同的 approver_user_iddecided_at 审计字段。

已更改

  • Playground 加载指示器现在使用细微的文本闪烁效果,而不是在 8 秒后冻结在伪满宽度的不逼真进度条。将两个现有的闪烁实现(.shiny-text.text-shimmer)统一为单个主题感知的原始组件,带有可选的温暖预设。
  • 连接器卡片现在在连接器禁用 allow_fallback 时显示”Private default”徽章(带工具提示),以便所有者一眼就能看出哪些连接器要求每个用户提供自己的凭证。连接器设置表单中的”Allow-Fallback”切换下的帮助文本也澄清了该标志仅限制与其他用户的共享——所有者始终可以使用自己的默认凭证,无论如何。

已修复

  • 连接器所有者使用 allow_fallback=false 且仅有默认凭证(无按用户凭证)进行的连接器调用不再返回 401”需要身份验证”错误。所有者现已豁免于回退门控——该标志仅控制其他用户是否可以借用所有者的默认凭证。之前所有者自己的智能体在无声地发送未经身份验证的请求,同样的问题也影响了工作流 connector_action 节点。
  • 对话导出现在为自动路由的 DAG 对话显示正确的模式标签(“Planner” / “规划”),而不是始终显示”Standard”。
  • 导出时间戳现在遵循用户配置的时区,而不是显示原始 UTC。
  • 上传的文件内容不再泄露到导出的对话中;仅包含用户的消息文本。
  • 当提供商为每个流式工具调用 delta 重复使用 index=0 时,并行工具调用不再冲突;聚合器现在通过 id 或名称变化检测边界,并将后续 delta 重新映射到正确的槽位。
  • 设置 → 频道现在反映当前用户的组织角色:成员(非管理员/所有者)看到禁用的”新建频道”按钮、隐藏的编辑/启用-禁用/删除操作、只读横幅和权限感知的空状态——而不是在提交时失败并显示”需要组织管理员访问权限”的启用 CTA。
  • 会话过期重定向现在保留查询字符串,因此用户在重新身份验证后会返回到他们正在查看的确切标签/筛选器,而不是裸路径。
  • Feishu 频道表单在与分层在对话框上方的聊天选择器交互时不再显示虚假的”放弃未保存的更改”提示。
  • Feishu 频道设置提示在 UI 本身已是中文时不再复制中文标签(例如之前渲染为”事件与回调 (事件与回调)”)。
  • 架构管理器中的”全部注释”不再返回 500 内部服务器错误——完整注释后端路径存在未绑定变量错误,阻止了每次调用。
  • 编辑数据库连接器现在在密码字段中显示 ******** 占位符,而不是三点掩码文本,使得留空字段以保留存储的密码变得显而易见。
  • 更新连接器操作不再折叠详情面板——编辑的操作保持选中状态,以便用户可以继续对其进行迭代。
  • AI 连接器编辑器现在区分成功、部分失败和完全失败,而不是对所有三种情况显示相同的”已完成”消息。失败原因内联显示,以便用户可以看到实际出了什么问题。
  • AI 连接器编辑器不再能够一次性无声地清除多个操作。批量删除(>2 个操作)现在需要用户指令中的显式破坏性关键字(“rebuild”、“全部重建”、“wipe” 等);否则操作将被拒绝并显示清晰的错误,保护 requires_confirmation / JMESPath 设置免遭意外丢失。
  • 门户聊天中的确认卡现在显示请求是否被路由到频道(例如 Feishu)或内联处理,以及关于谁被允许批准的人类可读提示(发起者、智能体所有者或任何组织成员)。频道路由的请求还会生成内联待处理卡,以便用户不会想知道通知是否真的被发送了。
  • Feishu 批准卡在第一次决定后变为只读:/callback webhook 返回一个替换卡,其中删除了批准/拒绝按钮,标题着色为绿色(已批准)或红色(已拒绝),防止重复点击。从陈旧 Feishu 客户端仍然到达的重复点击会收到”此请求已被批准/拒绝。“toast 和一份已决定卡的新副本,以便陈旧视图赶上。
  • 恢复了频道行和详情表上的普通”发送测试消息”操作。批准游乐场执行完整的 hook 往返,但仅限通知的频道(未连接批准 hook)仍需要快速凭证/连接性完整性检查,普通测试发送可以覆盖。
  • 对同一 Feishu 批准卡的并发点击不再能都成功。/callback 处理器现在通过条件 UPDATE ... WHERE status='pending' 翻转 ConfirmationRequest 状态,并使用受影响的行数来决定哪个调用者”赢了”;之前两个并行请求可能都读取 pending 并竞争写入,可能导致同一行上批准后被拒绝。
  • 待处理的批准请求现在通过后台清理器在 CHANNEL_CONFIRMATION_TTL_MINUTES(默认 24 小时)后自动过期。防止数天后的陈旧点击翻转已被拆除的智能体状态;过期卡上的下一次点击会收到灰色”已过期”已决定卡和”不再活跃”toast。
  • 发送测试消息现在传递纯文本通知(无批准/拒绝按钮),仅存在于频道详情表中——不在行下拉菜单中。不打算使用批准 hook 的用户不会被”测试”消息上的交互按钮混淆。批准往返测试仍可通过批准游乐场按钮获得。
  • 频道详情表紧凑化:“如何完成设置”现在是默认折叠的可折叠部分(因此对于已配置的频道不会主导表),外部填充减少了,因此内容更靠近表边缘。
  • Builder AI 不再将掩码(****)凭证报告为缺失——它现在将其识别为已配置并跳过虚假的”凭证缺失”指导。
  • 游乐场智能体列表现在显示所有可访问的智能体,而不仅仅是已发布的智能体,因此草稿智能体可以在不首先发布的情况下进行测试。
  • 聊天图像上传不再在格式错误的 data: URL 上崩溃流——MIME 提取器现在安全地回退到 application/octet-stream,而不是在生成中途引发 IndexError。
  • 游乐场图像缩略图现在在卸载时通过 AbortController 取消飞行中的获取,避免陈旧的 blob-URL 分配和快速导航期间的浪费带宽。

[v0.8.4] - 2026-04-17

新增

  • 对话恢复:合成的 tool_result 行现在在中断的轮次后持久化;客户端可以通过 POST /chat/resume 使用最后看到的游标恢复断开的 SSE 流。
  • Playground 现在使用 /chat/resume 端点自动重新连接断开的 SSE 流,采用指数退避策略(最多 3 次尝试);在恢复期间显示”正在重新连接…”指示器。
  • 提示词缓存可观测性:cache_read_input_tokenscache_creation_input_tokens 从 LLM 响应中捕获,按轮次在 TurnProfiler 中聚合,记录为 turn_cache 摘要行(read/create tokens + 估计节省),并在聊天 done_payload 中的新 cache 字段中显示。支持验证 Anthropic 提示词缓存是否真正命中,同时可用于检测 API 中继站是否遵守缓存折扣。

已更改

  • 系统提示词现在使用带有 Anthropic 提示词缓存断点的记忆化部分注册表,在稳定前缀上进行缓存 — 对于 Claude 模型,缓存前缀的每轮 token 成本降低约 60-80%。ReAct JSON 模式、原生函数调用模式和合成对于支持缓存的提供商(Claude、Bedrock Anthropic、Vertex Claude)都会发出两条系统消息,对于其他所有提供商则回退到单个连接的消息。

已修复

  • 思维/推理 token 现在在多轮对话中持久化 — Anthropic signature 字段根据 API 要求被捕获并重放。
  • 提供商感知推理重放策略:reasoning_content(来自 DeepSeek-R1、Qwen QwQ、Gemini thinking、OpenAI o-series)不再在后续轮次中重放给非 Anthropic 提供商。之前该字段在 ChatMessage.to_openai_dict() 中被无条件序列化,这违反了提供商文档(DeepSeek 和 Qwen 都明确记录”不要在消息历史中发送 reasoning_content 回去”),并在每次多轮交换中无声地使其自动前缀 / KV 缓存失效。策略集中在 core/prompt/reasoning.py 中 — Claude 系列(包括 Bedrock 和 Vertex 代理)仍按要求使用签名重放思维块。

title: v0.8.3 版本发布 description: FIM One v0.8.3 版本发布说明 sidebarTitle: v0.8.3

[v0.8.3] - 2026-04-16

新增

  • convert_to_markdown 内置工具 — 新的通用智能体工具,使用 Microsoft 的 MarkItDown 将任何文件、URL、YouTube 链接或数据 URI 转换为干净的 Markdown。支持 PDF、Word (.docx)、Excel (.xlsx/.xls)、PowerPoint (.pptx)、HTML、JSON、CSV、XML、ZIP、EPUB、Outlook .msg、图像、音频(语音转文本)和 YouTube 转录。默认对所有智能体可用 — 与 web_fetch 同级。配置了视觉能力的 LLM 时,嵌入的图像和扫描的 PDF 页面通过官方 markitdown-ocr 插件自动进行 OCR。此前此功能隐藏在后台 RAG 摄取管道中;现在智能体可在交互式对话路径上使用。
  • 通过 markitdown-ocr 进行文档 OCR — DOCX / XLSX / PPTX 中的嵌入图像和扫描的 PDF 页面现在使用 FIM One 路由的相同视觉能力 LLM 进行 OCR。适用于内置 convert_to_markdown 工具和 RAG 摄取管道,因此聊天时转换和知识库摄取为相同输入生成字节相同的 Markdown。
  • 用于文档 OCR 的通用视觉提供商支持 — 新的 LiteLLMOpenAIShim duck-type 将任何 FIM One OpenAICompatibleLLM 包装在 openai SDK 的 .chat.completions.create(...) API 形状中,然后通过 litellm.completion() 分发。MarkItDown(硬编码 openai SDK 表面)现在可以使用 Anthropic Claude、Google Gemini、Azure、Bedrock 和 LiteLLM 支持的任何其他提供商 — FIM One 中无需按提供商适配器代码。
  • 视觉感知 RAG 摄取 — Office 文档和扫描 PDF 的知识库上传现在解析工作区的默认视觉 LLM(DB 优先,ENV 回退)并将其传递给 MarkItDown 以在摄取期间进行 OCR。零回归:当没有视觉能力模型可用时,摄取无声地回退到仅文本模式 — 完全是特性前的行为。
  • 扩展的 MarkItDown 格式覆盖 — RAG 现在通过 MarkItDown 的音频转录和 outlook 扩展原生摄取 .pdf.msg(Outlook)、.epub.mp3.wav.m4a。YouTube URL 通过 markitdown[youtube-transcription] 流经 convert_to_markdown
  • LLM_SUPPORTS_VISION 环境变量 — ENV 模式文档 OCR 回退的可选退出(=false)。默认行为是乐观的(true),涵盖常见的 ENV 设置(gpt-4oclaude-3-5-sonnetgemini-1.5-pro/flash)。仅当 ENV 配置的 LLM_MODEL 不支持视觉时设置为 false(例如 deepseek-v3qwen-chatllama-3.1gpt-3.5-turboo1-mini),以跳过每次文档上传时的失败视觉调用。当管理员策划的 ModelGroup 处于活动状态时完全忽略 — 可用时 DB 模式始终是真实来源。
  • 轮级分析器 — 每个 ReAct 轮现在在单个结构化日志行中记录阶段级时序(memory_loadcompacttool_schema_buildllm_first_tokenllm_totaltool_exec)。可通过 REACT_TURN_PROFILE_ENABLED 切换(默认:开启;设置为 false 以实现零开销无操作)。
  • 结构化紧凑工作卡 — 对话紧凑现在将其自己的 9 部分 markdown 输出解析为类型化 WorkCard 并将新紧凑合并到前一个中,因此来自长会话早期的错误和待处理任务在多个紧凑轮次中存活,而不是从头开始重新汇总。

已更改

  • 按用户速率限制 — LLM 层速率限制器现在为每个用户维护单独的桶,而不是单个进程全局桶。防止一个噪声用户对同一工作进程上的所有其他用户进行限流。可通过 LLM_RATE_LIMIT_PER_USER 切换(默认:开启)。

已修复

  • 悬挂的 tool_use 恢复 — 在工具执行中断的对话(用户停止、SSE 断开连接、崩溃)之前会留下一个带有 tool_use 块且没有匹配 tool_result 的助手消息,导致下一轮从 LLM API 崩溃并返回不透明的 HTTP 400。DbMemory.get_messages() 现在在读取路径上检测并修复这些悬挂块,使用合成的 [interrupted] tool_result。原始数据库日志不会被修改。
  • 带有 tool_calls 的空内容助手消息不再被丢弃 — DbMemory 加载路径过滤器之前会静默丢弃任何具有空文本内容的助手行。仅携带 tool_calls 而没有文本的原生函数调用中间体被擦除。过滤器现在要求内容为空 AND 没有 tool_calls

[v0.8.2] - 2026-04-10

已添加

  • 智能文档处理(视觉感知) — 基于模型能力的自适应文档处理。当目标 LLM 支持视觉(GPT-4o、Claude 3/4、Gemini)时,PDF 页面被渲染为图像并通过视觉内容块发送以获得完整的视觉保真度。纯文本模型回退到 pdfplumber 文本提取。两种模式:Vision 和 Text-only。可通过 DOCUMENT_PROCESSING_MODEDOCUMENT_VISION_DPIDOCUMENT_VISION_MAX_PAGES 环境变量配置。Admin 中的每个模型 supports_vision 开关。
  • 文档视觉管道 — 在聊天中上传的 DOCX、PPTX 和 PDF 文件现在会提取其嵌入的图像,并在模型启用视觉时作为视觉内容发送给 LLM。
  • 多轮对话视觉持久化 — 来自上传文档和图像的视觉内容在对话轮次中持久保存,因此模型在整个对话过程中保留视觉上下文。
  • 智能 PDF 处理 — 文本丰富的 PDF 页面分别提取文本和嵌入图像(节省令牌)。扫描或仅图像页面渲染为全页 PNG 以获得最大保真度。
  • 预构建沙箱镜像Dockerfile.sandbox 包含常见的数据科学包(pdfplumber、Pillow、pandas 等),因此 AI 代码执行在 --network=none 容器中开箱即用。
  • 资源 Fork 完成 — 所有五种资源类型现在都支持 fork:智能体、连接器、工作流、MCP 服务器和技能。KB fork 已移除(本质上是用户本地的)。

已更改

  • 更快的聊天响应完成 — SSE stream 在智能体完成后立即关闭;标题生成和后续建议在后台运行,而不是阻止响应。
  • 更智能的上下文压缩 — 对话压缩使用结构化的 9 部分格式,更好地保留关键信息(原始请求、错误、待处理任务),跨越长会话。
  • 减少智能体循环 — 在智能体提示词中添加了反循环指令;降低了循环检测阈值,以便更早捕获重复的相同工具调用。
  • 更快的请求启动 — LLM 配置查询和领域分类现在并发运行,将每个请求的开销减少 400-1100ms。
  • 更好的空工具处理 — 不返回任何输出的工具现在生成描述性消息而不是裸露的”(no output)“,防止浪费性重试。
  • 自动清理旧工具结果 — 超过 6 个最近结果的工具结果在上下文压缩前自动清除,保持对话精简。
  • 工具结果聚合预算 — 总工具结果 token 数上限为每个会话 40K;当超过预算时,新结果会被截断,防止来自大型 API 响应的上下文膨胀。
  • 上下文溢出自动恢复 — 当 LLM 因上下文长度溢出而拒绝请求时,智能体自动压缩到 50% 并重试,而不是导致整个对话崩溃。
  • 基于关键字的工具选择 — 当查询明显按名称或描述关键字匹配特定工具时,智能体跳过基于 LLM 的工具选择调用,节省 200-500ms。
  • LLM 连接池 — 所有 LLM API 调用现在共享单个连接池,具有优化的 keepalive 设置,减少整个会话中的连接开销。
  • 更智能的完成检查 — 对于长详细答案(>200 token),跳过答案后验证步骤,消除不必要的 LLM 往返。
  • 提供商中断时的模型回退 — 当主模型不可用(速率限制、过载或宕机)时,智能体自动使用快速模型重试,而不是失败。

已修复

  • 智能体在不可读文件上的幻觉 — 当AI智能体无法读取文件(例如基于图像的PDF)时,它之前会读取其他不相关的文件并将其内容呈现为目标文件的内容。系统提示中的文件完整性护栏现在可以防止这种情况。
  • 上传文件的文件ID注入 — 上传的文件现在在消息上下文中包含其UUID file_id,因此智能体可以直接通过 read_uploaded_file 访问它们,无需猜测。
  • 从新模型结构读取视觉切换 — 模型配置上的 supports_vision 标志未从ModelGroup/ModelProviderModel ORM结构中正确读取。已修复。
  • 改进了不可读文件的错误消息 — 当文件无法读取时,工具现在返回具体的指导(文件类型、视觉建议),而不是通用错误。

[v0.8.1] - 2026-03-29

新增

  • 时区感知的管理员通知 — 管理员通知邮件现在以每个收件人配置的时区显示事件时间,而不是始终显示 UTC。
  • 渐进式数据库工具披露 — 单个 database 元工具,包含 list_tables/discover/query 子命令,替代单个表工具。可通过 DATABASE_TOOL_MODE 环境变量配置(默认 progressive,备用 legacy)。
  • 按需工具加载 — 当可用工具超过 12 个时,request_tools 元工具让智能体在对话中动态加载额外工具,而不是被限制在初始选择。
  • 渐进式 MCP 工具披露 — 单个 mcp 元工具,包含 discover/call 子命令,替代单个服务器工具。可通过 MCP_TOOL_MODE 环境变量配置(默认 progressive,备用 legacy)。
  • 按轮次令牌预算断路器REACT_MAX_TURN_TOKENS 环境变量为失控的智能体循环提供紧急停止。默认 0(无限制)— 改用按用户 token_quota 进行日常成本控制。
  • 按模型原生函数调用切换tool_choice_enabled 设置(ENV + 管理员按模型)让拒绝强制工具选择的模型跳过第 1 级,直接进入 JSON 模式。可在设置 → 模型 → 高级中配置。
  • DAG 质量全面改进 — 五项改进:非快速步骤的默认模型升级为通用模型;规划中的技能自动发现;法律/医疗/财务领域的引用验证器;具有可配置截断倍数的结构化内容上下文保留;路由器中的领域分类和领域感知模型选择。
  • ReAct 中的领域模型升级 — 专业领域(法律/医疗/财务)自动升级到推理模型,强制进行网络搜索和引用验证。
  • 文件附件下载 — 聊天消息中的文件卡片现在可点击以下载原始文件。
  • 管理员通知主开关 — 全局开/关切换,用于管理员电子邮件通知,具有运行时 SMTP 检测。当未配置 SMTP 时显示警告横幅,并禁用所有通知控制。
  • SMTP 回复地址头 — 新的 SMTP_REPLY_TO 环境变量允许回复发送到与发件人不同的地址。
  • 资源分叉第 1 阶段(MCP 服务器 + 技能)POST /api/mcp-servers/{id}/forkPOST /api/skills/{id}/fork 端点创建用户拥有的深层副本,具有 visibility=personalforked_from 血统追踪。MCP 服务器分叉时跳过加密的 env/headers;技能分叉时跳过发布状态。Alembic 迁移向两个表添加 forked_from 列。41 项测试。
  • 工作流连接依赖自动订阅DependencyAnalyzer._resolve_workflow 现在递归解析子工作流依赖,具有循环检测(已访问集)。智能体和子工作流节点在依赖清单中正确添加为内容依赖。缺失的资源得到优雅处理(记录警告,无失败)。19 项测试。
  • 预构建解决方案模板(市场种子内容) — 8 个垂直解决方案模板在首次用户注册时幂等引导:财务审计、合同审查、数据报告、IT 帮助台、人力资源入职、销售助手、内容撰写、会议总结。每个都包含一个智能体 + 技能,附带中文 SOP。发布到市场组织(visibility=orgpublish_status=approved),可立即在市场中获得。4 项测试。
  • ReAct 循环检测 — 重复相同工具调用的确定性检测。在 3 次连续调用具有相同参数后注入警告,防止智能体在失败工具上循环。可通过 REACT_CYCLE_DETECTION_THRESHOLD 配置。
  • ReAct 完成检查清单 — 使用工具时在接受最终答案前进行一次性验证提示,减少过早或不完整的响应。可按智能体实例切换。

已更改

  • 完成检查清单最小工具阈值 — 清单现在仅在智能体进行了 3+ 次工具调用时触发(可通过 REACT_COMPLETION_CHECK_MIN_TOOLS 配置)。简单的 1-2 个工具任务会跳过验证以避免不必要的延迟。
  • 动态系统提示预算 — 从上下文预算计算中移除了固定的 SYSTEM_PROMPT_RESERVE(4K 令牌)。ContextGuard 现在动态考虑系统提示,为每次迭代提供约 4K 更多可用上下文。
  • 集中式工具截断 — 所有工具类型现在都委托截断到共享模块。默认值可通过 TOOL_OUTPUT_MAX_CHARSTOOL_OUTPUT_MAX_ITEMSTOOL_OUTPUT_MAX_BYTES 环境变量配置。
  • 域检测解耦 — 域分类在每个端点中独立运行,不再与自动路由捆绑。域 SOP 指令已软化为指导而非强制网络搜索。
  • AUTO_ROUTING 环境变量已移除 — 自动端点始终对查询进行分类。

已修复

  • 重复消息提交 — 聊天输入现在使用同步守卫来防止在快速点击时多次提交相同消息。
  • 结构化输出降级链 — 3 级回退(原生 FC → JSON 模式 → 纯文本)现在可以正确地遍历所有级别。
  • json_mode_enabled 数据库值被忽略 — 通过管理员配置的模型现在正确使用其按模型设置,而不是总是回退到环境变量。
  • DAG 规划失败消息 — 现在显示用户友好的双语消息,而不是原始管道错误。
  • MCP 服务器所有者绕过 allow_fallback — 服务器所有者不再被 allow_fallback=False 阻止。

[v0.8] - 2026-03-20

已添加

  • Marketplace 重新设计第 1 阶段 — Solutions + Components — 两层 Market 模型(Solutions:Agent/Skill/Workflow;Components:Connector/MCP Server)带有范围选择器(Global Market / org)。KB 从 Market 范围中移除。统一订阅模型。
  • Smart 文件内容注入 + read_uploaded_file 工具 — 小文件上传(<32K 字符)自动内联到 LLM 上下文;大文件获取元数据 + 工具提示。双模式读取工具,支持分页和正则表达式搜索。GET /api/files/{file_id}/content 端点。
  • Workflow Blueprint 系统 — 多步骤自动化的可视化工作流编辑器:25 种节点类型(Start、End、LLM、ConditionBranch、QuestionClassifier、Agent、KnowledgeRetrieval、Connector、HTTPRequest、VariableAssign、TemplateTransform、CodeExecution、Iterator、Loop、VariableAggregator、ParameterExtractor、ListOperation、Transform、DocumentExtractor、QuestionUnderstanding、HumanIntervention、SubWorkflow、ENV 等),React Flow v12 编辑器,支持拖放调色板、自动布局、SSE 实时执行、变量插值、条件/分类器分支、每个节点的错误策略、每个节点的超时、导入/导出/复制、带差异查看器的版本历史、14 个内置模板、306 个测试。
  • Workflow 触发器 — 支持时区的 Cron 调度;公开 API 密钥(wf_ 前缀)用于外部执行,无需用户认证;批量执行(最多 100 个输入集,可配置的并行度)。
  • Workflow 操作 — 实时执行日志查看器、带变量快照的追踪查看器、在画布上运行重放覆盖、运行历史导出、带日常趋势和百分位数的分析仪表板、每个节点的统计信息面板、收藏/固定、内联验证徽章、画布节点搜索(Cmd+F)、键盘快捷键、吸附到网格。
  • Workflow 管理 + 模板 — 所有工作流的管理选项卡、带有管理 CRUD 和 5 个种子模板的 WorkflowTemplate 模型、带有组织级审查门控的发布流程、外部引用的导入冲突解析器。
  • Agent Skill 系统 — 按需加载技能:Skill 模型,支持 CRUD/发布/审查、read_skill(name) 工具用于渐进式披露(~80% 令牌减少)、每个智能体的 compact_instructions 用于自定义 ContextGuard 压缩。完整的 Skills UI,包括列表页面、编辑器和智能体技能选择器。
  • ConnectorMetaTool(渐进式披露第 1-2 阶段) — 单个元工具替代每个操作工具。系统提示接收轻量级存根(~30 令牌/连接器);智能体按需调用 discover/execute。功能标志 CONNECTOR_TOOL_MODE 用于向后兼容。
  • 连接器导入/导出/fork — 通过 JSON 导出共享连接器模板,通过 fork 克隆和自定义。后端在导出时清理凭证。
  • 连接器凭证加密 + 每个用户的覆盖connector_credentials 表,支持 Fernet 加密、allow_fallback 标志、GET/PUT/DELETE /my-credentials 端点。
  • 发布审查 UI — 组织级审查系统,支持批准/拒绝工作流、资源卡上的状态徽章、发布对话框中的审查通知、被拒绝资源的重新提交。
  • 语义模式注解 — 16 个预定义的语义标签用于连接器字段,带有 descriptionpii 标志,在 LLM 工具描述中显示。
  • Agent 中循环自反思 — 目标检查提示每 6 次迭代注入到 ReAct 中,以防止长链中的漂移。
  • Shadow Market 组织 + 资源订阅 — 基于拉取的资源共享:通过 marketplace 发现资源并显式订阅。Market API 用于浏览/订阅/取消订阅。
  • Agent 自动发现 + 子智能体绑定discoverable 标志 + sub_agent_ids 白名单 + CallAgentTool 用于一级委派。
  • MCP 服务器凭证 + 每个用户的覆盖mcp_server_credentials 表,支持 allow_fallback 标志用于凭证回退行为。
  • 连接器/KB 切换 — 两种资源类型的暂停/恢复端点。
  • 独立 KB 对话 — 对话上的 kb_ids 字段,用于直接 KB 聊天,无需智能体绑定。
  • 审查日志审计选项卡 — 管理员审计页面,支持系统日志/审查日志切换和每个组织/资源的可筛选审查跟踪。
  • 综合中的 Agent 指令agent_directive 参数确保最终答案遵守智能体的核心目的。

已更改

  • 基于订阅的可见性模型 — 从 3 层简化为 2 层(own → subscribed)。自动迁移保留现有访问权限。
  • 工具缓存白名单 — 用显式 cacheable 属性替换黑名单。11 个只读工具标记为可缓存。
  • DAG 执行器级联失败 — 失败的步骤现在级联阻止依赖项,具有传递传播。
  • DAG 规划器改进 — 规划器中的工具描述、所有轮次的完整重新规划历史、14 个引擎常数参数化为环境变量。
  • stream_answer 观察截断 — 从 2000 增加到 8000 字符(可通过 REACT_TOOL_OBS_TRUNCATION 配置)。
  • 证据置信度 UI — 琥珀色警告卡、带悬停弹出框的 [N] 引用徽章、带并排比较的冲突警告横幅。
  • 工作流版本变更摘要 — 从版本保存时的蓝图差异自动生成人类可读的摘要。
  • 工作流运行保留清理 — 后台清理任务,具有可配置的年龄/计数限制。环境变量:WORKFLOW_RUN_MAX_AGE_DAYSWORKFLOW_RUN_MAX_PER_WORKFLOW
  • 连接器断路器 — 三态机(closed/open/half-open),具有按连接器故障跟踪和监控端点。
  • 用轻量级 BFS 自动布局替换 elkjs/workflows/[id] 包从 473 kB 减少到 43 kB。

已修复

  • 工作流评估命名空间扁平化 — 修复了 ConditionBranch 和 VariableAssign 中的短变量名解析。
  • is_active 切换时无需重新审核 — 切换 is_active 不再将 publish_statusapproved 还原为 pending_review
  • 条件分支级联跳过 — 跳过的节点正确地停用传出边。
  • 依赖分析器 — 修复了 skill_ids 解析、不区分大小写的节点类型匹配。

已移除

  • 移除了 is_global 字段和所有全局可见性概念 — 由市场组织 + 订阅替代。
  • 移除了全局智能体/MCP 服务器管理员端点。

[v0.7.5] - 2026-03-12

已添加

  • 自由模式切换 — 在对话中间切换 Auto/React/DAG 模式。通过 metadata.mode 进行每轮模式跟踪。
  • 三个模型角色 — General、Fast 和 Reasoning 层级的独立环境配置。Fast 模型不再继承主模型设置。
  • DAG 引擎改进StepOutput 结构化数据、带异步锁防止缓存击穿的工具缓存、带重试的每步 LLM 验证(DAG_STEP_VERIFICATION)、通过快速 LLM 分类的自动路由(AUTO_ROUTING)。
  • 连接器凭证加密 — 认证令牌提取到 connector_credentials 表,通过 CREDENTIAL_ENCRYPTION_KEY 进行 Fernet 加密。每用户凭证覆盖端点。allow_fallback 标志。
  • ModelConfig API 密钥静态加密 — 透明的写入时加密/读取时解密,具有向后兼容的明文检测。

已更改

  • 骨架屏 — 所有列表/网格页面在加载时显示布局感知的骨架屏,而不是加载旋转器。

已修复

  • 快速模型不再从主模型继承设置。
  • SSE 路由事件字段名称与后端对齐。

[v0.7.4] - 2026-03-12

已添加

  • 评估中心 — 测试数据集管理、并行评估运行(支持 LLM 评分)、按案例查看通过/失败/延迟/令牌结果的查看器(支持自动轮询)。
  • 管理员:json_mode_enabled 按模型标志 — 显式切换,防止 AWS Bedrock 预填充问题。ENV 模型由 LLM_JSON_MODE_ENABLED 控制。
  • SSE 协议 v2 — 实时流传输,包含 delta_reasoningusage 字段,拆分 done/suggestions/title/end 事件。
  • AI Builder 扩展 — 7 个新的构建器工具、is_builder 标志、构建器提示自动刷新、SSRF 防护。用于连接器管理的完整 ReAct 智能体对话。
  • 双数据库支持 — SQLite(零配置)+ PostgreSQL(生产环境)。Docker Compose 自动配置 PG 并进行健康检查。
  • 扩展思维/推理 — 针对 OpenAI o 系列、Gemini 2.5+、Claude 的 LLM_REASONING_EFFORTLLM_REASONING_BUDGET_TOKENS
  • 管理员:工具禁用 — 按工具启用/禁用切换;禁用的工具在运行时从聊天中过滤。
  • 设置:组织选项卡 — 直接从设置中创建、加入、管理组织及成员角色。
  • Docker Compose 部署 — 单一镜像、命名卷、独立 Next.js 输出。
  • 导出:PDF 格式 — 对话可导出为 PDF 文档。
  • 多工作进程支持WORKERS=N 环境变量;Redis 中断代理用于跨工作进程中继。

已更改

  • LLM 层:LiteLLM — 替换了直接的 AsyncOpenAI 客户端以支持通用提供商。
  • 结构化输出降级 — 统一了 structured_llm_call() 的 3 级提取(Native FC → JSON Mode → 纯文本 + regex)。
  • 智能中继路由 — 从 URL 路径模式自动检测第三方中继平台的 API 协议。

已修复

  • Docker 沙箱 (DooD) 卷挂载路径转换。
  • 安全性:沙箱 AST dunder 验证、MCP stdio 默认值、SSRF DNS 重新绑定、shell 元字符逃逸、连接器模板注入。
  • 管理员仪表板统计在 PostgreSQL 上崩溃。
  • Docker:i18n 文件发现、启动竞态条件、自定义端口的 OAuth 自动检测。
  • 导出:CJK 的 RFC 5987 文件名。

[v0.7.3] - 2026-03-06

已添加

  • 全局 MCP 服务器 — 由管理员配置,在所有聊天会话中加载。
  • 结构化审计日志write_audit() 辅助函数,具有结构化列。

已修复

  • 邀请码向后兼容旧版 registration_enabled 字段。

[v0.7.2] - 2026-03-06

已添加

  • 邀请制注册 — 三种模式(开放/邀请/禁用),支持邀请码的增删改查。
  • 存储管理 — 按用户磁盘使用量、清除、孤立文件清理。
  • 按用户强制登出 — 管理员令牌撤销。
  • 对话审核 — 管理员列表/删除所有对话。

[v0.7.1] - 2026-03-06

已添加

  • API 健康仪表板 — 系统统计、连接器指标、令牌使用图表。
  • JWT 身份验证 — 基于令牌的 SSE 身份验证、对话所有权。
  • 管理 API — 智能体管理、按用户令牌配额(429 强制执行)。

[v0.7] - 2026-03-06

新增

  • 管理平台 — 用户管理、角色切换、密码重置、账户启用/禁用。
  • 首次运行设置向导 — 引导式管理员账户创建。
  • 个人中心 — 每用户全局指令、语言偏好设置。

[v0.6.5] - 2026-03-05

已添加

  • 实用工具email_sendjson_transformtemplate_rendertext_utils
  • 连接器响应过滤CONNECTOR_RESPONSE_MAX_CHARSCONNECTOR_RESPONSE_MAX_ITEMS
  • 嵌入模型选项 — Jina、OpenAI 和自定义提供商。

[v0.6] - 2026-03-01

已添加

  • 连接器平台 — 完整 CRUD、ConnectorToolAdapter、按用户凭证加密、确认门、断路器、审计日志。
  • MCP 集成 — 通过协议的工具自动发现、进程隔离。

[v0.5] - 2026-02-28

已添加

  • 完整 RAG 管道 — Jina embedding + LanceDB + FTS + RRF + reranker。
  • 基础生成 — 证据锚定引用、冲突检测、置信度分数。
  • 知识库文档管理 — 块级 CRUD、搜索、重试、模式迁移。
  • ContextGuard + 固定消息 — Token 预算管理器。
  • DAG 重新规划 — 最多 3 轮;LLM Compact 用于内存。

[v0.4] - 2026-02-25

已添加

  • 多轮对话 — DbMemory 持久化、智能截断。
  • 工具步骤折叠 UI — 折叠/展开工具调用。
  • HTTP 请求 + shell 执行工具
  • 智能体管理 — 创建、配置、发布绑定模型/工具。
  • JWT 身份验证

[v0.3] - 2026-02-25

已添加

  • 网络工具web_search(Jina/Tavily/Brave)、web_fetch
  • 文件操作 + MCP 客户端
  • DAG 可视化 — 具有实时状态的交互式流程图。
  • Docker 中的代码执行--network=none、内存限制、超时。

[v0.2] - 2026-02-24

新增功能

  • 重试和速率限制 — 指数退避。
  • 使用情况跟踪 — 按请求的令牌/成本计算。
  • 原生函数调用 — 直接模型工具选择。
  • 多模型支持 — DAG 步骤的 FAST_LLM_MODEL
  • 内存系统 — 窗口、摘要、数据库内存。
  • FastAPI 后端/api/execute/api/stream (SSE)。

[v0.1] - 2026-02-22

已添加

  • ReActAgent — Reason → Act → Observe 循环。
  • DAGPlanner — LLM 生成的依赖图、并发执行、结果验证。
  • Tools — 计算器、Python 执行。
  • Portal UI — Next.js 流式传输、深色/浅色主题、KaTeX。