⚡ HTML 生成时间:2026-04-19 11:33:42(源文件更新后需重新转换)

24 - OpenClaw 能力拓展平台 — 业务逻辑

更新日期:2026-04-19

1. 核心对象

2. 资产状态机(简化)

stateDiagram-v2 [*] --> draft draft --> in_review: submit in_review --> draft: reject in_review --> published: approve published --> deprecated: deprecate deprecated --> [*]

3. 定制交付流(可选模块)

本节为 P2 模块,当前设计稿 v0.2,补全状态机、角色、字段、接口与数据库表。

3.1 工单核心实体

实体说明
CustomOrder定制工单主记录
CustomOrderMilestone交付里程碑节点
CustomOrderMessage工单内沟通记录(运营/租户/ISV)
CustomOrderAttachment附件(需求文档、产出物 ZIP)
CustomOrderAudit工单操作审计(状态变更、指派、评分)

3.2 工单状态机

stateDiagram-v2 [*] --> draft: 租户创建草稿 draft --> submitted: 租户提交 submitted --> pending_review: 系统校验通过 pending_review --> quoting: 运营确认需求 quoting --> quoted: 运营填写报价 quoted --> customer_confirming: 发送客户确认 customer_confirming --> confirmed: 客户确认/签约 customer_confirming --> cancelled: 客户拒绝 confirmed --> in_progress: ISV 接单 in_progress --> milestone_pending: 创建里程碑 milestone_pending --> milestone_in_progress: ISV 开始里程碑 milestone_in_progress --> milestone_review: ISV 提交交付物 milestone_review --> milestone_passed: 运营/租户验收通过 milestone_review --> milestone_rejected: 验收驳回(附原因) milestone_rejected --> milestone_in_progress: ISV 返修 milestone_passed --> all_milestones_done: 最后一个里程碑通过 all_milestones_done --> delivered: 生成 DeliveryBundle delivered --> completed: 租户最终确认 delivered --> disputed: 客户发起争议 disputed --> completed: 争议解决 disputed --> cancelled: 争议导致取消 cancelled --> [*] completed --> [*] quoted --> cancelled: 超时未确认(可配置) in_progress --> paused: 双方同意暂停 paused --> in_progress: 恢复 paused --> cancelled: 永久暂停

紧急路径:运营可直接将 submittedin_progress(跳过报价,紧急需求)。

3.3 工单字段明细

CustomOrder 主表

字段类型说明
idPK
order_nostring工单编号,CO-{YYYYMMDD}-{6位序号}
tenant_idFK所属租户
titlestring工单标题(简洁描述需求)
typeenumskill定制 / mcp定制 / 记忆策略 / 组合包 / 咨询
priorityenumlow / normal / high / urgent
statusenum状态机状态(见 §3.2)
openclaw_version_rangestring目标 OpenClaw 版本范围,如 >=1.5.0
compliance_requirementstext合规约束(JSON 数组描述)
initial_requirementtext原始需求描述
internal_notetext运营内部备注(不对租户可见)
quoted_workdaysint报价工时(人天)
quoted_pricedecimal报价金额(元)
currencystring币种,默认 CNY
isv_idFK接单 ISV(confirmed 后填写)
estimated_delivery_datedate预计交付日期
actual_delivery_datedate实际交付日期
customer_ratingint客户评分 1-5(completed 时可填)
customer_feedbacktext客户反馈(completed 时可填)
dispute_reasontext争议原因(disputed 时填)
submitted_atdatetime提交时间
confirmed_atdatetime确认时间
completed_atdatetime完成时间
cancelled_atdatetime取消时间
cancel_reasonstring取消原因
expire_atdatetime报价过期时间(默认 7 天)

CustomOrderMilestone 里程碑

字段类型说明
idPK
order_idFK所属工单
sequenceint序号(1-based)
titlestring里程碑标题,如「需求分析」「V1 交付」「UAT」
descriptiontext里程碑描述与交付标准
workdaysint本里程碑工时(人天)
due_datedate计划截止日期
actual_finish_datedate实际完成日期
statusenumpending / in_progress / review / passed / rejected / skipped
delivery_bundle_idFK关联 DeliveryBundle(passed 后填)
reject_reasontext驳回原因
notestext里程碑备注

