@alipay/alipay-aipay 1.6.9-beta1 → 1.6.9-beta3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skill/VERSION +1 -1
- package/skill/references/integration/flow.md +35 -35
- package/skill/references/integration/modules/product-decision.md +1 -1
- package/skill/references/integration/modules/sandbox/a2m-sandbox-test.md +12 -12
- package/skill/references/integration/modules/sandbox/sandbox-setup-guide.md +4 -4
- package/skill/references/normal/alipay-cli-env.md +2 -2
- package/skill/references/normal/full-process-routing.md +9 -9
- package/skill/references/normal/integration-worker.md +6 -3
- package/skill/references/normal/rejection-guide.md +1 -1
- package/skill/references/normal/scripts/agent_platform.mjs +11 -0
- package/skill/references/normal/scripts/common.sh +8 -7
- package/skill/references/normal/scripts/detect_dev_tool.sh +43 -21
- package/skill/references/normal/scripts/runtime.mjs +2 -2
- package/skill/references/normal/scripts/telemetry.mjs +83 -34
- package/skill/references/normal/telemetry.md +6 -4
- package/skill/references/onboarding/flow.md +54 -54
- package/skill/references/onboarding/modules/app-release.md +5 -5
- package/skill/references/onboarding/modules/service-registration.md +3 -3
- package/skill/references/runtime-entry.md +24 -12
package/package.json
CHANGED
package/skill/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.6.9-
|
|
1
|
+
1.6.9-beta3
|
|
@@ -86,11 +86,11 @@
|
|
|
86
86
|
- 新项目:Agent 确定 `PROJECT_PATH`,`PROJECT_INPUT` 保留原话;runner 只调用 `prepare-new`,缺 `--project-path` 则未解析,禁止从原话猜测路径。默认新建由 Agent 选用户目录下 `alipay-aipay-projects/pay-demo`,非空占用则加安全后缀,并显式传入。仅退出码 0 且唯一 JSON 满足 `projectSelection/projectOrigin=NEW_PROJECT`、`projectOriginLabel=本轮新建项目`、`preparationStatus=READY` 才继续,并确认目标或最近父目录可写。路径非空、预检/权限失败时保留内容并改选空或不存在目录,禁止清空/覆盖。服务端语言缺失才补问;框架使用下方 runner。创建命令只来自用户指定、已有模板/项目或本轮已读官方文档,禁用覆盖选项和臆造脚手架。初始化并完成步骤 1 后转为 `PREPARED_NEW_PROJECT`,重入按现有项目重扫。
|
|
87
87
|
|
|
88
88
|
```bash
|
|
89
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message resolve-project --project-input "$PROJECT_INPUT" --project-path "$PROJECT_PATH" --base-path "$USER_WORKSPACE_ROOT" --intent new --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>"
|
|
89
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message resolve-project --project-input "$PROJECT_INPUT" --project-path "$PROJECT_PATH" --base-path "$USER_WORKSPACE_ROOT" --intent new --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
```bash
|
|
93
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message resolve-project --project-input "$PROJECT_INPUT" --project-path "$PROJECT_PATH" --base-path "$USER_WORKSPACE_ROOT" --intent existing --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>"
|
|
93
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message resolve-project --project-input "$PROJECT_INPUT" --project-path "$PROJECT_PATH" --base-path "$USER_WORKSPACE_ROOT" --intent existing --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
94
94
|
```
|
|
95
95
|
- 项目准备失败时停留在步骤 1 前置准备,输出实际错误和待补条件;不得进入沙箱准备。目标项目准备成功后记录实际根目录,步骤 1、步骤 3 的沙箱配置和后续代码必须落入该项目;沙箱配置不得降级写入系统临时目录、Agent 原始工作目录或其他项目。
|
|
96
96
|
|
|
@@ -99,7 +99,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message res
|
|
|
99
99
|
**启动前上下文补问**:缺少项目位置或服务端语言时,必须从本 flow 所在目录执行下列标准消息,一次补齐;只缺少新项目精确位置时仍使用上方 `integration.project_path.required`。框架缺失本身不触发补问。禁止使用 AskUserQuestion、request_user_input、宿主超时默认值、Agent 自创选项或自由话术替代;用户未明确补齐前不得创建目录、初始化项目、安装依赖或修改文件。
|
|
100
100
|
|
|
101
101
|
```bash
|
|
102
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message context-required --missing-items "$MISSING_ITEMS" --agent-platform "<AGENT_PLATFORM>"
|
|
102
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message context-required --missing-items "$MISSING_ITEMS" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
103
103
|
```
|
|
104
104
|
|
|
105
105
|
`MISSING_ITEMS` 只允许由 `项目路径`、`技术栈` 按缺失项用顿号连接生成,其中 `技术栈` 只在服务端语言无法确定时缺失,不因框架未知而出现。产品不明确时使用 `product.clarify`,不得混入本消息。该消息必须把 stdout 原文作为当前回复正文发给用户,发出后立即停止并等待用户自由回复;用户回复后重新计算缺失项,不得靠超时或默认值推进。用户回复“当前项目”、相对路径或新建子目录时,先执行 `resolve-project` 得到规范化绝对路径和 `projectSelection`,再进入后续检查器、沙箱准备和启动方案展示;相对路径必须位于 `--base-path` 内,目录外项目必须由用户提供绝对路径。
|
|
@@ -107,11 +107,11 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message con
|
|
|
107
107
|
项目路径与服务端语言确定后,初始化新项目或展示方案前必须执行一次框架解析。用户未明确框架时使用第一条;用户明确指定 Django、NestJS 等框架时使用第二条并以用户值优先:
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message framework-resolve --project-selection "$PROJECT_SELECTION" --project-path "$PROJECT_PATH" --language "$SERVER_LANGUAGE" --agent-platform "<AGENT_PLATFORM>"
|
|
110
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message framework-resolve --project-selection "$PROJECT_SELECTION" --project-path "$PROJECT_PATH" --language "$SERVER_LANGUAGE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
```bash
|
|
114
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message framework-resolve --project-selection "$PROJECT_SELECTION" --project-path "$PROJECT_PATH" --language "$SERVER_LANGUAGE" --framework "$USER_FRAMEWORK" --agent-platform "<AGENT_PLATFORM>"
|
|
114
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message framework-resolve --project-selection "$PROJECT_SELECTION" --project-path "$PROJECT_PATH" --language "$SERVER_LANGUAGE" --framework "$USER_FRAMEWORK" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
115
115
|
```
|
|
116
116
|
|
|
117
117
|
只接受退出码 0 和唯一 JSON 中规范化后的 `language`、非空 `framework`、合法 `frameworkSource=EXPLICIT|DEFAULT_NEW_PROJECT|PROJECT_INFERRED|PROJECT_STRUCTURE_FALLBACK`;该 JSON 是内部机器事实,不对客展示。`NEW_PROJECT|PREPARED_NEW_PROJECT` 默认固定为 Java / Spring Boot、PHP / Laravel、Python / FastAPI、C# / ASP.NET Core、Node.js / Express。`CURRENT_PROJECT|OTHER_PROJECT` 先从当前项目依赖标记推导;无法推导时固定为 `沿用现有项目结构`,表示不迁移现有框架,不阻止继续。得到的 `FRAMEWORK` 和 `FRAMEWORK_SOURCE` 必须贯穿项目初始化和同一次 `start-confirm`,不得由 Agent 二次猜测或改写;`start-confirm` 会复核非 `EXPLICIT` 来源仍与当前项目事实一致。
|
|
@@ -119,14 +119,14 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message fra
|
|
|
119
119
|
用户回复“不知道项目在哪”“帮我找项目”、提供子目录但该目录不是项目根,或当前目录解析失败且需要候选时,从本 flow 所在目录执行下列轻量定位命令。`SEARCH_INPUT` 取用户给出的搜索范围;未给出时固定为 `当前目录`。该命令只查找项目标记文件并跳过常见重目录,不扫描源码内容;stdout 是本动作唯一对客消息,发出后立即停止并等待用户选择候选序号、具体目录或新建目录。用户选择候选后,仍必须再执行 `resolve-project --intent existing` 取得规范化绝对路径;候选列表不能直接替代项目确认。
|
|
120
120
|
|
|
121
121
|
```bash
|
|
122
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message locate-projects --base-path "$USER_WORKSPACE_ROOT" --search-input "$SEARCH_INPUT" --format message --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>"
|
|
122
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message locate-projects --base-path "$USER_WORKSPACE_ROOT" --search-input "$SEARCH_INPUT" --format message --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
123
123
|
```
|
|
124
124
|
|
|
125
125
|
**破坏性操作二次确认**:本支付产品-代码开发流程本身不得删除用户既有文件。用户另行主动要求删除具体文件时,先停止代码开发,列出每个精确规范化路径和不可逆影响,再在独立轮次等待用户逐项确认该清单;此前的项目/技术栈补充、代码开发方案展示、服务声明送达及任何含糊回复均无效。未取得二次明确确认时严禁调用删除、清空、强制覆盖或等价命令;即使确认,也禁止删除项目根目录、`.git`、使用通配符或触及清单外文件。
|
|
126
126
|
|
|
127
127
|
**执行边界**:本流程只操作用户当前确认的项目路径、语言、框架、产品和范围。步骤 1 只使用项目路径和语言,不依赖产品;步骤 2 后的代码修改才依赖已确认产品。沙箱配置与测试结论来自本轮实际脚本结果,不得被 onboarding 的正式 `appId`、支付宝公钥或 `productionServiceId` 覆盖。
|
|
128
128
|
|
|
129
|
-
项目路径和技术栈已由 runner 唯一解析后,执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration prepare --agent-platform "<AGENT_PLATFORM>"`;不得提前读取步骤 1/2。
|
|
129
|
+
项目路径和技术栈已由 runner 唯一解析后,执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration prepare --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`;不得提前读取步骤 1/2。
|
|
130
130
|
|
|
131
131
|
---
|
|
132
132
|
|
|
@@ -147,17 +147,17 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message loc
|
|
|
147
147
|
**执行规则**:
|
|
148
148
|
|
|
149
149
|
1. 只确认创建和保存沙箱所需的目标项目路径、服务端语言与操作系统;不得为了创建匿名沙箱先要求用户确定支付产品。缺少多个字段时使用“启动前上下文补问”的固定标准消息一次补齐;字段已能从用户输入和项目事实确定时,不发送环境、项目识别或准备进度消息。
|
|
150
|
-
2. Unix/macOS/Linux 从本 flow 目录执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" env integration-check --agent-platform "<AGENT_PLATFORM>"`;Windows 执行同一命令。该入口在检查开始时记录环境检查事实,不单独上报 telemetry stage。Windows 只检查本 Integration Node runner 所需运行时,不要求 Bash、jq 或当前流程不会调用的 alipay-cli。唯一 `CLI_ENV:READY` 时继续且不读取完整安装文档。`CLI_ENV:NEEDS_SETUP` 时才读取 `../normal/alipay-cli-env.md`:若唯一 `CLI_ENV_MISSING` 包含 `jq`,先以所需网络和 `~/.local/bin` 写权限执行一次 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" env prepare-jq --agent-platform "<AGENT_PLATFORM>"`;唯一 `ALIPAY_AIPAY_INTERNAL:JQ_PREPARE=READY` 后原样重跑 `env integration-check`。`FAILED|UNSUPPORTED`,或 `READY` 后复检仍缺 jq 时,由 Agent 按环境文档执行当前系统首选包管理器兜底并再次复检;macOS 必须从清华镜像开始,明确失败后才依次选择阿里云、中科大和直连,不并发、不回到 `prepare-jq` 循环。其他缺失项仍按当前系统分支补齐,完成后重跑检查;不得重复执行 `prepare-jq` 或新增业务确认点。其他输出、非 0 或 marker 冲突停在本步骤。
|
|
150
|
+
2. Unix/macOS/Linux 从本 flow 目录执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" env integration-check --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`;Windows 执行同一命令。该入口在检查开始时记录环境检查事实,不单独上报 telemetry stage。Windows 只检查本 Integration Node runner 所需运行时,不要求 Bash、jq 或当前流程不会调用的 alipay-cli。唯一 `CLI_ENV:READY` 时继续且不读取完整安装文档。`CLI_ENV:NEEDS_SETUP` 时才读取 `../normal/alipay-cli-env.md`:若唯一 `CLI_ENV_MISSING` 包含 `jq`,先以所需网络和 `~/.local/bin` 写权限执行一次 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" env prepare-jq --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`;唯一 `ALIPAY_AIPAY_INTERNAL:JQ_PREPARE=READY` 后原样重跑 `env integration-check`。`FAILED|UNSUPPORTED`,或 `READY` 后复检仍缺 jq 时,由 Agent 按环境文档执行当前系统首选包管理器兜底并再次复检;macOS 必须从清华镜像开始,明确失败后才依次选择阿里云、中科大和直连,不并发、不回到 `prepare-jq` 循环。其他缺失项仍按当前系统分支补齐,完成后重跑检查;不得重复执行 `prepare-jq` 或新增业务确认点。其他输出、非 0 或 marker 冲突停在本步骤。
|
|
151
151
|
3. Unix/macOS/Linux 从本 flow 所在的 `references/integration/` 目录执行唯一准备入口:
|
|
152
152
|
|
|
153
153
|
```bash
|
|
154
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" sandbox ensure "<规范化项目路径>" "<已确认服务端语言>" [--telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT"] --agent-platform "<AGENT_PLATFORM>"
|
|
154
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" sandbox ensure "<规范化项目路径>" "<已确认服务端语言>" [--telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT"] --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
155
155
|
```
|
|
156
156
|
|
|
157
157
|
4. Windows 不调用快速沙箱脚本。普通代码开发或完整接入请求没有明确要求当前配置沙箱时,不展示申领消息、不补问,直接记录 `sandboxConfigState=VERIFY_PENDING` 并继续步骤 2。只有用户明确要求现在配置/恢复 Windows 沙箱时,才执行下列既有标准消息 `sandbox.windows.manual_setup`;该消息使用自由资料回复,不要求用户输入 `1` 或自行执行脚本。随后只处理用户针对本轮该消息提供的资料:完整有效时写入目标项目的受保护本机配置并记录 `READY`,部分或错误时使用既有受控失败分支补问实际缺失/错误字段:
|
|
158
158
|
|
|
159
159
|
```bash
|
|
160
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message windows-sandbox-setup --agent-platform "<AGENT_PLATFORM>"
|
|
160
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message windows-sandbox-setup --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
161
161
|
```
|
|
162
162
|
|
|
163
163
|
资料校验通过后必须建立适用的版本控制忽略和访问保护。该例外只适用于当前沙箱资料;生产环境应用私钥和密码禁止提供给 Agent。Agent 不得在回复、摘要或普通日志中复述收到的值。
|
|
@@ -198,7 +198,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message win
|
|
|
198
198
|
`ROOT_INTENT` 取当前路线的根意图,只能是 `integration_only` 或 `full_process`。
|
|
199
199
|
|
|
200
200
|
```bash
|
|
201
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message start-confirm --root-intent "$ROOT_INTENT" --product-type "$PRODUCT_TYPE" --product-name "$PRODUCT_NAME" --project-path "$PROJECT_PATH" --project-selection "$PROJECT_SELECTION" --language "$SERVER_LANGUAGE" --framework "$FRAMEWORK" --framework-source "$FRAMEWORK_SOURCE" --agent-platform "<AGENT_PLATFORM>"
|
|
201
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message start-confirm --root-intent "$ROOT_INTENT" --product-type "$PRODUCT_TYPE" --product-name "$PRODUCT_NAME" --project-path "$PROJECT_PATH" --project-selection "$PROJECT_SELECTION" --language "$SERVER_LANGUAGE" --framework "$FRAMEWORK" --framework-source "$FRAMEWORK_SOURCE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
202
202
|
```
|
|
203
203
|
|
|
204
204
|
若 bootstrap 尚未创建正式 run,本命令在任何 Integration 业务 stage 前原子创建 run 和 `clarify_intent`,并输出后续唯一使用的 `RUN_ID` marker;触发本命令的首条消息不计入新 run。已有同组合 active run 时只复用 marker。步骤 3 之后所有能生成 stage 的登记命令都必须携带当前 telemetry context;runner 已生成 stage 后 Agent 禁止重复调用 `telemetry stage`。
|
|
@@ -239,7 +239,7 @@ runner 失败时不得展示手写方案或进入步骤 3。成功时必须取
|
|
|
239
239
|
4. Unix/macOS/Linux 仅在 `sandboxConfigState=READY` 时执行以下唯一复核命令,不先检查文件、不读取字段、不运行其他诊断:
|
|
240
240
|
|
|
241
241
|
```bash
|
|
242
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" sandbox reverify "<规范化项目路径>" "<已确认服务端语言>" --telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT" --agent-platform "<AGENT_PLATFORM>"
|
|
242
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" sandbox reverify "<规范化项目路径>" "<已确认服务端语言>" --telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
243
243
|
```
|
|
244
244
|
|
|
245
245
|
5. `reverify` 只接受与步骤 1 相同的三个互斥终态。`READY` 更新 `sandboxConfigState=READY` 并立即进入步骤 4;`VERIFY_PENDING` 已由脚本输出唯一待配置正文,更新状态后立即进入步骤 4。`reverify` 不允许创建分支,若异常出现 `CREATED|CREATE_PENDING` 标记必须按协议失败停止。所有终态之后禁止追加任何 `jq`、`cat`、`grep`、`ls`、`stat` 或临时脚本。
|
|
@@ -251,7 +251,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" sandbox reverify "<规
|
|
|
251
251
|
|
|
252
252
|
**任务**:阅读 SDK 要点、本地契约和当前语言示例
|
|
253
253
|
|
|
254
|
-
读取本地依据前执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-context resolve --product-type "$PRODUCT_TYPE" --server-language "$SERVER_LANGUAGE" --agent-platform "<AGENT_PLATFORM>"`。只接受唯一 `ALIPAY_AIPAY_INTERNAL:INTEGRATION_CONTEXT=<json>`,并在本步骤只读取其中 `sdk_reference`、`contracts` 和 `examples` 列出的当前产品/语言开发依据;`sandbox_acceptance` 只保存路径事实并延迟到步骤 6,`checklist.delivery_phase=checklist` 及章节名只保存交付事实,具体内容由步骤 8 loader 直接附带,禁止在本步骤提前读取。缺失、重复、路径不存在或产品/语言不一致时停止,不回退到跨产品预读;后续阶段复用同一 envelope,不重复执行 `integration-context resolve`。
|
|
254
|
+
读取本地依据前执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-context resolve --product-type "$PRODUCT_TYPE" --server-language "$SERVER_LANGUAGE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`。只接受唯一 `ALIPAY_AIPAY_INTERNAL:INTEGRATION_CONTEXT=<json>`,并在本步骤只读取其中 `sdk_reference`、`contracts` 和 `examples` 列出的当前产品/语言开发依据;`sandbox_acceptance` 只保存路径事实并延迟到步骤 6,`checklist.delivery_phase=checklist` 及章节名只保存交付事实,具体内容由步骤 8 loader 直接附带,禁止在本步骤提前读取。缺失、重复、路径不存在或产品/语言不一致时停止,不回退到跨产品预读;后续阶段复用同一 envelope,不重复执行 `integration-context resolve`。
|
|
255
255
|
|
|
256
256
|
本步骤只加载和核对代码开发依据;成功时不发送“文档已读取”“准备完成”等对客进度,直接进入步骤 5。本地依据缺失时输出实际缺口,禁止猜测。在线文档只在 fallback 条件下读取,不作为默认必读材料。
|
|
257
257
|
|
|
@@ -288,7 +288,7 @@ curl -sL "<当前契约 sourceUrl 中的官方页面>"
|
|
|
288
288
|
| 6 | 遇到 `invalid-signature` 报错 | 严禁凭猜测归因到私钥格式;先核对实际发送、参与签名和服务端验签的参数是否完全一致 |
|
|
289
289
|
| 7 | 配置接入后必须后置校验 | Unix/macOS/Linux 必须确认服务端加载器直接读取已验证文件、字段映射正确且 SDK 配置匹配;Windows 必须确认项目读取同一套本机沙箱应用配置;失败时禁止继续联调 |
|
|
290
290
|
|
|
291
|
-
步骤 4 的本地依据全部取得后,执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration implementation --product-type "$PRODUCT_TYPE" --agent-platform "<AGENT_PLATFORM>"` 加载步骤 5;不得直接读取后续整段 flow。
|
|
291
|
+
步骤 4 的本地依据全部取得后,执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration implementation --product-type "$PRODUCT_TYPE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"` 加载步骤 5;不得直接读取后续整段 flow。
|
|
292
292
|
|
|
293
293
|
---
|
|
294
294
|
|
|
@@ -315,7 +315,7 @@ curl -sL "<当前契约 sourceUrl 中的官方页面>"
|
|
|
315
315
|
|
|
316
316
|
**Node.js 项目前置核对**:目标语言为 Node.js 时,生成或修改代码前必须先读取目标项目 `package.json`,确认 `type`、启动脚本、已安装依赖和框架版本;安装或发现 `alipay-sdk` 后,必须按 `modules/alipay-sdk-reminder.md` 读取实际 `node_modules/alipay-sdk/package.json` 与类型定义来确定导入方式、`pageExec`/`sdkExecute`/`checkNotifySign` 等方法名。不得凭本地示例中的 `require`/`import` 行、历史记忆或其他项目版本推断当前项目写法。
|
|
317
317
|
|
|
318
|
-
代码修改完成后,执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration verification --product-type "$PRODUCT_TYPE" --agent-platform "<AGENT_PLATFORM>"` 加载配置后置校验;不得把代码写入直接当作验证通过。
|
|
318
|
+
代码修改完成后,执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration verification --product-type "$PRODUCT_TYPE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"` 加载配置后置校验;不得把代码写入直接当作验证通过。
|
|
319
319
|
|
|
320
320
|
<!-- ALIPAY_AIPAY_FLOW:INTEGRATION_IMPLEMENTATION:END -->
|
|
321
321
|
|
|
@@ -331,7 +331,7 @@ curl -sL "<当前契约 sourceUrl 中的官方页面>"
|
|
|
331
331
|
**沙箱摘要展示入口**:只有 `sandboxConfigState=READY`、本步骤的代码实现和支付配置后置校验都已完成,才允许对客展示沙箱环境配置。待配置状态跳过本入口,不另写摘要或失败话术。Unix/macOS/Linux 从本 flow 所在目录执行:
|
|
332
332
|
|
|
333
333
|
```bash
|
|
334
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" sandbox summary "<productType>" "<规范化项目路径>" "<已确认服务端语言>" --agent-platform "<AGENT_PLATFORM>"
|
|
334
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" sandbox summary "<productType>" "<规范化项目路径>" "<已确认服务端语言>" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
335
335
|
```
|
|
336
336
|
|
|
337
337
|
该命令 stdout 只渲染 `sandbox.environment.summary` 与 `sandbox.environment.reminder`;命令必须产生唯一 `ALIPAY_AIPAY_INTERNAL:CUSTOMER_MESSAGE_DELIVERY_REQUIRED=sandbox.environment.summary`,带 `ALIPAY_AIPAY_INTERNAL:` 前缀的配置路径和 `FLOW:SANDBOX_CONFIGURED` 只用于流程转移,严禁对客。命令返回后下一动作必须将剔除内部行后的 stdout 原文独立送达,再进入后续沙箱测试或付款体验;不得把工具面板输出或自写摘要当作已送达。命令不重新创建沙箱,不调用 `createAnonymousSandbox`。`productType` 只能来自步骤 2 已确认的 `aipay|webpay|apppay`;配置路径和语言必须与步骤 1/3 一致。摘要展示失败时不得进入沙箱测试或付款体验,也不得改用 Agent 自写表格。
|
|
@@ -339,7 +339,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" sandbox summary "<produ
|
|
|
339
339
|
Windows 从项目实际读取的同一本机配置构造不含密码和密钥原文的 `ENVIRONMENT_ROWS`,再从本 flow 所在目录执行以下固定命令;不得重新索取或复述步骤 1 已提供的敏感值,也不得改用 Unix 快速沙箱脚本:
|
|
340
340
|
|
|
341
341
|
```powershell
|
|
342
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message windows-sandbox-summary --product-name "$PRODUCT_NAME" --config-path "$CONFIG_PATH" --environment-rows "$ENVIRONMENT_ROWS" --telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT" --agent-platform "<AGENT_PLATFORM>"
|
|
342
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message windows-sandbox-summary --product-name "$PRODUCT_NAME" --config-path "$CONFIG_PATH" --environment-rows "$ENVIRONMENT_ROWS" --telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
343
343
|
```
|
|
344
344
|
|
|
345
345
|
Windows 的 `CONFIG_PATH` 必须是步骤 1/3 已校验的实际本机配置绝对路径;`ENVIRONMENT_ROWS` 只包含实际取得的非敏感应用、商家、买家和沙箱标识,缺失可选项直接省略。两个 renderer 任一失败都按摘要展示失败处理,禁止手写补齐。
|
|
@@ -352,7 +352,7 @@ Windows 的 `CONFIG_PATH` 必须是步骤 1/3 已校验的实际本机配置绝
|
|
|
352
352
|
**本地生产参数验收模式**:用户项目尚未上线、无法提供真实公网地址,或当前自定义域名/TLS 检查失败时,网站支付/APP 支付可以进入本模式。要求如下:
|
|
353
353
|
|
|
354
354
|
1. 代码层必须已经实现异步通知处理入口、验签、关键字段校验、幂等和成功响应 `success`,只是当前环境不对外联调。
|
|
355
|
-
2. 运行层可以临时关闭异步通知发起配置或不传 `notify_url`;如项目已有显式开关,也可使用项目内已有的 `notify_enabled=false` 等等价配置,并执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message local-acceptance-notice --agent-platform "<AGENT_PLATFORM>"`,不得另写近似话术。
|
|
355
|
+
2. 运行层可以临时关闭异步通知发起配置或不传 `notify_url`;如项目已有显式开关,也可使用项目内已有的 `notify_enabled=false` 等等价配置,并执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message local-acceptance-notice --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`,不得另写近似话术。
|
|
356
356
|
3. 本地模式下,网站支付保留 `localhost` 或当前可访问开发地址的 `return_url`/结果页,APP 支付保留本地订单查询链路,并统一提供服务端交易查询或订单查询页作为结果确认兜底。
|
|
357
357
|
4. 任何本地模式结果都只能表述为“本地正式验收完成”或“本地生产参数验收完成,公网异步通知待补齐”,不得表述为“生产就绪”。
|
|
358
358
|
<!-- ALIPAY_AIPAY_PRODUCT:END -->
|
|
@@ -365,7 +365,7 @@ Windows 的 `CONFIG_PATH` 必须是步骤 1/3 已校验的实际本机配置绝
|
|
|
365
365
|
> ⚠️ **按量付费**:代码生成后启动本地服务,后续步骤 6 将默认进行端到端沙箱服务端联调。服务需实现 402 协议(无 `Payment-Proof` 时返回 HTTP 402 + `Payment-Needed` 头)。
|
|
366
366
|
<!-- ALIPAY_AIPAY_PRODUCT:END -->
|
|
367
367
|
|
|
368
|
-
配置后置校验结束后,执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration acceptance --product-type "$PRODUCT_TYPE" --agent-platform "<AGENT_PLATFORM>"` 加载当前产品适用验收和步骤 7;APP 支付 loader 不记录沙箱验收 stage,但仍加载步骤 7。
|
|
368
|
+
配置后置校验结束后,执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration acceptance --product-type "$PRODUCT_TYPE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"` 加载当前产品适用验收和步骤 7;APP 支付 loader 不记录沙箱验收 stage,但仍加载步骤 7。
|
|
369
369
|
|
|
370
370
|
---
|
|
371
371
|
|
|
@@ -439,9 +439,9 @@ Windows 的 `CONFIG_PATH` 必须是步骤 1/3 已校验的实际本机配置绝
|
|
|
439
439
|
|
|
440
440
|
```bash
|
|
441
441
|
# GET
|
|
442
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message a2m-execution-guard --project-path "$PROJECT_PATH" --service-url "$SERVICE_URL" --http-method GET [--prior-receipt "$A2M_EXECUTION_RECEIPT"] --agent-platform "<AGENT_PLATFORM>"
|
|
442
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message a2m-execution-guard --project-path "$PROJECT_PATH" --service-url "$SERVICE_URL" --http-method GET [--prior-receipt "$A2M_EXECUTION_RECEIPT"] --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
443
443
|
# POST
|
|
444
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message a2m-execution-guard --project-path "$PROJECT_PATH" --service-url "$SERVICE_URL" --http-method POST --request-body-file "$POST_BODY_FILE" [--prior-receipt "$A2M_EXECUTION_RECEIPT"] --agent-platform "<AGENT_PLATFORM>"
|
|
444
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message a2m-execution-guard --project-path "$PROJECT_PATH" --service-url "$SERVICE_URL" --http-method POST --request-body-file "$POST_BODY_FILE" [--prior-receipt "$A2M_EXECUTION_RECEIPT"] --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
445
445
|
```
|
|
446
446
|
|
|
447
447
|
只接受唯一 `ALIPAY_AIPAY_INTERNAL:A2M_EXECUTION=<json>`。`decision=RUN` 时保存新 receipt 并继续;`REUSE_PASSED` 复用同一项目和输入的本轮通过证据,不重复联调;`BLOCK_UNCHANGED` 表示失败后代码、配置和输入均未变化,禁止重跑,将本轮 A2M 联调记录为失败并继续步骤 7/8;`UNKNOWN_PREVIOUS_EXECUTION` 表示上次命令可能已发出但未登记终态,当前没有登记的结果查询入口,禁止自动重跑或临时探测,固定记录联调结果未知并继续步骤 7/8。项目代码或配置的实际内容、服务 URL、方法或 POST body 变化时 runner 才会产生新的 `RUN` receipt;仅文件时间戳变化或同内容重写不属于输入变化。receipt 只保留在当前会话,不写跨会话业务进度。
|
|
@@ -449,45 +449,45 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message a2m
|
|
|
449
449
|
4. 仅 `decision=RUN` 时执行下列固定 runner 命令,输出固定联调说明后立即继续,不等待用户确认;禁止另写开始话术。服务地址和 HTTP 方法只用于后续实际命令,不在本消息中展示:
|
|
450
450
|
|
|
451
451
|
```bash
|
|
452
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message a2m-test-start --agent-platform "<AGENT_PLATFORM>"
|
|
452
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message a2m-test-start --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
453
453
|
```
|
|
454
454
|
|
|
455
455
|
5. Unix/macOS/Linux 按实际 HTTP 方法从本 flow 所在目录继续执行且只执行以下既有命令。POST body 必须来自已确认目标项目中的实际文件,不把动态 JSON 拼进命令文本:
|
|
456
456
|
|
|
457
457
|
```bash
|
|
458
458
|
# GET
|
|
459
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method GET --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>"
|
|
459
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method GET --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
460
460
|
|
|
461
461
|
# POST
|
|
462
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method POST --body "@$POST_BODY_FILE" --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>"
|
|
462
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method POST --body "@$POST_BODY_FILE" --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
463
463
|
```
|
|
464
464
|
|
|
465
465
|
Windows 使用 Node 启动器选择 `py -3|python|python3`,不依赖 Bash 命令解析。先按实际 HTTP 方法执行只读预检的对应单行命令:
|
|
466
466
|
|
|
467
467
|
```powershell
|
|
468
468
|
# GET
|
|
469
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SERVICE_URL" --method GET --agent-platform "<AGENT_PLATFORM>"
|
|
469
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SERVICE_URL" --method GET --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
470
470
|
|
|
471
471
|
# POST
|
|
472
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SERVICE_URL" --method POST --body "@$POST_BODY_FILE" --agent-platform "<AGENT_PLATFORM>"
|
|
472
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SERVICE_URL" --method POST --body "@$POST_BODY_FILE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
473
473
|
```
|
|
474
474
|
|
|
475
475
|
预检通过后再执行对应联调单行命令:
|
|
476
476
|
|
|
477
477
|
```powershell
|
|
478
478
|
# GET
|
|
479
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method GET --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>"
|
|
479
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method GET --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
480
480
|
|
|
481
481
|
# POST
|
|
482
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method POST --body "@$POST_BODY_FILE" --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>"
|
|
482
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method POST --body "@$POST_BODY_FILE" --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
483
483
|
```
|
|
484
484
|
|
|
485
|
-
只传已确认的本机服务 URL、GET/POST、实际沙箱买家 userId 和项目内 POST body 文件;禁止传入自定义收银端点、`Payment-Proof` 或 attestation。只有同一次命令退出码为 0,且输出包含实际资源交付校验通过和敏感产物已清理,才能记录联调通过;204、空响应、空资源、明确验付/履约失败或异常 `Payment-Validation` 均不得通过。命令结束后立即执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message a2m-execution-result --receipt "$A2M_EXECUTION_RECEIPT" --outcome <PASSED|FAILED> --agent-platform "<AGENT_PLATFORM>"` 并保存返回的新 receipt;进程被中断且无法登记时保留原 receipt,由下次 guard 返回 `UNKNOWN_PREVIOUS_EXECUTION`。失败、阻断重复或结果未知都必须进入步骤 7 和最终 checklist 的失败/人工待验证项;只有项目代码、配置或执行输入实际变化并取得新 `RUN` receipt 才能重新联调。
|
|
485
|
+
只传已确认的本机服务 URL、GET/POST、实际沙箱买家 userId 和项目内 POST body 文件;禁止传入自定义收银端点、`Payment-Proof` 或 attestation。只有同一次命令退出码为 0,且输出包含实际资源交付校验通过和敏感产物已清理,才能记录联调通过;204、空响应、空资源、明确验付/履约失败或异常 `Payment-Validation` 均不得通过。命令结束后立即执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message a2m-execution-result --receipt "$A2M_EXECUTION_RECEIPT" --outcome <PASSED|FAILED> --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"` 并保存返回的新 receipt;进程被中断且无法登记时保留原 receipt,由下次 guard 返回 `UNKNOWN_PREVIOUS_EXECUTION`。失败、阻断重复或结果未知都必须进入步骤 7 和最终 checklist 的失败/人工待验证项;只有项目代码、配置或执行输入实际变化并取得新 `RUN` receipt 才能重新联调。
|
|
486
486
|
|
|
487
487
|
服务未就绪时固定使用 `integration.service.not_ready` 输出实际缺口和恢复动作;必须执行下列命令。不得运行测试、登记 `INT.A2M.SERVICE_READY=PASS` 或临场改写近似话术。
|
|
488
488
|
|
|
489
489
|
```bash
|
|
490
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message service-not-ready --recovery-action "$RECOVERY_ACTION" --agent-platform "<AGENT_PLATFORM>"
|
|
490
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message service-not-ready --recovery-action "$RECOVERY_ACTION" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
491
491
|
```
|
|
492
492
|
|
|
493
493
|
> 详细测试流程见 `modules/sandbox/a2m-sandbox-test.md`
|
|
@@ -505,7 +505,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message ser
|
|
|
505
505
|
**安全与上线提醒(必须明文打印给用户)**:使用 `../normal/json/customer-messages.json` 的 `integration.safety.closeout`,按 `aipay=AIPAY`、`webpay=WEBPAY`、`apppay=APPPAY` 映射产品并传入实际验收口径。模板覆盖私钥保护、支付结果依据、异常恢复、异步通知或 `Payment-Proof`/履约确认、生产配置、真实 `serviceId` 和私钥格式;不重复沙箱摘要、账号密码、Android 下载或步骤 6 体验。不得临场删减、拆分或维护近似话术。命令必须产生唯一 `ALIPAY_AIPAY_INTERNAL:CUSTOMER_MESSAGE_DELIVERY_REQUIRED=integration.safety.closeout`;返回后的下一动作先将 stdout 原文独立送达,再进入步骤 8。必须执行:
|
|
506
506
|
|
|
507
507
|
```bash
|
|
508
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message safety-closeout --variant "$PRODUCT_VARIANT" --acceptance-summary "$ACCEPTANCE_SUMMARY" --agent-platform "<AGENT_PLATFORM>"
|
|
508
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message safety-closeout --variant "$PRODUCT_VARIANT" --acceptance-summary "$ACCEPTANCE_SUMMARY" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
509
509
|
```
|
|
510
510
|
|
|
511
511
|
生产密钥的一致性、语言格式、官方工具转换、沙箱/生产配置替换、`notify_url` 公网联调边界、按量付费 `api_mock_service_id` 替换和生产就绪表述限制均由上述一条标准消息统一输出。实际写入配置时仍使用不带 PEM 头尾、包装行或说明文字的原始私钥字符串;该执行细节不得省略或改写密钥内容。
|
|
@@ -514,7 +514,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message saf
|
|
|
514
514
|
- 如果当前意图是 `integration_only`:提醒用户正式上线前还需要完成对应支付产品的产品开通。
|
|
515
515
|
- 如果当前意图是 `full_process`:本步骤只说明仍需完成步骤 8 集成校验;此时不展示签约待办、MCC、授权范围或材料。全部适用步骤通过时进入 onboarding;只有沙箱待配置且其余检查通过,或沙箱 `READY` 且仅剩非阻塞人工待验证项时,也以“部分通过”继续 onboarding;其他阻塞缺口仍停在代码开发。
|
|
516
516
|
|
|
517
|
-
步骤 7 完成后执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration checklist --product-type "$PRODUCT_TYPE" --project-path "$PROJECT_PATH" --agent-platform "<AGENT_PLATFORM>"`;只接受该命令生成的本轮 `CHECKLIST_SCOPE_RECEIPT`,不得使用修复前或其他项目的 receipt。
|
|
517
|
+
步骤 7 完成后执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration checklist --product-type "$PRODUCT_TYPE" --project-path "$PROJECT_PATH" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`;只接受该命令生成的本轮 `CHECKLIST_SCOPE_RECEIPT`,不得使用修复前或其他项目的 receipt。
|
|
518
518
|
|
|
519
519
|
---
|
|
520
520
|
|
|
@@ -558,17 +558,17 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message saf
|
|
|
558
558
|
|
|
559
559
|
<!-- ALIPAY_AIPAY_PRODUCT:aipay:START -->
|
|
560
560
|
```bash
|
|
561
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message checklist-result --variant AIPAY --project-path "$PROJECT_PATH" --scope-receipt "$CHECKLIST_SCOPE_RECEIPT" --overall-result "$OVERALL_RESULT" --failed-items "$FAILED_ITEMS" --manual-items "$MANUAL_ITEMS" --sandbox-result "$SANDBOX_RESULT" --sandbox-config-state "$SANDBOX_CONFIG_STATE" --blocking-defect-state "$BLOCKING_DEFECT_STATE" --execution-mode "$EXECUTION_MODE" --next-flow-reminder "$NEXT_FLOW_REMINDER" --telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT" --agent-platform "<AGENT_PLATFORM>"
|
|
561
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message checklist-result --variant AIPAY --project-path "$PROJECT_PATH" --scope-receipt "$CHECKLIST_SCOPE_RECEIPT" --overall-result "$OVERALL_RESULT" --failed-items "$FAILED_ITEMS" --manual-items "$MANUAL_ITEMS" --sandbox-result "$SANDBOX_RESULT" --sandbox-config-state "$SANDBOX_CONFIG_STATE" --blocking-defect-state "$BLOCKING_DEFECT_STATE" --execution-mode "$EXECUTION_MODE" --next-flow-reminder "$NEXT_FLOW_REMINDER" --telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
562
562
|
```
|
|
563
563
|
<!-- ALIPAY_AIPAY_PRODUCT:END -->
|
|
564
564
|
<!-- ALIPAY_AIPAY_PRODUCT:webpay:START -->
|
|
565
565
|
```bash
|
|
566
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message checklist-result --variant WEBPAY --project-path "$PROJECT_PATH" --scope-receipt "$CHECKLIST_SCOPE_RECEIPT" --overall-result "$OVERALL_RESULT" --failed-items "$FAILED_ITEMS" --manual-items "$MANUAL_ITEMS" --webpay-experience-result "$WEBPAY_EXPERIENCE_RESULT" --sandbox-config-state "$SANDBOX_CONFIG_STATE" --blocking-defect-state "$BLOCKING_DEFECT_STATE" --execution-mode "$EXECUTION_MODE" --next-flow-reminder "$NEXT_FLOW_REMINDER" --telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT" --agent-platform "<AGENT_PLATFORM>"
|
|
566
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message checklist-result --variant WEBPAY --project-path "$PROJECT_PATH" --scope-receipt "$CHECKLIST_SCOPE_RECEIPT" --overall-result "$OVERALL_RESULT" --failed-items "$FAILED_ITEMS" --manual-items "$MANUAL_ITEMS" --webpay-experience-result "$WEBPAY_EXPERIENCE_RESULT" --sandbox-config-state "$SANDBOX_CONFIG_STATE" --blocking-defect-state "$BLOCKING_DEFECT_STATE" --execution-mode "$EXECUTION_MODE" --next-flow-reminder "$NEXT_FLOW_REMINDER" --telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
567
567
|
```
|
|
568
568
|
<!-- ALIPAY_AIPAY_PRODUCT:END -->
|
|
569
569
|
<!-- ALIPAY_AIPAY_PRODUCT:apppay:START -->
|
|
570
570
|
```bash
|
|
571
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message checklist-result --variant APPPAY --project-path "$PROJECT_PATH" --scope-receipt "$CHECKLIST_SCOPE_RECEIPT" --overall-result "$OVERALL_RESULT" --failed-items "$FAILED_ITEMS" --manual-items "$MANUAL_ITEMS" --sandbox-config-state "$SANDBOX_CONFIG_STATE" --blocking-defect-state "$BLOCKING_DEFECT_STATE" --execution-mode "$EXECUTION_MODE" --next-flow-reminder "$NEXT_FLOW_REMINDER" --telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT" --agent-platform "<AGENT_PLATFORM>"
|
|
571
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message checklist-result --variant APPPAY --project-path "$PROJECT_PATH" --scope-receipt "$CHECKLIST_SCOPE_RECEIPT" --overall-result "$OVERALL_RESULT" --failed-items "$FAILED_ITEMS" --manual-items "$MANUAL_ITEMS" --sandbox-config-state "$SANDBOX_CONFIG_STATE" --blocking-defect-state "$BLOCKING_DEFECT_STATE" --execution-mode "$EXECUTION_MODE" --next-flow-reminder "$NEXT_FLOW_REMINDER" --telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
572
572
|
```
|
|
573
573
|
<!-- ALIPAY_AIPAY_PRODUCT:END -->
|
|
574
574
|
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
用户描述模糊或关键词匹配不明确时,执行下列命令固定渲染 `product.clarify`,等待用户以自然语言回复产品名称和业务需求。本模块不维护第二份澄清模板;不得临场增加不支持产品、改写 AI 网页应用收款接口或省略三种支持产品。
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message product-clarify --agent-platform "<AGENT_PLATFORM>"
|
|
68
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message product-clarify --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
69
69
|
```
|
|
70
70
|
|
|
71
71
|
### 不支持场景回复
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
28
|
# GET
|
|
29
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SERVICE_URL" --method GET --agent-platform "<AGENT_PLATFORM>"
|
|
29
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SERVICE_URL" --method GET --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
30
30
|
|
|
31
31
|
# POST
|
|
32
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SERVICE_URL" --method POST --body "@$POST_BODY_FILE" --agent-platform "<AGENT_PLATFORM>"
|
|
32
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SERVICE_URL" --method POST --body "@$POST_BODY_FILE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
POST body 必须来自已确认目标项目中的实际文件。`seller_signature` 由代码示例中的 `generateSellerSignature` / `generate_seller_signature` 生成,签名入参中的 `service_id` 与 `method.service_id` 都必须使用 `api_mock_service_id`;禁止使用空值、其他占位符或要求用户提供正式 `serviceId`。预检输出只打印校验结论和字段名,不打印字段值。
|
|
@@ -37,8 +37,8 @@ POST body 必须来自已确认目标项目中的实际文件。`seller_signatur
|
|
|
37
37
|
`precheck` 只请求本地服务并校验 HTTP 402/字段,不调用沙箱收银。Windows 也使用相同的 Node 单行入口,由启动器选择可用的 Python 3:
|
|
38
38
|
|
|
39
39
|
```powershell
|
|
40
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SERVICE_URL" --method GET --agent-platform "<AGENT_PLATFORM>"
|
|
41
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SERVICE_URL" --method POST --body "@$POST_BODY_FILE" --agent-platform "<AGENT_PLATFORM>"
|
|
40
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SERVICE_URL" --method GET --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
41
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SERVICE_URL" --method POST --body "@$POST_BODY_FILE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
---
|
|
@@ -46,10 +46,10 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m precheck --url "$SE
|
|
|
46
46
|
## 测试脚本路径
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m --agent-platform "<AGENT_PLATFORM>"
|
|
49
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
Windows 使用 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m --agent-platform "<AGENT_PLATFORM>"`;启动器只允许该内置脚本,并按系统选择可用的 Python 3 命令。
|
|
52
|
+
Windows 使用 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`;启动器只允许该内置脚本,并按系统选择可用的 Python 3 命令。
|
|
53
53
|
|
|
54
54
|
脚本只提供 `run` 子命令,并要求使用 `--auto-complete` 在同一次命令内获取 Payment-Needed、调用沙箱收银和携带 Payment-Proof 重试原始服务。不存在跨轮 `complete` 或恢复命令。
|
|
55
55
|
|
|
@@ -88,7 +88,7 @@ Windows 使用 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m --a
|
|
|
88
88
|
先按统一 runtime 的 `integration-message a2m-execution-guard` 当前会话 receipt 契约校验项目快照、服务 URL、HTTP 方法和可选 POST body。项目快照按代码和配置的实际内容计算,仅文件时间戳变化或同内容重写不产生新的执行机会;实际内容变化时才允许生成新的 `RUN` receipt。只有 `decision=RUN` 才使用 `../../../normal/json/customer-messages.json` 的 `a2m.test.start` 渲染固定联调说明并立即运行脚本;`REUSE_PASSED|BLOCK_UNCHANGED|UNKNOWN_PREVIOUS_EXECUTION` 均不得重复发起完整联调。服务地址和 HTTP 方法只用于实际命令,不在开始消息中展示。
|
|
89
89
|
|
|
90
90
|
```bash
|
|
91
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message a2m-test-start --agent-platform "<AGENT_PLATFORM>"
|
|
91
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message a2m-test-start --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
不得在模块或 Agent 回复中维护第二份近似开始话术。
|
|
@@ -96,20 +96,20 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message a2m
|
|
|
96
96
|
GET 请求:
|
|
97
97
|
|
|
98
98
|
```bash
|
|
99
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method GET --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>"
|
|
99
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method GET --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
POST 请求:
|
|
103
103
|
|
|
104
104
|
```bash
|
|
105
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method POST --body "$BODY" --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>"
|
|
105
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method POST --body "$BODY" --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
Windows 从本文件所在目录按实际 HTTP 方法执行对应单行命令:
|
|
109
109
|
|
|
110
110
|
```powershell
|
|
111
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method GET --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>"
|
|
112
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method POST --body "@$POST_BODY_FILE" --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>"
|
|
111
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method GET --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
112
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE_URL" --method POST --body "@$POST_BODY_FILE" --buyer-id "$BUYER_2088" --auto-complete --require-payment-validation --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
**脚本执行步骤**:
|
|
@@ -186,7 +186,7 @@ Payment-Proof 参考结构:
|
|
|
186
186
|
|
|
187
187
|
测试结束后使用 `a2m.test.result`:只有脚本退出码和本模块要求的组合证据都成立时选择 `PASSED`;其他情况选择 `FAILED` 并传入实际证据与确定恢复动作。不得把用户付款体验、沙箱配置落盘或任意 2xx 响应替代通过证据。
|
|
188
188
|
|
|
189
|
-
输出测试结论后,使用 `a2m.payment.experience/FULL` 展示付款链接和已经通过快速沙箱字段校验的实际买家账号。缺少任一账号字段时,当前沙箱配置必须已经在前置校验进入待配置状态,不得执行本联调或输出付款体验,也不得编造缺失凭据。随后执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message sandbox-android-client --agent-platform "<AGENT_PLATFORM>"` 统一输出 Android-only 官方下载与失败兜底。两条消息都不增加阻塞点,也不反向改变服务端联调结论。
|
|
189
|
+
输出测试结论后,使用 `a2m.payment.experience/FULL` 展示付款链接和已经通过快速沙箱字段校验的实际买家账号。缺少任一账号字段时,当前沙箱配置必须已经在前置校验进入待配置状态,不得执行本联调或输出付款体验,也不得编造缺失凭据。随后执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message sandbox-android-client --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"` 统一输出 Android-only 官方下载与失败兜底。两条消息都不增加阻塞点,也不反向改变服务端联调结论。
|
|
190
190
|
|
|
191
191
|
最后必须提醒用户:
|
|
192
192
|
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
Windows 普通代码开发或完整接入请求未明确要求当前配置沙箱时,记录 `sandboxConfigState=VERIFY_PENDING` 并继续代码实现,不展示资料收集消息。只有用户明确要求现在配置或恢复 Windows 沙箱时,才使用 `../../../normal/json/customer-messages.json` 的既有 `sandbox.windows.manual_setup`,引导用户前往支付宝 AI 付站点的“选择产品 → 一站式接入 → 技术集成”页面获取当前沙箱的 APPID、公私钥和账号信息;随后只处理用户针对本轮该消息提供的资料,完整时校验并写入目标项目实际使用的本地敏感配置,部分或错误时只补问对应字段。不得要求用户自行配置、理解 `sandbox_config.sh`、执行 Bash 或手工拼接 Skill 的规范化 JSON。该资料输入例外只适用于沙箱,生产环境应用私钥和密码禁止提供给 Agent;Agent 不得在回复、摘要或普通日志中复述收到的值。
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message windows-sandbox-setup --agent-platform "<AGENT_PLATFORM>"
|
|
20
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message windows-sandbox-setup --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
### 1.3 其他说明
|
|
@@ -135,10 +135,10 @@ Unix/macOS/Linux 创建阶段把实际本机配置路径和 `FLOW:SANDBOX_CONFIG
|
|
|
135
135
|
|
|
136
136
|
### 5.2 对话摘要
|
|
137
137
|
|
|
138
|
-
代码开发完成且配置后置校验通过后,Unix/macOS/Linux 从本文件所在的 `references/integration/modules/sandbox/` 目录使用 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" sandbox summary "<productType>" "<规范化项目路径>" "<已确认服务端语言>" --agent-platform "<AGENT_PLATFORM>"` 复核并展示摘要;该脚本内部负责渲染 `sandbox.environment.summary` 与 `sandbox.environment.reminder`,Agent 不得绕过脚本自写摘要。Windows 使用同一消息目录从项目实际读取的本机配置生成摘要,执行:
|
|
138
|
+
代码开发完成且配置后置校验通过后,Unix/macOS/Linux 从本文件所在的 `references/integration/modules/sandbox/` 目录使用 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" sandbox summary "<productType>" "<规范化项目路径>" "<已确认服务端语言>" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"` 复核并展示摘要;该脚本内部负责渲染 `sandbox.environment.summary` 与 `sandbox.environment.reminder`,Agent 不得绕过脚本自写摘要。Windows 使用同一消息目录从项目实际读取的本机配置生成摘要,执行:
|
|
139
139
|
|
|
140
140
|
```powershell
|
|
141
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message windows-sandbox-summary --product-name "$PRODUCT_NAME" --config-path "$CONFIG_PATH" --environment-rows "$ENVIRONMENT_ROWS" --agent-platform "<AGENT_PLATFORM>"
|
|
141
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message windows-sandbox-summary --product-name "$PRODUCT_NAME" --config-path "$CONFIG_PATH" --environment-rows "$ENVIRONMENT_ROWS" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
142
142
|
```
|
|
143
143
|
|
|
144
144
|
摘要行按当前分支的实际来源依次包含应用 `appId/pid`、商家账号、买家账号及沙箱标识;账号未返回的可选字段直接省略,禁止编造。只有 Unix/macOS/Linux 快速沙箱工具实际返回且已校验的沙箱登录密码和支付密码可以进入摘要行;Windows 手工沙箱虽然允许用户在资料收集时提供当前沙箱密码,Agent 仍不得在摘要或后续回复中复述,只展示非敏感标识和本机保存提示。两类例外都不得扩展到生产环境账号、私钥或密码。
|
|
@@ -174,7 +174,7 @@ renderer 固定输出唯一摘要表、密钥字段已落盘提示和“配置
|
|
|
174
174
|
|
|
175
175
|
`curl` 调用下单接口并取得 HTML 支付表单只属于接口冒烟检查,不能替代用户付款指引,也不能据此标记步骤 6 完成。必须提供用户可在浏览器中打开的支付页面地址;页面打开沙箱收银台后,以下两种体验方式同时告知用户,由用户自行二选一。
|
|
176
176
|
|
|
177
|
-
紧接当前系统对应的网站支付付款指引执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message sandbox-android-client --agent-platform "<AGENT_PLATFORM>"`,统一输出 Android-only、官方直链、直链/页面二维码失败后的开放平台沙箱工具页,以及禁止 iOS、应用市场、第三方站点和自编 URL 的口径。
|
|
177
|
+
紧接当前系统对应的网站支付付款指引执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message sandbox-android-client --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`,统一输出 Android-only、官方直链、直链/页面二维码失败后的开放平台沙箱工具页,以及禁止 iOS、应用市场、第三方站点和自编 URL 的口径。
|
|
178
178
|
|
|
179
179
|
`resultPageInstruction` 必须按实际回跳分支二选一,禁止同时输出两项:
|
|
180
180
|
|
|
@@ -58,7 +58,7 @@ which alipay-cli 2>/dev/null && alipay-cli version
|
|
|
58
58
|
|
|
59
59
|
**减少重复授权:**
|
|
60
60
|
- 优先使用 runtime 的 `auth|app|service` 动作,避免展开 `alipay-cli mcp call`。持久授权范围使用当前 Skill 绝对路径的稳定命令前缀,不得换副本。
|
|
61
|
-
- 不用 `DEV_TOOL_NAME=<tool>`、`PLATFORM=<tool>` 等环境变量前缀;公共初始化会设置。从业务入口的首条 bootstrap/start-run 起,Agent 依照入口协议随每条 runtime 命令追加 `--agent-platform "<AGENT_PLATFORM>"
|
|
61
|
+
- 不用 `DEV_TOOL_NAME=<tool>`、`PLATFORM=<tool>` 等环境变量前缀;公共初始化会设置。从业务入口的首条 bootstrap/start-run 起,Agent 依照入口协议随每条 runtime 命令追加 `--agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`,作为当前命令的首选宿主名称;该值无效或为 `unknown` 时才回退自动识别。产品上下文用 `--sales-code`、`--mcc-code`、`--product-type` 等脚本参数。
|
|
62
62
|
- 只有脚本未覆盖的临时排查命令,才直接调用 `alipay-cli`;这类命令需要按具体前缀单独授权。
|
|
63
63
|
|
|
64
64
|
---
|
|
@@ -76,7 +76,7 @@ jq --version
|
|
|
76
76
|
自动检测与恢复顺序固定如下:
|
|
77
77
|
|
|
78
78
|
1. `env check|integration-check` 先使用 PATH 中已有且能通过实际 filter 的 jq;受控 Shell 发现可执行的 `~/.local/bin/jq` 或 `~/.local/bin/alipay-cli` 时把该目录追加到 PATH,因此有效系统 jq 仍优先。若 PATH 前方 jq 能启动但无法执行实际 filter,而用户级 jq 验证通过,则当前受控 Shell 改用用户级 jq,避免恢复后仍被损坏的 PATH 项遮蔽。
|
|
79
|
-
2. 缺 jq 时,当前 flow 只执行一次 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" env prepare-jq --agent-platform "<AGENT_PLATFORM>"`。该动作需要访问 GitHub,并需要对 `~/.local/bin` 创建、写入和 rename;宿主支持权限申请时,只为同一条受控命令取得这些权限,不新增业务确认。
|
|
79
|
+
2. 缺 jq 时,当前 flow 只执行一次 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" env prepare-jq --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`。该动作需要访问 GitHub,并需要对 `~/.local/bin` 创建、写入和 rename;宿主支持权限申请时,只为同一条受控命令取得这些权限,不新增业务确认。
|
|
80
80
|
3. macOS/Linux `x64|arm64` 只从固定官方 GitHub 资产下载 jq 1.7.1,在 60 秒总预算内校验固定 SHA-256,并于私有临时文件验证精确版本和实际 JSON filter 后,以 `0755` 原子写入 `~/.local/bin/jq`。成功后原样重跑环境检查。
|
|
81
81
|
4. `JQ_PREPARE=FAILED|UNSUPPORTED`,或返回 `READY` 后重跑环境检查仍缺 jq,表示 GitHub 下载、校验、执行或落盘链路未使 jq 可用。此时由 Agent 执行一个当前系统首选包管理器兜底:macOS 优先清华 Homebrew bottle 镜像,Debian/Ubuntu 使用 apt,CentOS/RHEL 使用 yum;执行后必须同时通过 `jq --version` 和环境检查的实际 filter 验证。macOS 首选镜像明确失败后,才按阿里云、中科大、直连顺序选择下一条,不并发、不回到 `prepare-jq` 循环。Linux 包管理器可能需要宿主系统权限,该权限只属于兜底安装,不改变 Skill 用户目录写入边界,也不构成业务确认。
|
|
82
82
|
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
本文件是 `full_process` 唯一入口。启动方案送达前只复用 Integration 步骤 1 的项目、语言、当前系统分支环境和沙箱准备;不得开发代码、进入 Onboarding 或读取开通信息。
|
|
4
4
|
|
|
5
|
-
目标项目和技术栈确定后执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration entry --agent-platform "<AGENT_PLATFORM>"`,只加载当前入口阶段并按步骤 1/2 准备及展示方案;代码开发满足衔接条件后执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow onboarding entry --agent-platform "<AGENT_PLATFORM>"`。禁止整读两个 flow。所有 Skill 自有运行时动作只用当前 Skill 绝对路径下的统一入口单命令执行,不前置 `cd`、不拼接管道;用户项目命令仍以已确认项目根为 workdir。
|
|
5
|
+
目标项目和技术栈确定后执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration entry --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`,只加载当前入口阶段并按步骤 1/2 准备及展示方案;代码开发满足衔接条件后执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow onboarding entry --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`。禁止整读两个 flow。所有 Skill 自有运行时动作只用当前 Skill 绝对路径下的统一入口单命令执行,不前置 `cd`、不拼接管道;用户项目命令仍以已确认项目根为 workdir。
|
|
6
6
|
|
|
7
7
|
其他 Skill 相对命令以 `references/normal/` 为 workdir。`PROJECT_INPUT` 保留原话;Agent 确定两类项目的真实 `PROJECT_PATH`,以 `--project-path` 交 runner 校验。复用须选定项目根,位置未知先定位候选;“当前目录”仅在 runner 识别为项目根时接受。后续只用规范化绝对路径。
|
|
8
8
|
|
|
9
|
-
`full_process` 的 `RUN_ID` 只取 `runtime-entry.md` 中 `start-run` 的唯一 marker。active run 期间每条聊天框用户消息都先执行统一 `count-user-input --run-id "$RUN_ID"`,与 Skill 无关的插话和中断后输入也不例外。每个登记 stage 动作前回顾当前可见用户历史得到 `HISTORY_COUNT`,无法可靠回顾时为 `null`;能生成 stage 的 runtime 命令按对应 flow 追加 `--telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT"`。Integration Worker
|
|
9
|
+
`full_process` 的 `RUN_ID` 只取 `runtime-entry.md` 中 `start-run` 的唯一 marker。active run 期间每条聊天框用户消息都先执行统一 `count-user-input --run-id "$RUN_ID"`,与 Skill 无关的插话和中断后输入也不例外。每个登记 stage 动作前回顾当前可见用户历史得到 `HISTORY_COUNT`,无法可靠回顾时为 `null`;能生成 stage 的 runtime 命令按对应 flow 追加 `--telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT"`。Integration Worker 接收这两个低敏 telemetry 上下文字段及根入口已取得的 telemetry_session_id,并携带同一个 --session-id 透传给原 flow;正式计数仍由 runtime state 读取。`integration_summary` 不关闭 full-process run,只有 `all_summary` 关闭;telemetry 不改变本文件的业务衔接和卡点。
|
|
10
10
|
|
|
11
11
|
## 边界
|
|
12
12
|
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
`NEW_PROJECT` 只用于初始化前,新建时执行:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message resolve-project --project-input "$PROJECT_INPUT" --project-path "$PROJECT_PATH" --base-path "$USER_WORKSPACE_ROOT" --intent new --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>"
|
|
24
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message resolve-project --project-input "$PROJECT_INPUT" --project-path "$PROJECT_PATH" --base-path "$USER_WORKSPACE_ROOT" --intent new --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
复用现有项目时执行:
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message resolve-project --project-input "$PROJECT_INPUT" --project-path "$PROJECT_PATH" --base-path "$USER_WORKSPACE_ROOT" --intent existing --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>"
|
|
30
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message resolve-project --project-input "$PROJECT_INPUT" --project-path "$PROJECT_PATH" --base-path "$USER_WORKSPACE_ROOT" --intent existing --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
`--project-input` 不得代替真实路径;缺 `--project-path` 则未解析。默认新建由 Agent 选用户目录下 `alipay-aipay-projects/pay-demo`,非空占用则加安全后缀,并显式传入。仅 `preparationStatus=READY` 才继续;框架由 Integration 的 `framework-resolve` 按语言默认或用户明确值初始化,其他结果不得清空/覆盖。初始化且沙箱终态确定后成为本轮 `PREPARED_NEW_PROJECT`;不持久化,重入重扫。`NEW_PROJECT` 不扫描代码。
|
|
@@ -44,7 +44,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message res
|
|
|
44
44
|
项目和沙箱取得确定终态后再确定产品并扫描合法项目分类。已有描述能唯一映射时直接复用;否则只执行下列消息并等待,仍不唯一时重复同一消息。目标产品明确前不得执行 `scan`。
|
|
45
45
|
|
|
46
46
|
```bash
|
|
47
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message product-clarify --agent-platform "<AGENT_PLATFORM>"
|
|
47
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message product-clarify --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
- `TARGET_PARTIAL`:发现目标代码/配置,仍完整验证;并存时优先。
|
|
@@ -59,13 +59,13 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message pro
|
|
|
59
59
|
合法项目分类、前三种代码状态、产品、服务端语言和 runner 解析的框架全部确定后才能输出非阻塞 `integration.start.confirm`。缺项目或服务端语言时执行下列 `integration.context.required` 标准消息;只缺新项目位置用 `integration.project_path.required` 标准消息,`启动前上下文补问` 只在这一步使用,且只补齐缺失项,只缺框架不补问。禁止使用 AskUserQuestion、request_user_input、宿主超时默认值、Agent 自创选项或自由话术替代;不得先输出扫描摘要或方案。
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message context-required --missing-items "$MISSING_ITEMS" --agent-platform "<AGENT_PLATFORM>"
|
|
62
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message context-required --missing-items "$MISSING_ITEMS" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
`MISSING_ITEMS` 只由 `项目路径`、`技术栈` 组成,其中 `技术栈` 仅表示服务端语言缺失;产品不明确仍用 `product.clarify`。stdout 原文发出后等待,未补齐前不得初始化、安装或修改。路径输入均先 `resolve-project`;未知位置或需候选时执行:
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message locate-projects --base-path "$USER_WORKSPACE_ROOT" --search-input "$SEARCH_INPUT" --format message --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>"
|
|
68
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message locate-projects --base-path "$USER_WORKSPACE_ROOT" --search-input "$SEARCH_INPUT" --format message --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
69
69
|
```
|
|
70
70
|
|
|
71
71
|
字段齐备后执行唯一 runner;禁止拆开执行项目扫描、`jq` 或 renderer,也不得附加解析。runner stdout 是本动作唯一对客消息;只有取得唯一 `CUSTOMER_MESSAGE_DELIVERY_REQUIRED=integration.start.confirm` 才能继续。命令后的下一个动作必须把 stdout 作为可见进行中消息原文送达,不得作为最终答复结束当前回合,送达前禁止调用工具;送达后同一回合先执行下文的 Worker 分流,由确定的执行者加载 development,不得总结、询问、等待回复或再次校验项目快照。用户中断后若方案事实变化,重新澄清、扫描并输出当前方案;静态扫描只决定进入验证,不证明完成。
|
|
@@ -73,12 +73,12 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message loc
|
|
|
73
73
|
`ROOT_INTENT` 固定为 `full_process`。
|
|
74
74
|
|
|
75
75
|
```bash
|
|
76
|
-
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message start-confirm --root-intent "$ROOT_INTENT" --product-type "$PRODUCT_TYPE" --product-name "$PRODUCT_NAME" --project-path "$PROJECT_PATH" --project-selection "$PROJECT_SELECTION" --language "$SERVER_LANGUAGE" --framework "$FRAMEWORK" --framework-source "$FRAMEWORK_SOURCE" --agent-platform "<AGENT_PLATFORM>"
|
|
76
|
+
node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message start-confirm --root-intent "$ROOT_INTENT" --product-type "$PRODUCT_TYPE" --product-name "$PRODUCT_NAME" --project-path "$PROJECT_PATH" --project-selection "$PROJECT_SELECTION" --language "$SERVER_LANGUAGE" --framework "$FRAMEWORK" --framework-source "$FRAMEWORK_SOURCE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
上面命令失败时不得展示手写确认或进入子流程。成功时必须取得唯一 `ALIPAY_AIPAY_INTERNAL:CUSTOMER_MESSAGE_DELIVERY_REQUIRED=integration.start.confirm`;缺失或重复视为失败。参数必须是当前确定值,禁止直接拼用户输入。runner 校验产品 variant 并固定服务声明;实际范围仍取当前 Integration flow 和 checklist。
|
|
80
80
|
|
|
81
|
-
交接事实必须来自 runner 内同一次 `scan`,不得用描述、自报或历史分类代替;`evidence` 不进 renderer,Onboarding 前不传/猜 `mccCode`。方案 stdout 按 marker 送达后,先读取 `../normal/integration-worker.md`;满足其启用条件时,按协议创建唯一 Worker,由其执行步骤 3 至步骤 8;否则由当前 Agent 执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration development --product-type "$PRODUCT_TYPE" --agent-platform "<AGENT_PLATFORM>"` 并串行完成步骤 3 至步骤 8。loader 只加载当前分支规则;业务完成后由登记入口记录完成态 stage。禁止手工 telemetry、解码内部值、重复扫描或重显方案。
|
|
81
|
+
交接事实必须来自 runner 内同一次 `scan`,不得用描述、自报或历史分类代替;`evidence` 不进 renderer,Onboarding 前不传/猜 `mccCode`。方案 stdout 按 marker 送达后,先读取 `../normal/integration-worker.md`;满足其启用条件时,按协议创建唯一 Worker,由其执行步骤 3 至步骤 8;否则由当前 Agent 执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration development --product-type "$PRODUCT_TYPE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"` 并串行完成步骤 3 至步骤 8。loader 只加载当前分支规则;业务完成后由登记入口记录完成态 stage。禁止手工 telemetry、解码内部值、重复扫描或重显方案。
|
|
82
82
|
|
|
83
83
|
合法组合必须确定产品、路径/来源、代码状态、语言/框架、服务声明和顺序;发现其他产品时保留。零散信息、`新建` 选择、未选候选或新项目未准备均不能替代完整机器校验。方案送达后仍完整执行 Integration 和 checklist。
|
|
84
84
|
|