创建 Dataphin 项目 Skill
1. Scenario Description
Dataphin 项目是数据开发工作的容器和起点,承载计算源、数据源、成员、任务、调度、发布和权限等后续配置。用户常见诉求包括创建 Basic 项目、创建 DevProd 项目、确认项目是否已存在、准备项目成员与白名单、或删除前检查项目是否存在依赖。
当前公开 dataphin-public CLI 仅覆盖项目查询、依赖校验、白名单与成员管理,不覆盖项目创建、更新、删除本体操作。因此本 Skill 的交付边界是:
- 需求拆解:整理项目名称、英文名、模式、业务板块、计算源、资源组、成员、白名单等创建参数。
- 公开前置检查:使用
list-projects/get-project-by-name/get-project判断项目是否存在,使用check-project-has-dependency做删除前保护,使用get-project-white-lists查询白名单。 - 能力边界提示:页面内部
/api/project/basic、/api/project/update、/api/project/{projectId}等 REST 只作业务语义参考,不作为外部命令入口。
Architecture:Tenant → Project Requirement → Public Project Query → Dependency / Whitelist Check → Public API Gap / Internal REST Reference
当前公开 OpenAPI 覆盖
ListProjects/GetProject/GetProjectByName— 查询项目列表、详情或按名称定位项目。CheckProjectHasDependency— 删除或迁移前检查项目是否被任务、模型、资产等对象依赖。GetProjectWhiteLists/ReplaceProjectWhiteLists— 查询或替换项目白名单。AddProjectMember/UpdateProjectMember/RemoveProjectMember/ListProjectMembers— 项目成员管理,主要由manage-project-member承接。
当前未公开的项目生命周期能力
- 创建 Basic 项目或 DevProd 项目。
- 更新项目基础信息或项目模式。
- 删除项目。
- 绑定计算源、资源组、开发/生产环境的完整创建链路。
2. Installation
aliyun plugin install --names aliyun-cli-dataphin-public
各操作系统一键安装脚本与版本要求详见 references/cli-installation-guide.md。
3. Environment Variables
凭证与环境变量由父 skill
alibabacloud-dataphin-skills统一声明并预检(父 §3 + §4 Authentication + §8 Step 0,先于路由到本 skill 执行);本 skill 不重复声明。
4. Authentication
Pre-check: Alibaba Cloud Credentials Required
Security Rules:
- NEVER 读取、回显或打印凭证环境变量
- NEVER ask the user to input AK/SK directly in the conversation or command line
- NEVER use
aliyun configure setwith literal credential values- ONLY use
aliyun configure listto check credential statusaliyun configure listCheck the output for a valid profile.
If no valid profile exists, STOP here.
Pre-check: Aliyun CLI >= 3.4.8 required
Run
aliyun versionto verify >= 3.4.8.
Pre-check: Aliyun CLI plugin update required
[MUST] run
aliyun configure set --auto-plugin-install trueto enable automatic plugin installation. [MUST] runaliyun plugin updateto ensure that any existing plugins are always up-to-date.
5. RAM Policy
最小权限策略详见 套件级 RAM 策略。
[MUST] Permission Failure Handling: When any command or API call fails due to permission errors at any point during execution, follow this process:
- Read
../../ram-policies.mdto get the full list of permissions required by this SKILL- Use
ram-permission-diagnoseskill to guide the user through requesting the necessary permissions- Pause and wait until the user confirms that the required permissions have been granted
6. Parameter Confirmation
IMPORTANT: Parameter Confirmation — Before executing any command or API call, ALL user-customizable parameters MUST be confirmed with the user. Do NOT assume or use default values without explicit user approval.
| 参数 | 必填 | 描述 | 默认值 |
|---|---|---|---|
--tenant-id |
是 | 租户 ID(大整数,建议字符串传) | — |
--project-name |
查询必填 | 项目英文名或项目名,用于 get-project-by-name |
— |
--project-id |
查询/依赖/白名单必填 | 项目 ID | — |
projectDisplayName |
创建参数清单必填 | 项目显示名 | — |
projectMode |
创建参数清单必填 | BASIC 或 DEV_PROD |
— |
bizUnitId |
创建参数清单必填 | 所属数据板块 ID | — |
computeEngineId |
创建参数清单必填 | 绑定计算源 ID | — |
resourceGroupId |
创建参数清单必填 | 调度资源组 ID | — |
memberList |
创建后配置可选 | 项目成员与角色,建议交给 manage-project-member |
— |
whiteList |
白名单场景可选 | 项目 IP 白名单或访问白名单,更新前需回读现有值 | — |
7. Observability (MUST follow for every aliyun command)
session-id 由父 skill alibabacloud-dataphin-skills 在套件入口加载时生成(32-char 小写 hex),本子 skill 加载时直接继承同一 session-id,不再重新生成。
Rule: Every aliyun CLI command that calls a cloud API MUST include the --user-agent flag.
Local utility commands (e.g. configure, plugin, version) do not support this flag and should be excluded.
--user-agent AlibabaCloud-Agent-Skills/create-project/{session-id}
Do not skip, alter the format, or omit --user-agent on any aliyun API command invocation.
8. Core Workflow
TENANT_ID="<大整数租户 ID,字符串>"
SESSION_ID="<inherited from alibabacloud-dataphin-skills>"
UA="AlibabaCloud-Agent-Skills/create-project/$SESSION_ID"
# 1) 先确认当前公开 CLI 是否已支持项目创建命令。
aliyun dataphin-public --help
# 2) 按名称查询项目,判断是否已存在。
aliyun dataphin-public get-project-by-name --tenant-id "$TENANT_ID" \
--project-name "<项目英文名>" \
--user-agent "$UA" --format json
# 3) 分页查询项目列表,辅助用户选择目标项目。
aliyun dataphin-public list-projects --tenant-id "$TENANT_ID" \
--page-no 1 --page-size 10 \
--user-agent "$UA" --format json
# 4) 按项目 ID 回读详情。
aliyun dataphin-public get-project --tenant-id "$TENANT_ID" \
--project-id "<项目ID>" \
--user-agent "$UA" --format json
# 5) 删除或迁移前检查依赖。
aliyun dataphin-public check-project-has-dependency --tenant-id "$TENANT_ID" \
--project-id "<项目ID>" \
--user-agent "$UA" --format json
# 6) 查询项目白名单。更新白名单是写操作,需单独 HITL 确认。
aliyun dataphin-public get-project-white-lists --tenant-id "$TENANT_ID" \
--project-id "<项目ID>" \
--user-agent "$UA" --format json
项目创建需求清单
当公开 CLI 缺少 create-project 时,Agent 必须输出以下需求清单,而不是调用内部 REST:
| 项 | 示例 | 说明 |
|---|---|---|
| 项目英文名 | dummy_practice_dev |
用 get-project-by-name 查重 |
| 项目显示名 | 达米零售实操_开发 |
面向页面展示 |
| 项目模式 | BASIC / DEV_PROD |
DevProd 通常涉及开发/生产双环境 |
| 所属数据板块 | bizUnitId |
项目归属的业务板块 |
| 计算源 | computeEngineId |
与项目执行引擎绑定 |
| 调度资源组 | resourceGroupId |
内部创建链路会查询可用资源组 |
| 成员与角色 | 项目管理员、开发者、访客 | 建议由 manage-project-member 承接 |
| 白名单 | IP / 网段列表 | 更新前必须回读并保留已有值 |
| 初始化后验证 | 列表/详情/成员/白名单 | 当前公开 CLI 可验证 |
执行前确认(写操作必备 / HITL)
当前公开 CLI 不支持项目创建 / 更新 / 删除,因此本 Skill 不发起这些写操作。
replace-project-white-lists是公开写命令,执行前必须二次确认旧白名单、新白名单、影响项目和回滚方案。
9. Success Verification
本 Skill 的成功标准不是“已创建项目”,而是完成外部能力范围内的安全交付:
- CLI 覆盖验证:
aliyun dataphin-public --help中未发现create-project/delete-project时,必须明确告知能力缺口。 - 项目查重验证:
get-project-by-name能定位已有项目,或返回不存在并形成创建需求清单。 - 列表验证:
list-projects可分页返回项目列表。 - 详情验证:
get-project可按 ID 回读项目信息。 - 依赖验证:
check-project-has-dependency可在删除/迁移前判断项目依赖。 - 白名单验证:
get-project-white-lists可回读项目白名单;更新白名单必须 HITL。 - 边界验证:不把内部
/api/project/...REST、录制用例或页面接口伪装成公开 CLI 命令。
10. Cleanup
本 Skill 当前不执行项目创建 / 删除写操作,因此不会产生项目资源。
如果未来公开 API 支持创建项目,清理顺序必须是:下线并删除项目内任务、模型、资源文件和发布对象 → 移除或回滚项目成员与白名单 → 检查 check-project-has-dependency → 删除项目。DevProd 模式需要分别关注 DEV / PROD 环境对象。
11. Command Tables
详见 references/related-commands.md。
12. Best Practices
- 项目创建是所有数据开发 Skill 的前置依赖,但当前公开 CLI 不支持直接创建项目。
- 先用
get-project-by-name查重,避免重复申请同名项目。 - 项目模式必须由用户确认:Basic 与 DevProd 的资源、成员、发布链路和清理口径不同。
- 删除或迁移前必须先做依赖校验,存在任务、模型、资源或发布对象时不能直接删除。
- 白名单更新需先回读旧值并合并,禁止用空列表或单个新值覆盖未知存量。
- 页面内部 REST 可作为业务理解参考,外部执行必须使用公开 OpenAPI。
✗ 平台限制:当前无公开项目创建 CLI
- 限制描述:
/api/project/basic、/api/project/update、DELETE /api/project/{projectId}等项目生命周期接口存在于 autotest/页面内部 REST 语义中,但未在当前公开dataphin-publicCLI 暴露为create-project、update-project、delete-project。 - 替代方案:完成项目创建需求清单和公开前置检查,等待公开 OpenAPI 或由具备内部系统权限的流程执行。
常见坑
[Agent 自主发现] 把内部 REST 当成外部命令
- 现象:autotest 中有
/api/project/basic,但aliyun dataphin-public --help中没有create-project。 - 结论:外部 Skill 不能伪造内部 REST 入口;必须明确能力缺口。
[Agent 自主发现] DevProd 与 Basic 项目模式混淆
- 现象:用户只说“创建项目”,但未说明项目模式。
- 结论:必须确认 Basic / DevProd;DevProd 涉及开发和生产双环境,后续发布、成员和清理口径不同。
[Agent 自主发现] 删除项目前未做依赖检查
- 现象:项目内仍有任务或模型时尝试删除。
- 结论:必须先用
check-project-has-dependency或等价依赖检查确认无依赖,再考虑删除。
Reference Links
- references/cli-installation-guide.md
- 套件级 RAM 策略
- references/acceptance-criteria.md
- references/related-commands.md