CustomOrderMessage 沟通记录

字段类型说明
idPK
order_idFK所属工单
sender_typeenumtenant / isv / ops / system
sender_idFK发送者用户 ID(system 时为空)
contenttext消息内容(支持 Markdown)
attachment_idstextJSON 数组,附件 ID 列表
is_internalbool是否运营内部消息(租户不可见)
created_atdatetime

CustomOrderAttachment 附件

字段类型说明
idPK
order_idFK所属工单(可空,关联 milestone)
milestone_idFK所属里程碑(可空)
uploader_typeenumtenant / isv / ops
uploader_idFK
file_namestring原始文件名
file_uristring对象存储路径
file_sizebigint文件大小(字节)
mime_typestring
categoryenumrequirement / draft / delivery / approval_doc / other
created_atdatetime

CustomOrderAudit 审计

字段类型说明
idPK
order_idFK
actor_typeenumtenant / isv / ops / system
actor_idFK
actionstring动作,如 status_change / assigned / quoted / milestone_created
old_valuestring变更前值(JSON)
new_valuestring变更后值(JSON)
ipstring操作 IP
user_agentstring
created_atdatetime

3.4 角色权限

动作租户管理员ISV平台运营
创建工单(draft)✅(代创建)
提交工单(submitted)
填写报价(quoted)
确认工单(confirmed)
指派 ISV
创建里程碑✅(确认后)✅(接单后)
里程碑验收✅(passed/rejected)✅(override)
最终完成确认
发起争议
查看内部消息

3.5 完整业务流程

┌─────────────────────────────────────────────────────────────────────────────┐
│                           定制工单全生命周期                                  │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  1️⃣ 需求发起                                                               │
│  租户管理员 → 填写工单(标题/类型/需求描述/OpenClaw版本/合规要求)           │
│  → 保存草稿 draft                                                          │
│                                                                             │
│  2️⃣ 需求提交                                                               │
│  → 提交 submitted                                                          │
│  → 系统自动校验(类型必填、描述非空、合规字段格式)                           │
│  → 进入 pending_review 运营队列                                             │
│                                                                             │
│  3️⃣ 运营评审                                                               │
│  → 运营初审:确认需求清晰度、是否在服务范围内                                │
│  → 若不清晰:驳回 draft(附原因),租户补充                                 │
│  → 若可接:进入 quoting                                                     │
│                                                                             │
│  4️⃣ 报价                                                                   │
│  → 运营填写报价工时(人天)和金额                                            │
│  → 设置报价有效期 expire_at(默认 7 天)                                    │
│  → 发送报价给客户确认                                                       │
│                                                                             │
│  5️⃣ 客户确认                                                               │
│  → 租户确认 → confirmed(填写 isv_id 若运营已指派)                         │
│  → 拒绝 → cancelled(附原因)                                              │
│  → 超时 → cancelled(系统自动)                                           │
│                                                                             │
│  6️⃣ ISV 接单与交付                                                         │
│  → ISV 接单 → in_progress                                                 │
│  → 创建里程碑列表(可多个,按顺序执行)                                      │
│  → 每个里程碑:in_progress → review → passed/rejected                       │
│  → 全部通过 → delivered(自动生成 DeliveryBundle)                         │
│                                                                             │
│  7️⃣ 最终验收                                                               │
│  → 租户最终确认 → completed                                                │
│  → 可选:客户评分 + 反馈                                                   │
│  → 若有争议 → disputed → 争议解决 → completed 或 cancelled                 │
│                                                                             │
│  8️⃣ 交付物归档                                                             │
│  → DeliveryBundle 关联工单编号                                             │
│  → AuditEvent 记录完整的交付链                                             │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

3.6 接口清单(工单与任务)

