Skip to content

Releases: 69gg/Undefined

Undefined v3.9.1

Choose a tag to compare

@github-actions github-actions released this 21 Jul 08:31
v3.9.1
b8ee17e

v3.9.1 修复大量写入的问题

本版本修复了微信长轮询导致的数据文件频繁写入。

变更内容

  • 添加了脏数据检查使得仅在数据改变时写入。

📝 Detailed Changes

🛠 Maintenance & Others

  • chore(version): bump version to 3.9.1 (b8ee17e)
  • perf(weixin): skip unchanged ilink state writes (772f11a)

Undefined v3.9.0

Choose a tag to compare

@github-actions github-actions released this 19 Jul 11:54
v3.9.0
e056bc0

v3.9.0 微信 iLink 私聊接入与统一消息路由

本版本将 Undefined 的实时会话能力从 QQ 扩展到微信,并围绕“逻辑身份与物理通道分离”重整私聊投递模型。微信用户可以复用既有 QQ 身份下的权限、历史、认知记忆和模型偏好,同时让回复、定时任务与媒体始终返回消息实际到达的通道;配套的登录管理、安全隔离和消息语义也形成了可完整使用的微信私聊链路。

变更内容

  • 微信私聊成为一等会话通道。Undefined 可直接管理 ClawBot / iLink 扫码登录和消息收发,无需 OneBot 在线或安装 OpenClaw 微信插件;文本、Markdown、图片、文件、视频、语音转写、输入状态及长消息均纳入现有对话流程。底层协议能力由独立的 MIT SDK weixin-ilink-client 承载,主项目继续负责身份、历史、权限和业务编排。
  • 统一跨通道身份与投递。微信帐号可绑定逻辑 QQ 号,并通过规范化地址区分 QQ 私聊、微信私聊与群聊;模型选择、命令、自动管线、表情包、附件、消息合并和定时任务共享同一套身份能力,但始终按照当前物理路由发送,避免 QQ 与微信之间串线。原有目标参数继续兼容,并在与规范地址并用时校验一致性。
  • 补齐完整消息语义。微信入站内容保留 Markdown 和 <>& 等字符的字面含义,混合文本与媒体在全量预检后按原始顺序发送,本地媒体路径不会泄露到正文;Bot 可通过统一工具把音频附件显式发送为 QQ 或微信原生语音,同时保留 WAV 等普通文件附件的下载语义;引用消息支持接收、历史恢复和同路由原生回复。微信转发会优先通过 SDK 的有界并发上传与保序 item_list 多项目消息投递,并在上游明确拒绝时回退逐段发送,附件登记及历史记录继续遵循现有消息体系的边界。
  • 提供可运营的帐号管理与安全边界。WebUI 新增微信入口和完整的扫码绑定流程,Runtime / Management API 覆盖登录、刷新、验证码、启停、改绑、解绑、隔离与审计;一对一绑定、特权身份二次确认、未知来源隔离、敏感状态保护、二维码生命周期管理和异常退避恢复共同保证长期运行。同步补齐双语配置说明、架构与使用文档以及相关回归测试。
  • 优化长期运行后的统计命令。/stats 按请求时间范围流式扫描 Token 记录,并通过归档时间边界跳过无关文件;图表在线程中串行渲染到请求独立目录,私聊优先整组投递,失败时保留纯文本摘要,避免大历史阻塞事件循环、缓存相互覆盖或媒体上传失败后完全无响应。

📝 Detailed Changes

