首页 产品 为什么选 OCTO 解决方案 文档 关于
文档中心 / 模块详解 / 技能市场
← 返回文档中心

技能市场

OCTO 文档中心 · 模块详解

  • 内部部署仓库 docker-compose.yaml / Helm / nginx配置(部署硬事实)
  • Mininglamp-OSS/octo-marketplace(Go独立微服务,开源可读,源码级确认)
  • octo-server对接路由(令牌/审批卡)
  • 00-inbox/product-bot-answers/2026-09-22-P1-r2-Q7-Marketplace市场深度回答.md
  • 00-inbox/product-bot-answers/2026-09-21-P0扩展-Marketplace市场模块回答.md

市场Marketplace模块说明 v1.0

⚠️ 市场 ≠ BotFather(售前/交付必须记住)

Marketplace = Skills 与 MCP servers 的目录+发布服务,是独立 Go 微服务 `octo-marketplace`;负责上架分发/安装/版本/计数/评分。

BotFather = 创建/注册 Bot(bot_token + 基础配置 + runtime onboarding)。

两者完全解耦,Bot 不是 Marketplace 的分发类型。


§1 核心定位与 BotFather 边界

1.1 一句话定位

Marketplace = Skills 与 MCP servers 目录 + 发布服务(独立微服务 octo-marketplace,Go 语言)。

能力覆盖:Space 感知发现 / owner 管理发布 / 归档解析 / 版本历史 / 对象存储下载 / MCP 连接元数据探测。

octo-server 仅保留对接令牌与审批卡路由,不承载市场业务逻辑。

1.2 🔑 市场 ≠ BotFather(售前/交付强口径)

维度 Marketplace(市场) BotFather
职责 上架分发 / 安装 / 版本 / 计数 / 评分 创建/注册 Bot、发放 bot_token、基础配置、runtime onboarding
分发对象 expert / expert_team / skill / connector(MCP server) 不做分发,只创建 Bot 身份
Bot 是否在此出现 ❌ Bot 不是分发类型,仅可作为创建者身份(creator)上架插件 ✅ Bot 的唯一创建/管理入口
入口 Web「回路→专家市场」「插件市场」+ octo-cli 私聊 BotFather(/newbot、/connect、/mybots)
解耦关系 两者独立——装了 Marketplace 不需要 BotFather 分发插件;用 BotFather 建 Bot 也不经过市场 同左

📝 常见误解纠正:

- ❌ "Marketplace 是 Bot 市场" → Bot 不在 Marketplace 分发

- ❌ "Bot 是一种 PluginType" → Bot 是创建者身份(CreatedByType: human/bot/import),不是插件类型

- ❌ "自定义 Bot 可整体发布为插件" → 源码未找到此端点,Bot 仅作 creator


§2 四种 PluginType 全景

PluginType 中文名 定义 运行环境 传输/安装方式 备注
expert 专家(单 Agent) 可安装的 AI 协作体 Loop/Fleet 云端编排 Fleet 以调用者转发 token 授权安装 原"AI队友"
expert_team 专家团队(Squad) 多专家协作小队,含 leader/members/strategies/dependencies Loop/Fleet 云端编排 同上;通过 expert_team_expert 关系内嵌多个 expert 原"AI小队";MaxSquadMembers=30 / MaxExpertSkills=20
skill 技能包 可复用能力包 本地 runtime(Skills 根目录) octo-cli 安装:在线 marketplace skills --install 或离线 skills --install(zip/.skill 包) 制品存 MinIO,SHA256 校验
connector 连接器(MCP server) 外部工具/服务连接器,含 Tool{Name,Description} 结构 随 expert/runtime 调用 三种传输:stdio(本地进程)/ streamable-http / sse 即 MCP server;v2026.08.10 中文化为「连接器」
  • Tool 不是独立 PluginType:Tool 是 connector 下的 {Name, Description} 结构,不单独上架
  • Agent/Squad 是安装产物:expert/expert_team 安装后在 Fleet/Loop 中编排运行,但它们本身是分发类型
  • Bot 身份不影响分发能力:Bot 可作为 creator 上架 skill/connector,但 owner 同 Bot owner,无权限增益(仅市场徽章)

