PowerX API 命名与访问规范(/api/v1、/admin、/internal 边界)。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
PowerX 底座 Capability 治理与发布准入规则。
用于审计 REST/OpenAPI/gRPC/Gin 生成的能力候选、正式 platform_capabilities 目录、Capability Registry 登记、agent_usable/permission_code/risk_level 元数据、ignore 清单和缺失能力;当用户要求“重新识别能力”“能力是否能发布”“补齐能力登记”“检查 capability-gen/audit/check”“底座接口暴露给插件/agent”时使用。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
按统一规则判断 PowerX 底座能力候选是否可以进入 backend/config/platform_capabilities/*.yaml,并区分:
正式 YAML 不是文档。进入 backend/config/platform_capabilities 后会被 BaseCapabilitySeeder 写入 CapabilityRecord 并给 active tenants 建 registration,因此必须按运行时授权事实处理。
在对话里直接点名 skill。完整审计使用:
用 $capability-governance 做一次完整能力治理审计
完整补齐使用:
用 $capability-governance 做一次完整能力治理补齐
执行“完整能力治理补齐”时,不只解释结果,必须按下面顺序实际处理:
make capability-gen,确保 backend/config/platform_capabilities/generated.auto.yaml 被重新生成。generated.auto.yaml 是否作为正式 platform capability 文件存在,并包含所有生成能力的治理字段:
permission_codeagent_usablerisk_levelactor_contextresource_scopests_direct 只能显式为 true,不得默认打开permission_code / agent_usable / risk_level。default_role_grants: [role_user],并确认未使用非法默认角色码。make capability-check。如果失败,先判断是:
Group("") 丢父路径。category/reason 的 ignore,不允许静默忽略。make capability-gen 和 make capability-check,直到通过。make capability-seed,把正式 platform_capabilities/*.yaml 写入 capability_registry_records 并为 active tenants 补齐 registrations。也可以按问题缩小范围:
用 $capability-governance 检查 make capability-check 的失败原因
用 $capability-governance 判断这些候选能力哪些可以进 platform_capabilities
用 $capability-governance 分析 com.corex.customer.accounts.* 需要补哪些实现
先读取这些位置,再给结论或改代码:
make_files/capability.mkmake_files/dev.mkbackend/cmd/capability_gen/main.gobackend/cmd/capability_audit/main.gobackend/config/platform_capabilities/*.yamlbackend/config/capability_audit_required.yamlbackend/internal/service/integration_gateway/base_capabilities.gobackend/internal/service/integration_gateway/platform_capability_config.gobackend/internal/http/auth_subject_validator.gobackend/internal/http/auth_subject_validator_test.go如果涉及 agent 能力授权,还要读取:
backend/internal/service/agent_authz/service.gobackend/internal/service/agent/agent_service.goweb-admin/app/pages/settings/ai/agents.vue从仓库根目录运行:
make capability-gen
make capability-audit
make capability-check
make capability-seed
CAPABILITY_AUDIT_FIX=1 make capability-audit
解释命令结果时必须区分:
capability-gen:从 OpenAPI/gRPC/Gin 生成底座 raw 能力,默认写入 backend/config/platform_capabilities/generated.auto.yaml。该文件是正式登记的一部分,但生成能力默认必须是 agent_usable: false,不能当成手写业务聚合能力。capability-audit:检查正式目录、required 清单和路由覆盖。capability-check:先临时生成候选,再审计正式目录覆盖关系,适合判断“现有接口是否已被正式声明或明确忽略”。capability-seed:只同步正式 platform capability YAML 到运行库,不执行 migrate,不执行全量 seed。CAPABILITY_AUDIT_FIX=1:只生成草稿,不得直接把草稿视为可发布。当前 Make 约定:
make capability-gen 默认输出:backend/config/platform_capabilities/generated.auto.yamlmake capability-check 临时输出:tmp/capability-check/generated.platform-capabilities.yamlmake capability-check 通过时应输出类似:capability-audit: ok, declared=<正式能力数> referenced=<引用数> rest_routes=<REST覆盖数> candidates=<临时候选数> ignored_route_rules=<忽略规则数>
如果 declared 只有几十个,而 candidates 有几百个,说明 raw 能力没有完整进入正式目录,不能视为完整。
能力进入正式 platform_capabilities 前必须满足:
capability_id 稳定且属于 com.corex.*。permission_code 明确,不能依赖不可读的粗粒度推导。agent_usable 明确设置。raw route 和后台管理能力默认应为 false。risk_level 明确设置。role_owner 和 role_admin;如需普通成员使用,descriptor 必须显式声明 default_role_grants: [role_user],不得靠手工补 iam_role_permission。module、categories、intents、tool_scopes 与业务语义一致。protocols 指向真实路径/RPC,路径参数风格要与项目规范一致。backend/config/platform_capabilities/generated.auto.yaml 是底座 raw 能力登记文件,必须被当作正式目录的一部分读取和审计,但它与手写聚合能力语义不同:
make capability-gen 生成,不手工大段编辑。permission_code、agent_usable、risk_level。agent_usable: false,避免 raw route 出现在智能体能力选购页面。actor_context 和 resource_scope。sts_direct: true。/admin、丢 /tenant、错误处理 Group(""),必须先修 generator,而不是手写补假能力。Capability 是业务授权单元,不是 URL。REST/OpenAPI/Admin/gRPC endpoint 只是 capability 的 protocol binding。
规则:
capability_id。/api/v1/admin/<resource> 与 /api/v1/<resource> 如果只是用户态后台入口和服务态开放入口的差异,应登记为同一个 capability 的不同 REST bindings。/api/v1/admin/scheduler/jobs、未来的 /api/v1/scheduler/jobs、powerx.scheduler.v1.SchedulerService 如果语义都是 Runtime Scheduler jobs,应优先归到 com.corex.scheduler.jobs;差异通过 binding metadata、service 层 actor/owner 校验和 tool_scope 表达。审计 capability 时必须先确认调用主体:
admin_user:PowerX Admin 或插件 Admin 页面,使用用户 JWT、tenant member、RBAC。典型路径 /api/v1/admin/*。service_actor:插件后端、agent、skill、系统集成,使用 STS/API Key/OAuth client。典型路径 /api/v1/tenant/invocations 或服务态开放 REST。web_user:租户侧 web 应用用户,使用用户 JWT 或业务 session。mini_app_user:小程序用户,使用小程序会话、用户 JWT 或 customer/user token。customer_actor:客户门户或外部客户身份,使用 customer token 或 customer-scoped OAuth/API Key。规则:
com.corex.customer.account.self_read,不能继承 com.corex.customer.accounts.admin_manage。actor_context。admin_manage、service_manage、self_read、self_update、owner_manage。Framework local Host 与 delegated runtime 使用的 Core capability 也必须按 正式 capability 授权,不能因为本地调试而绕过 grant。对每个此类能力:
core_internal core:// endpoint + INVOKE,
使用 typed operation DTO;禁止 method、endpoint、headers 或 raw body
作为调用方可自由选择的代理字段。PX_GATEWAY_API_KEY,该 core_internal binding MUST
声明完整 api_key.scope/action/resource_type/resource_pattern。权限同步器
MUST 生成 allow_api_key=true 与 api_key_explicit=true 的 IAM permission。service_read;不得把 admin_manage 直接
暴露给 Framework API Key。插件 STS token 直接访问 PowerX Core HTTP 的允许集合按下面公式计算:
STS direct route policy =
static plugin runtime contracts
+ REST endpoints in formal platform_capabilities/*.yaml
- STS blocklist
规则:
/tenant/invocations 和 /tenant/invocations/stream 是插件调用底座能力的推荐主路径。platform_capabilities/*.yaml 中的 REST protocol endpoints;generated.auto.yaml 当前也参与自动派生,但必须经过 blocklist。GET 就放开写操作。/api/v1/admin/* 是后台用户态 API 命名空间,不等于“禁止插件后台页面使用”。浏览器中的 PowerX Admin、插件 Admin 页面、以及任何携带用户 JWT 的后台请求,仍然按用户鉴权、租户成员、RBAC 和业务权限判断;STS direct route policy 不得影响用户态 JWT。uid/mid,不能代表登录用户通过 /api/v1/admin/* 绕过用户 RBAC。插件后端如果要代表当前用户调用底座后台 API,必须引入明确的 delegated/on-behalf-of 机制,不能复用普通 powerx:api STS token。/admin/*、/internal/*、/public/*、/auth/*、/setup/*、debug、migration、root、drain、bootstrap、mock、health、根级动态路径等非服务态开放入口。/admin/* 默认不允许服务态 STS direct call。只有确认为插件服务运行时合同的少量入口,才允许进入 static allow,并必须补用途说明和 auth_subject_validator 测试。make capability-check,再验证 STS direct policy。/api/v1/admin/* 改成 sts_direct: true。应保留 admin_user/user_jwt binding,并新增 service_actor/sts 的 core_internal binding 或服务态开放 REST,由 /tenant/invocations 在校验 Registry 与 tenant registration 后调 Core service。例如 com.corex.customer.accounts.admin_manage 使用 /api/v1/admin/customers/* 作为 payload endpoint 选择参数,但实际由 Core 内部 customer service 执行。满足发布准入,且插件/agent/skill 有复用价值的底座业务能力,例如 media、knowledge、workflow、scheduler、event fabric、agent runtime、AI 模型调用等。
优先使用手写业务聚合能力,而不是每个 raw route 一个 capability。聚合能力可以包含多个 REST/gRPC protocol binding。
后台治理、观测、诊断、插件运行时辅助接口,如果确实需要被租户或插件调用,可以登记,但必须:
agent_usable: false如果 raw route 已经被手写聚合能力覆盖,不要再发布重复 capability。应把 raw route 覆盖关系体现在聚合能力的 protocols 中,或在审计 ignore 中说明“covered_by: <capability_id>”。
以下类型不得进入租户能力注册目录:
/internal/** 或 /api/v1/internal/**/api/v1/admin/root/**_test.go 中的测试路由这些需要进入 capability_audit_ignore.yaml 时,每条必须有 category 和 reason,不能静默忽略。
这些类型即使被 OpenAPI/Gin/gRPC 生成器识别为候选,也不得通过服务态 STS direct 自动开放;如果确实属于插件服务运行时合同,应从 capability 发布判断中剥离,进入静态合同入口并单独测试。用户态后台页面访问 /api/v1/admin/* 不受这条 STS blocklist 影响,仍由用户 JWT 和 RBAC 判定。
如果只有 required_capabilities、插件调用方或文档提到某 capability,但底座没有真实 transport,不得补 YAML 伪造能力。必须先实现 API/service/repository/transport/权限/测试,然后再登记 capability。
典型判断:com.corex.customer.accounts.* 如果没有真实 customer admin HTTP/gRPC transport,就属于缺实现,不能仅靠 capability YAML 解决。
发现以下情况时先修工具,不要发布候选:
group := adminGroup.Group("") 后路由被生成到 /api/v1/catalog 而不是 /api/v1/admin/skills/catalog。_test.go 产生候选。/admin、/tenant、/internal 等实际前缀。permission_code、agent_usable、risk_level 缺省导致 UI 或授权过宽。修工具后重新运行 make capability-check,用新结果重新分类。
审计器必须强制:
permission_code。agent_usable。risk_level:low、medium、high、critical。actor_context 和 resource_scope。sts_direct: true 只能用于 actor_context: service_actor。sts_direct: true 不得指向 /api/v1/admin/*。generated.auto.yaml 也必须满足上述元数据规则。完整补齐后应能同时满足:
backend/config/platform_capabilities/generated.auto.yaml 中有 700+ raw 能力。make capability-check 通过。给用户结论时按这个顺序:
不要只回答“可以”或“不可以”。必须说明运行时影响和授权边界。
default_role_grants 只能使用 role_owner、role_admin、role_user、role_readonly、role_vendor;非法角色码必须 fail fast。完成治理或代码修改后至少运行:
make capability-check
如果改了 Go 代码,按影响范围运行对应测试;如果新增/修改生成器或审计器,至少运行:
cd backend && go test ./cmd/capability_audit
cd backend && go test ./cmd/capability_gen
如果改了 STS direct 规则或 platform capability REST endpoints,还要运行:
cd backend && go test ./internal/http
如果对应包没有测试,也要明确说明无法运行或当前没有测试包。
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
PowerX API 命名与访问规范(/api/v1、/admin、/internal 边界)。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
PowerX REST 契约规则(资源命名、分页、错误、版本化)。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
PowerX CRUD 依赖注入规则(Deps 单入口、构造注入、跨传输复用)。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
PowerX CRUD DTO 规则(输入输出分离、分页、校验)。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
PowerX CRUD gRPC 开发规范(proto、server、拦截器、错误映射)。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
PowerX CRUD gRPC 顶层 ruleset 约束。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.