⚠️ 执行方法(必读):此技能通过本地 Python 或 Node.js 脚本(位于
scripts/目录下)执行查询。禁止直接使用 API 调用。
- 查询脚本位于技能目录下的
scripts/目录中(例如scripts/ges_graph_skill.py)- 所有脚本和环境检查脚本都位于技能包内。必须使用
skill action=exec执行它们;不要直接在 shell 中运行- 优先使用内联执行(
python -c或node -e),而不是创建临时脚本文件。请参阅下面的“内联执行(无临时文件)”部分。- 所有路径均相对于技能目录,即此 SKILL.md 文件所在的目录
GES 图访问指南
概述
华为云图引擎服务(GES)持久化版本的原子能力,为图数据库操作提供访问指南。 涵盖 Cypher 查询、GQL 查询、Schema/标签管理、摘要信息查询、图数据编辑等核心能力。
目录结构
目录约定如下(所有路径均相对于技能目录):
scripts/- 包含 Python 和 Node.js 执行脚本ges_graph_skill.py- GES 图操作的 Python SDKges_graph_skill.js- GES 图操作的 Node.js SDK
references/- 包含文档和配置示例ges_env.csv.example- 环境配置模板cypher-gql-guide.md- 完整的 Cypher/GQL 使用指南(示例、表格、内联执行)cli-installation-guide.md- 运行时(Python/Node.js)安装和配置指南iam-policies.md- 适用于 GES/OBS 的最小 IAM 权限策略verification-method.md- 验证步骤和检查清单acceptance-criteria.md- 验收标准(通过/失败阈值)user-guide-authentication.md- IAM Token 方法和 GitCode API Token 认证chaining-protocol.md- 统一结果封装和链式调用约定
前提条件
使用此技能前,请确保满足以下条件:
1. 运行时环境
支持 Python 或 Node.js 运行时。 需要 Python 3.8+ 或 Node.js 14+。
Python 依赖:requests(pip install requests)。可选地,可以安装 huaweicloudsdkges
(pip install huaweicloudsdkges)以使用 SDK 级别的调用(问题 ISSUE-013);
此技能通过其内置的 HTTP 客户端可以在没有该依赖的情况下正常工作。对于 Node.js,无需外部
npm 包(仅使用标准库 https/http)。
2. 图实例配置
此技能同时支持环境变量和配置文件。环境变量优先于配置文件。
环境变量和参数
| 环境变量 | 描述 | 是否必需 |
|---|---|---|
GES_GRAPH_IP | GES 服务 IP | 是 |
GES_GRAPH_PORT | GES 服务端口 | 是 |
GES_PROJECT_ID | 项目 ID | 是 |
GES_GRAPH_NAME | 图名称 | 是 |
GES_IAM_URL | IAM 服务 URL | 是 |
GES_REGION | 区域 | 是 |
HUAWEI_CLOUD_AK | 访问密钥 | 是* |
HUAWEI_CLOUD_SK | 秘密密钥 | 是* |
GES_USERNAME | 用户名 | 有条件** |
GES_PASSWORD | 密码 | 有条件** |
GES_DOMAIN_NAME | 域名 | 有条件** |
GES_TOKEN | Token(最高优先级) | 可选 |
- AK/SK 必需用于 AKSK 认证。 ** 用户名/密码有条件地必需当 AKSK 不可用时。
配置文件 (config/ges_env.csv)
配置文件路径:config/ges_env.csv
| 配置项 | 描述 | 是否必需 | 示例值 |
|---|---|---|---|
| graph_ip | GES 服务 IP | 是 | 100.95.xxx.xxx |
| graph_port | GES 服务端口 | 是 | 80 |
| project_id | 项目 ID | 是 | your_project_id |
| graph_name | 图名称 | 是 | your_graph_name |
| iam_url | IAM 服务 URL | 是 | (参见下面的区域表) |
| access_key | 访问密钥 | 是* | your_access_key |
| secret_key | 秘密密钥 | 是* | your_secret_key |
| username | 用户名 | 有条件** | your_username |
| password | 密码 | 有条件** | your_password |
| domain_name | 域名 | 有条件** | your_domain_name |
| region | 区域 | 是 | cn-north-4 |
- access_key/secret_key 必需用于 AKSK 认证。 ** username/password/domain_name 有条件地必需当 AKSK 不可用时。
各区域 IAM URL
| 区域 | URL | 协议 |
|---|---|---|
| cn-north-4 | iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens | HTTPS |
| ap-southeast-1 | iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens | HTTPS |
支持三种方法(优先级从高到低):
- 环境变量
GES_TOKEN - AKSK 方法(
HUAWEI_CLOUD_AK+HUAWEI_CLOUD_SK或access_key+secret_key) - 密码方法(用户名 + 密码 + 域名)
⛔ 禁止操作(安全护栏)
本技能在代码层强制执行安全护栏(问题 ISSUE-002),不止于文档约束:
scripts/ges_graph_skill.py/ges_graph_skill.js中的validateCypher()会拦截未限定的全量删除/清空语句(如MATCH (n) DETACH DELETE n、MATCH ()-[r]->() DELETE r、DROP ALL等);- 定向增删改(带
WHERE ... id(n)=...或element_id(...))不受影响;- 所有属性值仅允许 JSON 标量(str/int/float/bool/None),拒绝 dict/list/bytes;
- 若确有全量清空需求,请走
clear_graph()(或clearGraph())专用接口, 并先取得用户明确确认,再以allow_destructive=True放行。
| 禁止操作 | 描述 | 原因 |
|---|---|---|
| ❌ 打印敏感凭证 | 打印 AK/SK、密码、令牌或其他敏感信息 | 敏感信息泄露风险 |
以下高风险操作在执行前需要 agent 明确确认:
| 高风险操作 | 描述 | 确认提示 |
|---|---|---|
| ⚠️ 清除所有图数据 | clear_graph() 或类似的清除操作 |