ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ekko Agent 配置页面:Hermes Studio 中内置 Agent 的内存、技能与 MCP 配置面详解

Ekko Agent 配置页面:Hermes Studio 中内置 Agent 的内存、技能与 MCP 配置面详解 AI 应用人工智能AI Agent本地部署前端后端工作流自动化【免费下载链接】ekko-studioEkko Studio is a local-first AI workspace for multi-agent chat, coding, and visual workflows, available on desktop and the web.项目地址https://gitcode.com/gh_mirrors/he/ekko-studio点击查看免费下载本篇技术指南聚焦 Hermes StudioEkko Studio为内置 Ekko Agent 新增的独立配置面它复用了与 Hermes 配置一致的壳层模式独立路由、专属可折叠/移动端侧边栏、Profile 感知数据与明确的返回路径首个发布版本覆盖结构化长期记忆Memory、Profile 级技能Skills与 Profile 级 MCP 服务器配置MCP三项能力。读完本文你将掌握/ekko/*三条路由的前端接线方式、/api/ekko/*全部 HTTP 接口的请求语义与参数约束以及这些接口如何通过服务层适配ekko-agent包底层的记忆仓库、技能管理器与配置存储。设计目标让内置 Agent 拥有自己的配置面按照 ekko-agent-configuration-pages.md 的规划Ekko Agent 配置面遵循与 Hermes 配置完全一致的壳层模式独立路由不走 Studio 通用侧边栏也不走 Hermes 配置侧边栏专属侧边栏桌面端支持折叠态移动端支持背板backdrop导航与共享的移动端打开事件Profile 感知每个页面使用共享 API 客户端已挂载的当前 Profile数据天然按 Profile 隔离清晰回退路径侧边栏底部提供返回 Agent Manager 的动作。配置面承载三个 Ekko 自有的能力域结构化长期记忆、Profile 本地技能、Profile 本地 MCP 服务器配置。这一设计在客户端代码中有明确落点App.vue 根据路由元信息ekkoConfig决定挂载EkkoConfigSidebar而非 Studio 侧边栏或 Hermes 配置侧边栏路由注册见 router/index.ts 中meta: { ekkoConfig: true, requiresSuperAdmin: true }的四条记录含/ekko/settings。导航与壳层路由、侧边栏与返回路径路由清单/ekko/memory - ekko.memory /ekko/skills - ekko.skills /ekko/mcp - ekko.mcp /ekko/settings - ekko.settings # 额外的设置页同样使用 ekkoConfig 壳层在 router/index.ts 中/ekko/memory、/ekko/skills、/ekko/mcp、/ekko/settings均通过() import(/views/ekko/...View.vue)懒加载对应视图并统一标记ekkoConfig: true与requiresSuperAdmin: true说明整个配置面仅对超级管理员可见。侧边栏实现EkkoConfigSidebar.vue 与 Hermes 配置侧边栏共享同一套布局样式表agent-config-sidebar.layout(ekko)对应 Hermes 侧用hermes因此天然继承桌面端折叠状态collapsed类与appStore.sidebarCollapsed联动移动端背板ekko-config-backdrop点击关闭共享的移动端打开事件hermes:open-page-sidebar自定义背景与桌面拖拽区域。侧边栏包含 Memory、Skills、MCP以及 Settings四个导航项底部提供返回 Agent Managerhermes.agentManager的动作但没有 Hermes 的 memory/skills/mcp 导航项——从 ekko-config-navigation.test.ts 的断言可以看到测试明确要求侧边栏包含name: hermes.agentManager且不包含hermes.memory、hermes.skills、hermes.mcp以证明 Ekko 侧边栏是独立于 Hermes 的。入口方面/studio/agents中的 Ekko 卡片点击后router.push({ name: ekko.settings })或按文档所述打开 Ekko 配置面进入该壳层。服务端归属与 API 分层所有新增 HTTP 操作归属packages/server/src/modules/ekko统一使用/api/ekko/*前缀。分层遵循“路由薄、控制器校验、服务层适配”的原则路由层routes/memory.ts、routes/skills.ts、routes/mcp.ts只声明 HTTP 方法与路径并统一挂requireSuperAdmin鉴权控制器层controllers/memory.ts、controllers/mcp.ts 等解析请求体、做入参校验、把 Profile 从ctx.state.profile取出服务层services/memory.ts、services/skills.ts、services/mcp.ts适配ekko-agent包公开的管理器与配置 API。Profile 解析统一为String(ctx.state?.profile?.name || default).trim() || default未显式指定时回退到default。MemoryProfile 隔离 修订号保护GET /api/ekko/memory PATCH /api/ekko/memory/:id DELETE /api/ekko/memory/:id列表查询GET /api/ekko/memory支持参数说明约束query文本搜索透传为memory.list的queryTextstatus状态过滤必须属于MEMORY_NODE_STATUSES否则 400limit分页大小服务层收敛到[1, 500]默认 100offset分页偏移最小 0更新PATCH /api/ekko/memory/:idexpectedRevision必须是正整数Number.isInteger 1否则 400至少提供titlestring、contentstring、tagsstring 数组之一服务层先memory.get(id, { profileId })读当前节点不存在抛Memory not found.→ 404再通过memory.update携带expectedRevision创建新的规范修订写入reason: Updated from Ekko memory settings.、actor: studio-user、explicitUserIntent: true更新失败!result.accepted会抛出result.reason返回 400。删除DELETE /api/ekko/memory/:id默认软删除mode: soft同样要求expectedRevision与当前修订匹配。页面从不直接编辑 Ekko 的记忆数据库全部经由MemoryService的修订保护链路完成。对应的服务层实现见 services/memory.ts其ListEkkoMemoryInput/UpdateEkkoMemoryInput接口明确标注了这些约束。Skills适配 EkkoSkillManager 的发现与写保护GET /api/ekko/skills GET /api/ekko/skills/:name POST /api/ekko/skills PUT /api/ekko/skills/:name DELETE /api/ekko/skills/:name当前路由层还包含external-directories、import、files、file、toggle等扩展端点见 routes/skills.ts本文聚焦首个发布版本的核心五条。服务层围绕EkkoSkillManager适配完整保留其既有规则发现discoverlistEkkoSkills会先调用resolved.directories.profileSkillsDirectory(profile)触发一次显式重扫边界再skill.discover(query, { profile })把新发布的 built-in 技能同步进来读后写read-before-write更新前先getEkkoSkill读取详情托管技能保护built-in 技能不可编辑、不可删除Built-in skill cannot be edited/deleted路径包含规则仅source local的技能可编辑/删除external 技能被拒绝Only local skills can be edited...。create接受{ name, content, category? }setEkkoSkillEnabled通过config.setSkillEnabled(name, enabled, profile)落盘启用状态。页面管理的对象是每个 Profile 的SKILL.md技能支持文件编辑与导入属于延后工作。这些规则在 services/skills.ts 中逐条可查。MCP无 Studio 侧车直接读写 Ekko 规范配置GET /api/ekko/mcp/servers POST /api/ekko/mcp/servers PATCH /api/ekko/mcp/servers/:name DELETE /api/ekko/mcp/servers/:name POST /api/ekko/mcp/servers/:name/test存储位置自定义 stdio 与 Streamable HTTP 服务器定义存放在 Ekko 的规范配置.ekko/config/config.json的mcp.profiles.profile.servers模块下不存在 Studio 自有的 MCP 侧车进程。Ekko 会随其余配置一起校验该模块并在创建新运行时加载所选 Profile 的服务器列表resolveEkkoMcpServers在mcp.enabled时把listMcpServers(profile)与运行时传入的provided合并。托管注入Studio 启动时与 Hermes 相同的四个托管定义会注入到每个 Ekko Profileservices/mcp.ts 中MANAGED_SERVERSekko-studio-api (toolset: api) ekko-studio-browser (toolset: browser) ekko-studio-devices (toolset: devices) ekko-studio-use (toolset: use)注入逻辑要点由shouldInjectManagedMcpServers()门控HERMES_WEB_UI_DISABLE_MCP_AUTOINJECT开启时跳过AppHome 位于临时目录tmpdir()//tmp//private/tmp时默认跳过除非显式设置HERMES_WEB_UI_ALLOW_TRANSIENT_MCP_AUTOINJECT与 Hermes MCP 页一致这些注入项可被编辑、删除、启用、禁用已存在的enabled: false会在重新注入时保留if (existing?.enabled false) desired.enabled false旧名hermes-studio-*、hermes-web-ui-mcp等的托管条目会被自动迁移/清理见LEGACY_MANAGED_SERVER_NAMES与LEGACY_MANAGED_COMMANDS若某 Profile 存在同名但非托管的自定义服务器则跳过该 Profile 的注入skipped reason。校验规则normalizeEkkoMcpServerConfig服务器名须匹配/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$/字母数字开头、含点/下划线/连字符、最长 64 字符type仅允许stdio或streamable_httphttp/streamable-http/streamablehttp会被归一化不显式声明时有url无command推断为streamable_http否则推断为stdiostdio 必须提供commandargs必须是字符串数组env必须是字符串值对象streamable_http 必须提供url且协议只能是http:/https:headers必须是字符串值对象enabled必须是布尔值缺省视为 true。测试端点POST /api/ekko/mcp/servers/:name/test通过createMcpToolProvider()调用listTools({ mcpServers: { [name]: server.config }, timeoutMs: 5_000 })探测工具禁用中的服务器会被拒绝Enable the MCP server before testing it.成功返回{ ok: true, tools: [{ name, description }] }。API 与页面读写的是同一个配置模块因此所有变更会直接影响后续运行。客户端行为复用 Hermes 组件仅替换数据回调每个页面使用共享 API 客户端已附加的活跃 Profile加载/空/错误/确认/变更等状态均保持在页面局部Memory可搜索的卡片列表展示 status/type 元数据配编辑弹窗Skills直接复用 Hermes 的SkillList、SkillDetail组件与共享分栏split-view布局仅数据回调替换为 Ekko APIMCP直接复用 Hermes 的McpServerCard与共享管理器布局概要卡片、搜索工具栏、响应式服务器网格、工具标签、JSON/YAML 编辑器Ekko 特有逻辑仅限 API 适配器、transport 感知校验与后台工具探测。此外所有新增可见字符串均已同步到各 locale 文件如 en.ts、zh.ts 等可在packages/client/src/i18n/locales/下核对。验证体系与验收路径依据 ekko-configuration-services.test.ts服务层测试覆盖Profile 隔离不同 Profile 间 memory/skills/MCP 数据互不串扰Memory 修订安全expectedRevision校验、更新创建新规范修订、软删除技能管理器适配discover 重扫、built-in/external 写保护、enable 落盘MCP 持久化与校验名称正则、stdio/streamable_http 必填项、URL 协议约束、enabled:false保留与重注入运行时合并resolveEkkoMcpServers对配置与运行时注入的合并行为。客户端测试ekko-config-navigation.test.ts、ekko-configuration-api.test.ts覆盖路由、壳层/侧边栏接线、Agent Manager 入口与三个页面的请求流。整体验收路径为npm run harness:check npm run build在配置了 Playwright 浏览器时还会进行浏览器可见的验证。已延后的工作首个版本明确将以下能力列入延后清单作为后续迭代方向Memory 审计历史与硬删除 UI技能支持文件、归档/导入与外部目录旧版 HTTPSSE MCP 传输回退每工具 include/exclude 控制与长连接遥测。小结Ekko Agent 配置面是 Hermes Studio 中“壳层复用 数据隔离”的典型实现前端通过路由元信息切换专属侧边栏并复用 Hermes 的组件库服务端以/api/ekko/*薄路由 控制器校验 服务层适配的三层结构把记忆修订保护、技能写保护与 MCP 配置持久化统一收敛到ekko-agent包的既有管理器中。对开发者而言理解这组路由、接口与校验规则即可安全地扩展或集成 Ekko 的内存、技能与 MCP 能力到其他前端面。赞分享AI 应用人工智能AI Agent本地部署前端后端工作流自动化【免费下载链接】ekko-studioEkko Studio is a local-first AI workspace for multi-agent chat, coding, and visual workflows, available on desktop and the web.项目地址https://gitcode.com/gh_mirrors/he/ekko-studio点击查看免费下载相关推荐Ekko StudioHermes Studio本地优先多 Agent 工作区完全指南架构、部署与配置Ekko StudioHermes Studio本地优先多 Agent 工作区完全指南架构、部署与配置 Ekko Studio 是一个本地优先localAI 应用人工智能AI Agent本地部署前端后端工作流自动化Hermes Studio 桌面端 Agent 内置浏览器基于 Electron WebContentsView 与 CDP 的多 Agent 可操控浏览器架构Hermes Studio 桌面端 Agent 内置浏览器基于 Electron WebContentsView 与 CDP 的多 Agent 可操控浏览器架AI 应用人工智能AI Agent本地部署前端后端工作流自动化Hermes Onehermes-desktop完全指南Hermes Agent 的桌面安装、配置与聊天伴侣Hermes Onehermes desktop完全指南Hermes Agent 的桌面安装、配置与聊天伴侣 本文以 README.md https://AI 应用交互助手桌面应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表