
Flower Hub 发布指南在 Flower 中探索、运行与发布 AgentApp 的完整实战流程【免费下载链接】flowerFlower: A Friendly Federated AI Framework项目地址: https://gitcode.com/GitHub_Trending/flo/flowerFlower Hub 是 Flower 生态中面向 Agent 应用AgentApp的发现与分发中心你既可以浏览、审阅并运行其他开发者发布的 AgentApp也可以把自己开发的 AgentApp 以publisher/agent-name形式的 app spec 共享给整个 Flower 社区。本文以 use-flower-hub.md 为主线结合仓库内发布命令的真实实现publish.py与官方示例项目hub/apps/agent带你走完「浏览目录 → 添加到联邦 → 终端运行 → 本地验证 → 登录 → 审查文件 → 发布 → 发布新版本 → 故障排查」的完整生命周期。版本说明本文命令中出现|stable_flwr_version|的位置是文档系统自动替换的版本占位符实际执行时应替换为当前稳定版本。本仓库内置示例 hub/apps/agent/pyproject.toml 中使用的版本约束为flwr1.35.0,2.0与flwr-version-target 1.35.0可作参考。Flower Hub 与 AgentApp 的 app specFlower Hub 解决两类核心需求发现浏览社区已发布的 AgentApp审阅其描述、源码、可用版本后再决定是否运行共享将你自己开发的 AgentApp 发布出去供其他 Flower 用户在 SuperGrid 上直接运行。每个已发布的应用都有一个全局唯一的应用标识app spec格式为publisher/agent-name。例如flwrlabs/agent就是 Flower Labs 官方发布的模板 AgentApp参见 write-your-first-agentapp.md 中flwr new flwrlabs/agent的用法。app spec 由「发布者账号用户名 项目名」组成因此发布前确定一个最终项目名非常重要——它会永久成为 app spec 的一部分。探索并使用已发布的 AgentApp在应用目录中浏览 AgentApp打开 Flower Hub 的应用目录在类型筛选中选择Agent即可浏览所有已上架的 AgentApp。进入某个 AgentApp 详情页后可以审阅应用描述与用途说明公开的源码已发布的版本列表该应用的 app spec。确认应用符合预期后再决定是否运行这是使用第三方 Agent 前的标准审阅流程。将 AgentApp 添加到联邦如果你希望某个 AgentApp 能在自己的联邦federation里被反复使用登录 Flower Hub打开目标 AgentApp 详情页点击Add app to federation加号按钮在弹出的列表中选择一个你拥有权限的活跃联邦点击Confirm确认。添加完成后从 Flower Agent 侧边栏打开该联邦点击New chat新建会话该 AgentApp 就会出现在输入框上方的 agent 选择器中可以直接开始对话使用。从终端运行已发布的 AgentApp无需在浏览器中操作直接使用 app spec 即可在终端发起一次运行$ uvx --from flwrstable_flwr_version flwr run publisher/agent-name supergrid \ --run-config agent.inputWhat can you help me with? \ --stream要点解析uvx --from flwrstable_flwr_version表示用独立环境拉取指定版本的 Flower CLI适合不带本地项目上下文的纯命令flwr run publisher/agent-name supergrid用 app spec 而非本地目录提交运行SuperGrid 会根据 app spec 解析出可用版本可用性可能取决于目标联邦--run-config agent.input...为本次运行覆盖 AgentApp 的配置项该 key 必须已存在于项目的[tool.flwr.app.config]中见 run-on-supergrid.md--stream让命令实时流式输出运行日志。关于联邦选择、日志查看与停止运行的完整操作参见 Run an AgentApp on SuperGrid其中包含flwr federation list supergrid列出可见联邦、flwr list --run-id run-id supergrid查询运行状态、flwr log run-id supergrid --show查看日志、flwr stop run-id supergrid停止运行等配套命令。发布 AgentApp前置条件发布前你需要一个可正常构建运行的 AgentApp 项目。如果还没有请先完成 Write your first AgentApp 教程——它通过flwr new flwrlabs/agent从 Flower Hub 拉取模板项目并引导你编写第一个会调用模型接口的 AgentApp。发布流程本身不负责编写代码只负责把你的项目安全、合规地公开到 Flower Hub。准备项目pyproject.toml 中的发布元数据检查公开元数据发布行为以pyproject.toml为准先逐项核对以下公开元数据[project] name hello-agent version 0.1.0 description Answer questions with a Flower AgentApp license { file LICENSE } dependencies [flwrstable_flwr_version,2.0, openai2.16.0,3.0.0] [tool.flwr.app] publisher your-username display-name Hello Agent fab-format-version 1 flwr-version-target stable_flwr_version [tool.flwr.app.components] agentapp hello_agent.agent_app:app各字段的职责与约束如下字段作用与约束[project].name项目名发布后成为 app spec 的一部分publisher/name发布前必须定稿[project].version版本号升级时修改此值并重新发布[project].description应用描述必须是非空字符串。发布命令会强制校验超过 200 字符会弹出确认警告[project].license声明许可证FAB 格式 v1 要求提供真实的许可证文件[project].dependencies依赖列表必须包含flwr且带包含下界的版本约束如stable,2.0[tool.flwr.app].publisher发布者用户名必须与你登录 Flower 的账号用户名完全一致[tool.flwr.app].display-name在 Flower Hub 上展示的友好名称[tool.flwr.app].fab-format-versionFAB 包格式版本目前为1[tool.flwr.app].flwr-version-target目标 Flower 版本必须满足上述依赖约束[tool.flwr.app.components].agentapp组件入口格式为模块:属性如hello_agent.agent_app:app关键约束详解1. LICENSE 文件与 FAB 格式 v1FAB 格式 v1 强制要求两个条件项目根目录必须存在顶层LICENSE文件包含许可证文本并在[project].license中声明flwr依赖必须带包含下界inclusive lower bound即形如flwrX,2.0。从 publish.py 的实现可以看到发布命令会专门解析[project].license.file并校验只允许LICENSE或LICENSE.md文件名且该文件必须真实存在若被.gitignore或发布排除规则过滤掉也会报错。2. publisher 与账号绑定publisher必须与登录账号的用户名一致这是 Flower Hub 识别「谁发布了什么」的凭据。若不一致发布会因 publisher mismatch 失败。3. agentapp 组件即应用类型声明Flower 通过[tool.flwr.app.components].agentapp的存在与否判断项目类型声明了agentapp组件即被识别为 AgentApp不需要再添加任何 tag 或额外的应用类型设置。这也意味着同一 FAB 中不能同时声明agentapp与serverapp/clientapp参见 agentapp-runtime.md 中的说明。本仓库官方示例 hub/apps/agent/pyproject.toml 还展示了另一个实用字段[tool.flwr.app] publisher flwrlabs fab-format-version 1 flwr-version-target 1.35.0 fab-include [agent/**/*.py, LICENSE]fab-include可以显式声明随 FAB 打包的源码与文件范围作为flwr build时的文件包含规则。发布前的检查清单在真正执行发布之前逐项确认项目名已定稿它将永久成为 app spec 的一部分写一段简短准确的description说明这个 AgentApp 做什么提供带 setup、配置与使用说明的README.md移除凭据、本地数据、私有连接器内容等敏感文件更新.gitignore确保仅本地使用的文件被排除。本地验证uv sync 与 flwr build在提交到 Flower Hub 之前先在本地完整验证项目$ uv sync $ uv run flwr builduv sync创建.venv环境并生成 lock 文件解析flwr与openai等依赖uv run flwr build校验项目配置、依赖与组件引用成功后会在终端报告生成的.fab文件路径。构建阶段能暴露绝大多数问题配置错误、依赖不满足、agentapp组件引用的模块或对象不存在等都应在此阶段修复。一个需要明确的事实发布命令上传的是项目源码而不是本地构建出的.fab包。Flower Hub 会在服务端基于你上传的源码重新构建 FAB因此本地构建只是为了「提前暴露问题」不能替代服务端的构建校验。登录 SuperGrid发布前必须完成身份认证且认证账号必须与pyproject.toml中的publisher一致$ uv run flwr login supergrid命令会在浏览器中打开认证流程完成登录后凭证由 CLI 保存。从 publish.py 的实现看发布命令启动时会加载 OIDC 认证插件并检查 access token未登录会直接抛出Please log in before publishing app.错误。审查文件然后发布发布过滤器的工作方式发布命令会对整个项目做一次文件收集与过滤机制是收集项目内所有文件collect_files应用.gitignore规则与发布 include/exclude 规则进行过滤filter_paths_for_publish相关常量APP_PUBLISH_INCLUDE_PATTERNS/APP_PUBLISH_EXCLUDE_PATTERNS定义于 utils.py对每个被跳过的文件打印Skip: path黄色警告。关键点过滤器会扫描整个项目中受支持的文件类型即使这些文件没有被 Git 跟踪。也就是说一个存在于磁盘但未git add的敏感文件同样可能被收集并上传。因此在发布前请仔细审查项目目录发现任何不应公开的敏感文件立即删除或将其加入项目的.gitignore然后再次审查整个项目。不要用Attach:输出作为审查步骤发布命令在组装 multipart 上传请求时会为每个待上传文件打印一行Attach: path (mime, bytes 字节)见 publish.py。千万不要把这份输出当作「上传前确认清单」——命令打印完文件名后会立即上传中间没有任何确认环节。审查必须在执行发布命令之前完成。执行发布审查通过后在项目根目录执行$ uv run flwr app publish .flwr app publish接受一个可选参数指定项目目录默认是当前目录见 publish.py。发布流程依次执行加载并校验pyproject.toml应用名、description、license 声明收集并过滤文件应用.gitignore与 include/exclude 规则校验文件集合的合规性文件数量上限、单文件大小上限、总大小上限、UTF-8 编码并打印✅ Validation passed与文件统计以 multipart 方式 POST 到{FLWR_SUPERGRID_API_URL}/hub/apps/publish请求头携带 Bearer token请求体携带flwr_version见 publish.py成功后打印 Upload successful。上传成功后你的 AgentApp 就公开在 Flower Hub 上地址模式为flower.ai/apps/publisher/project-name/。完整的文件类型、大小、许可证与 FAB 格式规则以 Flower Hub 官方的发布规范为准。发布新版本AgentApp 迭代升级时保持相同的项目名与 publisher不变只修改版本号[project] version 0.1.1然后重新构建并发布$ uv run flwr build $ uv run flwr app publish .两条硬性规则需要牢记app ID 不可跨类型变更同一项目不能在 AgentApp 与 Federated App 之间互相转换。如果你需要发布另一种应用类型请使用新的项目名。发布故障排查官方文档总结了五类最常见的发布问题及对应解法错误现象解决办法Please log in before publishing app先执行uv run flwr login supergrid完成登录Publisher mismatch将[tool.flwr.app].publisher设置为当前登录 Flower 账号的用户名Missing or invalid app description在[project]下补充非空的description字段Required file was skipped审查.gitignore与发布 include/exclude 规则确保必要文件未被过滤Component cannot be loaded检查[tool.flwr.app.components].agentapp指定的模块路径与对象是否存在如hello_agent.agent_app:app中的agent_app.py模块与app对象这些错误大多在本地flwr build阶段就能提前暴露因此「先构建、后发布」是成本最低的排错策略。从源码看发布校验的完整链路为了让上文所述规则有据可查这里给出 publish.py 中与文档一一对应的实现要点登录前置加载 OIDC 插件并检查 access token未登录抛Please log in before publishing app.L66-L69description 校验必须是非空字符串超过 200 字符打印警告并要求交互确认是否继续L105-L127许可证校验[project].license.file只允许LICENSE/LICENSE.md且文件必须真实存在L143-L180文件过滤collect_files收集全部文件后经filter_paths_for_publish应用.gitignore与 include/exclude 规则被跳过文件打印Skip:警告L183-L209上传校验文件数量、单文件大小、总大小、UTF-8 编码逐项检查通过后打印✅ Validation passedL212-L258上传每个文件按 MIME 类型组装 multipart 表单POST 到/hub/apps/publish成功打印 Upload successfulL261-L301。这套实现印证了文档中的两个「反直觉」结论其一过滤规则作用于全部受支持文件而非仅 Git 跟踪文件所以磁盘上残留的敏感文件也可能被上传其二Attach:输出是组装请求时的日志不是上传前的确认清单两者之间没有二次确认。发布之后在 SuperGrid 上运行发布完成后你可以也建议立即用 app spec 验证一次端到端运行$ uvx --from flwrstable_flwr_version flwr run publisher/agent-name supergrid \ --run-config agent.inputExplain your task. \ --streamSuperGrid 会解析 app spec 到该应用的可用版本启动隔离的 AgentApp 进程并流式返回日志。如需选择指定联邦、查看运行状态或停止运行flwr federation list supergrid、flwr list --run-id run-id supergrid、flwr log run-id supergrid --show与flwr stop run-id supergrid等命令的完整说明见 run-on-supergrid.md运行失败时的排查思路认证、Agent 目录、连接器、心跳、中断与卡死恢复见 troubleshoot-agent-runs.md。至此你已掌握 Flower Hub 上 AgentApp 从「浏览」到「发布」再到「运行」的完整闭环用 app spec 标识应用、用pyproject.toml声明元数据、用flwr build本地验证、用flwr app publish公开上架并在 SuperGrid 上以同样的 app spec 立即消费自己的成果。【免费下载链接】flowerFlower: A Friendly Federated AI Framework项目地址: https://gitcode.com/GitHub_Trending/flo/flower创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考