Skip to content

CNB API 技能文档

技能概述

本技能提供 CNB (Cloud Native Build) Open API 的完整调用能力,支持所有 API 接口的调用和操作。每个 API 都有详细的文档说明,包含请求参数、响应格式和调用示例。

重要规则(必须遵守):

  1. 必须实际执行:访问 CNB API 时,必须通过 exec_command 工具实际执行 curl 命令,不要只在回复中描述或展示 curl 命令。用户需要的是 API 返回的结果,不是命令本身。
  2. 使用 curl + Authorization:不要使用 web_fetch 工具,因为 web_fetch 无法携带认证信息。
  3. 使用环境变量:始终使用 $CNB_TOKEN 和 $CNB_API_ENDPOINT 环境变量引用,不要使用 <CNB_TOKEN> 占位符。
  4. 主动执行:不要询问用户"是否需要我执行",直接执行 curl 获取结果并分析。
  5. 必须: 执行 curl 命令时必须使用 -w '%header{traceparent}' 获取 trace 信息,当请求失败时,务必返回 traceparent header, traceparent 信息仅记录在命令输出的日志中用于问题排查,不要在回复中展示给用户。

页面 URL 解析规则

当用户提供 CNB 平台的页面链接时,需要从 URL 中提取参数来构造 API 请求:

页面 URL 格式提取参数对应 API
https://{host}/{repo}/-/build/logs/repo, snGET /{repo}/-/build/status/{sn} 查状态,GET /{repo}/-/build/logs?sn={sn} 查日志列表
https://{host}/{repo}/-/issues/repo, numberGET /{repo}/-/issues/
https://{host}/{repo}/-/pulls/repo, numberGET /{repo}/-/pulls/
https://{host}/{repo}/-/git/commits/repo, refGET /{repo}/-/git/commits/
https://{host}/repoGET /

示例:用户给了 https://{host}/{org}/{repo}/-/build/logs/

  • 提取 repo = {org}/{repo},sn =
  • 先执行:curl ... "${CNB_API_ENDPOINT}/{org}/{repo}/-/build/status/{sn}" 获取构建状态
  • 如需详细日志,再调用 stage 接口

基础配置

API 基础地址: 从环境变量 CNB_API_ENDPOINT 获取,默认为 https://api.cnb.cool

认证方式: Bearer Token

