agentworkshop 0.5.4 → 0.5.5
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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/f2f649c5-fd3b-4507-a3a1-8b4a194de72d.json +1 -0
- package/.output/server/chunks/_/nitro.mjs +602 -570
- package/.output/server/package.json +1 -1
- package/cli/commands/start.mjs +2 -2
- package/package.json +1 -1
- package/scripts/_dbg-prompts-resolve-test.ts +39 -0
- package/scripts/start.mjs +2 -0
- package/server/data/daqs.json +75 -75
- package/server/data/dcw-lines.json +7 -0
- package/server/data/dcw-products.json +7 -0
- package/server/data/dcw-rollback.json +139 -1
- package/server/data/dcw-runs.json +27 -18
- package/server/data/dcw-writes.json +48 -0
- package/server/data/dcws.json +21 -0
- package/server/data/line-runs.json +22 -22
- package/server/services/workshop/prompts/loader.ts +63 -10
- package/.output/public/_nuxt/builds/meta/70bd10c7-55cf-4e49-94de-8aa1b9edf33a.json +0 -1
|
@@ -2980,6 +2980,52 @@
|
|
|
2980
2980
|
"id": "anc-505979a6",
|
|
2981
2981
|
"at": "2026-09-02T08:46:51.200Z",
|
|
2982
2982
|
"recordId": "opt-6359e595"
|
|
2983
|
+
},
|
|
2984
|
+
{
|
|
2985
|
+
"lineId": "ln-69eaecb9",
|
|
2986
|
+
"nodeId": "dw-eeedb292",
|
|
2987
|
+
"prevValue": null,
|
|
2988
|
+
"newValue": 180,
|
|
2989
|
+
"source": "recipe",
|
|
2990
|
+
"actor": "recipe",
|
|
2991
|
+
"recipeRunId": "rr-09acb43b",
|
|
2992
|
+
"id": "anc-91a44530",
|
|
2993
|
+
"at": "2026-09-02T10:37:44.170Z"
|
|
2994
|
+
},
|
|
2995
|
+
{
|
|
2996
|
+
"lineId": "ln-69eaecb9",
|
|
2997
|
+
"nodeId": "dw-eeedb292",
|
|
2998
|
+
"prevValue": 180,
|
|
2999
|
+
"newValue": 182,
|
|
3000
|
+
"source": "manual",
|
|
3001
|
+
"actor": "5297cae1-2433-4d77-baf8-d67f5b71ed79",
|
|
3002
|
+
"recipeRunId": null,
|
|
3003
|
+
"id": "anc-b1bb0e47",
|
|
3004
|
+
"at": "2026-09-02T10:37:51.134Z"
|
|
3005
|
+
},
|
|
3006
|
+
{
|
|
3007
|
+
"lineId": "ln-69eaecb9",
|
|
3008
|
+
"nodeId": "dw-eeedb292",
|
|
3009
|
+
"prevValue": 182,
|
|
3010
|
+
"newValue": 180,
|
|
3011
|
+
"source": "manual",
|
|
3012
|
+
"actor": "5297cae1-2433-4d77-baf8-d67f5b71ed79",
|
|
3013
|
+
"recipeRunId": null,
|
|
3014
|
+
"id": "anc-8f41ca5c",
|
|
3015
|
+
"at": "2026-09-02T10:37:51.260Z"
|
|
3016
|
+
},
|
|
3017
|
+
{
|
|
3018
|
+
"lineId": "ln-69eaecb9",
|
|
3019
|
+
"nodeId": "dw-eeedb292",
|
|
3020
|
+
"prevValue": 180,
|
|
3021
|
+
"newValue": 182,
|
|
3022
|
+
"source": "agent",
|
|
3023
|
+
"actor": "24c5f341-d313-4bb7-8971-6223c42883be",
|
|
3024
|
+
"recipeRunId": null,
|
|
3025
|
+
"taskId": "87e886d0-04b1-41ae-b930-9a5df52c709f",
|
|
3026
|
+
"id": "anc-f709106f",
|
|
3027
|
+
"at": "2026-09-02T10:39:20.183Z",
|
|
3028
|
+
"recordId": "opt-1ad7ec25"
|
|
2983
3029
|
}
|
|
2984
3030
|
],
|
|
2985
3031
|
"records": [
|
|
@@ -3371,7 +3417,7 @@
|
|
|
3371
3417
|
"channels": [],
|
|
3372
3418
|
"degraded": true
|
|
3373
3419
|
},
|
|
3374
|
-
"evaluatedAt": "2026-09-
|
|
3420
|
+
"evaluatedAt": "2026-09-02T10:43:15.492Z",
|
|
3375
3421
|
"windowAgg": {
|
|
3376
3422
|
"at": "2026-08-31T16:25:17.398Z",
|
|
3377
3423
|
"fromMs": 1788193396897,
|
|
@@ -9555,6 +9601,98 @@
|
|
|
9555
9601
|
"closedAt": "2026-09-02T08:50:55.330Z",
|
|
9556
9602
|
"closedBy": "line-stop",
|
|
9557
9603
|
"aggPending": false
|
|
9604
|
+
},
|
|
9605
|
+
{
|
|
9606
|
+
"lineId": "ln-69eaecb9",
|
|
9607
|
+
"nodeId": "dw-eeedb292",
|
|
9608
|
+
"nodeName": "FFX-温度设定",
|
|
9609
|
+
"recipeId": "rc-4d460065",
|
|
9610
|
+
"agentId": "24c5f341-d313-4bb7-8971-6223c42883be",
|
|
9611
|
+
"taskId": "87e886d0-04b1-41ae-b930-9a5df52c709f",
|
|
9612
|
+
"hypothesis": "目标:温度设定 180→182℃(任务目标值,落在安全量程[150,200]∩配方窗口[176,188]内)。依据:最近5分钟(10:33~10:38,85样本)温度均值168.278℃,与182℃偏差-13.72℃,超±1℃阈值。预期效果:设定上调2℃补偿箱体散热偏差,推动熔体温度向182℃收敛。观察计划:热惯性数十秒,等待≥5分钟后 daq_query 复测5分钟窗口均值,再以 dcw_judge 落判定。",
|
|
9613
|
+
"params": [
|
|
9614
|
+
{
|
|
9615
|
+
"nodeId": "dw-eeedb292",
|
|
9616
|
+
"templateRef": "dcw-temp-sp",
|
|
9617
|
+
"from": 180,
|
|
9618
|
+
"to": 182
|
|
9619
|
+
}
|
|
9620
|
+
],
|
|
9621
|
+
"setAt": "2026-09-02T10:39:20.183Z",
|
|
9622
|
+
"status": "judged-keep",
|
|
9623
|
+
"judge": {
|
|
9624
|
+
"by": "agent",
|
|
9625
|
+
"actor": "24c5f341-d313-4bb7-8971-6223c42883be",
|
|
9626
|
+
"verdict": "keep",
|
|
9627
|
+
"reason": "设定下发验证:FFX-温度设定 180→182℃(任务目标值,窗口[176,188]内),PLC回读182℃一致。数采证据:调整前5分钟窗(10:33~10:38,85样本)均值168.278℃;调整后窗1(10:38~10:40,120样本)均值168.06℃,窗2(10:40~10:42,120样本)均值168.01℃,全程在预警带[152.8,182.2]内无告警,无持续单边漂移。结论:182℃设定稳定安全,已达成任务目标;实际熔体温度与设定存在~14℃稳态偏差(疑似箱体散热/热惯性耦合,节点语义已提示该滞后),不建议继续加码设定(违背≤1℃步进与收敛异常禁盲调规则),如需闭合实际偏差应查散热/传感器根因。",
|
|
9628
|
+
"at": "2026-09-02T10:42:58.683Z"
|
|
9629
|
+
},
|
|
9630
|
+
"anchorId": "anc-f709106f",
|
|
9631
|
+
"policy": "approve_rollback",
|
|
9632
|
+
"id": "opt-1ad7ec25",
|
|
9633
|
+
"createdAt": "2026-09-02T10:39:20.183Z",
|
|
9634
|
+
"baseline": {
|
|
9635
|
+
"at": "2026-09-02T10:39:20.200Z",
|
|
9636
|
+
"fromMs": 1788344960183,
|
|
9637
|
+
"toMs": 1788345560183,
|
|
9638
|
+
"channels": [
|
|
9639
|
+
{
|
|
9640
|
+
"daqNodeId": "dn-50d96a4f",
|
|
9641
|
+
"ch": "temp-tc",
|
|
9642
|
+
"unit": "℃",
|
|
9643
|
+
"latest": 167.9,
|
|
9644
|
+
"avg": 168.19,
|
|
9645
|
+
"min": 165.65,
|
|
9646
|
+
"max": 170.52,
|
|
9647
|
+
"cnt": 33,
|
|
9648
|
+
"breaches": 0
|
|
9649
|
+
},
|
|
9650
|
+
{
|
|
9651
|
+
"daqNodeId": "dn-fa573af6",
|
|
9652
|
+
"ch": "pressure-tx",
|
|
9653
|
+
"unit": "MPa",
|
|
9654
|
+
"latest": 0.8266666666666667,
|
|
9655
|
+
"avg": 0.82,
|
|
9656
|
+
"min": 0.76,
|
|
9657
|
+
"max": 0.92,
|
|
9658
|
+
"cnt": 33,
|
|
9659
|
+
"breaches": -1
|
|
9660
|
+
}
|
|
9661
|
+
]
|
|
9662
|
+
},
|
|
9663
|
+
"evaluatedAt": "2026-09-02T10:42:50.523Z",
|
|
9664
|
+
"windowAgg": {
|
|
9665
|
+
"at": "2026-09-02T10:42:58.691Z",
|
|
9666
|
+
"fromMs": 1788345560183,
|
|
9667
|
+
"toMs": 1788345778683,
|
|
9668
|
+
"channels": [
|
|
9669
|
+
{
|
|
9670
|
+
"daqNodeId": "dn-50d96a4f",
|
|
9671
|
+
"ch": "temp-tc",
|
|
9672
|
+
"unit": "℃",
|
|
9673
|
+
"latest": 169.5,
|
|
9674
|
+
"avg": 167.98,
|
|
9675
|
+
"min": 165.15,
|
|
9676
|
+
"max": 170.45,
|
|
9677
|
+
"cnt": 200,
|
|
9678
|
+
"breaches": 0
|
|
9679
|
+
},
|
|
9680
|
+
{
|
|
9681
|
+
"daqNodeId": "dn-fa573af6",
|
|
9682
|
+
"ch": "pressure-tx",
|
|
9683
|
+
"unit": "MPa",
|
|
9684
|
+
"latest": 0.935,
|
|
9685
|
+
"avg": 0.82,
|
|
9686
|
+
"min": 0.69,
|
|
9687
|
+
"max": 0.94,
|
|
9688
|
+
"cnt": 200,
|
|
9689
|
+
"breaches": -1
|
|
9690
|
+
}
|
|
9691
|
+
]
|
|
9692
|
+
},
|
|
9693
|
+
"closedAt": "2026-09-02T10:42:58.683Z",
|
|
9694
|
+
"closedBy": "judged",
|
|
9695
|
+
"aggPending": false
|
|
9558
9696
|
}
|
|
9559
9697
|
]
|
|
9560
9698
|
}
|
|
@@ -1,22 +1,4 @@
|
|
|
1
1
|
[
|
|
2
|
-
{
|
|
3
|
-
"id": "rr-57bca111",
|
|
4
|
-
"recipeId": "rc-ee30a7a0",
|
|
5
|
-
"recipeName": "终审配方A",
|
|
6
|
-
"productId": "pd-99159b45",
|
|
7
|
-
"lineId": "ln-c6713e4d",
|
|
8
|
-
"startedAt": "2026-08-29T15:13:03.707Z",
|
|
9
|
-
"endedAt": "2026-08-29T15:14:14.609Z",
|
|
10
|
-
"results": [
|
|
11
|
-
{
|
|
12
|
-
"templateRef": "dcw-temp-sp",
|
|
13
|
-
"nodeId": "dw-c4da380a",
|
|
14
|
-
"ok": true,
|
|
15
|
-
"message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
|
|
16
|
-
"value": 182
|
|
17
|
-
}
|
|
18
|
-
]
|
|
19
|
-
},
|
|
20
2
|
{
|
|
21
3
|
"id": "rr-c8ccb1f5",
|
|
22
4
|
"recipeId": "rc-3b094c50",
|
|
@@ -4731,5 +4713,32 @@
|
|
|
4731
4713
|
"max": 188
|
|
4732
4714
|
}
|
|
4733
4715
|
]
|
|
4716
|
+
},
|
|
4717
|
+
{
|
|
4718
|
+
"id": "rr-09acb43b",
|
|
4719
|
+
"recipeId": "rc-4d460065",
|
|
4720
|
+
"recipeName": "全功能配方-41bdm2",
|
|
4721
|
+
"productId": "pd-33f3607e",
|
|
4722
|
+
"lineId": "ln-69eaecb9",
|
|
4723
|
+
"startedAt": "2026-09-02T10:37:44.029Z",
|
|
4724
|
+
"endedAt": "2026-09-02T10:43:20.233Z",
|
|
4725
|
+
"results": [
|
|
4726
|
+
{
|
|
4727
|
+
"templateRef": "dcw-temp-sp",
|
|
4728
|
+
"nodeId": "dw-eeedb292",
|
|
4729
|
+
"ok": true,
|
|
4730
|
+
"message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
|
|
4731
|
+
"value": 180
|
|
4732
|
+
}
|
|
4733
|
+
],
|
|
4734
|
+
"paramsSnapshot": [
|
|
4735
|
+
{
|
|
4736
|
+
"nodeId": "dw-eeedb292",
|
|
4737
|
+
"templateRef": "dcw-temp-sp",
|
|
4738
|
+
"value": 180,
|
|
4739
|
+
"min": 176,
|
|
4740
|
+
"max": 188
|
|
4741
|
+
}
|
|
4742
|
+
]
|
|
4734
4743
|
}
|
|
4735
4744
|
]
|
|
@@ -9862,5 +9862,53 @@
|
|
|
9862
9862
|
"message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
|
|
9863
9863
|
"recipeRunId": null,
|
|
9864
9864
|
"at": "2026-09-02T08:46:51.079Z"
|
|
9865
|
+
},
|
|
9866
|
+
{
|
|
9867
|
+
"id": "wh-4b83484b",
|
|
9868
|
+
"nodeId": "dw-eeedb292",
|
|
9869
|
+
"nodeName": "FFX-温度设定",
|
|
9870
|
+
"param": "烘箱温度设定",
|
|
9871
|
+
"eng": 180,
|
|
9872
|
+
"raw": 180,
|
|
9873
|
+
"ok": true,
|
|
9874
|
+
"message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
|
|
9875
|
+
"recipeRunId": "rr-09acb43b",
|
|
9876
|
+
"at": "2026-09-02T10:37:44.035Z"
|
|
9877
|
+
},
|
|
9878
|
+
{
|
|
9879
|
+
"id": "wh-515c6f27",
|
|
9880
|
+
"nodeId": "dw-eeedb292",
|
|
9881
|
+
"nodeName": "FFX-温度设定",
|
|
9882
|
+
"param": "烘箱温度设定",
|
|
9883
|
+
"eng": 182,
|
|
9884
|
+
"raw": 182,
|
|
9885
|
+
"ok": true,
|
|
9886
|
+
"message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
|
|
9887
|
+
"recipeRunId": null,
|
|
9888
|
+
"at": "2026-09-02T10:37:51.026Z"
|
|
9889
|
+
},
|
|
9890
|
+
{
|
|
9891
|
+
"id": "wh-f337d292",
|
|
9892
|
+
"nodeId": "dw-eeedb292",
|
|
9893
|
+
"nodeName": "FFX-温度设定",
|
|
9894
|
+
"param": "烘箱温度设定",
|
|
9895
|
+
"eng": 180,
|
|
9896
|
+
"raw": 180,
|
|
9897
|
+
"ok": true,
|
|
9898
|
+
"message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
|
|
9899
|
+
"recipeRunId": null,
|
|
9900
|
+
"at": "2026-09-02T10:37:51.168Z"
|
|
9901
|
+
},
|
|
9902
|
+
{
|
|
9903
|
+
"id": "wh-f7919063",
|
|
9904
|
+
"nodeId": "dw-eeedb292",
|
|
9905
|
+
"nodeName": "FFX-温度设定",
|
|
9906
|
+
"param": "烘箱温度设定",
|
|
9907
|
+
"eng": 182,
|
|
9908
|
+
"raw": 182,
|
|
9909
|
+
"ok": true,
|
|
9910
|
+
"message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
|
|
9911
|
+
"recipeRunId": null,
|
|
9912
|
+
"at": "2026-09-02T10:39:20.083Z"
|
|
9865
9913
|
}
|
|
9866
9914
|
]
|
package/server/data/dcws.json
CHANGED
|
@@ -2026,5 +2026,26 @@
|
|
|
2026
2026
|
"state": "ok",
|
|
2027
2027
|
"lastError": null,
|
|
2028
2028
|
"createdAt": "2026-09-02T08:44:01.557Z"
|
|
2029
|
+
},
|
|
2030
|
+
{
|
|
2031
|
+
"id": "dw-eeedb292",
|
|
2032
|
+
"templateRef": "dcw-temp-sp",
|
|
2033
|
+
"name": "FFX-温度设定",
|
|
2034
|
+
"driver": "mock",
|
|
2035
|
+
"enabled": true,
|
|
2036
|
+
"holdIntervalMs": null,
|
|
2037
|
+
"unit": "℃",
|
|
2038
|
+
"decimals": 1,
|
|
2039
|
+
"min": 150,
|
|
2040
|
+
"max": 200,
|
|
2041
|
+
"deviceBindingId": null,
|
|
2042
|
+
"driverConfig": {},
|
|
2043
|
+
"lineId": "ln-69eaecb9",
|
|
2044
|
+
"value": 182,
|
|
2045
|
+
"lastAckAt": "2026-09-02T10:39:20.083Z",
|
|
2046
|
+
"lastWriteAt": "2026-09-02T10:39:20.083Z",
|
|
2047
|
+
"state": "ok",
|
|
2048
|
+
"lastError": null,
|
|
2049
|
+
"createdAt": "2026-09-02T10:37:43.697Z"
|
|
2029
2050
|
}
|
|
2030
2051
|
]
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"productId": "pd-3ad54846",
|
|
8
8
|
"productName": "光学膜 BOPP",
|
|
9
9
|
"startedAt": "2026-08-31T16:20:13.707Z",
|
|
10
|
-
"taggedSamples":
|
|
10
|
+
"taggedSamples": 34566
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
13
|
"lineId": "ln-c377a6bf",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"productId": "pd-7e69e0ee",
|
|
18
18
|
"productName": "警告验证产品-k2xh",
|
|
19
19
|
"startedAt": "2026-09-01T03:23:18.233Z",
|
|
20
|
-
"taggedSamples":
|
|
20
|
+
"taggedSamples": 14092
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"lineId": "ln-9224d3d7",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"productId": "pd-910c0fa8",
|
|
28
28
|
"productName": "新协议产品-9xhn",
|
|
29
29
|
"startedAt": "2026-09-01T05:59:24.062Z",
|
|
30
|
-
"taggedSamples":
|
|
30
|
+
"taggedSamples": 17074
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"lineId": "ln-386c53ed",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"productId": "pd-2d4f9357",
|
|
38
38
|
"productName": "新协议产品-6ofk",
|
|
39
39
|
"startedAt": "2026-09-01T06:05:53.063Z",
|
|
40
|
-
"taggedSamples":
|
|
40
|
+
"taggedSamples": 17363
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"lineId": "ln-5957f6db",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"productId": "pd-a3ed5047",
|
|
48
48
|
"productName": "新协议产品-x4hd",
|
|
49
49
|
"startedAt": "2026-09-01T06:09:02.148Z",
|
|
50
|
-
"taggedSamples":
|
|
50
|
+
"taggedSamples": 16949
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
"lineId": "ln-9ec42f08",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"productId": "pd-5de729c0",
|
|
58
58
|
"productName": "新协议产品-teti",
|
|
59
59
|
"startedAt": "2026-09-01T06:13:44.315Z",
|
|
60
|
-
"taggedSamples":
|
|
60
|
+
"taggedSamples": 16928
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
"lineId": "ln-69e37924",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"productId": "pd-45eb8d43",
|
|
68
68
|
"productName": "新协议产品-fg8t",
|
|
69
69
|
"startedAt": "2026-09-01T06:16:47.469Z",
|
|
70
|
-
"taggedSamples":
|
|
70
|
+
"taggedSamples": 16961
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
"lineId": "ln-c269e692",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"productId": "pd-b3bd0191",
|
|
78
78
|
"productName": "新协议产品-w2sp",
|
|
79
79
|
"startedAt": "2026-09-01T06:56:05.893Z",
|
|
80
|
-
"taggedSamples":
|
|
80
|
+
"taggedSamples": 17012
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
83
|
"lineId": "ln-229d1637",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"productId": "pd-06b896f9",
|
|
88
88
|
"productName": "新协议产品-lp4h",
|
|
89
89
|
"startedAt": "2026-09-01T06:57:29.288Z",
|
|
90
|
-
"taggedSamples":
|
|
90
|
+
"taggedSamples": 16884
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
93
|
"lineId": "ln-9546f91f",
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"productId": "pd-53e55078",
|
|
98
98
|
"productName": "新协议产品-jri6",
|
|
99
99
|
"startedAt": "2026-09-01T07:00:25.059Z",
|
|
100
|
-
"taggedSamples":
|
|
100
|
+
"taggedSamples": 16307
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
103
|
"lineId": "ln-087aad5b",
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
"productId": "pd-e7e969af",
|
|
108
108
|
"productName": "新协议产品-4c2d",
|
|
109
109
|
"startedAt": "2026-09-01T07:09:07.307Z",
|
|
110
|
-
"taggedSamples":
|
|
110
|
+
"taggedSamples": 15299
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
113
|
"lineId": "ln-97d44f8a",
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
"productId": "pd-28a3ab2c",
|
|
118
118
|
"productName": "新协议产品-b2ni",
|
|
119
119
|
"startedAt": "2026-09-01T07:13:44.912Z",
|
|
120
|
-
"taggedSamples":
|
|
120
|
+
"taggedSamples": 15148
|
|
121
121
|
},
|
|
122
122
|
{
|
|
123
123
|
"lineId": "ln-a9551770",
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
"productId": "pd-0c6a64c8",
|
|
128
128
|
"productName": "新协议产品-uwkf",
|
|
129
129
|
"startedAt": "2026-09-01T07:15:40.113Z",
|
|
130
|
-
"taggedSamples":
|
|
130
|
+
"taggedSamples": 14793
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
133
|
"lineId": "ln-844ad82f",
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"productId": "pd-6932b24f",
|
|
138
138
|
"productName": "新协议产品-kk6l",
|
|
139
139
|
"startedAt": "2026-09-01T09:06:55.728Z",
|
|
140
|
-
"taggedSamples":
|
|
140
|
+
"taggedSamples": 12948
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
143
|
"lineId": "ln-af002514",
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
"productId": "pd-6348a595",
|
|
148
148
|
"productName": "0.8mm 光学膜",
|
|
149
149
|
"startedAt": "2026-09-01T14:06:28.766Z",
|
|
150
|
-
"taggedSamples":
|
|
150
|
+
"taggedSamples": 5772
|
|
151
151
|
},
|
|
152
152
|
{
|
|
153
153
|
"lineId": "ln-0eccf6ba",
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
"productId": "pd-4b71be77",
|
|
158
158
|
"productName": "哨兵产品-mtjku36w",
|
|
159
159
|
"startedAt": "2026-09-02T04:09:11.482Z",
|
|
160
|
-
"taggedSamples":
|
|
160
|
+
"taggedSamples": 1213
|
|
161
161
|
},
|
|
162
162
|
{
|
|
163
163
|
"lineId": "ln-e984246e",
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"productId": "pd-bb1e0bed",
|
|
168
168
|
"productName": "产品C-mtjkwyhu",
|
|
169
169
|
"startedAt": "2026-09-02T04:11:26.583Z",
|
|
170
|
-
"taggedSamples":
|
|
170
|
+
"taggedSamples": 1212
|
|
171
171
|
},
|
|
172
172
|
{
|
|
173
173
|
"lineId": "ln-1fe0b5bc",
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
"productId": "pd-9f2d9507",
|
|
178
178
|
"productName": "产品D-mtjkzcfr",
|
|
179
179
|
"startedAt": "2026-09-02T04:13:17.902Z",
|
|
180
|
-
"taggedSamples":
|
|
180
|
+
"taggedSamples": 1211
|
|
181
181
|
},
|
|
182
182
|
{
|
|
183
183
|
"lineId": "ln-d826473e",
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
"productId": "pd-d230255e",
|
|
188
188
|
"productName": "产品E-mtjl43pv",
|
|
189
189
|
"startedAt": "2026-09-02T04:16:59.891Z",
|
|
190
|
-
"taggedSamples":
|
|
190
|
+
"taggedSamples": 1210
|
|
191
191
|
},
|
|
192
192
|
{
|
|
193
193
|
"lineId": "ln-156abb71",
|
|
@@ -197,7 +197,7 @@
|
|
|
197
197
|
"productId": "pd-6065b4ba",
|
|
198
198
|
"productName": "产品F-mtjl60qf",
|
|
199
199
|
"startedAt": "2026-09-02T04:18:29.340Z",
|
|
200
|
-
"taggedSamples":
|
|
200
|
+
"taggedSamples": 1209
|
|
201
201
|
},
|
|
202
202
|
{
|
|
203
203
|
"lineId": "ln-bac43927",
|
|
@@ -207,7 +207,7 @@
|
|
|
207
207
|
"productId": "pd-52f54e33",
|
|
208
208
|
"productName": "产品G-mtjl98nl",
|
|
209
209
|
"startedAt": "2026-09-02T04:20:59.682Z",
|
|
210
|
-
"taggedSamples":
|
|
210
|
+
"taggedSamples": 1208
|
|
211
211
|
},
|
|
212
212
|
{
|
|
213
213
|
"lineId": "ln-f223008a",
|
|
@@ -217,6 +217,6 @@
|
|
|
217
217
|
"productId": "pd-d919d4bf",
|
|
218
218
|
"productName": "产品-mtjo000v",
|
|
219
219
|
"startedAt": "2026-09-02T05:37:50.743Z",
|
|
220
|
-
"taggedSamples":
|
|
220
|
+
"taggedSamples": 1207
|
|
221
221
|
}
|
|
222
222
|
]
|
|
@@ -7,11 +7,18 @@
|
|
|
7
7
|
* - 缓存:mtime 感知(文件修改即刻生效,dev/HMR 友好;stat 开销可忽略)
|
|
8
8
|
* - host-tools.json:结构化工具定义(name/label/description/parameters),
|
|
9
9
|
* JSON 承载 schema,与叙事型 md 并置同一目录统一管理
|
|
10
|
-
* -
|
|
10
|
+
* - 目录解析(hardening 后的规约,与配置根优先级同族):
|
|
11
|
+
* ① AW_PROMPTS_DIR 环境变量(显式覆盖,兼容旧约定)
|
|
12
|
+
* ② 项目内 <cwd 向上>/.AgentWorkShop/prompts 真实存在 → 项目内优先
|
|
13
|
+
* ③ 否则 ~/.AgentWorkShop/prompts —— 首次解析时从包内资产播种初始文件
|
|
14
|
+
* (只补缺失文件,绝不覆盖已有内容 → 用户在 Home 的定制即权威版本);
|
|
15
|
+
* 播种源 = AW_PACKAGE_ROOT(启动器注入的包根)/.AgentWorkShop/prompts
|
|
11
16
|
* 启动即校验(缺文件 fail-fast,防静默降级为无 prompt 裸跑)
|
|
12
17
|
*/
|
|
13
|
-
import { readFileSync, statSync,
|
|
14
|
-
import { join, resolve } from 'node:path'
|
|
18
|
+
import { copyFileSync, existsSync, readdirSync, readFileSync, statSync, mkdirSync } from 'node:fs'
|
|
19
|
+
import { dirname, join, resolve } from 'node:path'
|
|
20
|
+
import { fileURLToPath } from 'node:url'
|
|
21
|
+
import { awHome, findLocalConfigRoot } from '../../../../shared/config/home.mjs'
|
|
15
22
|
import { AppError } from '../../../utils/errors'
|
|
16
23
|
|
|
17
24
|
/** 模板变量值(字符串化注入) */
|
|
@@ -24,15 +31,61 @@ interface CacheEntry {
|
|
|
24
31
|
|
|
25
32
|
const cache = new Map<string, CacheEntry>()
|
|
26
33
|
|
|
27
|
-
/** prompts 目录(
|
|
34
|
+
/** 包内资产 prompts 目录(播种源;不存在返回 null) */
|
|
35
|
+
function packagedPromptsDir(): string | null {
|
|
36
|
+
const packageRoot = process.env.AW_PACKAGE_ROOT
|
|
37
|
+
? resolve(process.env.AW_PACKAGE_ROOT)
|
|
38
|
+
: resolve(dirname(fileURLToPath(import.meta.url)), '../../../..')
|
|
39
|
+
const candidate = join(packageRoot, '.AgentWorkShop', 'prompts')
|
|
40
|
+
return existsSync(candidate) ? candidate : null
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** 首次解析时把包内初始 prompts 播种到 ~/.AgentWorkShop/prompts(只补缺,不覆盖) */
|
|
44
|
+
function seedHomePrompts(homePrompts: string): void {
|
|
45
|
+
const src = packagedPromptsDir()
|
|
46
|
+
if (!src || resolve(src) === resolve(homePrompts)) return
|
|
47
|
+
mkdirSync(homePrompts, { recursive: true })
|
|
48
|
+
let seeded = 0
|
|
49
|
+
for (const f of readdirSync(src)) {
|
|
50
|
+
const dst = join(homePrompts, f)
|
|
51
|
+
if (existsSync(dst)) continue
|
|
52
|
+
try {
|
|
53
|
+
copyFileSync(join(src, f), dst)
|
|
54
|
+
seeded++
|
|
55
|
+
}
|
|
56
|
+
catch { /* 单文件失败不阻断播种 */ }
|
|
57
|
+
}
|
|
58
|
+
if (seeded > 0) console.log(`[prompts] 已向 ${homePrompts} 播种 ${seeded} 个初始提示词文件`)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* prompts 目录解析:显式覆盖 > 项目内(存在即用) > ~/.AgentWorkShop/prompts(自动播种)。
|
|
63
|
+
* 失败 fail-fast —— 外置 prompt 为必需,防静默降级为无 prompt 裸跑。
|
|
64
|
+
*/
|
|
28
65
|
export function promptsDir(): string {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
66
|
+
// ① 显式覆盖(兼容既有部署约定)
|
|
67
|
+
if (process.env.AW_PROMPTS_DIR) {
|
|
68
|
+
const base = resolve(process.env.AW_PROMPTS_DIR)
|
|
69
|
+
if (!existsSync(base)) {
|
|
70
|
+
throw new AppError(500, 'PROMPTS_DIR_MISSING', `prompts 目录不存在: ${base}(AW_PROMPTS_DIR 指定)`)
|
|
71
|
+
}
|
|
72
|
+
return base
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// ~/.AgentWorkShop/prompts:默认兜底目录,首次解析自动播种初始文件(只补缺,不覆盖用户定制)
|
|
76
|
+
const homePrompts = join(awHome(process.env), 'prompts')
|
|
77
|
+
if (!existsSync(homePrompts)) seedHomePrompts(homePrompts)
|
|
78
|
+
|
|
79
|
+
// ② 项目内 ./.AgentWorkShop/prompts 真实存在 → 项目内优先
|
|
80
|
+
const localConfigRoot = findLocalConfigRoot(process.cwd())
|
|
81
|
+
if (localConfigRoot) {
|
|
82
|
+
const candidate = join(localConfigRoot, 'prompts')
|
|
83
|
+
if (existsSync(candidate)) return candidate
|
|
34
84
|
}
|
|
35
|
-
|
|
85
|
+
|
|
86
|
+
// ③ ~/.AgentWorkShop/prompts
|
|
87
|
+
if (existsSync(homePrompts)) return homePrompts
|
|
88
|
+
throw new AppError(500, 'PROMPTS_DIR_MISSING', `prompts 目录不存在(已尝试自动播种): ${homePrompts};可用 AW_PROMPTS_DIR 指定`)
|
|
36
89
|
}
|
|
37
90
|
|
|
38
91
|
/** 读取 md 原文(mtime 缓存;文件缺失 fail-fast) */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"70bd10c7-55cf-4e49-94de-8aa1b9edf33a","timestamp":1788343900925,"prerendered":[]}
|