prompt.md 47 KB

我希望做一个智能体管理和编排平台,主要功能是管理某个目录中的Skills。

每个Skill是一个独立的文件夹,文件夹内必然包含一个SKILL.md文件,文件开头几行固定包含以下结构:

name: {skill name}
description: {skill description.}

分别为Skill的名称和描述。

我希望后端使用 Java 8 (可使用Spring boot 和 Spring AI 框架)实现,前端使用 Vue 3 实现。Skills 放在本机的某个目录中,在后端配置文件中配置目录路径。

前端包含两个页面,智能体管理智能体编排

  1. 智能体管理:程序启动后,读取配置文件中配置的目录路径,查询其中第一层子目录,筛选出内部包含SKILL.md的子目录,然后读取每个SKILL.md文件,提取前几行的namedescription,作为智能体名称和智能体描述,以列表形式展示。如果namedescription为英文,调用大模型翻译为中文后再进行呈现。

页面上方包含“新增”按钮,点开后弹出一个文件上传对话框,选择一个压缩文件,上传完成后,后端在临时目录中解压验证,压缩文件内第一层目录包含SKILL.md文件,且可以解析出namedescription,则新增成功,复制到Skill路径,列表内新增一行;

每一条右侧包含“编辑”和“删除”按钮,“编辑”可以编辑智能体名称和智能体描述,点击确定后对应SKILL.md文件中的namedescription也随之修改;“删除”需二次确认,确认后将对应Skill子目录删除。

  1. 智能体编排:待智能体管理实现后再进行下一步实现。

界面设计需调用 skill ui-ux-pro-max 进行设计,使用深蓝色渐变风格,要求高端、大气、上档次。


我希望增加一个websocket接口,前端请求时,先快速返回英文响应,翻译完成后推送中文响应,页面更新(不要整个页面刷新)


翻译完成后,前端更新了,但点击“刷新”后,原来是英文的skill又变成了英文,且不会再变回中文了,请排查并解决。


我希望创建一个前后端合并部署的Skill,放在项目路径/.claude/skills下。支持Springboot后端+Vue前端。Skill包含几部分功能:首先根据给定的端口号,修改后端部署端口号;然后修改后端相关配置,支持将前端打包后的dist文件放到静态资源目录下运行;除/api端点外,其他不合法路径直接跳转到前端界面首页;同时创建run.bat和run.sh脚本,作用是:直接运行,执行前端打包+旧前端dist清理+新前端dist复制+后端打包+后端运行;run.bat build 或 run.sh build,执行除后端运行外的所有操作。请按照skill规范帮我创建。


现在还有问题:

  1. 直接通过localhost:<端口号>进入页面,能够正常显示,且自动跳转到路径“localhost:<端口号>/management”,但是在这个路径执行浏览器刷新,则会直接变成空白页面;
  2. 页面提示websocket连接失败。 请解决。

现在,我希望新增一个页面,标签管理。内部可以创建标签组,每个标签组作为一个标签分类维度。每个标签组在创建和编辑时,内部为树状结构,树中的每个节点都是标签。标签可用于智能体、Skill等,一个智能体可对应多个标签。每个标签组均能够修改、删除;标签组里的每个节点也均可以新增、修改、删除。标签组创建时,默认创建一个根节点,名称与标签组名称保持一致,用户可以对该节点改名。用户对树的操作,类似于XMind对思维导图的操作形式。


需要无限层级;同时前端页面中,添加标签时,请弹出对话框进行标签名称输入;删除标签时,也弹出二次确认对话框进行删除,删除确认按钮用中文的“确定”和“取消”。


再进行一些修改:

  1. 标签右侧增加“编辑”按钮,弹出对话框进行标签名称的编辑,而不是现在双击编辑的方式;
  2. 删除按钮由“-”号变为垃圾桶logo;
  3. 多层标签树展开后,每一层级的左侧层级竖线,缩进距离与标签缩进距离不一致,导致看起来很奇怪,请修改。

下面,实现智能体编排功能。

  1. 首先展示一个当前编排过的智能体工作流的列表,展示工作流的名称等关键信息。

  2. 点击“创建”,打开工作流创建界面,参考Dify的工作流编排界面(请搜索后完善),左侧工具栏中包含“用户输入”、“大模型处理”、“智能体”、“输出”、“条件分支”等节点;中间是画布,背景为浅色网格,通过可视化、拖拽的形式,以及节点连线功能,将其他Skill和智能体编排起来;右边为属性工具栏,点击某个节点时才会出现,根据节点类型,显示不同的表单:

    1. 用户输入:包含输入变量的创建,可不创建、创建一个或多个,每个变量包含变量名、中文名、变量类型、变量描述等字段。

    2. 大模型处理:包含模型选择下拉框、系统提示词、用户提示词等输入框,其中用户提示词输入框中可以插入1中用户输入的变量(以变量名表示)。

    3. 智能体:选择智能体列表,列表中为系统中的Skill和已编排好的其他智能体;

    4. 条件分支:初始化有一个IF字段,用户可以在后面用自然语言写条件;用户可添加零个、一个或多个ELIF,均可以用自然语言写条件;

    5. 输出:可以选择用文本还是Json对象输出。

