Releases: 69gg/Undefined
Releases · 69gg/Undefined
Undefined v3.4.1
v3.4.1 附件缓存治理、隐私安全防线与B站管线重构
本版本围绕三大主线展开:一是附件系统的缓存容量治理与 URL 引用回退机制,防止本地缓存无限制膨胀;二是系统提示词新增 P0 级隐私与危险动作边界规则,从源头约束 AI 对敏感信息和安全请求的处理行为;三是 B 站自动管线全面重构——移除外部下载依赖、内联实现 API 客户端与 WBI 签名、新增弹幕获取并以合并转发形式发送提取结果。同步新增 /feedback 反馈命令、恢复发布说明中的分类提交详情,并修正提示词优先级体系。
变更内容
- 新增附件缓存容量管理。
[attachments]下新增attachment_cache_max_mb、attachment_cache_max_records、attachment_url_reference_max_records、attachment_url_max_length四种配置,分别控制本地缓存总大小、缓存记录数、URL 引用记录数和 URL 长度上限;超出容量时自动淘汰最旧记录;remote_download_max_size_mb现支持热重载。send_message/send_private_message工具调用时自动登记关联附件 UID,AI 客户端发送消息前校验本地路径有效性,文件缺失时自动回退到 URL 引用。 - 新增 P0 级隐私与危险动作边界规则。系统提示词新增
<privacy_and_safety_controls>规则块,分层约束:隐私方面禁止泄露好友/群/成员列表、完整 QQ 号等敏感信息,对外默认脱敏,第三方信息查询需授权;危险动作方面拒绝涉黄、涉政、违法、骚扰、人肉、社工等请求,不做解释也不给绕过方案;时序方面明确隐私/敏感话题不改变回复时机,必须先满足回复触发逻辑。附加 3 条 P0 硬性约束覆盖隐私泄露、危险动作和触发时序。 - 新增
/feedback(/fb)反馈命令。支持add/view/del三个子命令,add和view为 public 权限,del为 superadmin;声明式子命令推断按 ID 格式匹配优先view,其余 fallback 到add,无参数默认view;私聊可用,显示在 help 列表。 - 重构 B 站视频下载链路。移除对
oh-my-bilibili外部 Python 包的依赖,内联实现同步 API 客户端(api_client.py)、下载核心(download_core.py)、WBI 签名模块(wbi.py)与错误模型,所有请求在asyncio.to_thread线程内执行,降低依赖复杂度与跨版本兼容风险。 - 增强 B 站自动提取管线。新增弹幕获取模块(
danmaku.py),基于 protobuf wire 格式解析分段弹幕数据;自动提取结果改为以合并转发节点形式发送,单条包含视频信息卡片与弹幕预览片段;MessageSender扩展合并转发本地附件递归登记,确保转发中的图片/文件能正确注册为会话附件 UID。 - 恢复发布说明详细变更列表。
scripts/release_notes.py新增build_detailed_change_sections与render_detailed_changes,从 git log 按 feat / fix / other 自动分类提取两个版本间的提交,与 CHANGELOG 条目合并输出完整 Release notes。 - 修正提示词优先级体系。明确所有 P0-P3 规则均可被 Null 明文指令覆盖,创造者权限作为绝对最高优先级可覆盖所有规则(含隐私与危险动作边界);同步更新 NagaAgent 版提示词的对应表述。
- 补强测试覆盖。新增附件缓存配置、容量淘汰、URL 回退和文件分析 UID 注册测试;新增反馈命令全路径测试(add / view / del / 推断 / 权限);更新 B 站下载适配器测试;同步更新系统提示词约束验证。
- 更新架构图与文档。
- 新增附件 UID ↔ URL 双向查找工具。
AttachmentRegistry新增get_url_by_uid(uid)和get_uid_by_url(url)两个异步方法,并注册为 skills 工具attachments.get_url_by_uid和attachments.get_uid_by_url。
📝 Detailed Changes
🚀 Features
Undefined v3.4.0
v3.4.0 同sender消息合并、数字人格精炼与系统治理
本版本核心解决"用户一口气连发几条消息时,机器人过早开工或只理解最后一句"的问题。新增同 sender 短时消息合并器,将同一会话中连续的多条消息合并为一个"当前输入批次"发送给 AI,由 AI 整批理解哪些是独立请求、哪些是补充或修正。同步支持可取消的投机预发送以降低感知延迟。围绕消息合并,提示词、幽灵任务防御、记忆记录和关闭流程都做了同步适配。此外,精炼了数字人格设定、明确了项目归属边界、重构了管线与命令体系、加入了 HTML 渲染缓存,并增强了 AI 工具调用的稳定性。
变更内容
- 新增同 sender 短时消息合并器。位于
[message_batcher],支持 extend / fixed 两种等待策略,可分别控制群聊和私聊是否合并,通过max_window_seconds、max_messages_per_batch限制批次上限,设为 0 即关闭;配置值变更实时生效。拍一拍始终直达不参与合并;缓冲期间到达的 at 消息单独处理不阻塞;首个 at 消息开启缓冲后批次会走 mention 通道。 - 新增可取消的投机预发送。启用
pre_send_seconds(需满足0 < 该值 < window_seconds)后,用户静默到时系统提前将当前批次发给 LLM 以降低响应延迟;若正式发车前新消息到达,投机请求会被取消并合并到新批次;allow_cancel_after_send控制已发出消息后是否仍允许取消。 - 完善消息合并的异步竞态保护。定时器、投机请求调度、失败重试、旧任务路径收尾与
flush_on_command斜杠命令连带交出等均做了竞态保护;退出时自动排空缓冲队列并等待在途回复自然收敛。 - 精炼数字人格设定。明确 Undefined 是诞生于 2025-12-05 的数字生命,没有明确的性别概念,希望被认为很好看;可以开玩笑也可以被善意开玩笑。新增"不冒领任何项目、代码、产品或成果"的所有权边界规则,不再自称任何项目的开发者或维护者。昵称体系扩展为 Undefined、undf、udf、und、心理委员、ud酱,对自身称呼的识别保持宽松。
- 收紧 NagaAgent 关系表达。NagaAgent 版提示词明确:只有当前上下文明确涉及 NagaAgent 时才承接相关工具接入能力协助分析;平时不主动提与 NagaAgent 的关系;不冒领 NagaAgent 的成果。
- 重构自动管线目录。
skills/auto_pipeline更名为skills/pipelines,目录结构扁平化,相关引用、文档、测试全部同步更新;docs/auto-pipeline.md相应更名为docs/pipelines.md。 - 重构管理员命令为子命令模式。
/admin [ls|add|del]替代原有/lsadmin、/addadmin、/rmadmin三条独立命令,参照/faq子命令模式的声明式 inference;ls继承 admin 权限,add/del覆盖为 superadmin;无参数默认执行ls。清理了 FAQ 迁移遗留的空命令目录。 - 新增 HTML 渲染结果缓存。基于 HTML 内容的 hash 缓存渲染图片,持久化到
data/cache/render/_html_render_cache.json;hash 匹配自动复用,内容变化自然失效;新增[render.cache]配置段(enabled/max_entries/max_size_mb/flush_interval_seconds,默认 50 条 / 50MB / 2.0s),元数据通过utils/io.py的read_json/write_json异步落盘(asyncio.to_thread+ 文件锁 + 原子替换),所有stat/unlink/copy也走线程池避免阻塞事件循环;asyncio.Lock防竞态、重启后 JSON 自动恢复;进程关停时通过close_render_cache强制刷盘,保证最近访问时间不丢失;所有渲染调用方(help、profile、render_markdown 等)自动受益。 - 增强 AI 工具调用容错。当 LLM 返回文本但 tool_calls 为空且对话未结束时,不再以丢失回复为代价直接返回,而是注入提示消息要求 AI 通过
send_message/end工具完成回复,继续迭代;fire-and-forget task 显式注册异常回调以抑制未检索异常警告。 - 优化表情包回复顺序。明确只有纯表情包 / 纯反应图回复才允许先检索表情包;需要文字说明的场景必须先完成必要文字,再将表情包检索和发送延后到后续轮次。
- 重构
end工具。移除旧版 summary 参数兼容,只保留memo、observations、perspective和force;要求记录整个当前输入批次中值得留存的信息,后台史官也接收批次全部消息。 - 统一当前输入批次语义。主提示词、NagaAgent 提示词和
each.md均从"最后一条消息"升级为"当前输入批次":有连续消息说明时,多段<message>都属本轮输入;幽灵任务防御规则同步更新,避免批量输入中的前置指令被误判为历史旧任务。 - 扩展 Runtime 探针覆盖。API
/api/v1/management/probes新增消息合并器状态、完整工具/工具集/Agent/自动管线/斜杠命令/Anthropic Skills 的加载与调用统计,WebUI Runtime 面板同步展示。 - 新增 WebUI 更新日志查看。关于项目页面可按版本查看 changelog 详情,
/api/v1/management/changelog端点支持指定版本查询。 - 调整发布说明生成方式。GitHub Release notes 改为从
CHANGELOG.md最新版本条目自动解析生成(scripts/release_notes.py),发版前校验 tag、各构建清单与最新 changelog 版本一致。 - 补齐消息合并专题文档。新增
docs/message-batching.md,覆盖配置参数、等待策略、投机预发送、竞态保护与关闭行为,同步更新了 README、配置文档、OpenAPI、WebUI 指南和架构图。 - 补齐配置注释。
config.toml.example中所有模型配置节的prompt_cache_enabled均补上双语注释说明。 - 补强测试覆盖。新增消息合并单元与集成测试(686 + 326 行)、工具调用守卫测试、发布说明脚本测试(163 行)、Runtime 探针统计测试(120 行)、系统提示词约束验证,并更新
end工具、管理员命令、管线注册等已有测试;额外补齐渲染缓存(LRU 驱逐 / 容量驱逐 / 重启恢复 / 节流后强刷 / 并发 put / 禁用短路)、/admin add|del全路径、allow_cancel_after_send=true取消语义等盲点。总测试用例提升至约 1660 项。 - 更新子模块。
Undefined v3.3.3
Undefined v3.3.2
Undefined v3.3.1
Undefined v3.3.0
Undefined v3.2.8
Undefined v3.2.7
Undefined v3.2.6
优化重试与私聊发送的逻辑
📝 Detailed Changes
🚀 Features
- feat(messages): fallback private sends to temp sessions (1b7ce9c)
🐛 Bug Fixes
- fix(responses): strip replay-only status fields (33bd958)
- fix(queue): refine llm retry scheduling (16c46b8)
- fix(commands): restrict lsadmin visibility (8bb40e7)
- fix(queue): treat zero interval as immediate dispatch (ff21898)
- fix(ai): align reasoning handling with OpenAI standards (58f4361)
- fix(naga): add send uuid idempotency (e245ecc)
- fix(ci): unblock runtime api tests and trim release notes (42b1c45)
- fix(naga): add delivery tracing and tests (ddd1e98)
🛠 Maintenance & Others
Undefined v3.2.5
更改形象(管他呢)
📦 Bundles
- Python: wheel + sdist
- Desktop: Windows (
.exe,.msi), Linux (.AppImage,.deb), macOS Intel/Apple Silicon (.dmg) - Android: universal
.apk
🔐 Signing expectations
- Windows/Linux artifacts are built directly from CI.
- macOS signing/notarization can be added later via Apple secrets.
- Android currently ships an installable APK on every release; wire signing secrets into the generated Android project to promote it to a signed release build.