接口 ID方法路径说明状态
admin-custom-order-pagePOST/admin/occapCustomOrder/page工单分页列表planned
admin-custom-order-createPOST/admin/occapCustomOrder创建工单planned
admin-custom-order-updatePUT/admin/occapCustomOrder/{id}更新工单planned
admin-custom-order-detailGET/admin/occapCustomOrder/{id}工单详情planned
admin-custom-order-submitPOST/admin/occapCustomOrder/{id}/submit提交工单planned
admin-custom-order-quotePOST/admin/occapCustomOrder/{id}/quote填写报价planned
admin-custom-order-confirmPOST/admin/occapCustomOrder/{id}/confirm客户确认planned
admin-custom-order-cancelPOST/admin/occapCustomOrder/{id}/cancel取消工单planned
admin-custom-order-assign-isvPOST/admin/occapCustomOrder/{id}/assign-isv指派 ISVplanned
admin-milestone-listGET/admin/occapCustomOrder/{orderId}/milestones里程碑列表planned
admin-milestone-createPOST/admin/occapCustomOrder/{orderId}/milestones创建里程碑planned
admin-milestone-updatePUT/admin/occapCustomOrder/{orderId}/milestones/{id}更新里程碑planned
admin-milestone-reviewPOST/admin/occapCustomOrder/{orderId}/milestones/{id}/review里程碑验收planned
admin-order-message-listGET/admin/occapCustomOrder/{orderId}/messages沟通记录planned
admin-order-message-sendPOST/admin/occapCustomOrder/{orderId}/messages发送消息planned
admin-order-attachment-uploadPOST/admin/occapCustomOrder/attachment上传附件planned
portal-custom-order-pagePOST/portal/occapCustomOrder/page租户视角工单列表planned
portal-custom-order-createPOST/portal/occapCustomOrder租户创建工单planned
portal-custom-order-confirmPOST/portal/occapCustomOrder/{id}/confirm租户确认报价planned
portal-custom-order-ratePOST/portal/occapCustomOrder/{id}/rate客户评分planned
isv-order-pagePOST/isv/occapCustomOrder/pageISV 工单列表planned
isv-milestone-reviewPOST/isv/occapCustomOrder/{orderId}/milestones/{id}/reviewISV 提交交付物planned

3.7 与 DeliveryBundle 的关联

CustomOrder (confirmed)
    │
    ├─ milestone_1 ──→ [ISV 交付] ──→ DeliveryBundle ──→ AuditEvent(skill_published)
    ├─ milestone_2 ──→ [ISV 交付] ──→ DeliveryBundle ──→ AuditEvent
    └─ milestone_N ──→ [ISV 交付] ──→ DeliveryBundle ──→ AuditEvent

最终 DeliveryBundle 合并为完整定制包

3.8 任务系统(Task,比工单更轻量)

用于 平台运营内部任务分发ISV 里程碑协作人机协作任务,与工单共用审计框架但独立运行。
字段类型说明
idPK
task_nostringTSK-{YYYYMMDD}-{6位序号}
order_idFK关联工单(可空)
titlestring任务标题
descriptiontext详细描述
typeenumreview / approval / delivery / agent_job / misc
priorityenumlow / normal / high / urgent
statusenumpending / assigned / in_progress / done / cancelled
assignee_typeenumuser / isv / agent
assignee_idFK
due_datedatetime
done_atdatetime
done_notetext完成备注
created_atdatetime

任务分页POST /admin/occapTask/page(与工单解耦,独立接口)

3.9 通知机制

触发事件通知对象通知方式
工单提交运营站内消息 + 可选邮件
报价完成租户管理员站内消息 + 邮件
工单确认/取消运营 + ISV站内消息
里程碑被驳回ISV站内消息 + 邮件
里程碑通过租户管理员 + 运营站内消息
工单完成租户管理员 + ISV站内消息 + 邮件
工单超时(待处理)待处理人站内消息

通知渠道可扩展:飞书机器人 / Slack / 企业微信(配置项)。

4. 记忆分层与同步

层级内容示例平台职责OpenClaw 侧
会话摘要近期对话压缩存储模板与样例用户环境生成
长期事实用户确认的偏好版本化策略包合并至 workspace 记忆文件
组织知识团队共享条目租户隔离 + 脱敏按角色下发