除输入、输出和条件分支外,每个节点左侧和右侧各有一个连接点。输入节点只有右侧有连接点;输出节点只有左侧有连接点;条件分支左侧有一个连接点,右侧有(ELIF数量+2)个连接点,后面可以跟相同数量的节点。点击“完成”,完成工作流的创建。

  1. 创建后,返回工作流列表界面,每个工作流有编辑和删除按钮。删除需二次确认。

目前只有“条件分支”节点可以被拖入画布,“输入”节点拖入画布后只能显示一个输入框;其他节点无法被拖入画布。“条件分支”右侧节点数也不能随着ELIF数量动态调整。请修复。


目前,条件分支节点右侧的连接点还是固定只有一个,我希望它能够有(ELIF数量+2)个,假如节点高度为100px,ELIF数量为2,那么右侧连接点有4个,分别位于20px、40px、60px、80px的位置。 另外,输出节点拖入画布后,显示有问题,节点下方叠加了一个白色方框,请检查。


增加连接线删除功能;同时,如果可以的话,我希望使用曲线连接线,这样一个连接点有多条连接线时,会更容易分辨一些。


skills-manage是别人的项目,只给我们做参考用,忽略它。现在我想实现:

  1. 智能体编辑时,如果名称和描述是英文,对话框中出现翻译按钮,翻译为中文。
  2. 我想为智能体添加输入输出的设置,请先思考实现方式,让我选择。

Uncaught (in promise) TypeError: Failed to resolve module specifier "@/api/translation". Relative references must start with either "/", "./", or "../". 错误位于:management:1


/plan 现在,智能体列表进入时会触发翻译,编辑时点击翻译按钮也会触发翻译,我希望点击翻译按钮后,能够复用列表翻译的结果。具体而言:1.如果点击翻译时,列表中的翻译未完成,那么该接口阻塞,在列表翻译完成后返回,翻译结果与之保持一致;2.如果点击翻译时,列表中的翻译已完成,直接返回缓存结果,也与之保持一致。


很好,接下来继续实现输入输出设置,注意,inputs/outputs字段放到description下方,metadata上方(若有)。


请思考智能体编排后,按工作流执行的调度引擎实现。不要做得太死板,要融入skill的思想,单个节点执行时要灵活,总体工作流执行时要遵循格式化输入输出,确保工作流不丢节点


几个问题:

  1. 图中的节点,类型变成了英文,请保留中文,与左侧工具栏保持一致;
  2. 运行工作流前,输入对话框,透明度过高,导致对话框与下方内容重叠显示;
  3. 工作流中某节点运行时,位置会漂移;
  4. 运行结果弹出后,透明度也过高,同样内容重叠。我建议,透明度调低;同时右侧工具栏分成tab页,可分别展示“节点属性”和“运行结果”。“运行结果”中包含输入、大模型、智能体、输出等工作流中各节点的摘要信息,我希望界面也要美观,将各节点涉及的变量以节点对应的颜色和等宽字体表现出来。

为什么我在某次执行run.sh重启后端服务后,前端变成了最开始的版本?很多功能都不见了


我的项目本来功能完备,但由于未知原因,代码回滚到了之前版本。好在我与大模型的协作历史还在,请根据@chat-history-202606100530.jsonl,查找大模型帮我做的改动是否丢失。若未丢失,跳过,往下查找,直到找到丢失的改动,然后重做后续的左右改动。


帮我创建项目开源准备Skill,大致步骤如下:

  1. 如果没有README.md,使用 readme-gen Skill创建;如果存在,根据项目最新进展更新;
  2. 如果没有.gitignore,创建;然后将项目中不适合开源的内容写入;
  3. 如果配置文件中存在密码、api key等敏感信息,写入.gitignore,然后创建“文件名.example”,将敏感信息抹去。同步将部署步骤(复制.example并修改)写入README.md;
  4. 无需生成CONTRIBUTORS.md、PR请求模板等用于协作的文件。

再增加一个步骤,调用 git-commit-log-gen Skill 生成提交记录并输出。


我希望实现一个功能:当A、B两个节点通过连接线连接起来的时候,如果:

  1. 当A节点定义了输出,B节点未定义输入,那么B节点采用A节点的输出;
  2. 当B节点定义了输入,A节点未定义输出,那么A节点采用B节点的输入;
  3. 当A节点定义了输出,B节点定义了输入,且输入和输出变量一致,那么不采取操作;
  4. 当A节点定义了输出,B节点定义了输入,且输入和输出变量不一致,那么连接线标红,点击连接线,右侧属性区域出现A节点的输出、B节点的输入,用户需通过勾选,选择要保留的输入项和输出项。

进一步扩展到多个节点的情况,当A和B同时连接到C节点时,假如:

  1. A的输出+B的输出=C的输入,那么不采取操作;
  2. 当A未定义输出,B定义了输出,且C的输入包含B的输出,则自动计算A的输出=C的输入-B的输出;(更多节点同理)
  3. 当A和B均未定义输出,C定义了输入,那么需在属性区域分配C的哪些输入由A给出,哪些由B给出;
  4. 当A的输出+B的输出≠C的输入,或存在其他无法处理的情况,用户需手动分配输入和输出变量。

另外,输入和输出的数据类型,可以为文件和目录的路径,增加该项配置。


输出的参数也定义变量吧,不只选择文本和json类型了。 大模型处理同样可设置输入变量和输出变量。 条件分支也可以接收前方的输出变量,作为条件判断的依据。同时,它接收的所有变量均作为它的输出,透传至下个节点 智能体节点,在选择智能体后,对应智能体的输入和输出就是该节点的输入输出,但可以编辑。