§3 上架 / 审核 / 安装 / 私有市场

3.1 生命周期状态机

  • 上架态(listing_state):draft / published / delisted
  • 审核展示态:draft → pending_review → published / rejected → delisted(下架)
draft → pending_review → published → delisted
                    ↘ rejected

3.2 发布流程(API 链路)

POST /skill_uploads (init 上传)
  → POST /skill_uploads/:id/parse (解析元数据)
  → poll 解析结果
  → POST /plugins/publish (提交发布)

3.3 🔑 审核默认 auto-approve(安全注意)

审核项 说明
默认策略 is_auto_approve_enabled = true(默认自动通过)
修改方式 Space owner / admin 可 PATCH 关闭,改为人审
人审队列 submit / list / approve / reject / cancel
审批回调 支持经 IM 卡片回调(HMAC 签名重推防伪造)

⚠️ 售前/交付口径:企业部署时如对插件上架有安全要求,必须显式关闭 auto-approve 并配置人工审核流程。默认配置下任何人提交的插件都会自动上架。

3.4 私有市场(Visibility 四档)

visibility 可见范围
public 公开市场,所有 Space 可见
space Space 级私有,仅当前 Space 成员可见
private 私有,仅 owner 可见
system 系统内置(官方发布标识)

✅ 企业可搭建 Space 级私有市场(M-04 确认解决)。

3.5 离线导入与 octo-cli 安装

场景 方式
在线安装 skill octo-cli marketplace skills --install(CLI 用 Bot 凭证从同一 Marketplace 下载)
离线导入 skill zip / .skill 包上传解析(service/plugin/import.go);octo-cli skills --install <本地包>
expert / expert_team 通过 Fleet 安装到 Loop 工作区
connector (MCP) 通过市场分发 MCP 连接元数据,expert 配置中引用

3.6 安装行为

  • skill 安装:经 octo-cli 写入本地 runtime Skills 根目录,写入安装策略 + 自动去重 + 失败重试
  • expert/expert_team 安装:经 Fleet 以调用者转发 token 授权,写入 Loop/Fleet 云端编排,强制 workspace/runtime/Space 作用域
  • 安装后统计:install 计数 +1

§4 版本管理

版本特性 说明
不可变快照 已发布版本 = 不可变快照(plugin_versions 表 + migrations),append-only 审计
版本并存 current v1 与 in-review v2 可并存,用户看到已发布版,审核者看到待审版
版本号规则 强制 SemVer x.y.z,升级校验 VersionNotRegressed——只能升或不变,不可回退版本号
灰度 canary ❌ 未找到灰度发布能力 → 🔴待私有仓确认
一键回滚 ❌ 未找到一键回滚端点 → 🔴待私有仓确认
配置/数据迁移 ❌ 未找到版本升级时配置或数据迁移机制 → 🔴待私有仓确认

§5 Bot / Skill / Expert 组合关系

5.1 包含关系(非并列)

expert_team (Squad)
  └── expert (成员)  ← expert_team_expert 关系,MaxSquadMembers=30
        └── skill (技能) ← expert_skill 关系,MaxExpertSkills=20
              └── connector (MCP server,expert 运行时调用)
                    └── tool {Name, Description}(connector 下的工具结构)

5.2 同源关系

  • octo-cli 的 skill 与 Marketplace 的 skill 同源:CLI 使用 Bot 凭证从同一 Marketplace 服务下载制品,本地与市场是同一个 skill 包体系。

5.3 Bot 作为创建者

  • Bot 可作为 creator 上架 skill/connector(CreatedByType: bot)
  • 但 owner 同 Bot owner,无权限增益,仅在市场展示 Bot 创建徽章
  • ❌ "自定义 Bot 整体发布为可分发插件" → 源码中未找到此端点,Bot 仅作为 creator 身份存在

§6 安全模型

6.1 Marketplace 层已确认安全能力