环境变量:

  • CNB_TOKEN:身份认证令牌(必须)
  • CNB_API_ENDPOINT:API 请求基础地址(可选,默认为 https://api.cnb.cool

请求头要求:

  • Accept: application/vnd.cnb.api+json
  • Authorization: Bearer $CNB_TOKEN

API 接口索引

activities 服务

接口描述
GetUserActivitiesByDate获取个人动态活跃详情汇总。Get user activities by date.
GetUserRepoActivityDetails个人仓库动态详情列表。List of personal repository activity details.
TopContributors获取仓库 top 活跃用户。List the top active users

ai 服务

接口描述
AiChatCompletionsAI 对话。调用者需有代码写权限(CNB_TOKEN 仅需读权限,部署令牌不检查读写权限)。AI chat completions. Requires caller to have repo write permission.

assets 服务

接口描述
DeleteAsset通过 asset 记录 id 删除一个 asset
GetFiles获取 issue 文件或合并请求文件的请求,返回文件二进制内容。Request to retrieve file of issues and pull requests, returns binary content.
GetImgs获取 issue 图片或合并请求图片的请求,返回图片二进制内容。Request to retrieve image of issues and pull requests, returns binary content.
ListAssets仓库的 asset 记录列表

badge 服务

接口描述
GetBadge获取徽章 svg 或 JSON 数据。Get badge svg or JSON data.
ListBadge获取徽章列表数据。List badge data
UploadBadge上传徽章数据。Upload badge data

build 服务

接口描述
BuildCrontabSync同步仓库分支下的定时任务。 Synchronize the content under the repository branch.
BuildLogsDelete删除流水线日志内容。Delete pipeline logs content.
BuildRunnerDownloadLog流水线runner日志下载。Pipeline runner log download.
GetBuildLogs查询流水线构建列表。List pipeline builds.
GetBuildStage查询流水线Stage详情。Get pipeline build stage detail.
GetBuildStatus查询流水线构建状态。Get pipeline build status.
StartBuild开始一个构建。Start a build.
StopBuild停止一个构建。 Stop a build.

charge 服务

接口描述
GetSpecialAmount查看特权额度

event 服务

接口描述
GetEvents获取仓库动态预签名地址,并返回内容。Get events pre-signed URL and return content.

followers 服务

接口描述
GetFollowersByUserID获取指定用户的粉丝列表。Get the followers list of specified user.
GetFollowingByUserID获取指定用户的关注人列表。Get the list of users that the specified user is following.

git 服务

接口描述
CreateBlob创建一个 blob。Create a blob.
CreateBranch创建新分支。Create a new branch based on a start point.
CreateBranchLock锁定分支
CreateTag创建一个 tag。Create a tag.
DeleteBranch删除指定分支。Delete the specified branch.
DeleteBranchLock解除锁定分支
DeleteCommitAnnotation删除指定 commit 的元数据。Delete commit annotation.
DeleteCommitAsset删除指定 commit 的附件。Delete commit asset.
DeleteTag删除指定 tag。Delete the specified tag.
DeleteTagAnnotation删除指定 tag 的元数据。Delete the metadata of the specified tag.
GetArchive下载仓库内容
GetArchiveCommitChangedFiles打包下载 commit 变更文件。Download archive of changed files for a commit.
GetArchiveCompareChangedFiles打包下载两次 ref 之间的变更文件。Download archive of changed files for a compare.
GetBranch查询指定分支。Get a branch.
GetCommit查询指定 commit。Get a commit.
GetCommitAnnotations查询指定 commit 的元数据。Get commit annotations.
GetCommitAnnotationsInBatch查询指定 commit 的元数据。Get commit annotations in batch.
GetCommitAssets发起一个获取 commits 附件的请求, 302到有一定效期的下载地址。Get a request to fetch a commit assets and returns 302 redirect to the assets URL with specific valid time.
GetCommitAssetsBySha查询指定 commit 的附件。List commit assets.
GetCommitStatuses查询指定 commit 的提交状态。List commit check statuses.
GetCompareCommits比较两个提交、分支或标签之间差异的接口。Compare two commits, branches, or tags.
GetContent查询仓库文件列表或文件。List repository files or file.
GetContentWithoutPath查询仓库文件和目录内容。List repository files and directories.
GetHead获取仓库默认分支。Get the default branch of the repository.
GetPresignedLFSDownloadLink获取 git lfs 文件下载链接
GetRaw获得仓库指定文件内容
GetTag查询指定 tag。Get a tag.
GetTagAnnotations查询指定 tag 的元数据。Query the metadata of the specified tag.
ListBranches查询分支列表。List branches.
ListCommits查询 commit 列表。List commits.
ListTags查询 tag 列表。List tags.
PostCommitAssetUploadConfirmation确认 commit 附件上传完成。Confirm commit asset upload.
PostCommitAssetUploadURL新增一个 commit 附件。Create a commit asset.
PutCommitAnnotations设定指定 commit 的元数据。Put commit annotations.
PutTagAnnotations设定指定 tag 的元数据。Set the metadata of the specified tag.

gitsettings 服务

接口描述
DeleteBranchProtection删除仓库保护分支规则。 Delete branch protection rule.
GetBranchProtection查询仓库保护分支规则。Get branch protection rule.
GetPipelineSettings查询仓库云原生构建设置。List pipeline settings.
GetPullRequestSettings查询仓库合并请求设置。List pull request settings.
GetPushLimitSettings查询仓库推送设置。List push limit settings.
ListBranchProtections查询仓库保护分支规则列表。List branch protection rules.
PatchBranchProtection更新仓库保护分支规则。Update branch protection rule.
PostBranchProtection新增仓库保护分支规则。Create branch protection rule.
PutPipelineSettings更新仓库云原生构建设置。Update pipeline settings.
PutPullRequestSettings更新仓库合并请求设置。Set pull request settings.
PutPushLimitSettings设置仓库推送设置。Set push limit settings.

issues 服务

接口描述
CanUserBeAssignedToIssue检查用户是否可以被添加到 issue 的处理人中。 Checks if a user can be assigned to an issue.
CreateIssue创建一个 Issue。Create an issue.
DeleteIssueAssignees删除 issue 中的处理人。 Removes one or more assignees from an issue.
DeleteIssueLabel删除 issue 标签。Remove a label from an issue.
DeleteIssueLabels清空 issue 标签。Remove all labels from an issue.
GetIssue查询指定的 Issues。Get an issue.
GetIssueComment获取指定 issue 评论。Get an issue comment.
GetIssueFiles获取 Issue 文件,返回文件二进制内容。Request to retrieve file of issues, returns binary content.
GetIssueImgs获取 Issue 图片,返回图片二进制内容。Request to retrieve image of issues, returns binary content.
GetIssueProperties查询指定Issue的自定义属性列表。Get issue custom properties.
ListIssueActivities查询指定 Issue 的 Timeline Activity
ListIssueActivitiesLatest查询某一动态之后的 Issue Activity
ListIssueAssignees查询指定 issue 的处理人。 List repository issue assignees.
ListIssueComments查询仓库的 issue 评论列表。List repository issue comments.
ListIssueLabels查询 issue 的标签列表。List labels for an issue.
ListIssues查询仓库的 Issues。List issues.
ListRepoInvisibleProperties查询仓库不可见的自定义属性列表。List repository invisible custom properties.
ListRepoVisibleProperties查询仓库可见的自定义属性列表。List repository visible custom properties.
ListUserIssues查询当前用户相关的 Issues。List issues for the authenticated user across all repositories.
PatchIssueAssignees更新 issue 中的处理人。 Updates the assignees of an issue.
PatchIssueComment修改一个 issue 评论。Update an issue comment.
PostIssueAssignees添加处理人到指定的 issue。 Adds up to assignees to a issue, Users already assigned to an issue are not replaced.
PostIssueComment创建一个 issue 评论。Create an issue comment.
PostIssueCommentFileAssetUploadURL创建一个 Issue 评论的文件上传 url。请使用 put 发起流式上传到 upload_url 地址。上传完成后将 asset_link 添加到创建评论请求的 body 中。 Create a file upload URL for an Issue comment. Please use put to initiate a stream upload to the upload_url address. After uploading, add the asset_link to the body of the create comment request.
PostIssueCommentImageAssetUploadURL创建一个 Issue 评论的图片上传 url。请使用 put 发起流式上传到 upload_url 地址。上传完成后将 asset_link 添加到创建评论请求的 body 中。Create an image upload URL for an Issue comment. Please use put to initiate a stream upload to the upload_url address. After uploading, add the asset_link to the body of the create comment request.
PostIssueLabels新增 issue 标签。Add labels to an issue.
PutIssueLabels设置 issue 标签。 Set the new labels for an issue.
UpdateIssue更新一个 Issue。Update an issue.
UpdateIssueProperties批量更新Issue自定义属性值

knowledgebase 服务

接口描述
DeleteKnowledgeBase删除知识库
GetKnowledgeBaseInfo获取知识库信息
GetModels获取当前支持的 Embedding 模型列表
QueryKnowledgeBase查询知识库,使用文档:https://docs.cnb.cool/zh/ai/knowledge-base.html
SearchNpc全局语义搜索 NPC 角色

members 服务

接口描述
AddMembersOfGroup添加成员。Add members.
AddMembersOfMission添加成员。Add members.
AddMembersOfRegistry添加成员。Add members.
AddMembersOfRepo添加成员。Add members.
DeleteMembersOfGroup删除指定组织的直接成员。Remove direct members from specified organization.
DeleteMembersOfRepo删除指定仓库的直接成员。Remove direct members from specified repository.
DeleteOutsideCollaborators删除指定仓库的外部贡献者。Removes external contributors from specified repository.
GetMemberAccessLevelOfGroup获取指定组织内, 访问成员在当前层级内的权限信息。Get permission information for accessing members at current level.
GetMemberAccessLevelOfRepo获取指定仓库内, 访问成员在当前层级内的权限信息。Get permission information for accessing members at current level.
ListAllMembers获取指定仓库内的有效成员列表,包含继承成员。List active members in specified repository including inherited members.
ListInheritMembersOfGroup获取指定组织的继承成员。List inherited members within specified organization
ListInheritMembersOfRepo获取指定仓库内的继承成员。List inherited members within specified repository。
ListMemberAccessLevelOfGroup获取指定组织内指定成员的权限信息, 结果按组织层级来展示, 包含上层组织的权限继承信息。Get specified member's permissions with organizational hierarchy.
ListMemberAccessLevelOfRepo获取指定仓库内指定成员的权限信息, 结果按组织层级来展示, 包含上层组织的权限继承信息。Get specified member's permissions with organizational hierarchy.
ListMembersOfGroup获取指定组织内的所有直接成员。List all direct members within specified organization.
ListMembersOfRepo获取指定仓库内的所有直接成员。List all direct members within specified repository.
ListOutsideCollaborators获取指定仓库内的外部贡献者。List external contributors in specified repository.
UpdateMembersOfGroup更新指定组织的直接成员权限信息。Update permission information for direct members in specified organization.
UpdateMembersOfRepo更新指定仓库内的直接成员权限信息。Update permission information for direct members in specified repository.
UpdateOutsideCollaborators更新指定仓库的外部贡献者权限信息。 Update permission information for external contributors in specified repository.

missions 服务

接口描述
CreateMission创建任务集。Create a mission.
DeleteMission删除指定任务集。Delete the specified mission.
GetGroupSubMissions查询组织下面用户有权限查看到的任务集。Query all missions that the user has permission to see under the specific organization.
GetMissionViewConfig查询任务集视图配置信息。Get mission view config.
GetMissionViewList获取任务集视图列表。Get view list of a mission.
PostMissionViewConfig设置任务集视图配置信息。Set mission view config.
PostMissionViewList排序任务集视图。Sort mission view list.
PutMissionViewList添加、修改任务集视图。Update a mission view or add a new one.
SetMissionVisibility改变任务集可见性。Update the visibility of a mission.

organizations 服务

接口描述
CreateOrganization创建新组织。Create new organization.
DeleteOrganization删除指定组织。Delete the specified organization.
GetGroup获取指定组织信息。Get information for the specified organization.
GetGroupSetting获取指定组织的配置详情。Get the configuration details for the specified organization.
GetGroupsByUserID获取指定用户拥有权限的顶层组织列表。 Get a list of top-level organizations that the specified user has permissions to access.
ListGroups查询当前用户在指定组织下拥有指定权限的子组织列表。Get the list of sub-organizations that the current user has access to in the specified organization.
ListSubgroups获取指定组织下的子组织列表。Get the list of sub-organizations under the specified organization.
ListTopGroups获取当前用户拥有权限的顶层组织列表。Get top-level organizations list that the current user has access to.
TransferGroup转移组织。Transfer an organization.
UpdateGroupSetting更新指定组织的配置。Updates the configuration for the specified organization.
UpdateOrganization更新组织信息, 可更新的内容为: 组织描述, 组织展示名称, 组织网站, 组织联系邮箱。Updates organization information including: description, display name, website URL and contact email.
UploadLogos发起一个上传 logo 的请求,返回上传文件的url,请使用 put 发起流式上传。Initiate a request to upload logo,returns upload URL.Use PUT to initiate a stream upload.

pulls 服务

接口描述
CanUserBeAssignedToPull检查用户是否可以被添加到合并请求的处理人中。 Checks if a user can be assigned to a pull request.
DeletePullAssignees删除合并请求中的处理人 Removes one or more assignees from a pull request.
DeletePullLabel删除合并请求标签。Remove a label from a pull.
DeletePullLabels清空合并请求标签。Remove all labels from a pull.
DeleteRepoFiles删除 UploadFiles 上传的附件
DeleteRepoImgs删除 UploadImgs 上传的图片
GetPrFiles获取合并请求文件,返回文件二进制内容。Request to retrieve file of pull requests, returns binary content.
GetPrImgs获取合并请求图片,返回图片二进制内容。Request to retrieve image of pull requests, returns binary content.
GetPull查询指定合并请求。Get a pull request.
GetPullComment获取一个合并请求评论。Get a pull comment.
ListPullAssignees查询指定合并请求的处理人。List repository pull request assignees.
ListPullComments查询合并请求评论列表。List pull comments requests.
ListPullCommitStatuses查询 Pull Request 的状态检查
ListPullCommits查询指定合并请求的提交列表。Lists the commits in a specified pull request.
ListPullFiles查询指定合并请求的文件列表。Lists the files in a specified pull request.
ListPullLabels查询指定合并请求的标签列表。List labels for a pull.
ListPullReviewComments查询指定合并请求评审评论列表。List pull review comments.
ListPullReviews查询特定合并请求的评审列表。List pull reviews.
ListPulls查询合并请求列表。List pull requests.
ListPullsByNumbers根据 number 列表查询合并请求列表。List pull requests by numbers.
MergePull合并一个合并请求。Merge a pull request.
PatchPull更新一个合并请求。Update a pull request.
PatchPullComment更新一个合并请求评论。Update a pull comment.
PostPull新增一个合并请求。Create a pull request.
PostPullAssignees添加处理人到指定的合并请求。 Adds up to assignees to a pull request. Users already assigned to an issue are not replaced.
PostPullComment新增一个合并请求评论。Create a pull comment.
PostPullLabels新增合并请求标签。Add labels to a pull.
PostPullRequestReviewReply回复一个 review 评审
PostPullReview新增一次合并请求评审。Create a pull review.
PutPullLabels设置合并请求标签。Set the new labels for a pull.
UploadFiles发起一个上传 files 的请求,返回上传文件的url,请使用 put 发起流式上传。Initiate a request to upload files,returns upload URL.Use PUT to initiate a stream upload.
UploadImgs发起一个上传 imgs 的请求,返回上传文件的url,请使用 put 发起流式上传。Initiate a request to upload images,returns upload URL.Use PUT to initiate a stream upload.

rank 服务

接口描述
GetLanguageList获取排行榜语言
GetRepoAnnualRank获取公仓年榜
GetRepoDailyRank获取公仓日榜
GetRepoMonthlyRank获取公仓月榜
GetRepoWeeklyRank获取公仓周榜

registries 服务

接口描述
DeletePackage删除制品。 Delete the specific package.
DeletePackageTag删除制品标签。 Delete the specific tag under specific package
DeleteRegistry删除制品库。Delete the registry.
GetGroupSubRegistries查询组织下面用户有权限查看到的制品仓库。Query all registries that the user has permission to see under specific organization.
GetPackage获取指定制品的详细信息。 Get the package detail.
GetPackageTagDetail获取制品标签详情。 Get the specific tag under specific package.
GetPackageTagProvenance获取制品标签的出生证明。 Get the specific tag provenance under specific package.
ListPackageTags查询制品标签列表。 List all tags under specific package.
ListPackages查询制品列表。 List all packages.
SetRegistryVisibility改变制品仓库可见性。Update visibility of registry.

releases 服务

接口描述
DeleteRelease删除指定的 release。Delete a release.
DeleteReleaseAsset删除指定的 release 附件 the specified release asset.
GetLatestRelease查询最新的 release。Query the latest release.
GetReleaseAsset查询指定的 release 附件 the specified release asset.
GetReleaseByID根据 id 查询指定 release, 包含附件信息。Get a release by id, include assets information.
GetReleaseByTag通过 tag 查询指定 release,包含附件信息。Get a release by tag, include assets information.
GetReleasesAsset发起一个获取 release 附件的请求, 302到有一定效期的下载地址。Get a request to fetch a release assets and returns 302 redirect to the assets URL with specific valid time.
ListReleases查询 release 列表。List releases.
PatchRelease更新 release。Update a release.
PostRelease新增一个 release。Create a release.
PostReleaseAssetUploadConfirmation确认 release 附件上传完成。Confirm release asset upload.
PostReleaseAssetUploadURL新增一个 release 附件。Create a release asset.

repocodeissue 服务

接口描述
GetCodeIssueDetailOpenAPI获取源码扫描问题详情
ListCodeIssueOpenAPI获取源码扫描问题列表

repocontributor 服务

接口描述
GetRepoContributorTrend查询仓库贡献者前 100 名的详细趋势数据。Query detailed trend data for top 100 contributors of the repository.

repolabels 服务

接口描述
DeleteLabel删除指定的仓库标签。Delete the specified repository label.
ListLabels查询仓库的标签列表。List repository labels.
PatchLabel更新标签信息。Update label information.
PostLabel创建一个 标签。Create a label.

repositories 服务

接口描述
ArchiveRepo仓库归档。Archive a repository.
CreateRepo创建仓库。Create repositories.
DeleteRepo删除指定仓库。Delete the specified repository.
GetByID获取指定仓库信息。Get information for the specified repository.
GetGroupSubRepos查询组织下访问用户有权限查看到仓库。List the repositories that the user has access to.
GetPinnedRepoByGroup获取指定组织的仓库墙列表。List the pinned repositories of a group.
GetPinnedRepoByID获取指定用户的用户仓库墙。 Get a list of repositories that the specified user has pinned.
GetRepos获取当前用户拥有指定权限及其以上权限的仓库。List repositories owned by the current user with the specified permissions or higher.
GetReposByUserName获取指定用户有指定以上权限并且客人态可见的仓库。List repositories where the specified user has the specified permission level or higher and are visible to guests.
ListForksRepos获取指定仓库的 fork 列表。Get fork list for specified repository.
SetPinnedRepoByGroup更新指定组织仓库墙。Update the pinned repositories of a group.
SetRepoVisibility改变仓库可见性。Update visibility of repository.
TransferRepo转移仓库。Transfer a repository.
UnArchiveRepo解除仓库归档。Unarchive a repository.
UpdateRepo更新仓库信息, 可更新的内容为: 仓库简介, 仓库站点, 仓库主题, 开源许可证。updates repository details including description, website URL,topics and license type.

search 服务

接口描述
ListPublicReposSearch resource with the key

security 服务

接口描述
GetRepoSecurityOverview查询仓库安全模块概览数据。Query the security overview data of a repository

starring 服务

接口描述
GetUserAllStaredRepos获取当前用户 star 的仓库列表。List all stared repositories.
GetUserStaredRepos获取指定用户的 star 仓库列表。Get the list of repositories starred by the specified user.
ListStarUsers获取指定仓库的star用户列表。Get the list of users who starred the specified repository.

users 服务

接口描述
AutoCompleteSource查询当前用户用户拥有指定权限的所有资源列表。List resources that the current user has specified permissions for.
GetUserInfo获取指定用户的详情信息。Get detailed information for a specified user.
GetUserInfoByName获取指定用户的详情信息。Get detailed information for a specified user.
ListEmail获取用户邮箱列表
ListGPGKeys获取用户 GPG keys 列表。List GPG Keys.
UpdateUserInfo更新指定用户的详情信息。Updates the specified user's profile information.

workspace 服务

接口描述
DeleteWorkspace删除我的云原生开发环境。Delete my workspace.
GetWorkspaceDetail根据流水线sn查询云原生开发访问地址。Query cloud-native development access address by pipeline SN.
ListWorkspaces获取我的云原生开发环境列表。List my workspaces.
StartWorkspace启动云原生开发环境,已存在环境则直接打开,否则重新创建开发环境。Start cloud-native dev. Opens existing env or creates a new one.
WorkspaceStop停止/关闭我的云原生开发环境。Stop/close my workspace.

使用指南

1. 获取访问令牌

在调用任何 API 之前,需要先获取有效的 CNB_TOKEN。

2. 构造请求

所有请求都需要包含以下基础头信息:

Accept: application/vnd.cnb.api+json
Authorization: Bearer $CNB_TOKEN

3. 处理响应

API 返回标准的 JSON 格式响应。请根据 HTTP 状态码判断请求是否成功:

  • 200: 请求成功
  • 400: 请求参数错误
  • 401: 未授权
  • 403: 禁止访问
  • 404: 资源不存在
  • 500: 服务器内部错误

调用示例

基础 GET 请求示例

bash
curl -w '%header{traceparent}' -X GET \
  "${CNB_API_ENDPOINT}/api/endpoint" \
  -H "Accept: application/vnd.cnb.api+json" \
  -H "Authorization: Bearer $CNB_TOKEN"

带参数的 POST 请求示例

bash
curl -w '%header{traceparent}' -X POST \
  "${CNB_API_ENDPOINT}/api/endpoint" \
  -H "Accept: application/vnd.cnb.api+json" \
  -H "Authorization: Bearer $CNB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'

注意事项

  1. 所有 API 调用都需要有效的认证令牌
  2. 请求和响应数据格式为 JSON
  3. 请根据具体 API 文档中的参数要求构造请求
  4. 建议在生产环境中添加适当的错误处理和重试机制

本文档基于 Swagger 文件自动生成:https://api.cnb.cool/swagger.json

由云锦鸿维护