请统一Skill输入输出参数的类型和工作流节点输入输出参数的类型,并都用同样的中文来表示。 另外,“输出”节点接收不再保留“文本”和“JSON对象”下拉框,而是默认保留一个result字段,类型可以选择各种参数类型。


我可能走入了一个误区。请帮我思考:Skill本身是为了让技能执行时更灵活,它运行时,很多情况下不是必须严格约束输入和输出。例如代码审查Skill,不一定输入源代码,有可能是读取目录中的文件。那么,我是否应该硬约束输入和输出?还是设计两套机制,可以切换?还是做一些软约束?


有些情况下,上游Skill和下游Skill,输入输出不一定完全匹配,例如上游“写代码”Skill,针对src子目录进行写入;下游“代码审查”Skill,针对整个目录进行审查。如何处理这种情况?


不是的,我的意思是,尽管输入和输出不一定完全匹配,但在业务上,这是合理的。我希望想办法来兼容这种情况,保留灵活性。请进一步思考。


将你的思考先保存到temp/docs目录下,以markdown的形式,我稍后再来仔细考虑这个问题。现在我们先干其他工作。


接下来,我们将智能体和Skill的概念区分开来。Skill作为“技能”,是更小粒度的能力;而智能体是将多个技能和其他智能体编排起来的成果。所以,我们的“智能体管理”菜单修改为“技能管理”,且该页面所有的“智能体”均修改为“技能”。然后,创建上级菜单“智能体管理”,下方包含“技能管理”和“智能体编排”两个菜单。


我们来完善技能编辑功能。点击“编辑”按钮之后,原来的弹出编辑对话框形式,修改为跳转页面,页面带返回按钮,这样编辑区域可以更大一些。编辑的内容,除自动识别的SKILL.md中的“名称”、“描述”、“输入”、“输出”之外,增加正文编辑区域,将正文部分加载至该区域进行编辑。同样提供翻译功能,支持将英文正文翻译为中文。参考vscode中对markdown格式的语法高亮,实现markdown关键字和符号的高亮。另外,在适当位置增加“高级编辑”按钮,点击后,页面左侧变为目录树形式(不影响菜单栏),将对应Skill目录中的所有文件列出,可以在目录树中新建目录、新建文件等,交互方式类似vscode中的新建方式。新建后,点击对应文件,右侧变为文本编辑区域,可以对文本进行编辑,支持各类后缀(json、py、md、java等)文件的对应关键字高亮。


在工作流中增加“技能”节点,与“智能体”行为类似。


将网页标题修改为“智能体管理平台”


Skill编辑时,正文内容不要包含---内部的部分,以及后面的一行空行,直接从正文开始。保存时,进行拼接。


保存时逻辑再完善一下,原有---中的内容,除name、description外,可能还有metadata等字段。所以如果我们进行了修改,那么只替换name、description中的内容即可;如果加了inputs和outputs字段,紧跟到description之后即可。原有metadata等字段不要删除。如果这些字段未被---包裹起来,再处理一层,将之用---包裹,并确认其与正文间包含一行空行。


后端报错: [翻译] 大模型调用异常: I/O error on POST request for "https://open.bigmodel.cn/api/paas/v4/chat/completions": Read timed out


关于Skill正文的翻译,后端已正常返回结果,为什么前端未更新为中文?


我有3个skill,点开第2个的编辑按钮,请求体发送了第2个skill的正文翻译请求,但返回结果没有对应响应,只有第1个的响应。对应日志如下:


一般而言,大模型的翻译速度最慢为40字符/秒。针对正文过长的情况,请动态设置前端超时时长,留出双倍的时间等待响应返回。


第一次点进“高级编辑”时,左侧总是空的,需要再次点进去才能加载目录结构,请检查。


目录结构展开的层级有问题,例如某个目录下,包含A目录、B目录、C文件,那么A目录展开后,A目录下的文件展开后,会显示到C文件下方,且为平级显示。请修复。


在目录中新建文件和新建目录的logo不太准确,修改一下;另外,不要用原生的弹出框进行输入,用统一界面风格的弹出框。


初次提交中,我把backend/src/main/java/resources/static/提交了,实际上不需要。我希望撤销提交,从暂存区删除该目录,然后重新提交;然后把本次修改生成第二次提交。请帮我生成git命令序列。注意:不要执行。


增加大模型管理(作为独立菜单)、设置默认大模型功能,大模型包含URL和API Key等配置字段


增加一个“测试连接”功能吧,同时参考CC-Switch项目的功能,进行功能完善。


  1. 工作流中,大模型的配置,下拉框改为“大模型管理”中已存在的模型,默认选中默认模型。
  2. 技能管理中,每个Skill的输入,默认不选中“必选”框。
  3. 工作流中,左侧新增“智能操作”节点,意思是非预置的智能体。属性表单中至少应包括“操作要求“,大块文本框类型。与其他节点一致,可选添加输入和输出字段。
  4. 工作流中,画布里的智能体节点、技能节点、智能操作节点,均增加模型选择配置,以支持简单任务路由至简单模型。
  5. 每个智能体节点、技能节点、智能操作节点、大模型处理节点,均支持配置“失败后是否终止工作流”,单选框,“终止”或“跳过”。相应地,后端执行引擎需要区分节点的运行结果,“运行成功”、“无需运行”(例如创建文件的操作,文件已存在,则无需运行,可视为成功)、“运行失败”。只有“运行失败”状态需要触发终止或跳过的判断。