安全项 状态 说明
认证委托 ✅ AUTH_ENABLED=true,认证委托 octo-server
API Space 强隔离 ✅ 身份/Space 只来自已验证请求上下文,请求 body 不能自选 owner/space;跨 Space 请求返回 NOT_FOUND(不泄露资源是否存在)
下载鉴权 ✅ OSS_DOWNLOAD_SIGNED=true,MinIO marketplace bucket 私有,所有下载走签名 URL
制品完整性校验 ✅ skill 制品 SHA256 摘要校验 + 大小上限(MAX_UPLOAD_MB=20)
安装授权 ✅ expert/skill 经 Fleet 以调用者转发 token 授权,Fleet 强制 workspace/runtime/Space 作用域
审批回调防伪造 ✅ IM 审批卡片使用 HMAC 签名重推
密码安全 ✅ market-preflight 校验 DB 密码非空、合法字符集、非 CHANGE_ME、非常量默认值
MinIO 凭据隔离 ✅ 使用独立 app 用户 octo-app,密钥经环境变量注入

6.2 Marketplace 本身不运行插件

Marketplace 是纯分发/目录服务,不在自身进程中加载或执行任何插件代码。

插件运行在 Fleet(expert/expert_team 云端编排)或本地 octo-daemon/runtime(skill/connector)中。

6.3 🔴 P0 运行期安全待确认(私有仓边界)

待确认项 优先级 说明
运行期 seccomp / 容器沙箱隔离 🔴 P0 skill/connector 在本地 runtime 执行时是否有系统调用过滤/容器隔离
宿主文件系统 / 网络白名单 🔴 P0 插件是否可以任意访问宿主文件系统和网络,或有白名单限制
显式权限声明模型 🔴 P0 安装前是否展示权限清单、安装后是否收紧权限、卸载是否立即撤销授权
制品安全扫描 / 病毒扫描 🔴 P0 上传制品是否有静态安全扫描;当前仅有 SHA256 完整性校验(非安全扫描)
制品数字签名 P1 上传/下载制品是否有数字签名验证;当前"签名"仅指审批卡 HMAC,非制品签名

⚠️ 售前口径提醒:在 P0 安全项未确认前,对客户表述 Marketplace 安全能力时应明确"分发层鉴权完备,运行期沙箱能力待 Fleet/octo-daemon 确认",不要声称"插件完全沙箱隔离"。


§7 评分与统计

7.1 评分机制(管理员评分,非众评)

评分项 说明
评分字段 单字段 rating TINYINT(1-5)
设置方式 仅管理员经 PATCH /admin/plugins/:id/rating 设置
用户评分/评论 ❌ 不存在用户评分或评论功能

🔑 售前口径:评分是平台运营/管理员手动打星,不是 App Store 式的用户众评。如果客户问"用户评分在哪看",需要明确告知当前版本不支持用户评分。

7.2 统计数据

统计项 说明
view 计数 浏览量
download 计数 下载量
install 计数 安装量

§8 部署与基础设施硬事实(保留)

8.1 marketplace 主服务