红线:含 密钥、token、身份证、未脱敏联系方式 的内容不得进入向量索引对外样例

5. 搜索与审计

6. 权限矩阵(摘要)

动作平台超管租户管理员ISV审计只读
租户套餐/配额查看本租户
资产上架评审提交草稿
发布 DeliveryBundle本租户范围内受委托时
查看审计本租户自己的资产

7. 非目标


8. 业务架构(域边界)

与《需求评估文档》§四「业务架构」索引一致:下列域在组织与数据上解耦,经 EntitlementDeliveryBundle 耦合。

flowchart TB subgraph tenant_domain[租户域] T[Tenant / Workspace] M[Member / RBAC] end subgraph catalog_domain[资产域] A[Asset / Version] R[Review / Risk] end subgraph commerce_domain[商业化域] P[Plan / Quota] E[Entitlement] end subgraph delivery_domain[交付域] B[DeliveryBundle] Au[AuditEvent] end subgraph search_domain[搜索域] S[Business Search] V[Vector Search 可选] Sa[search_audit] end T --> E A --> R R --> A E --> B B --> Au S --> Sa V --> Sa

9. 应用架构与逻辑视图(平台 ↔ OpenClaw 宿主)

flowchart LR subgraph platform[能力拓展平台] API[Midway API] ADM[Cool Admin Vue] OBJ[对象存储/包] end subgraph client[客户环境] OC[OpenClaw 工作区] CLI[拉取/合并脚本] end ADM --> API API --> OBJ CLI --> API CLI --> OC OBJ --> CLI

10. 场景视图(用例锚点)

主场景与 interaction_map.html 中流程一致,摘要如下:

场景参与者结果
资产上架ISV → 运营in_reviewpublished,写 AuditEvent
租户授权运营 / 租户管理员Entitlement 生效,门户可见范围变化
搜索与观测租户成员业务/语义查询,search_audit 记录
交付同步租户 → CLI下载 Bundle,宿主合并,失败可凭 bundle_id 追溯

11. 处理视图(关键控制流)

评审通过(简化时序)

sequenceDiagram participant ISV participant API as Midway API participant OPS as 运营 ISV->>API: submit(assetId) API-->>ISV: in_review OPS->>API: review(approve) API-->>OPS: published API->>API: AuditEvent(review_pass)

高并发与稳定性保护(与 L1/L2 档位联动)


12. 多身份与页面职责(摘要)

skills_distribution.mdpage_structure.md 一致:平台运营 / 租户管理员 / 租户成员 / ISV / 审计只读 / Agent 主体上传、管理、购买订阅、平台分发、定制、任务收发 上的权限边界见该文档 §1–§2;本文不重复表格。

13. Skills 分发与检索策略

14. Agent 自发布 / 自订阅(业务规则)

15. 贡献点(CP)与批次结算(类比特币隐喻 · 非链)

16. 认证与会话

16.1 登录方式

16.2 平台账号体系

字段类型说明
user_idPK
tenant_idFK可空(平台超管无租户)
usernamestring唯一
password_hashstringbcrypt
emailstring可空
phonestring可空
roleenumplatform_super / platform_ops / tenant_admin / tenant_member / isv / audit_readonly / agent_principal
statusenumactive / disabled / deleted
agent_credential_idFKAgent 主体才有(关联证书/密钥)
create_timedatetime
update_timedatetime
delete_timedatetime软删除

16.3 Session 与 Token

16.4 权限控制(RBAC)

角色

接口级权限:所有管理端接口 /admin/occap*/ 需要 platform_opstenant_admin(本租户范围);开放接口 /open/v1/ 按 API Key Role 鉴权。


17. 租户与套餐

17.1 租户实体

字段类型说明
idPK
tenant_nostring租户编号 TN-{6位序号}
namestring组织名
codestring唯一编码
plan_idFK当前套餐,NULL 表示试用
statusenumtrial(试用) / active(正常) / frozen(冻结) / cancelled(注销)
owner_user_idFK租户创建人(默认第一个 tenant_admin)
expired_atdatetime套餐过期时间(试用默认30天)
frozen_atdatetime冻结时间
create_timedatetime
update_timedatetime

