@whyshu/argent-engine 0.7.8 → 0.8.0-rc.2
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/MANIFEST.json +19 -15
- package/engine/VERSION +1 -1
- package/engine/core/contracts/argent.contracts.json +1 -1
- package/engine/core/lib/argent-datadir.mjs +6 -0
- package/engine/scripts/capability-packs.lock.json +36 -35
- package/engine/scripts/daily-report.mjs +1 -1
- package/engine/scripts/flow-requirements.json +3 -3
- package/engine/scripts/flow-trigger-wake.mjs +6 -3
- package/engine/scripts/flow_config.py +2 -0
- package/engine/scripts/flow_failure.py +3 -0
- package/engine/scripts/fulfillment_sites.py +46 -0
- package/engine/scripts/lib/argent_datadir.py +5 -0
- package/engine/scripts/ml_hub_status.py +3 -3
- package/engine/scripts/orchestrator.py +34 -22
- package/engine/scripts/orchestrator_br.py +14307 -0
- package/engine/skills/ml-fulfillment-sop/SKILL.md +29 -0
- package/engine/skills/ml-fulfillment-sop/references/agentic-runtime-v3.md +39 -0
- package/engine/version.mjs +1 -1
- package/engine/verticals/mercadolibre/brazil-full-sop.json +47 -0
- package/engine/verticals/mercadolibre/flows.json +12 -4
- package/engine/verticals/mercadolibre/prompts/full.failure.md +39 -1
- package/package.json +1 -1
|
@@ -138,6 +138,35 @@ description: "美客多美客多 FULL 货件管理技能(Argent on DSH)—
|
|
|
138
138
|
|
|
139
139
|
---
|
|
140
140
|
|
|
141
|
+
## 失败评估(2026-10-24 起)
|
|
142
|
+
|
|
143
|
+
FULL 一轮约 10 分钟,且包含建单/预约/上传等写操作;**失败后默认不自动重跑**。
|
|
144
|
+
|
|
145
|
+
先只读取证:
|
|
146
|
+
|
|
147
|
+
- `failures.jsonl` 的 `page_url` / `hub_status` / `dom_summary` / `screenshot`;
|
|
148
|
+
- 失败现场截图(用 `read_image` 看);
|
|
149
|
+
- 预约、产品标签、箱唛当前状态。
|
|
150
|
+
|
|
151
|
+
再输出结构化判断:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"verdict": "complete | retry | repair_script | needs_human",
|
|
156
|
+
"confidence": 0.0,
|
|
157
|
+
"reason": "...",
|
|
158
|
+
"evidence": ["..."],
|
|
159
|
+
"safe_to_retry": false
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
- `complete`:门户已完成 ⇒ 不重跑、不取消预约;
|
|
164
|
+
- `retry`:仅瞬时故障且没有写坏状态,最多受控重跑 1 次;
|
|
165
|
+
- `repair_script`:页面改版/选择器失效 ⇒ 建开发工单,不直接改生产;
|
|
166
|
+
- `needs_human`:缺数据/业务状态/预约需人工核对 ⇒ 落卡等人。
|
|
167
|
+
|
|
168
|
+
禁止:无评估直接 `--allow-write`、失败分支自动取消预约、为“试试看”重跑、自动修改生产脚本。
|
|
169
|
+
|
|
141
170
|
## 异常处理
|
|
142
171
|
|
|
143
172
|
| 异常问题 | 核心原因 | 解决方案 |
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Agentic Runtime v3(FULL)
|
|
2
|
+
|
|
3
|
+
> 适用:Argent 0.8.0+;与 `docs/agentic-tools-contract-v1.md` 配套。
|
|
4
|
+
> 本文件是 Agent 会话的行为规则;确定性 SOP 仍在 SKILL.md / pitfalls.md。
|
|
5
|
+
|
|
6
|
+
## 会话启动
|
|
7
|
+
|
|
8
|
+
1. 读取本文件 + `ml-fulfillment-sop/SKILL.md` 的 8 步流程;
|
|
9
|
+
2. 读取 ERP 下发 `AgentTask.context`(货件号、店铺、SKU、数量、箱数、约束、预算);
|
|
10
|
+
3. 先调用 `ml_probe_hub` 确认整票状态,再决定是否需要执行。
|
|
11
|
+
|
|
12
|
+
## 只允许使用工具
|
|
13
|
+
|
|
14
|
+
- 工具清单见 `docs/agentic-tools-contract-v1.md`;
|
|
15
|
+
- **禁止**编写/执行临时 Python/JS 脚本、禁止直接调用浏览器点击、禁止直接写飞书表;
|
|
16
|
+
- 工具不满足需求时:停止并在结果中说明「缺工具 X」,不要现场发明脚本。
|
|
17
|
+
|
|
18
|
+
## 执行循环
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
probe → 判断 → 调用工具 → 读回验证 → 继续 / 信号 ERP / 结束
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
- 每个写工具调用后必须立即读回验证;
|
|
25
|
+
- 同一动作最多 3 次;不得连续重试同一失败页面;
|
|
26
|
+
- 平台选项不可用/前置未完成 → 立即 `needs_decision`,附截图/选项;
|
|
27
|
+
- 数量/费用/运输方式冲突 → 必须人工决策,不得自行选择。
|
|
28
|
+
|
|
29
|
+
## 异常信号
|
|
30
|
+
|
|
31
|
+
按契约 §5 发送 `AgentSignal`,字段:
|
|
32
|
+
`phase / kind / evidence / observed / options / suggestedAction / requiresApproval`。
|
|
33
|
+
发送后进入等待,不重复提交写操作。
|
|
34
|
+
|
|
35
|
+
## 完成条件
|
|
36
|
+
|
|
37
|
+
- `ml_probe_hub` 五项/整票状态与任务目标一致;
|
|
38
|
+
- 需要回写的文件已通过 `ml_writeback_lip` 读回验证;
|
|
39
|
+
- 输出 `done` + 证据 + 耗时/成本摘要。
|
package/engine/version.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = "0.
|
|
1
|
+
export const VERSION = "0.8.0-rc.2"
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_note": "来源:巴西约仓流程.xlsx(巴西1店SKU / 巴西海外仓地址 / 1店海外仓产品 / 约仓流程)。仅巴西 FULL 分支使用。",
|
|
3
|
+
"site": "MLB",
|
|
4
|
+
"warehouses": [
|
|
5
|
+
{
|
|
6
|
+
"name": "安兔",
|
|
7
|
+
"code": "BR02",
|
|
8
|
+
"address": "Estrada Municipal, 233 - Jardim Santo Afonso, Galpão 200 - Modulo B14 - CEP 07215-040",
|
|
9
|
+
"contact": "Bia",
|
|
10
|
+
"city": "Guarulhos",
|
|
11
|
+
"state": "圣保罗",
|
|
12
|
+
"phone": "WhatsApp +55 11 96307-0685",
|
|
13
|
+
"addressNote": "ANTU+客户代码,如 ANTU A001"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "复礼",
|
|
17
|
+
"code": "Cy Log Guarulhos",
|
|
18
|
+
"address": "Estr. Velha Guarulhos São Miguel, 1814 - Cumbica Guarulhos - SP, 07210-250;Rua 21 de abril 160;堆口56/57/58",
|
|
19
|
+
"contact": "Qifan Hu",
|
|
20
|
+
"phone": "WhatsApp 41989001001"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"name": "鸿泰信",
|
|
24
|
+
"code": "Alphaville",
|
|
25
|
+
"address": "Av. Fernando Cerqueira César Coimbra, 210 galpão A - Alphaville Industrial, Barueri - SP, CEP 06465-090",
|
|
26
|
+
"contact": "Ruipan Tan / Sr. Zhang",
|
|
27
|
+
"phone": "11915200175 / +55 11960335773",
|
|
28
|
+
"zoneB": "Av fernando cerqueira cesar coinbra 210-B-alphaville CEP 06465-090"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"defaultWarehouse": "安兔",
|
|
32
|
+
"sop": {
|
|
33
|
+
"entry": "官方仓货件管理 → 发送商品",
|
|
34
|
+
"steps": [
|
|
35
|
+
"输入 SKU 与数量",
|
|
36
|
+
"点击发送",
|
|
37
|
+
"如出现方案选择,选择『维持现有方案』",
|
|
38
|
+
"点击『选择你运送产品的方式和时间』",
|
|
39
|
+
"选择上门取件;平台没有时间则停止",
|
|
40
|
+
"点击『选择其他地址』",
|
|
41
|
+
"按仓库选择『巴西海外仓地址』中的地址",
|
|
42
|
+
"点击选择,再点击确认",
|
|
43
|
+
"创建新货件并预约",
|
|
44
|
+
"在预约时间前取消预约"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -140,7 +140,8 @@
|
|
|
140
140
|
"promptTemplate": "verticals/mercadolibre/prompts/full.md",
|
|
141
141
|
"dispatch": {
|
|
142
142
|
"sessionIdFile": "verticals/mercadolibre/flow-dispatch-full.json",
|
|
143
|
-
"freshSession": true
|
|
143
|
+
"freshSession": true,
|
|
144
|
+
"failurePreset": "argent-ml-failure-assessor"
|
|
144
145
|
}
|
|
145
146
|
},
|
|
146
147
|
"concurrency": {
|
|
@@ -194,14 +195,14 @@
|
|
|
194
195
|
],
|
|
195
196
|
"failures": {
|
|
196
197
|
"enabled": true,
|
|
197
|
-
"_note": "FULL
|
|
198
|
+
"_note": "FULL 失败先取证(截图/hub/DOM),再交给只读评估器;默认不自动重跑、不自动取消预约。"
|
|
198
199
|
},
|
|
199
200
|
"_requiredNote": "2026-09-17 实测修正:原写 店铺/装箱数 在真实表里不存在(真名 店铺名称/箱数),导致投影失败且**静默 0 行**。修列名的同时给 flow_source 加了大声失败。",
|
|
200
201
|
"authority": {
|
|
201
202
|
"_note": "角色(=用户替身)的权限边界:auto=可自行决定;ask=必须问用户。见 docs/Argent-宿主适配契约.md §1「判断归属」",
|
|
202
203
|
"retry": {
|
|
203
|
-
"auto":
|
|
204
|
-
"maxAttempts":
|
|
204
|
+
"auto": false,
|
|
205
|
+
"maxAttempts": 1
|
|
205
206
|
},
|
|
206
207
|
"discard": {
|
|
207
208
|
"auto": false
|
|
@@ -234,6 +235,13 @@
|
|
|
234
235
|
"{ticket}"
|
|
235
236
|
],
|
|
236
237
|
"_note": "0.7.0 W2:FULL 走编排器(--mode full)"
|
|
238
|
+
},
|
|
239
|
+
"autoRetry": {
|
|
240
|
+
"enabled": false,
|
|
241
|
+
"max": 1,
|
|
242
|
+
"cooldownMin": 60,
|
|
243
|
+
"perCycle": 1,
|
|
244
|
+
"_note": "2026-10-24 用户口径:FULL 一轮 ~10 分钟且含写操作;无失败评估不得自动重跑。评估通过后才允许受控重跑。"
|
|
237
245
|
}
|
|
238
246
|
},
|
|
239
247
|
"wenyao-invoice": {
|
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
【失败交接 · 需要你判断】流程 **{{flowTitle}}**(`{{flow}}`)有一张票跑失败了,引擎把它交给你 —— 请**判断**,不要盲目重跑。
|
|
2
2
|
|
|
3
|
+
## ⛔ 先评估,再决定是否重跑(2026-10-24)
|
|
4
|
+
|
|
5
|
+
FULL 一轮通常 ~10 分钟,且步骤3/4/5/7/8 都有真实写操作;**没有失败评估,禁止自动/手工重跑**。
|
|
6
|
+
|
|
7
|
+
先做只读取证,再给出结构化结论:
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"verdict": "complete | retry | repair_script | needs_human",
|
|
12
|
+
"confidence": 0.0,
|
|
13
|
+
"reason": "一句话说明真实原因",
|
|
14
|
+
"evidence": ["hub/截图/日志里的证据"],
|
|
15
|
+
"safe_to_retry": false,
|
|
16
|
+
"recommended_action": "下一步具体动作"
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
评估顺序:
|
|
21
|
+
|
|
22
|
+
1. **先看真实页面状态**:`failures.jsonl` 的 `page_url`、`hub_status`、`screenshot`;
|
|
23
|
+
用 `read_image` 看失败截图;不要只看退出码/摘要。
|
|
24
|
+
2. **先判是否已经完成**:hub 显示包装确认/产品标签/箱唛已完成 ⇒ `verdict=complete`;
|
|
25
|
+
**不要重跑**,不要取消预约。
|
|
26
|
+
3. **再看是否脚本/页面改版**:URL 形态、选择器、DOM 文案变化 ⇒ `repair_script`,
|
|
27
|
+
先建开发工单,不直接改生产脚本。
|
|
28
|
+
4. **只有确证瞬时故障且没有写坏状态**,才允许 `retry`,并写 `safe_to_retry=true`;
|
|
29
|
+
FULL 默认最多受控重跑 1 次。
|
|
30
|
+
|
|
31
|
+
`safe_to_retry=false` 的典型情况:
|
|
32
|
+
|
|
33
|
+
- hub 显示已经完成;
|
|
34
|
+
- 预约已取消/已产生货件号/已有产品标签或箱唛;
|
|
35
|
+
- 同 SKU 同店已有重复货件;
|
|
36
|
+
- 错误是业务/数据/平台状态类,而不是瞬时网络类;
|
|
37
|
+
- 当前脚本版本还没修复对应问题。
|
|
38
|
+
|
|
3
39
|
## 交接上下文
|
|
4
40
|
|
|
5
41
|
- 票号:`{{case}}`(第 {{attempt}} 次失败)
|
|
@@ -45,7 +81,7 @@
|
|
|
45
81
|
| 预约状态(证据) | 能否重建 | 依据 |
|
|
46
82
|
|---|---|---|
|
|
47
83
|
| `failed_step ≤ 4`(步骤4未完成) | ✅ 可重建 | 预约从未提交 ⇒ 无残留(引擎的失败分支本就不触发取消) |
|
|
48
|
-
| 备注含「预约已自动取消 / 无超时罚款风险」 | ✅ 可重建 |
|
|
84
|
+
| 备注含「预约已自动取消 / 无超时罚款风险」 | ✅ 可重建 | 仅步骤8明确取消后才会出现;失败分支不再自动取消 |
|
|
49
85
|
| 备注含「预约取消失败 / 请立即人工取消」 | ⛔ **禁止重建** | 先人工取消预约,否则违约金 |
|
|
50
86
|
| `failed_step ≥ 5` 且无任何取消留痕 | ⛔ **禁止重建** | 异常终止 ⇒ 先人工核对门户预约 |
|
|
51
87
|
|
|
@@ -82,6 +118,8 @@ div.day=0/hour=0)」,而**同店同 SKU 的另一张票 4 分钟后 8/8 成功
|
|
|
82
118
|
「`ya no está disponible`」(该时段已被占)——它由引擎按 `defer` 处理(当日不重试、次日重置一次),
|
|
83
119
|
**不需要**你在台账里再加工。
|
|
84
120
|
|
|
121
|
+
- **失败分支不再自动取消预约**(2026-10-24):失败后先核实 hub/门户状态;确认需要取消才走步骤8,避免假失败误取消。
|
|
122
|
+
- **无评估不重跑**:`verdict != retry` 或 `safe_to_retry=false` 时,禁止派发 `--allow-write` 重跑。
|
|
85
123
|
- **清号重建的唯一入口**是 `flow_retry.py`(已内置**分类闸门**+**预约闸门**,任一不过即拒绝);
|
|
86
124
|
- **保留货件号**重派 = 续跑该货件(引擎跳过步骤3),**不会**新建货件 ⇒ 页面/选择器类失败优先走这条;
|
|
87
125
|
- 你自己不能绕过闸门:需要人工放行时,请让用户用 `--override --reason '<核对说明>'`。
|