🚀 Features

  • feat(weixin): add iLink private chat and unified routing (#88) (e056bc0)

Undefined v3.8.1

Choose a tag to compare

@github-actions github-actions released this 14 Jul 02:25
v3.8.1
d80819d

v3.8.1 可配置长图渲染与浏览器运行时回退

本版本为 AI 渲染工具新增适合长内容发送的长图布局,可精确控制成图宽度与内边距;同时完善 Playwright 浏览器选择,在缺少内置浏览器时可使用已配置或系统安装的 Chrome / Chromium 完成渲染。

变更内容

  • 扩展 render.render_htmlrender.render_markdown。新增 layout=longwidthpadding 参数;长图默认宽度为 900 像素、内边距为 28 像素,并可通过 [network] 配置统一调整。默认布局保持原有行为,避免影响现有调用。
  • 优化长图版式与输出尺寸。长图模式移除页面外部留白和 Markdown 内容最大宽度限制,使正文填满指定画布;截图使用 CSS 像素缩放,最终图片宽度与请求的 width 一致,便于聊天平台直接预览和发送。
  • 完善渲染浏览器选择。新增 render_browser_executable_path 配置;Playwright 内置浏览器缺失时自动探测系统 Chrome / Chromium,显式配置路径无效或其他启动错误仍会直接报告,避免掩盖真实故障。
  • 收紧 HTML 渲染网络边界。BrowserContext 强制离线、禁用 Service Worker,并在上下文级终止全部网络请求,不再依赖可被 DNS 重绑定绕过的主机名预检;内联 CSS、脚本及 data: / blob: 资源仍可使用。LaTeX 同步收敛为本地 mathtext 渲染,复杂且不受支持的 TeX 不再等待外部 MathJax CDN。
  • 加固渲染缓存与配置集成。缓存键纳入截图缩放和样式参数,避免不同布局错误复用缓存;同步环境变量、热更新边界、配置模板、部署与使用文档,并补充长图参数、缓存隔离、浏览器回退和实际渲染回归测试。

📝 Detailed Changes

🚀 Features

  • feat(render): add configurable long image layouts (#87) (d80819d)

Undefined v3.8.0

Choose a tag to compare

@github-actions github-actions released this 12 Jul 08:49
v3.8.0
4f94b63

v3.8.0 多协议 LLM SDK、推理回放与 WebUI 可用性

本版本重构生成模型请求层,统一 OpenAI Chat Completions、OpenAI Responses 与 Anthropic Messages 的 SDK 调用和配置语义,补全多轮工具调用中的原生推理载体回放,并修复 WebUI 配置编辑器与多行日志查询的可用性问题。

变更内容

  • 新增原生 Anthropic Messages 支持。api_mode 现使用 openai.chat_completionsopenai.responsesanthropic.messages 三种规范名称;旧 chat_completions / responses 仍兼容并给出弃用提示。Anthropic 链路通过官方 AsyncAnthropic SDK 调用,支持系统提示、图片、函数工具、tool_use / tool_result、流式与非流式响应、usage 统计及错误归一化。
  • 完善推理内容采集与原样回放。流式和非流式响应会保留 Chat 兼容接口的 reasoning_contentreasoning_detailsreasoningencrypted_contentthinking,Responses 的原始 reasoning output items 与 reasoning.encrypted_content,以及 Anthropic 的 thinking / redacted_thinking blocks;reasoning_content_replay 默认开启,续轮时按原顺序优先回传当前有效历史中的全部原生推理结构,仅在旧历史缺少原始载体时回退到可读 reasoning_content,关闭后不向上游回放这些内容。
  • 统一 reasoning / thinking 参数语义。移除 reasoning_effort_style,运行时根据 api_mode 自动映射到 Chat 的 reasoning_effort、Responses 的 reasoning.effort 或 Anthropic 的 output_config.effortreasoning_effort 继续接受自定义字符串,adaptive 与其他值均保持原样透传。Anthropic thinking 可在显式预算和 adaptive thinking 间切换,并校验预算与输出上限关系。
  • 加固 OpenAI 请求与工具续轮。Chat Completions 采用广泛兼容的 reasoning / thinking 字段处理;Responses 支持合并 request_params.reasoning 的附加键、自动请求加密推理内容、previous_response_id 增量续轮及完整 output item 无状态回放,并只定向清理 SDK 展开的无效 function call 空字段,保留真实 item id、namespace 和显式值。
  • 统一输出上限语义。OpenAI Chat / Responses 下,所有生成模型、后台协调任务及模型池条目的 max_tokens 设为 0 或负数时不发送输出 token 上限,交由服务端使用默认值;正数在 Chat 中发送为 max_tokens,在 Responses 中发送为 max_output_tokens。Anthropic Messages 按官方必填约束要求 max_tokens > 0,非正数会在请求发出前明确报错。
  • 补齐模型与模型池配置能力。Chat、Vision、Security、Agent、Historian、Summary、Grok、Naga 等生成模型节及池内条目统一支持规范 api_mode、reasoning、thinking、推理回放、Responses 兼容、prompt cache、stream 与 request_params 配置;Grok 不再固定使用 Chat Completions。同步环境变量注册、配置模板、热更新解析和 WebUI 字段说明。
  • 稳定 WebUI 配置编辑体验。配置分组保持固定纵向顺序并按可用宽度排布字段,长分组的标题与折叠入口保持可见;局部编辑、展开折叠和搜索不再造成分组跳动、控件消失或无关状态丢失,清除搜索后恢复用户原有折叠状态,并补充“全部展开 / 全部折叠”操作。
  • 优化 WebUI 日志查询。按时间戳起始行聚合完整日志记录,关键词、等级与时间范围过滤均以整条记录为单位;命中多行 JSON、工具参数或异常堆栈任一续行时保留并展示整条日志。WebUI 默认加载行数由 1000 提升到 5000,历史日志、实时流和高亮行为保持一致。
  • 同步配置、模型对接、OpenAPI、WebUI、认知记忆与 Agent 文档,并新增 Anthropic transport、推理回放、请求参数、模型池、配置编辑器和多行日志过滤回归测试。

📝 Detailed Changes

🛠 Maintenance & Others

Undefined v3.7.1

Choose a tag to compare

@github-actions github-actions released this 11 Jul 07:11
v3.7.1
7639306

v3.7.1 WebUI Release 更新提示

本版本将更新流程从启动时自动拉取改为 WebUI 内的可控交互:页面登录后在后台静默检查最新正式 GitHub Release,仅在发现新版本时提示用户,并在明确确认后拉取对应 Release 标签并重启。

变更内容

  • 新增 WebUI Release 更新检查。鉴权成功后异步查询 69gg/Undefined 的最新正式 GitHub Release,不阻塞页面或主事件循环;后端提供 15 分钟缓存,并让成功或失败的并发请求共享同一个在途任务,概览页也可随时手动检查。
  • 新增更新确认对话框。检测到新版本时展示当前版本、目标版本和 Release 链接,并提供“稍后”与“拉取并重启”操作;对话框作为全局 overlay 在 Landing 与 App 视图均可正常使用,同时补齐中英文文案、键盘焦点管理、移动端布局、错误与不可更新状态提示。
  • 收紧自动拉取边界。仅允许官方 origin、本地 main 和干净工作区,确认前重新校验目标版本;更新时验证 Release 标签属于官方 main 且可从当前提交快进,再精确更新到该标签,避免拉取尚未正式发布的后续提交。
  • 完善更新后的恢复流程。代码更新后同步子模块,并仅在 Python 依赖清单变化时执行 uv sync;依赖同步失败会取消自动重启,成功后恢复更新前的 Bot 运行状态并重启 WebUI。
  • 加固更新请求生命周期。Release 更新操作设置 30 分钟总等待上限,重启任务由模块持有到完成,Bot 自动恢复标记统一写入仓库根目录下的 data/cache/;Release 外链仅接受 HTTPS 地址。
  • 新增 [webui].check_updates 配置,默认开启并支持热更新;关闭后只停用页面打开时的自动检查,不影响手动检查。
  • 移除 Bot 与 WebUI 启动阶段原有的无确认自动拉取和重启逻辑,更新行为统一由 WebUI 用户显式触发;同步更新配置模板、使用文档、Management API 能力声明及后端、前端和 Git 更新回归测试。

📝 Detailed Changes

🚀 Features

  • feat(webui): add GitHub Release update prompts (#85) (7639306)

Undefined v3.7.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 11:07
v3.7.0
737ec70

v3.7.0 主 AI Tool Search 按需工具加载

本版本为主 AI 新增请求级 Tool Search:工具较多时不再必须把全部 function schema 一次性发送给模型,而是先提供基础工具、虚拟搜索工具和经过权限过滤的名称目录,再按模型实际需要从下一轮开始补充完整 schema。该能力使用普通 function tool 实现,可同时适配 Chat Completions 与 Responses,并保持子 Agent 现有私有工具集不变。

变更内容

  • 新增请求级 ToolSearchSession。启用后,主 AI 首轮只加载 send_messageend 等配置项指定的常驻工具与虚拟 tool_search;其余工具以稳定排序的 <available_deferred_tools> 名称目录注入。目录在会话权限与运行时功能过滤后生成,已加载集合在当前 ask() 内只增不减,新用户请求会重新建立最小快照。
  • 支持精确选择与关键词检索。tool_search 接受 select:tool_a,tool_b、完整工具名、普通关键词和 +必需词 查询,可按工具名、参数名、工具描述与参数描述稳定评分;max_results 只能缩小配置上限,返回结果会区分新加载、已加载、未找到及是否截断。
  • 加固逐轮 schema 扩展与执行边界。搜索命中的工具从下一模型轮开始可调用;同轮猜测未加载工具会被执行层拒绝,end 与其他调用同轮出现时仍按既有规则拒绝结束,所有 tool result 按原始 tool call 顺序回填,兼容 Responses 的严格调用链校验。
  • 新增 [skills] 配置与热更新。tool_search_enabled 默认关闭,tool_search_always_loaded 默认 ["send_message", "end"]tool_search_max_results 默认 5;配置变更从下一次 ask() 生效。预取工具隐藏、保留名冲突、无延迟工具和功能关闭场景均保留安全回退,不会覆盖真实工具或重复执行预取。
  • 同步 Prompt、配置模板、根 README、架构、使用说明、Skills 文档与独立 Tool Search 专题文档;新增搜索内核、主循环、预取、配置、Prompt、Chat Completions、Responses 状态续轮及 stateless fallback 回归测试。
  • 修复 Console 前端依赖审计告警。将 Vite 的最低版本提升到 6.4.3,并刷新 picomatchpostcssnanoid 锁定版本,消除开发服务器路径读取、glob ReDoS 和 CSS stringify XSS 等已知漏洞;npm audit 结果归零。

📝 Detailed Changes

🚀 Features

  • feat(ai): add on-demand tool search (#84) (737ec70)

Undefined v3.6.8

Choose a tag to compare

@github-actions github-actions released this 10 Jul 01:45
v3.6.8
beefbff

v3.6.8 生图响应自动识别与 WebUI request_params 搜索修复

本版本修复 OpenAI 兼容生图链路对 response_format 的错误默认与解析依赖,并加固 base64 解码;同时修正 WebUI 配置搜索会把 request_params 结构化编辑器里的 key/type 控件单独隐藏的问题。

变更内容

  • 生图响应按 payload 自动识别格式:http(s) url / data URL / url 内原始 base64 / b64_json / base64,不再依赖请求或配置中的 response_format 做解析分支。
  • 停止默认写入 response_format=base64:仅当工具参数显式传入时覆盖;否则保留 request_params 中的值(若有),避免上游网关因默认格式不兼容而失败。
  • 加固 base64 解码:validate=True 校验字母表,并用 PNG/JPEG/GIF/BMP/WEBP 魔数确认结果为图片,拒绝把错误文本当成功生图。
  • 修复 WebUI 配置搜索:索引与过滤仅针对带 data-path 的表单项,嵌套 key/type 表单组不再被单独隐藏;request_params 编辑器占满网格宽度,搜索匹配时 key/type 仍可见。
  • 同步配置文档与回归测试:覆盖 payload 解析回落、edit-form 默认值、base64 校验,以及 config search 对 request_params 嵌套控件的可见性。

📝 Detailed Changes

🐛 Bug Fixes

  • fix(image_gen): 自动识别生图响应格式并修复 WebUI request_params 搜索 (v3.6.8) (#83) (beefbff)

Undefined v3.6.7

Choose a tag to compare

@github-actions github-actions released this 09 Jul 13:26
v3.6.7
8193a53

v3.6.7 Naga 会话级黑白名单

本版本将 Naga 启用粒度从进程全局细化到群聊/私聊会话:在总闸打开后,可按 mode 名单控制具体群与私聊是否启用 NagaAgent 提示词、相关 Agent 与外部网关能力,并保证提示词与工具暴露/执行结论一致。

变更内容

  • 新增 [naga].modeoff / blacklist / allowlist)及 allowed_group_ids / blocked_group_ids / allowed_private_ids / blocked_private_idsallowlist 下空名单 fail closed(拒绝全部,比 [access] 更严);未知 mode 拒绝。[features].nagaagent_mode_enabled[naga].enabled 仍为进程总闸。
  • AI 侧(NagaAgent 提示词与 naga_code_analysis_agent 工具 schema/执行)与外部网关(/naga、绑定、回调投递)共用同一套会话策略;私聊 superadmin 默认绕过私聊名单;群聊无 superadmin 绕过。
  • 每轮请求按会话同步切换:放行时使用 undefined_nagaagent.xml 并暴露 Naga Agent,拒绝时回退默认提示词并隐藏/拦截该 Agent。
  • 兼容旧字段 allowed_groups(合并至 allowed_group_ids;未写 mode 时自动 allowlist)。策略拒绝时投递返回 naga policy denied
  • 同步配置模板、文档(configuration / slash-commands / naga 契约 / access-control)与策略、命令、Runtime API、提示词/工具回归测试。

📝 Detailed Changes

🚀 Features

  • feat(naga): session-level group/private allowlist and blacklist (v3.6.7) (#82) (8193a53)

Undefined v3.6.6

Choose a tag to compare

@github-actions github-actions released this 09 Jul 08:48
v3.6.6
66f7a88

v3.6.6 抖音视频提取与媒体信息模式

本版本把抖音视频纳入自动提取、工具调用和文件分析链路:可识别短链、长链与 aweme_id,下载并发送视频合并转发,也可只返回附件 UID 或元信息。同时补齐 B 站与 arXiv 工具的信息模式,并加固抖音真实视频地址探测。

变更内容

  • 新增 Douyin 视频链路。新增 douyin 模块与 douyin_video 工具,支持抖音短链、douyin.com/video/<id> 和裸 aweme_id 解析,可按 send / uid / info 输出发送合并转发、注册附件 UID 或返回视频标题、作者、时长、简介等信息。
  • 接入抖音自动处理管线。普通消息命中抖音链接或 aweme_id 后,可按 [douyin] 配置自动下载并发送两节点合并转发;支持独立代理开关、时长与文件大小限制、清晰度探测顺序、群聊/私聊白名单和单条消息处理上限。
  • 加固抖音下载与真实视频探测。下载链路从 SSR share 页提取 video.play_addr token,再按清晰度探测 aweme/v1/play/;探测优先读取 Content-Range 总长度并按文件大小去重,ttid 获取失败时可回退直接请求 share 页,受限视频会返回更明确的过滤原因。
  • 扩展媒体工具信息输出。bilibili_videoarxiv_paper 新增 output_mode=info,可只获取视频或论文元信息而不发送/下载附件;file_analysis_agent 提示同步覆盖抖音、B 站和 arXiv 的 uid / info 使用方式。

📝 Detailed Changes

🚀 Features

  • feat(douyin): add video extraction and media info modes (#81) (66f7a88)

Undefined v3.6.5

Choose a tag to compare

@github-actions github-actions released this 05 Jul 03:08
v3.6.5
20b57b3

v3.6.5 Firecrawl 搜索、代理作用域与热更新连接修复

本版本聚焦联网能力与出站配置治理:web_agent 新增 Firecrawl 搜索提供商和搜索优先级控制,代理配置从全局开关收敛为模型与功能段独立启用,并修复配置热更新时旧模型连接可能被提前关闭的问题。

变更内容

  • 新增 Firecrawl 搜索。web_agent 可按 [search].priority 在 Grok、Firecrawl 与 SearXNG 间排序;未启用的搜索工具会从工具 schema 隐藏,Firecrawl 支持 API Key、base URL 与 keyless 模式。
  • 收敛代理配置。[proxy] 仅保存 http_proxy / https_proxy,是否走代理改由模型、搜索、附件、渲染、消息、Bilibili、arXiv、GitHub、Naga 和 API callback 等作用域的 use_proxy 独立控制。
  • 修复模型热更新连接生命周期。清理模型客户端缓存时会延迟关闭仍在使用的 HTTP client,避免流式、检索或并发请求在热更新期间被提前断开。
  • 同步配置解析、文档与测试覆盖。拆分模型配置 parser,补充 Firecrawl 开关兼容、代理环境变量映射、作用域代理与 LLM 代理回归测试。

📝 Detailed Changes

🚀 Features

  • feat(config): add scoped proxy controls (a0ed74a)
  • feat(search): add firecrawl search provider (#80) (10b7aaa)

🐛 Bug Fixes

  • fix(llm): defer closing hot-reloaded model clients (84b79d1)
  • fix(config): move firecrawl search switch (860a743)

🛠 Maintenance & Others

  • chore(version): bump version to 3.6.5 (20b57b3)