[小傅哥Agent编排项目]个人的修改小结

在尝试对项目进行改进时,发现此项目确实还有非常大的改进空间,于是一边修改一边将零碎的想法总结了一下。
注意:本人在尝试改进时,还只是没有工作经验的在校大学生,所以此文仅供参考,可能存在诸多不足之处
此项目详见 原项目链接

分离对话模型与向量模型的 API KEY

问题:发现原有的项目,每个 client 只能配置一个 api key,这样会导致一些无法使用向量模型的 api key 的 Agent 无法配置和正常使用 RAG 服务。

解决思路:对话模型 API KEY 与 向量模型 API KEY 分别单独进行配置。对话模型的配置除了删除了 Embedding 之外其余不变,向量模型则全局只能配置一个,且只能配置 1024 维度的。

不足的地方:只支持配置 1024 维度的向量模型

我所做的事情:

  • 新建一个数据库表 ai_client_embedding_api 专门存储向量模型的API
  • 删去原有的数据库表 ai_client_api 的相关字段
  • 因为不同维度的向量模型不能共用同一数据库,因此选择了较为常用的1024维(这维度的模型价格也相对较低)作为这个项目的向量模型的固定的维度
  • 在向量模型的配置上,采用了互斥的方式,用户可以配置多个向量模型API,但同一时间只能启用一个向量模型API
  • 因为同一向量模型可能由不同的服务商提供,为了能够区分开来,增加了服务商字段以便区分。同时在前端的启用列表下同时显示模型名称与服务商名称,方便选择
  • 原数据库表中,模型与模型API的数据库表是分开的,所以API没有存储模型名称,只存储API的名称,但考虑到向量模型的配置的字段会比对话模型更少,而且更替相较也更不频繁,模型与模型API就不分开数据库表存储,而是一块存放了

自定义 MCP 服务

问题:对于自定义的 CNBlog 发帖服务与微信公众号消息通知 MCP 服务,它们的源代码中的配置,例如 Cookie 是写死的,这样不便于用户的配置

我所做的事情:将自定义 MCP 服务原本写死的配置,改为环境变量的方式进行配置

关于多 Agent 协作

可改进的地方:目前一个代理配置里,只能配置一个 agent,不能配置多个 agent,不能实现多个 agent 协作

Agent 拖拉拽配置画布规则

问题:目前 Agent 的 Auto 和 Flow 策略都是只能固定数量与固定客户端类型的,不能随便配置,但在拖拉拽配置页面中并没有对此加以规范,容易造成用户配置错误

我所做的事情:规定拖拉拽页面的规则,尽可能减少配置的负担与发生错误的概率

  • 开始节点 必须且只能连 Agent,Agent 只能连 Client,Client 只能连四类 组件(Prompt、Advisor、Tool MCP、Model),组件 之间可连接;开始节点与Agent 不可增删,在 Auto/Flow 策略下 Client 的数量和角色由策略固定。
  • Auto 策略固定先后执行四个节点:TASK_ANALYZER / PRECISION_EXECUTOR / QUALITY_SUPERVISOR / RESPONSE_ASSISTANT
  • Flow 策略固定先后执行三个节点:TOOL_MCP / PLANNING / EXECUTOR
  • Fixed 策略可自由增删 Client 节点

使得更多配置可以进行热装配

问题:例如配置好后的 Agent 需要重启服务才能被使用,这样生效不够及时

思考:考虑过仅仅使用数据库中的 status 状态来判断是否使用此bean,但因为想要达成的话,就需要将所有bean都注册进来,这样会导致负担过大,浪费没必要的资源,因此放弃了这一想法。

我所做的事情:

  • 修改配置后,点击“装载”时才将 Agent 关联的组件配置注册为 Spring Bean,未装载的 Agent 不占资源
  • Bean 注册采用先移除后注册的方式,重新装载即覆盖旧版本,配置变更即时生效
  • 执行链路每次请求实时 getBean 获取 Bean:旧请求持有旧引用跑完,新请求拿到新配置
  • 通过 Bean 归属登记避免卸载时误删被其他 Agent 共享的组件

后续需要考虑的问题:在用户使用的过程中,若在用户使用时进行了这个正在使用的 Agent 的热装配,会发生什么事情?如果会产生问题的话,该如何解决?

暂时拟定的几种解决方案:

  • 设置读写锁
  • 请求绑定版本
  • 延迟销毁

改变 Client 作用域

问题:当前 Advisor(如 ChatMemory)配置在 ai_client_config 表中,关联粒度为 client→advisor。导致同一 Client 被多个 Agent 引用时,所有 Agent 都继承相同的 Advisor,无法按 Agent 差异化配置。用户在画布上为 Agent A 连线 Advisor,期望只影响 Agent A,但实际 Agent B 也会获得。

我所做的事情:在 ai_agent_flow_config 表中新增 advisor_id_list 字段,使 Advisor 关联粒度变为 agent+client → advisor

修改 Auto 策略的匹配逻辑

我所做的事情:原有的Auto策略依靠关键词匹配来打印内容,现在更改为不依赖关键词匹配的方式

parseMarkdownSections() 的工作原理:

  • 以 ## 或 ### 开头的行识别为段落标题
  • 两个标题之间的内容归属前一个标题
  • 如果 AI 输出没有任何 Markdown 标题,整段文本作为一个无标题段落返回(兜底,保证不丢失内容)
  • 逐行日志输出在 logSectionContent() 中统一处理

解析后,每个段落作为一条独立的 analysis_sub 事件推送给前端

添加代理列表页面的启用/禁用功能

背景:原有的代理列表没有启用与禁用的功能,但数据库表中有status的字段的设计。原有的代理列表的状态不能正确显示,无论status实际的值是多少,都显示启用状态

修复 flow 策略中硬编码获取工具的问题

问题:获取MCP工具的代码是硬编码的,不适用于所有场景,应当改正

我所做的事情:运行时从 Agent 配置收集 MCP ID,调用 listTools 实时获取工具名称、参数 Schema 后动态拼装

优化前端的用户对话页面与后台管理页面样式

背景:觉得原有的项目前端页面不够美观,想要优化

我所做的事情:使用开源的 SKILL(taste-skill / web-design-engineer),给定提示词,让 Agent 根据我的需求优化页面

开源项目链接:

https://github.com/leonxlnx/taste-skill

https://github.com/ConardLi/garden-skills

另:我画的一些此项目的图

注意,有一部分可能与原项目不同

Auto策略流程图:
Auto策略流程图

Flow 策略流程图:
Flow策略流程图

Fixed 策略流程图:
Fixed策略流程图

用例图:
用例图

系统架构图:
系统架构图

posted @ 2026-09-09 20:52  Zephyrix  阅读(4)  评论(0)    收藏  举报