我想将所有的“输入”改为“前置数据”,因为某个步骤的输入不一定是由上个节点传入的,可能是更前面的节点。是否可行?


为什么技能加载不出来了? 后端报错:


在大模型配置时,我希望将URL直接配置到/completions,因为openai标准默认会在URL后添加/v1/chat/completions,但GLM的URL却是以/v4/chat/completions结尾的,会变成/v4/v1/chat/completions,出现问题。


软件包含标签管理功能,我希望对标签和标签组的导出格式形成一个规范,以json格式存储,一个文件即可存储多个标签组的数据。然后做一个功能,可以一键导出和一键导入,导入时,如果标签组有重名,询问是覆盖标签组、合并标签组内的标签、还是跳过该标签组。 最后我既需要完成标签导入导出的功能,又需要出具一个标签存储和导入导出的规范,以markdown形式存储到docs中。


实现技能和智能体的打标功能,可以打0个、1个或多个标签,可以打同一个标签组内的多个标签,可以打不同标签组内的多个标签,可以打非叶子节点的标签。将这个通用的打标原则也补充到@docs/tag-import-export-spec.md规范中。(md可以改名)


你的@tag-system-spec.md中,示例未包含多级标签的情况,请补充。


将标签组和标签设计、存储、导入、导出、打标的相关内容生成一个skill。


刚刚你实现了自定义completionsPath的功能,我想问,假如说我application.yml中的相关配置发生了变化,对应大模型的配置能否也跟着变化?这样更加灵活。


帮我规划技能和智能体版本管理功能。我们简化模型,假如某技能有3个版本1,2,3,然后当前版本从3回退到2,然后又在此基础上做了修改,那么按时间顺序,版本升级到4即可。


基本可以,但高级编辑模式下,只需要在skill保存时生成版本,文件修改删除时不用。可实现版本对比(diff)、版本备注编辑,不用选择性回滚单个文件。


现在点击节点,点击右键,弹出的是浏览器自身的菜单。请实现工作流中节点的删除操作。


我希望技能可以分类管理,类型可以包含无限层级。类型直接在技能卡片左侧新增的类型树中管理即可,无需单独界面。类型创建和编辑时,输入框要和当前界面风格保持一致。 另外,将技能的搜索和分页显示做了吧,搜索只需要一个输入框即可,可以在名称和描述中进行搜索。


智能体也做成卡片形式,除智能体名称外,显示智能体工作流缩略图(可以用带颜色的圆圈来表示对应的工作流节点,简化显示)和创建时间。 另外,技能和智能体的标签设置功能做了没?请确认是否已实现技能和智能体的打标功能,可以打0个、1个或多个标签,可以打同一个标签组内的多个标签,可以打不同标签组内的多个标签,可以打非叶子节点的标签。


打标签时,标签显示比较奇怪,标签组名称缩进过大,标签缩进过小且行距过小;另外,标签组中新增一级标签后,打标签时不显示。请统一修复。 另外,工作流创建时,默认缩放级别在当前基础上缩小5级吧。


智能体页面也像技能一样,新增分类管理、搜索和分页显示吧,它的分类和技能分类不互通,各自具有独立的分类。


工作流编排完成后,我希望将Hermes作为它的执行引擎。请帮我调研并给出解决方案。


我希望在结果里点对应节点,能看到详细的操作执行和工具调用日志


请确认标签管理的逻辑,名为“A”的标签组,根节点是否也为A?如果在根节点同级新建了节点,也就是有两个根节点的情况,是否能处理?


你错了,现在创建时会出现每组多根的情况,前端界面可以通过新建标签,在根节点层级新建节点。修改一下,右侧不再显示和标签组同名的虚拟根节点,这样直接创建就是一级标签,而非根节点层级的标签。这样虚拟根节点也不会被改名。 另外,在给技能和智能体打标签时,弹出的打标界面,标签组显示“> 组名”,一级标签直接靠左显示,会造成标签位置比组名更靠左的情况,请修复。标签之间的行距也过小,请修复。 我更希望所有标签组以思维导图树来展示,平铺在打标签对话框中。父节点和子节点之间使用贝塞尔曲线连接,节点使用圆角矩形包裹,小一些。未选中时标签为白色,选中后为绿色,并出现在上方。


我希望打标时,思维导图里能够带标签组作为根节点,但该节点无法选取。所有节点再小一些,比文字稍高一点点即可。圆角矩形的圆角半径大概是矩形高度的一半。导图的线、圆角矩形的外边框、矩形内的文字,都是白色,矩形内不填充颜色。选中节点后,矩形外边框和文字变绿。上方标签样式不用变,但颜色变为绿色。


我想实现智能体(工作流)运行结果记录功能,按智能体,记录各智能体运行结果,类似编排界面右侧的结果界面。该功能单独列出一个菜单。


我觉得标签也可以显示到卡片最下方,也以空心圆角矩形的形式


每个Skill都有其适用的场景。我希望实现一个功能:在工作流编排界面,增加一个“自动关联”按钮。点击后,假如说某个Skill的SKILL.md或智能操作的工作流程中,涉及到了隐式调用其他Skill的场景,那么在图中以虚线画出相关的技能,并以虚线箭头指向源头Skill或智能操作。由于部分Skill的描述为英文,故应以语义而非字符串匹配来识别。而且这个操作还要快,不需要过于深度思考。