项目 事实
服务镜像 mininglamposs/octo-marketplace:latest
容器端口 8092(API_PORT)
数据库 MySQL octo_marketplace(utf8mb4_general_ci),用户 marketplace
缓存 Redis DB 0(redis://redis:6379/0)
对象存储 MinIO bucket marketplace(资源包/图标/截图)
存储驱动 OSS(S3 兼容,对接 MinIO)
认证 AUTH_ENABLED=true(委托 octo-server)
上传限制 MAX_UPLOAD_MB=20
下载安全 OSS_DOWNLOAD_SIGNED=true(签名 URL,bucket 私有)
健康检查 GET /healthz(端口 8092)
Profile 开关 docker-compose 默认启动;Helm marketplace.enabled 默认 false

8.2 Nginx 路由

URL 路径 后端 说明
/market/api/* marketplace:8092 rewrite → :8092/api/*
/market/healthz marketplace:8092 健康检查直连

⚠️ 前端环境变量 `MARKET_API_URL: http://marketplace:8092`(容器内直连)与 nginx `/market/api/*` 路由并存,前端实际走哪条路径待查前端代码确认。

8.3 初始化

  • market-preflight(每次启动幂等):创建数据库/用户/授权,校验密码强度
  • minio-init:预创建 marketplace bucket,不设匿名策略(保持私有)

§9 私有仓待确认项汇总

编号 待确认项 所在组件 优先级
P0-1 运行期 seccomp / 容器沙箱隔离 Fleet / octo-daemon 🔴 P0
P0-2 宿主文件系统 / 网络白名单 Fleet / octo-daemon 🔴 P0
P0-3 显式权限声明模型(安装前展示/安装后收紧/卸载撤销) Fleet / octo-daemon 🔴 P0
P0-4 制品安全扫描 / 病毒扫描 marketplace / upload pipeline 🔴 P0
P1-1 制品数字签名(非审批卡 HMAC) marketplace P1
P1-2 灰度 canary 发布 marketplace / Fleet P1
P1-3 一键回滚机制 marketplace / Fleet P1
P1-4 配置/数据升级迁移 marketplace / Fleet P1
P2-1 前端 API 走直连还是 nginx 路由 web 前端 P2
P2-2 Helm vs docker-compose 生产默认 profile deployment P2
P2-3 安装审计日志(谁/何时/装了什么) marketplace P2

§10 与其他模块关系

模块 关系
octo-server 认证委托(AUTH_ENABLED + OCTO_API_URL);保留对接令牌与审批卡路由
BotFather 🔑 完全独立解耦:Bot 通过 BotFather 创建/管理,不走 Marketplace 分发
Loop / Fleet expert/expert_team 安装后在 Fleet 云端编排;安装经 Fleet 以调用者转发 token 授权
octo-cli / local runtime skill 安装到本地 runtime Skills 根目录;CLI 用 Bot 凭证从 Marketplace 下载;connector(stdio) 本地运行
MinIO 资源包/图标/截图存储(marketplace bucket,签名 URL 下载)
MySQL 元数据存储(octo_marketplace 库,plugins/plugin_versions/plugin_relations 等表)
Redis 高频查询缓存(DB 0)
OctoPush 客户端有独立的"龙虾专家市场",与 Web Marketplace 为不同承载面

§11 版本记录

  • v0.1(2026-09-21):基于内部部署仓库硬事实初版;资源类型推断为"Skill/Bot/MCP"三类
  • v0.2(2026-09-21):根据产品管家首轮回答修订;纠正 Bot 不是分发类型;MCP 以「连接器」形态出现;待确认项 M-01~M-09
  • v1.0(2026-09-22):🔴 源码确认级重大升级——基于 Mininglamp-OSS/octo-marketplace 全量开源代码 + Q7 深度回答:
  • PluginType 精确为 4 种:expert / expert_team / skill / connector(删除 v0.2 中"插件"作为独立类型的模糊描述;connector 即 MCP server)
  • 新增 §1 BotFather 边界专节:醒目标注"市场 ≠ BotFather",含对比表
  • 新增 §2 四种 PluginType 全景表:含定义/运行环境/传输方式/上限常量(MaxSquadMembers=30/MaxExpertSkills=20)
  • 新增 §3 上架/审核/安装/私有市场完整流程:生命周期状态机、发布 API 链路、默认 auto-approve 安全警告、visibility 四档确认(解决 M-04)、离线导入、IM 审批 HMAC
  • 新增 §4 版本管理:不可变快照/版本并存/semver 只升不降;灰度/回滚/迁移标🔴待确认
  • 新增 §5 组合关系:plugin_relations 包含链(team→expert→skill→connector→tool)、octo-cli 同源、Bot creator 身份
  • 新增 §6 安全模型:Marketplace 不运行插件、API Space 强隔离、SHA256 校验、Fleet 转发 token 授权;🔴 P0 运行期待确认项单独列表
  • 新增 §7 评分与统计:管理员评分非众评(关键售前口径)、view/download/install 三类计数
  • 部署硬事实保留为 §8:环境变量/路由/初始化信息完整保留
  • 待确认项重构为 §9:按优先级分 P0/P1/P2,明确标注私有仓边界
  • confidence 从 medium-high 提升至 high(开源仓全可读,分发层确认级约 18 条;仅运行期待私有仓确认)
  • v0.2 中"插件市场"与"专家市场"分两个承载面的描述整合为统一 PluginType 模型