17.2 套餐实体

字段类型说明
idPK
namestring套餐名,如「基础版」「企业版」
codestring唯一编码,如 basic / enterprise
quota_jsontext配额模板 JSON(见下)
price_monthlydecimal月付价格(元)
price_yearlydecimal年付价格(元)
sort_orderint排序
statusenumactive / deprecated
create_timedatetime

quota_json 配额模板示例

{
  "max_members": 10,
  "max_asset_count": 50,
  "max_entitlements": 20,
  "search_quota_monthly": 10000,
  "embedding_quota_monthly": 5000,
  "custom_order_quota": 5,
  "storage_quota_gb": 10
}

17.3 租户状态机

stateDiagram-v2 [*] --> trial: 注册开通 trial --> active: 购买套餐 trial --> frozen: 试用过期未购买 active --> frozen: 欠费或主动暂停 frozen --> active: 续费恢复 active --> cancelled: 注销 frozen --> cancelled: 超过保留期

17.4 Workspace 关联


18. 资产与版本

18.1 资产主表

字段类型说明
idPK
asset_nostringAS-{YYYYMM}-{6位序号}
tenant_idFK所属租户(NULL=平台资产)
isv_idFK创作者 ISV
typeenumskill / mcp_bundle / memory_policy / composite
slugstringURL 唯一标识
titlestring显示名称
summarytext一句话简介
descriptiontext详细说明(Markdown)
tagstextJSON 数组,如 ["风控","金融","自动化"]
visibilityenumpublic(公开) / tenant_private(私有) / channel_canary(灰度渠道)
risk_levelenumlow / medium / high
license_spdxstringSPDX 许可证,如 MIT
official_review_requiredbool是否强制人工评审
reject_reasontext驳回原因
current_version_idFK当前生效版本
create_userFK
update_userFK
create_timedatetime
update_timedatetime
delete_timedatetime

索引slug(唯一), (status, type), (visibility, risk_level), tenant_id

18.2 资产版本表

字段类型说明
idPK
asset_idFK
versionstringsemver,如 1.0.0
version_noint递增版本序号
manifest_jsontext完整 manifest(SKILL.md 元数据快照 / MCP bundle 描述)
bundle_uristring包存储路径(ZIP)
bundle_sha256string包校验和
signaturestring可选签名
changelogtext变更说明
statusenumdraft / in_review / published / deprecated
review_passed_atdatetime
review_passed_byFK
published_atdatetime
published_byFK
deprecate_reasontext废弃原因
rollback_version_idFK可回滚到的历史版本
create_userFK
create_timedatetime

索引(asset_id, version)(唯一), (asset_id, status)

18.3 资产状态机(详细版)

stateDiagram-v2 [*] --> draft: ISV/运营创建草稿 draft --> draft: 保存修改 draft --> in_review: ISV提交 draft --> [*]: ISV删除草稿 in_review --> draft: 运营驳回(附原因) in_review --> published: 运营通过 in_review --> fast_track: 自动快通道(low risk + 免审策略) fast_track --> published: 自动通过 published --> deprecated: 运营下架 published --> published: ISV 发新版本(不影响当前) published --> rolled_back: 回滚到历史版本 deprecated --> [*] rolled_back --> published: 回滚后重新发布

快通道条件(同时满足):

18.4 依赖与风险标签

// manifest_json 示例
{
  "name": "风控技能包",
  "version": "1.0.0",
  "requires": [
    {"type": "skill", "slug": "openclaw-risk-core", "version": ">=1.0.0"},
    {"type": "mcp_bundle", "slug": "data-fetcher", "version": ">=0.9.0"}
  ],
  "permissions": ["file_read", "http_request"],
  "risk_flags": ["network_io", "file_write"],
  "homepage": "https://..."
}

19. 授权 Entitlement

19.1 Entitlement 实体