工作流编排界面,智能操作的输入框,我希望拥有一个按钮,如果觉得编辑区域太小,可以扩展成mono editor弹出框,按照md的高亮方式编辑。


现在,我希望修改工作流的执行逻辑。不再单纯传递变量。节点与节点之间传递“上下文”,包括:

  1. 一个工作目录。每个工作流执行时,服务器为其创建一个临时工作目录。内部所有文件都能被所有节点看到。“输入”节点可以上传多个文件、文件夹,上传后落到该目录下。技能和智能体也可以将运行成果落到目录下。
  2. 全部变量。每个节点传给后一节点时,包括自己输出的变量和之前节点输出的所有变量。 保留扩展性,后续还可能传递git分支状态等内容。 一个节点接收到所有上下文输入后,与自己的所需的前条件对比,例如需要README.md文件和weather变量(均为必填),但上下文未提供,则按失败处理,根据配置选择终止或跳过。输出节点可以输出上下文中的变量,以及工作目录的打包下载。

技能和智能体的分类栏,让它在最矮的情况下也通到页面底部吧,否则右侧技能和智能体的数量很少的情况下,太矮了


让技能搜索时,也能搜索到翻译后的文字吧,否则纯英文技能较难搜索。


模型管理页面,色彩为灰黑色,与其他页面不一致,风格统一一下。


呃,没必要改成卡片网格布局,列表即可,颜色与其他页面保持一致就行。改回来吧。但按钮样式、弹窗等保持现在改过的即可。


工作流里,输入节点,还不支持上传目录,请完善。


关于模型选择:

  1. 模型处,除默认模型外,增加设置调用顺序,然后创建后端接口,外部业务通过该接口调用模型,后端自动路由至默认模型,若默认模型不可用,按照调用顺序依次调用,直至成功或全部失败;
  2. 系统内部使用,在翻译、关联分析等需要大模型调用时,优先使用application.yml中配置的模型,若不可用,按1.中的顺序,调用“模型管理”中配置好的模型。
  3. 检查工作流节点中的模型选择逻辑。我观察到,当某个工作流节点不选择模型时(即表示使用默认模型),那么我在模型管理中修改了默认模型的配置,节点使用的还是之前的配置。只有在下拉框中重新选择模型时,才会更新。我希望模型管理中修改后,工作流节点能及时感知到。

版本管理中,假如从v2回滚到v1,然后再次保存,没有生成v3版本,而是又生成了v2,请修复。


现在工作流中,连线还会判断输入和输出的匹配,但只计算了前后两个节点。根据我们的设计,现在连线传递的是整个上下文环境,所以:假如A节点->B节点->C节点,A有output1,B有output2,C需要output1和output2,那么B和C节点中间也应该是绿色的线。


如何看出技能的当前版本?没有地方显示。而且,当前版本不应该有切换按钮。


智能体的版本管理是否尚未实现,我也需要像技能一样管理智能体的版本。


有哪些数据保存在H2数据库里?能否使用json保存数据?两种方式有何利弊?


折中方案:

  • 配置类数据(ai_model、tags、categories、workflow 定义)→ JSON 文件
  • 运行日志(workflow_run、workflow_run_node)→ 保留 H2,或独立用 SQLite/日志文件

现在,模型管理里,模型的测试连接、编辑、删除等操作都没有了,调用顺序的数字后面有两个小点,请检查并修复。


几个操作按钮再紧凑一些,每个按钮用图标表示,鼠标指上去给提示,尽量不要换行;再加一个“复制”按钮,点击后生成“原名称(复制)”的新模型。


  1. 我记得智能体和智能操作使用Hermes作为执行引擎,现在好像没有生效,确认一下;
  2. 关联分析后,添加到工作流里的节点,外框作为虚框;它与原节点的连线,不要使用原有的连接点,可在外侧再套一个虚线矩形框,由它指向原节点,多个技能框到一起;如果该虚框在原连接点正上方,则从底边中点拉一条虚线,指向原节点顶边中点;如果该虚框在原连接点正下方,则从顶边中点拉一条虚线,指向原节点底边中点;
  3. 工作流新建后,点了“保存”,“运行”按钮应即刻亮起,而非退出重进才亮起;
  4. 工作流运行时,临时工作目录中,先将所有skill文件夹复制到工作目录/.hermes/skills目录下,再启动Hermes执行,以使技能生效。

我观察到,hermes-bridge中需要:

base_url = os.environ.get("HERMES_BRIDGE_BASE_URL", "")
api_key = os.environ.get("HERMES_BRIDGE_API_KEY", "")
model = os.environ.get("HERMES_BRIDGE_MODEL", "")

我希望将backend代码中application.yml中的取值赋给hermes-bridge的执行环境。


我的hermes工作了,但我的临时目录里只有一个文件,为什么我让它基于本目录内容生成README.md,且不允许读取git历史,它能把上级目录的代码也写入README.md?请帮我检查工作目录路径是否正确。工作目录为@backend\data\workflow-runs\2\4f05fc53


hermes提示因工具调用次数已达上限,未能通过 write_file 工具直接写入文件。限制从何而来?


请排查,为什么老报错:


