Skip to content

v2.9.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 02:34
· 8 commits to main since this release

按「设置里该有的四类能力」逐项核对:Skill 已有、Prompt 只读、Plugin 缺失、知识库缺失。
补完后 Agent harness 的三个缺口(循环、输出上限、重试)也一并补上。

四类能力盘点与补齐

能力 补齐前 现在
Skill 4 个内置 + 自定义可增删、可绑定时 不变(已完备)
Prompt agents/<name>/instructions.md 文件驱动,设置页不能改 新增「系统提示词」分区:可视化编辑、留空回落默认、4000 字上限、即时生效
Plugin 缺失:外部 MCP 服务器只能手改 backend/data/mcp.json,格式错一处整份失效 新增「插件(MCP)」分区:增删、测试连接、显示已发现工具;URL 凭据打码;写工具仍被禁止
知识库 缺失:附件只能附在单条消息上,不参与检索 新增「知识库」分区:上传文档→切片→BM25 检索→注入 system 消息;可逐个开关、删除

知识库实现(app/knowledge.py)

  • 切片:段落优先 + 长段落带重叠滑窗(400 字 / 80 字重叠),避免把句子切断。
  • 检索:复用 rank-bm25(与长期记忆同一套中文双字+单字分词),只保留 score > 0 的命中。
  • 注入:拼成带文件名的片段,2400 字预算内按得分顺序截断。
  • 开关:knowledge_enabled(默认 on),关闭后完全不检索。
  • 为什么不上向量库:与「本地优先、零外网」冲突(embedding 需外部 API 或几百 MB 本地模型);
    接口按 retriever 设计,将来换向量实现只需替换 rank_chunks。

Agent harness 加固

  • 工具循环检测:连续 3 次用相同参数调同一工具时中断并告知模型「结果不会变化」。
    此前只有 turn_cap 兜底,要烧满 5 轮才停。
  • 输出上限:工具循环的模型调用补 max_tokens=2048,防超长生成拖到超时。
  • 重试与超时:非流式调用补 num_retries=2 + timeout=60(与流式路径对齐)。

验证

  • 后端 786 通过(新增:MCP 管理 8、知识库纯函数 9、知识库接线 3、循环保护 6)。
  • 知识库接线测试断言「入库文档的原文确实出现在 system 消息里」,非入库文档不出现。
  • 前端 111 单测 + 21 e2e 通过;设置页 16 个分区逐页截图无报错。