字段类型说明
idPK
entitlement_nostringET-{YYYYMM}-{6位序号}
tenant_idFK
asset_version_idFK授权的资产版本
plan_idFK来源套餐(可空,代表单独购买)
source_typeenumplan_included(套餐包含) / addon(加购) / trial(试用) / custom_order(定制赠送)
quota_jsontext本次授权配额覆盖(与套餐配额合并)
statusenumactive(生效) / expired(过期) / revoked(撤销)
granted_atdatetime授权生效时间
expired_atdatetime过期时间(NULL=永不过期)
revoked_atdatetime撤销时间
revoked_reasonstring
create_userFK授权操作人(运营或系统)
create_timedatetime

索引(tenant_id, asset_version_id)(唯一), tenant_id, status, expired_at

19.2 授权生命周期

Entitlement 创建 → active(生效)
    → 过期 expired(自然过期或欠费)
    → 撤销 revoked(运营手动撤销或违规)

授权后动作

  1. 租户门户「我的订阅」中可见该资产
  2. ISV 收到「被订阅」通知
  3. 触发 CP 贡献点入账(ISV 的 subscribe_share)
  4. AuditEvent 记录

19.3 套餐切换时的 Entitlement 处理

场景处理方式
升档保留原 Entitlement,新套餐配额叠加
降档保留已有资产访问,新增受限;已购单独资产不变
取消订阅所有 plan_included Entitlement 转为 expired,单独购买的不受影响
欠费冻结所有 Entitlement 临时 expired,续费后自动恢复

19.4 Capability Slot(能力槽位)

用于 Agent 订阅场景:一个 Slot 映射到一个 AssetVersion + 配额限制。
字段类型说明
idPK
slot_nostringCS-{6位序号}
tenant_idFK
agent_principal_idFK绑定的 Agent 主体
asset_version_idFK
quota_jsontext调用次数/并发限制
used_countint当期已用次数
period_typeenummonthly / yearly / lifetime
statusenumactive / exhausted / expired
create_time

20. 交付包 DeliveryBundle

20.1 DeliveryBundle 实体

字段类型说明
idPK
bundle_nostringDB-{YYYYMM}-{6位序号}
tenant_idFK交付目标租户
entitlement_idFK来源授权
custom_order_idFK可空,来源定制工单
asset_version_idstextJSON 数组,涉及的多个资产版本
bundle_uristring包存储路径
bundle_sha256string校验和
signaturestring可选数字签名
size_bytesbigint包大小
delivery_typeenumdirect(直接下载) / script(CLI 拉取)
script_versionstring拉取脚本版本(CLI 场景)
statusenumcreated / downloaded / applied / failed
downloaded_atdatetime
applied_atdatetime应用到 OpenClaw 工作区的时间
failure_reasontext失败原因
create_timedatetime

20.2 交付流程

DeliveryBundle 创建(平台)
    → 预签名 URL 生成(TTL=15min)
    → 租户下载 / CLI 拉取
    → 下载完成(status=downloaded)
    → 合并到 OpenClaw 工作区(status=applied)
    → 失败可凭 bundle_id 查 AuditEvent 追溯

20.3 CLI 拉取脚本(伪代码)

#!/bin/bash
BUNDLE_ID=$1
CHECKSUM=$2
TMP_ZIP="/tmp/occap_bundle_${BUNDLE_ID}.zip"

# 1. 拉取包
curl -L "https://api.platform.com/open/v1/bundle/${BUNDLE_ID}/download?token=${DOWNLOAD_TOKEN}" -o $TMP_ZIP

# 2. 校验完整性
ACTUAL_SHA=$(sha256sum $TMP_ZIP | cut -d' ' -f1)
if [ "$ACTUAL_SHA" != "$CHECKSUM" ]; then
  echo "CHECKSUM_MISMATCH"
  exit 1
fi

# 3. 解压到 OpenClaw skills/ 目录
SKILLS_DIR="${OPENCLAW_WORKSPACE}/skills"
mkdir -p $SKILLS_DIR
unzip -o $TMP_ZIP -d $SKILLS_DIR

# 4. 注册 manifest(示例)
# echo "BUNDLE_APPLIED:${BUNDLE_ID}" >> ${OPENCLAW_WORKSPACE}/.occap_applied
echo "OK"
← 返回文档总览