Hermes执行时,思考过程流式输出,这导致工作流中节点运行结果出现很多条,每条一个token。我希望它的思考过程也在前端流式输出。


现在执行报错:未知节点类型:UserInput


能否彻底规范化,而非修修补补???


再体系化考虑一下变量的传递和展示,举个例子,现在llm的输出不会赋值给定义的result变量,而是node开头的一个变量。是否通过额外的输出指令让它按定义的变量输出?其他节点也有同样的问题


都可以按你的推荐来。同时考虑每个节点的输出如何符合outputs规范。然后将整个方案保存到docs下,md格式。待我确认后开始实现。


修改:本期需要做llm按outputs结构化输出。


技能管理、智能体管理、模型管理中,都有“新增”和“刷新”按钮,但三个页面中这两个按钮风格完全不同,导致割裂。请统一风格和样式。 运行记录页面,现在已经按照智能体将所有记录列出了,我希望增加一个功能,点击某个智能体,将其运行记录折叠起来。这样便于观看。当然,初进页面还是默认全部展开。 具体到运行结果处,当前每个变量左侧为变量名,右侧为值,但左侧变量名很长时,会压缩右侧值文本框的宽度,建议改成两行。这在运行记录页面和工作流编排页面都统一修改。 模型管理页面,模型表格颜色修改一下,与其他页面颜色(深蓝)保持统一。


现在表头变了,表格内容背景还是灰黑色。表头其实太亮了,再调回去一些吧,表格内容背景请修改


表格删除时,提示还是Cancel和Confirm,修改为中文,提示框也修改为蓝色调吧;另外,技能管理处,删除提示框中文字是绿色和黄色,不一致。 你应该把模型删除、智能体删除、技能删除的提示框都做成中央的弹出框,蓝色调,风格一致。


另外,hermes-agent执行时,工作目录虽然设置为backend/data/workflw-runs//,但是实测它还是能读到上层目录,我让它在工作目录生成README.md,它生成了整个backend的README.md。请严格控制hermes的目录权限!!


我想增加智能体模板功能,最终的效果是:点击创建智能体时,弹出几种模式供选择,如工作流编辑模式、自然语言编辑模式、空白模式等,每种模式一个正方形按钮,按钮上有模式名称和节点缩略图(与智能体页面缩略图保持一致)。对应的,我需要一个页面来创建和编辑这些模板。


目前节点缩略图(包括工作流模板、智能体列表中的)只显示几个节点的首个文字。我需要它在此基础上,保留节点之间的位置关系和连线,这样缩略图就更形象了。为了美观,节点中可以不保留文字,只用对应颜色表示也可以。


智能体模板里:

  1. 节点无法删除和拖动;
  2. 连线有问题;
  3. 输出节点样式又出现了问题,节点下方叠加了一个白色方框。
  4. 没有节点属性编辑区域。 请把智能体编排的整个编辑区域复刻到模板编辑里。

现在,我想增加知识库功能,包括文档数据管理、结构化数据管理、知识图谱管理。文档数据提供文档上传功能,上传后先分类管理,然后直接向量化入库;结构化数据提供各类数据源管理功能,可以查看数据源内表和数据(可参考@beekeeper-studio项目的数据源管理,甚至直接复刻即可);知识图谱提供图谱数据源管理功能,可以查看图谱。


Milvus、Neo4J实例尚未开通,智谱embedding模型还未开通,先做功能,等实例开通后再验证。另外,将现在的设计保存到docs下,作为指导


当前存在以下问题:

  1. 请实现技能和智能体的分类选择功能;
  2. 工作流中,点击“自动关联”后,生成的虚线框有以下问题:①高度不够高,无法包裹住识别出的技能;②左右位置不在被识别节点的中间,即没有水平居中对齐;③无法拖动,我希望它可以和技能一起组合起来被拖动;
  3. hermes-agent在某次执行时,它的思考过程如下:“先澄清了一个歧义:系统提示声明的当前目录是 ...\e2e0ba03,但 os.getcwd() 返回的是 backend 根目录。” 这是不是说明,java在调用hermes-agent执行任务时,还是错误地给了backend作为根目录?之前的修复未生效?请检查;
  4. 将“文档数据”“结构化数据”“知识图谱”菜单降级,并合并到一级菜单“知识库管理”中;“知识库管理”放到“智能体管理”之上;
  5. “技能管理”和“智能体编排”页面,对应数据项过多时,滚动不要带着左侧的分类树一起滚动;分类树中若分类过多,设置单独的滚动条,在分类区域上下滚动;
  6. 点击“创建智能体”后,弹出模式选择框,右上角包含两个“X”按钮;
  7. “技能管理”和“智能体编排”页面,左侧分类树里的数量不对,会随着分类的点击变化,很奇怪,请修复。

智能体编排中,智能体的分类设置不生效,请检查。


现在,我在公网IP为82.156.83.248的服务器上部署了Neo4j和Milvus,Neo4j端口号为7473,7474,7687;Milvus端口号为19530,9091。

Neo4j: 用户名: neo4j 密码: IDaXlPq3p3ES4h9BtaFh7Oc 端口: 7474 (HTTP) / 7687 (Bolt) / 7473 (HTTPS) 连接: bolt://82.156.83.248:7687

Milvus: 用户名: 无 (authorizationEnabled: false, 认证关闭) 密码: 无 端口: 19530 (gRPC) / 9091 (健康检查) 连接: 82.156.83.248:19530 (直接连, 不需要用户名密码)

继续我们的知识库开发吧。


新增数据源,点击测试连接,提示密码未提供。另外,请支持达梦数据库。


测试连接:jdbc:mysql://82.156.82.248:3306?useSSL=false&serverTimezone=UTC,提示:Failed to initialize pool: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.


确实IP写错了,但现在报错:Failed to initialize pool: Public Key Retrieval is not allowed


那在创建mysql默认数据源时,示例URL把这个加上。


解析pdf文件时报错:metadata cannot have null values


hermes报错乱码,请帮我看一下什么意思。另外,解决该乱码问题。


两个问题:

  1. hermes思考过程中说,它所在终端的pwd命令输出还是backend目录,而非data/{workflow-id}/{run-id}目录。请再次检查Java给hermes传递的变量和环境。
  2. 运行记录中,建议将智能体和智能操作的思考过程也存储起来。

目前,添加模型并设置成默认后,工作流中节点运行还使用的是原来的默认模型;而且模型那里无法选择,选择了也不会回显到下拉框里。


  1. 工作流节点属性处,选择模型后,仍未回显;
  2. 不管使用默认模型,还是选择某个其它模型,针对某个节点创建hermes进程时,都需要将模型对应的URL、API Key等作为环境变量传入hermes进程。目前应该是直接使用application.yml中的模型,请完善。

  1. 工作流中的某节点切换模型后,模型名称没必要将节点宽度撑大,放不下的可在最后用...代替;
  2. 不管如何设置,Hermes-bridge启动后,调用的模型还是application.yml中的模型。我需要根据节点配置中选择的模型进行调用。仔细检查逻辑。

执行报错:执行失败: 节点 node-2-1781355966894 执行失败: Hermes 智能操作调用失败: Hermes Bridge 返回 HTTP 401: {"detail":"invalid or missing X-Bridge-Token"}


运行记录菜单页中还是没有思考过程记录,只有工作流页面有。我希望运行记录菜单页中也将思考过程显示出来。


自动关联功能,识别成功后,我希望相关技能节点位于虚线框中,现在它们会出现在画布左上方,与虚线框不在一起。同时它们和虚线框要成为一个整体去拖动,不能分开各拖各的。请修复。


我希望在某个恰当的目录下,定义.agentignore文件,仿照.gitignore的写法。其作用是,Hermes相关工作流节点在工作时,应该忽略的目录中文件。例如.hermes目录。被忽略的文件,不出现在_workingDirFiles中,下载工作目录时也不被包含。


思考过程(包括工作流和运行记录中的)支持折叠功能。工作流中,折叠后,仍然接收流式响应,只是不显示而已,展开后还可以继续输出。 另外,现在工作流中,思考过程流式输出,会使Tab页无法切换回“节点属性”。请修复。


对比application.yml和application.yml.example,将更新写入.example文件中。注意,敏感信息不要写入。


自动关联功能,识别成功后,相关技能还是出现在画布左上方,与虚线框不在一起。我需要该节点位于虚线框中,同时技能和虚线框要组合成为一个整体去拖动,不能分开各拖各的。请修复。


我在本地使用pip安装了pymilvus,支持使用本地db文件存储向量数据。参考“https://github.com/milvus-io/milvus”,修改为连接本地的milvus吧


我已经使用pip安装了pymilvus,但是执行: python -m milvus.server --data ./milvus.db 报错: C:\Python311\python.exe: Error while finding module specification for 'milvus.server' (ModuleNotFoundError: No module named 'milvus') 请帮我解决。注意,只解决问题即可,不要帮我启动服务,我自己来启动。


我补充安装了milvus-lite,但是启动时还是报同样的错误。


现在,删除“文档数据”中的文档时,报“服务器内部错误”。


2026-06-23 10:14:54.624 [task-1] INFO c.a.m.service.impl.DocumentPipelineImpl - [流水线启动] doc=2 (火箭军某旅对接实战深训同一课目.docx) 2026-06-23 10:14:56.026 [task-1] INFO c.a.m.service.impl.DocumentPipelineImpl - [解析完成] doc=2 字符数=1223 2026-06-23 10:14:56.054 [task-1] INFO c.a.m.service.impl.DocumentPipelineImpl - [分块完成] doc=2 chunkCount=2 2026-06-23 10:14:56.060 [task-1] ERROR c.a.m.service.impl.DocumentPipelineImpl - [流水线失败] doc=2 err=metadata cannot have null values java.lang.IllegalArgumentException: metadata cannot have null values


重新向量化报错: 2026-06-23 10:44:34.253 [http-nio-2438-exec-2] ERROR c.a.m.c.exception.GlobalExceptionHandler - 系统异常 org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call


  1. 文章分块过粗,一个新闻稿只分了2块;
  2. 增加分块查看功能;
  3. 写入报错: 2026-06-23 11:39:10.096 [task-1] ERROR c.a.m.s.impl.VectorStoreServiceImpl - Milvus 写入失败: HTTP 404 -

    Whitelabel Error Page

    This application has no explicit mapping for /error, so you are seeing this as a fallback.

    Tue Jun 23 11:39:09 CST 2026
    There was an unexpected error (type=Not Found, status=404).
    2026-06-23 11:39:10.097 [task-1] ERROR c.a.m.service.impl.DocumentPipelineImpl - [流水线失败] doc=2 err=Milvus 写入失败:HTTP 404 -

    Whitelabel Error Page

    This application has no explicit mapping for /error, so you are seeing this as a fallback.

    Tue Jun 23 11:39:09 CST 2026
    There was an unexpected error (type=Not Found, status=404).
    com.agent.management.common.exception.BusinessException: Milvus 写入失败:HTTP 404 -

    Whitelabel Error Page

    This application has no explicit mapping for /error, so you are seeing this as a fallback.

    Tue Jun 23 11:39:09 CST 2026
    There was an unexpected error (type=Not Found, status=404).
  4. 检索测试报错: 2026-06-23 11:41:57.274 [http-nio-2438-exec-2] INFO c.a.m.config.AiRequestLoggingConfig - [AI-HTTP] 响应 Body (275 chars):

    Whitelabel Error Page

    This application has no explicit mapping for /error, so you are seeing this as a fallback.

    Tue Jun 23 11:41:57 CST 2026
    There was an unexpected error (type=Not Found, status=404).
    2026-06-23 11:41:57.274 [http-nio-2438-exec-2] INFO c.a.m.config.AiRequestLoggingConfig - [AI-HTTP] ========== 请求结束 ========== 2026-06-23 11:41:57.275 [http-nio-2438-exec-2] WARN o.s.a.r.a.SpringAiRetryAutoConfiguration - Retry error. Retry count: 1, Exception: HTTP 404 -

    Whitelabel Error Page

    This application has no explicit mapping for /error, so you are seeing this as a fallback.

    Tue Jun 23 11:41:57 CST 2026
    There was an unexpected error (type=Not Found, status=404).
    org.springframework.ai.retry.NonTransientAiException: HTTP 404 -

    Whitelabel Error Page

    This application has no explicit mapping for /error, so you are seeing this as a fallback.

    Tue Jun 23 11:41:57 CST 2026
    There was an unexpected error (type=Not Found, status=404).

目前我上传了一则新闻,分块还是2块,且2块均显示“未向量化”。向量化按钮在哪里?是否是因为失败了才显示“未向量化”?


  1. 根据语义进行分片,而非chunk-size;
  2. 针对每一片,增加一个"向量化"主按钮让操作更明显;同时在文档处增加向量化按钮,给所有分片向量化;
  3. 最后看日志,分析为向量化原因

向量化报错: ERROR c.a.m.c.exception.GlobalExceptionHandler - 系统异常 org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Method parameter 'chunkId': Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; For input string: "undefined"

    at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.convertIfNecessary(AbstractNamedValueMethodArgumentResolver.java:301)
    at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:136)
    at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)
    ...

Caused by: java.lang.NumberFormatException: For input string: "undefined"

    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
    at java.base/java.lang.Long.parseLong(Long.java:711)
    at java.base/java.lang.Long.valueOf(Long.java:1163)
    at org.springframework.util.NumberUtils.parseNumber(NumberUtils.java:206)

给我把插入Milvus时的详细日志打出来,包括调用Milvus的协议、端口号等


分支1:@SuperMew目录是一个与RAG、向量化、知识库等相关的参考项目。请遍历该项目,告诉我这个项目主要干了哪些工作,在@docs下生成一个super-mew-readme.md,重点聚焦于其技术栈、Embedding的具体方法以及必需依赖等方面。


参考@SuperMew项目自身文档@SuperMew/README.md及我对其的补充文档@docs/super-mew-readme.md,实现本地Embedding(不再使用智谱Embedding),需要实现稠密向量 + 稀疏向量、三级分块、Leaf-only 向量化存储,尽量复用(复制)SuperMew项目中的代码。暂不用实现检索相关功能。有需要我决策的内容,给我提出。


使用slf4j,实现日志按天打印功能,并实现30天后自动清理


查看@backend/logs/agent-management.log中的最后一次启动日志,解决子进程端口占用不断重启的问题。


增加分块内容查看功能。


请告诉我分块的具体算法。为什么现在总是在句子中间分块?以及为什么分块完成后,每个L3级子块都没有了,。;等中文标点符号?


修改。我的要求:

  1. 所有L1加起来,文字内容与原文一致,不能少标点;
  2. 例如某L1划分为两个L2,那么两个L2加起来,文字内容与L1一致,不能少标点;
  3. 划分位置应在标点处;
  4. 尽量根据语义进行划分,例如一段话中,根据标点分为ABCD4个子句,AB说的一件事儿,CD说的一件事儿,那么不要把BC划分到一起。

我表达的有误,我允许overlap存在,但需要划分在合理的地方(标点处);假如某L1划分为两个L2,那么两个L2加起来,去掉overlap后,文字内容与L1一致,不能少标点。


请查看后端日志,又出现了数据库连接未断开的情况。设计机制,在后端进程被杀死的时候,清理数据库连接。


目前的语义分块原理是什么?请详细解释。


所以现在并未使用bert等框架进行句子的语义理解和分块是吗?


将当前的语义分块、向量化等实现方式、完成内容、相关说明等写入docs目录,你自己命名。


就算使用语义进行分块,我也允许L2和L3级别出现重叠,例如,一个承上启下的句子,就应该既划分到前一个块,又划分到后一个块中。更新算法和md文件。


又出现了,杀Spring boot进程后,Embedding Bridge进程未杀死。请先杀掉子进程,然后检查原因。