nolo-cli 0.27.0 → 0.28.0

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.
Files changed (68) hide show
  1. package/{_executeModel-GBJY45QW.js → _executeModel-SUMILI7E.js} +13 -13
  2. package/{agentDeleteCommand-VFHDZJG3.js → agentDeleteCommand-GEHAXWM6.js} +7 -7
  3. package/{agentEmailCommands-NV64EI7G.js → agentEmailCommands-PQXAKGK2.js} +17 -17
  4. package/{agentListCommands-BDDUYHLP.js → agentListCommands-V2IIWNTX.js} +8 -8
  5. package/{agentMachineCommands-2KYBYNLE.js → agentMachineCommands-Y47CABE2.js} +7 -7
  6. package/{agentRecordCommands-3OX576G3.js → agentRecordCommands-UYUJUT4K.js} +16 -16
  7. package/{agentRunCommand-FZOGN67Y.js → agentRunCommand-3P6CCJQK.js} +17 -17
  8. package/{agentRuntimeLocal-552R4CZA.js → agentRuntimeLocal-ZALQDCZ3.js} +4 -4
  9. package/{agentSlice-7AEBCNVZ.js → agentSlice-LH2YKWE7.js} +1 -1
  10. package/{appDeleteCommands-IPJT6IYW.js → appDeleteCommands-XELAKISE.js} +8 -8
  11. package/{appDeployCommands-24P4CADQ.js → appDeployCommands-PFHVHXJ3.js} +8 -8
  12. package/{appDeployStatusCommands-3DRZOUAG.js → appDeployStatusCommands-RULB3DGE.js} +8 -8
  13. package/{appGetCommands-JEOSBLUL.js → appGetCommands-A3NLQ2U5.js} +8 -8
  14. package/{appListCommands-EIBM54WR.js → appListCommands-NQLJ7RHY.js} +8 -8
  15. package/{authCommand-MKMYHD52.js → authCommand-XMQHBK5L.js} +470 -40
  16. package/chunk-2FX23RGA.js +162 -0
  17. package/{chunk-6MBOZ4UP.js → chunk-2TYLTEAH.js} +1 -1
  18. package/{chunk-W2IOPRHX.js → chunk-4O2L6YR5.js} +3 -3
  19. package/{chunk-X43U4JUJ.js → chunk-4UYKPT74.js} +1 -1
  20. package/{chunk-TTPVLL5F.js → chunk-7IX2Z2IF.js} +8 -8
  21. package/{chunk-3X4IYB22.js → chunk-7OYY7W4W.js} +2 -2
  22. package/{chunk-ZNFZGHKL.js → chunk-7ZKK4F22.js} +1 -1
  23. package/{chunk-YZV4676I.js → chunk-A6WDXLAG.js} +2 -2
  24. package/{chunk-KXEWHQAW.js → chunk-ATGTWONB.js} +1 -1
  25. package/{chunk-Z3ORPMOA.js → chunk-BTA2CW6H.js} +6 -6
  26. package/{chunk-J7PB5GXH.js → chunk-D36OKPFG.js} +1 -1
  27. package/{chunk-56CPK6JE.js → chunk-D5D3XTWF.js} +30 -35
  28. package/{chunk-V7BUGVT2.js → chunk-E4XWECLB.js} +2 -2
  29. package/{chunk-UADEEVDX.js → chunk-HTLBU4ZY.js} +5 -5
  30. package/{chunk-N32A423D.js → chunk-IVMPWUAR.js} +2 -2
  31. package/{chunk-O5VFD7V6.js → chunk-MSXDPLDQ.js} +1 -1
  32. package/{chunk-NCRWA6ZB.js → chunk-MY54LNPC.js} +2 -2
  33. package/{chunk-4FRIAKSZ.js → chunk-OMN2LILO.js} +1 -1
  34. package/{chunk-7OYLPHDL.js → chunk-PASYOZYI.js} +22 -65
  35. package/{chunk-AL2V7U3E.js → chunk-PJY5AH5A.js} +25 -8
  36. package/chunk-PSK2RUHV.js +529 -0
  37. package/{chunk-Q4TAIQTA.js → chunk-QUXMWSCQ.js} +21 -47
  38. package/{chunk-PVWFM7JP.js → chunk-RRWRVIQU.js} +1 -1
  39. package/{chunk-QCUS52YR.js → chunk-SFFG3HJH.js} +3 -3
  40. package/{chunk-7WMLPRXP.js → chunk-UP7UFQOH.js} +1 -1
  41. package/{chunk-VV4TYWNV.js → chunk-WX3ZOSTL.js} +376 -656
  42. package/{chunk-HQFXBRI2.js → chunk-XMAELUQW.js} +11 -11
  43. package/{chunk-7OBMZCRD.js → chunk-ZVZMT3EA.js} +7 -5
  44. package/{createAgentAutomationAction-YB65NAU5.js → createAgentAutomationAction-FAYQK5ME.js} +2 -2
  45. package/{createDialogAction-6USRBKKL.js → createDialogAction-NDBK6IQG.js} +3 -3
  46. package/{createPageAction-ZGE3SG6J.js → createPageAction-CQTLV7FP.js} +2 -2
  47. package/{dialogCommands-O4CJJRTQ.js → dialogCommands-ZR42K2M5.js} +8 -8
  48. package/{dialogSlice-HMRBZCSE.js → dialogSlice-ZLGEYKLO.js} +2 -2
  49. package/{docCreateCommands-2U5AIF3O.js → docCreateCommands-2WXA3BCQ.js} +7 -7
  50. package/{docDeleteCommands-EDCAUQEF.js → docDeleteCommands-HSL7CD32.js} +8 -8
  51. package/{docReadCommands-KFMBFGPY.js → docReadCommands-YSPUU2DP.js} +7 -7
  52. package/{docStore-ZGGDZFCC.js → docStore-LJQIY2ZU.js} +3 -3
  53. package/{docUpdateCommands-57M4XOT7.js → docUpdateCommands-EFYOIVM7.js} +7 -7
  54. package/{handleSendMessageAction-ANCZXLQY.js → handleSendMessageAction-JL6GGVNW.js} +2 -2
  55. package/index.js +46 -46
  56. package/{machineCommands-6EG5U6TU.js → machineCommands-VAANUFNC.js} +15 -15
  57. package/{machineWsRunDispatch-SFIKRI4G.js → machineWsRunDispatch-ABWV2WZO.js} +15 -15
  58. package/package.json +1 -1
  59. package/{readlineWorkspace-TVIHBRN2.js → readlineWorkspace-GQI3XP5E.js} +41 -44
  60. package/{runAgentClientLoop-SJ6QQ3ZS.js → runAgentClientLoop-U632N2KO.js} +9 -9
  61. package/{skillDiscovery-KJWT7JBU.js → skillDiscovery-ITA7BI7A.js} +4 -2
  62. package/{spaceCommands-XK46FRYG.js → spaceCommands-DE6KNJIV.js} +7 -7
  63. package/{spaceSlice-FNFNVXPQ.js → spaceSlice-QTMWWQHQ.js} +2 -2
  64. package/{streamAgentChatTurn-HHIWP44U.js → streamAgentChatTurn-VU7BM3K3.js} +12 -12
  65. package/{tools-CT7AFBI3.js → tools-LSIS6NY6.js} +5 -5
  66. package/{updateDialogTitleAction-7RFN5GA4.js → updateDialogTitleAction-T77A54DE.js} +2 -2
  67. package/chunk-UTYJ47H2.js +0 -51
  68. package/chunk-ZJ7WLPDP.js +0 -553
package/chunk-ZJ7WLPDP.js DELETED
@@ -1,553 +0,0 @@
1
- import {
2
- isImageUrlPart
3
- } from "./chunk-D34RI6NI.js";
4
- import {
5
- canonicalizeToolNames
6
- } from "./chunk-ZZ2MH7LE.js";
7
- import {
8
- asTrimmedLowercaseString
9
- } from "./chunk-QSJ3HFEF.js";
10
- import {
11
- asTrimmedString
12
- } from "./chunk-3EUW3WEO.js";
13
-
14
- // packages/agent-runtime/identityBlock.ts
15
- var buildIdentityBlock = (input) => {
16
- const lines = [
17
- "--- \u8EAB\u4EFD\u4FE1\u606F ---",
18
- asTrimmedString(input.agentName) ? `\u540D\u79F0: ${asTrimmedString(input.agentName)}` : "",
19
- asTrimmedString(input.agentId) ? `ID: ${asTrimmedString(input.agentId)}` : "",
20
- asTrimmedString(input.model) ? `\u6A21\u578B: ${asTrimmedString(input.model)}` : "",
21
- `\u56DE\u590D\u8BED\u8A00: ${asTrimmedString(input.responseLanguage) || "\u9ED8\u8BA4\u8DDF\u968F\u7528\u6237\u672C\u8F6E\u8F93\u5165\u8BED\u8A00"}`
22
- ].filter(Boolean);
23
- return lines.join("\n");
24
- };
25
-
26
- // packages/agent-runtime/contextLayerContract.ts
27
- var buildContextLayerContractBlock = (options = {}) => {
28
- const lines = [
29
- "--- \u77E5\u8BC6\u5B58\u50A8\u7EA6\u5B9A ---",
30
- "\u4E0D\u8981\u628A\u6240\u6709\u4FE1\u606F\u90FD\u585E\u8FDB\u540C\u4E00\u5C42\u3002\u4F18\u5148\u5229\u7528\u5DF2\u6709\u7684 memory / knowledge / doc\uFF0C\u800C\u4E0D\u662F\u628A\u5B83\u4EEC\u6DF7\u6210\u4E00\u6BB5\u957F\u5BF9\u8BDD\u3002",
31
- "",
32
- "\u5C42\u6B21\u8FB9\u754C\uFF1A",
33
- "1. memory layer\uFF1A\u653E\u77ED\u5230\u4E2D\u671F\u3001\u53EF\u590D\u7528\u4F46\u4E0D\u5FC5\u6C38\u4E45\u6302\u8F7D\u7684\u504F\u597D\u3001\u8FD1\u671F\u5171\u8BC6\u548C\u538B\u7F29\u540E\u7684\u7ECF\u9A8C\uFF1B\u8981\u77ED\u3001\u53EF\u68C0\u7D22\u3001\u53EF\u66FF\u6362\u3002",
34
- "2. knowledge layer\uFF1A\u653E\u7A33\u5B9A\u89C4\u5219\u3001\u957F\u671F\u6709\u6548\u4E8B\u5B9E\u548C\u6BCF\u8F6E\u90FD\u4F1A\u53CD\u590D\u4F9D\u8D56\u7684\u8BF4\u660E\uFF1B\u4F18\u5148\u901A\u8FC7 prompt / references \u81EA\u52A8\u52A0\u8F7D\u3002",
35
- "3. doc layer\uFF1A\u653E\u9700\u8981\u8DE8\u8F6E\u6B21\u6301\u7EED\u7EF4\u62A4\u7684\u5916\u90E8\u5DE5\u4F5C\u53F0\uFF0C\u4F8B\u5982 runbook\u3001mission\u3001incident\u3001checkpoint\u3001idea backlog\u3001experiment log\uFF1B\u9700\u8981\u65F6\u663E\u5F0F\u8BFB\u53D6\u548C\u66F4\u65B0\u3002",
36
- "",
37
- "\u5199\u5165\u539F\u5219\uFF1A",
38
- "- \u4E34\u65F6\u6B65\u9AA4\u3001\u539F\u59CB\u957F\u65E5\u5FD7\u3001\u4E00\u6B21\u6027\u601D\u8DEF\uFF0C\u4E0D\u8981\u76F4\u63A5\u5199\u8FDB memory \u6216 knowledge\u3002",
39
- "- \u7A33\u5B9A\u884C\u4E3A\u89C4\u5219\u3001\u957F\u671F\u56FA\u5B9A\u7EA6\u675F\uFF0C\u4F18\u5148\u6C89\u6DC0\u5230 knowledge layer\u3002",
40
- "- \u7528\u6237\u504F\u597D\u3001\u6700\u8FD1\u5F62\u6210\u7684\u534F\u4F5C\u5171\u8BC6\u3001\u8FD1\u671F\u53CD\u590D\u6709\u7528\u7684\u7ECF\u9A8C\uFF0C\u4F18\u5148\u6C89\u6DC0\u5230 memory layer\u3002",
41
- "- \u9700\u8981\u8DE8\u8F6E\u6B21\u63A5\u529B\u7684\u4EFB\u52A1\u72B6\u6001\u3001\u8FD0\u884C\u624B\u518C\u3001\u4E8B\u6545\u8BB0\u5F55\u3001\u68C0\u67E5\u70B9\uFF0C\u4F18\u5148\u5199\u5165 doc layer\u3002"
42
- ];
43
- if (options.hasRememberMemoryTool) {
44
- lines.push(
45
- "- \u5F53\u67D0\u6761\u504F\u597D\u3001\u8FD1\u671F\u5171\u8BC6\u6216\u590D\u7528\u7ECF\u9A8C\u5BF9\u672A\u6765\u660E\u663E\u6709\u5E2E\u52A9\u65F6\uFF0C\u53EF\u4EE5\u8C03\u7528 rememberMemory\uFF0C\u4F46\u8981\u5199\u6210\u7B80\u6D01\u53EF\u590D\u7528\u7684\u4E00\u53E5\u8BDD\uFF1B\u53EA\u6709\u5F53\u524D dialog \u660E\u786E\u7ED1\u5B9A\u4E86 space\uFF0C\u4E14\u5185\u5BB9\u5C5E\u4E8E\u5171\u4EAB\u534F\u4F5C\u89C4\u5219\u65F6\u624D\u5199 space memory\u3002"
46
- );
47
- }
48
- if (options.hasDocTools) {
49
- lines.push(
50
- "- \u5F53\u4EFB\u52A1\u9700\u8981 24h \u8FDE\u7EED\u8FD0\u884C\u3001\u8DE8 dialog \u63A5\u529B\u6216\u4EBA\u5DE5\u4E0E agent \u5171\u8BFB\u65F6\uFF0C\u4F18\u5148\u628A mission / runbook / incident / checkpoint / idea backlog / experiment log \u5199\u5165 doc layer\u3002"
51
- );
52
- }
53
- return lines.join("\n");
54
- };
55
-
56
- // packages/agent-runtime/startupProtocol.ts
57
- var buildStartupProtocolBlock = (options = {}) => {
58
- const lines = [
59
- "--- \u542F\u52A8\u534F\u8BAE ---",
60
- "\u542F\u52A8\u987A\u5E8F\uFF1A",
61
- "1. \u5148\u8BFB\u53D6 policy / knowledge\uFF1A\u4F60\u7684\u6838\u5FC3 prompt\u3001\u81EA\u52A8\u52A0\u8F7D\u7684 references\u3001\u4EE5\u53CA\u7528\u6237\u7B56\u7565\u7EA6\u675F\u3002",
62
- "2. \u518D\u63D0\u70BC current mission\uFF1A\u4F18\u5148\u4ECE\u5F53\u524D\u7528\u6237\u8F93\u5165\u548C\u5F53\u524D\u8F93\u5165\u4E0A\u4E0B\u6587\u91CC\u786E\u8BA4\u672C\u8F6E\u76EE\u6807\u3001\u4EA4\u4ED8\u7269\u548C\u505C\u6B62\u6761\u4EF6\u3002",
63
- "3. \u518D\u5438\u6536 recent memory\uFF1A\u7ED3\u5408 Memory Overlay\u3001\u5386\u53F2\u6458\u8981\u3001\u6700\u8FD1\u5DE5\u4F5C\u8BB0\u5FC6\u548C\u5FC5\u8981\u7684\u5386\u53F2\u5F15\u7528\uFF0C\u53EA\u4FDD\u7559\u5BF9\u672C\u8F6E\u771F\u6B63\u6709\u5E2E\u52A9\u7684\u90E8\u5206\u3002",
64
- "4. \u9700\u8981\u65F6\u518D\u8BFB\u53D6 doc\uFF1A\u5982\u679C\u4EFB\u52A1\u6D89\u53CA\u8DE8\u8F6E\u6B21\u63A5\u529B\u3001\u8FD0\u884C\u624B\u518C\u6216\u5171\u4EAB\u5DE5\u4F5C\u53F0\uFF0C\u8BFB\u53D6\u76F8\u5173 doc \u83B7\u53D6\u6700\u65B0\u72B6\u6001\u3002",
65
- "",
66
- "\u5728\u7B2C\u4E00\u6B21\u5DE5\u5177\u8C03\u7528\u524D\uFF0C\u5148\u5F62\u6210\u4E00\u4EFD\u5185\u90E8 working state\uFF0C\u81F3\u5C11\u5305\u542B\uFF1A",
67
- "- current_goal\uFF1A\u8FD9\u4E00\u8F6E\u771F\u6B63\u8981\u5B8C\u6210\u4EC0\u4E48",
68
- "- constraints\uFF1A\u5F53\u524D\u7EA6\u675F\u3001\u504F\u597D\u3001\u8FB9\u754C\u6761\u4EF6",
69
- "- missing_facts\uFF1A\u8FD8\u7F3A\u54EA\u4E9B\u4E8B\u5B9E\u624D\u80FD\u5B89\u5168\u884C\u52A8",
70
- "- next_action\uFF1A\u4E0B\u4E00\u6B65\u6700\u5C0F\u4E14\u9AD8\u4EF7\u503C\u7684\u52A8\u4F5C",
71
- "",
72
- "\u51B3\u7B56\u89C4\u5219\uFF1A",
73
- "- \u5982\u679C policy / knowledge \u5DF2\u7ECF\u8DB3\u591F\u56DE\u7B54\uFF0C\u5C31\u76F4\u63A5\u56DE\u7B54\uFF0C\u4E0D\u8981\u4E3A\u4E86\u663E\u5F97\u5FD9\u800C\u4E71\u8C03\u7528\u5DE5\u5177\u3002",
74
- "- \u5982\u679C recent memory \u4E0E\u5F53\u524D\u7528\u6237\u8F93\u5165\u51B2\u7A81\uFF0C\u4EE5\u5F53\u524D\u7528\u6237\u8F93\u5165\u4E3A\u51C6\u3002",
75
- "- \u5982\u679C\u9700\u8981\u4F9D\u8D56\u73AF\u5883\u3001\u6587\u4EF6\u72B6\u6001\u3001\u8FD0\u884C\u65F6\u4E8B\u5B9E\u6216\u5916\u90E8\u771F\u503C\uFF0C\u5148\u9A8C\u8BC1\uFF0C\u518D\u884C\u52A8\u3002",
76
- "- \u4F18\u5148\u5C0F\u6B65\u63A8\u8FDB\uFF1B\u6BCF\u4E00\u8F6E\u5148\u505A\u6700\u80FD\u964D\u4F4E\u4E0D\u786E\u5B9A\u6027\u7684\u52A8\u4F5C\u3002"
77
- ];
78
- if (options.hasCheckEnvTool || options.hasExecShellTool) {
79
- lines.push(
80
- "- \u53EA\u8981\u4EFB\u52A1\u6D89\u53CA\u547D\u4EE4\u6267\u884C\u3001shell \u8BED\u6CD5\u3001\u8DEF\u5F84\u7EA6\u5B9A\u3001\u8FD0\u884C\u5E73\u53F0\u6216\u670D\u52A1\u72B6\u6001\uFF0C\u5E76\u4E14\u8FD9\u4E9B\u4E8B\u5B9E\u8FD8\u4E0D\u591F\u660E\u786E\uFF0C\u5C31\u5148\u786E\u8BA4\u73AF\u5883\u3002"
81
- );
82
- }
83
- if (options.hasCheckEnvTool) {
84
- lines.push(
85
- "- \u73AF\u5883\u4E0D\u660E\u786E\u65F6\uFF0C\u4F18\u5148\u8C03\u7528 checkEnv({ check: 'context' })\uFF0C\u518D\u51B3\u5B9A\u540E\u7EED\u547D\u4EE4\u548C\u5DE5\u5177\u8DEF\u5F84\u3002"
86
- );
87
- }
88
- if (options.hasExecShellTool) {
89
- lines.push(
90
- "- \u9700\u8981\u6267\u884C\u547D\u4EE4\u65F6\uFF0C\u5148\u6839\u636E\u5DF2\u786E\u8BA4\u7684\u73AF\u5883\u9009\u62E9 shell\uFF1BWindows \u9ED8\u8BA4 PowerShell\uFF0CLinux/macOS \u9ED8\u8BA4 bash\u3002"
91
- );
92
- lines.push(
93
- "- \u5982\u679C\u53EA\u662F\u6536\u96C6\u591A\u4E2A\u53EA\u8BFB\u73AF\u5883\u4E8B\u5B9E\uFF0C\u4F18\u5148\u5408\u5E76\u6210\u4E00\u6B21 shell \u8C03\u7528\u6216\u4E00\u6761\u7EC4\u5408\u547D\u4EE4\uFF0C\u907F\u514D\u62C6\u6210\u5F88\u591A\u5C0F\u63A2\u9488\u3002"
94
- );
95
- }
96
- return lines.join("\n");
97
- };
98
-
99
- // packages/agent-runtime/runtimeGuidance.ts
100
- var normalizeToolName = (name) => name.replace(/[-_]/g, "").toLowerCase();
101
- var hasAnyTool = (normalizedTools, candidates) => candidates.some((candidate) => normalizedTools.has(normalizeToolName(candidate)));
102
- var hasAllTools = (normalizedTools, candidates) => candidates.every((candidate) => normalizedTools.has(normalizeToolName(candidate)));
103
- var buildEmailRegistrationWorkflowBlock = (enabled) => {
104
- if (!enabled) return "";
105
- return [
106
- "--- \u90AE\u7BB1\u9A8C\u8BC1\u7801\u6CE8\u518C\u6D41\u7A0B ---",
107
- "\u5F53\u7528\u6237\u8981\u6C42\u4F60\u6CE8\u518C\u7F51\u7AD9\u8D26\u53F7\u65F6\uFF0C\u53EA\u5141\u8BB8\u5904\u7406\u7528\u6237\u660E\u786E\u6307\u5B9A\u7684\u5F53\u524D\u76EE\u6807\u7F51\u7AD9\uFF0C\u4E0D\u8981\u81EA\u884C\u6269\u5C55\u5230\u5176\u4ED6\u7F51\u7AD9\u3001\u6279\u91CF\u6CE8\u518C\u6216\u89C4\u907F\u5E73\u53F0\u98CE\u63A7\u3002",
108
- "",
109
- "\u5206\u9636\u6BB5\u534F\u8BAE\uFF1Adiscover before acting -> assess supportability -> register -> verify -> closeout\u3002",
110
- "",
111
- "\u63A8\u8350\u6D41\u7A0B\uFF1A",
112
- "1. discover before acting\uFF1A\u5148\u7528 browser_openSession / browser_readContent \u9605\u8BFB\u9875\u9762\uFF0C\u786E\u8BA4\u76EE\u6807\u6CE8\u518C\u9875 URL\u3001\u8D26\u53F7\u7528\u9014\u3001\u5FC5\u586B\u9879\u548C\u505C\u6B62\u6761\u4EF6\uFF1B\u4E0D\u8981\u4E00\u6253\u5F00\u9875\u9762\u5C31\u76F2\u70B9\u6309\u94AE\u3002\u5982\u679C\u7F3A\u5C11\u76EE\u6807\u7F51\u7AD9\uFF0C\u5148\u8BE2\u95EE\u7528\u6237\u3002",
113
- "2. assess supportability\uFF1A\u5148\u5224\u65AD\u8BE5\u6D41\u7A0B\u662F\u5426\u652F\u6301\u5F53\u524D\u53D7\u63A7\u81EA\u52A8\u5316\u3002\u9047\u5230 CAPTCHA\u3001\u624B\u673A\u53F7\u9A8C\u8BC1\u3001\u652F\u4ED8\u3001\u8EAB\u4EFD/KYC\u3001OAuth-only\u3001\u670D\u52A1\u6761\u6B3E\u786E\u8BA4\u3001\u6216\u4EFB\u4F55\u770B\u8D77\u6765\u50CF\u89C4\u907F\u98CE\u63A7\u7684\u6B65\u9AA4\u65F6\uFF0C\u5FC5\u987B\u7ACB\u5373\u505C\u6B62\u5E76\u5411\u7528\u6237\u8BF4\u660E blockingReason\uFF1B\u4E0D\u8981\u786C\u95EF\u3002",
114
- "3. register\uFF1A\u53EA\u6709\u5728\u786E\u8BA4\u652F\u6301\u540E\uFF0C\u624D\u4F7F\u7528 email_provision_identity \u4E3A\u5F53\u524D agent \u751F\u6210\u53D7\u63A7\u57DF\u540D\u90AE\u7BB1\u8EAB\u4EFD\uFF0C\u518D\u4F7F\u7528 browser_openSession / browser_typeText / browser_click / browser_readContent \u586B\u5199\u5E76\u63D0\u4EA4\u6CE8\u518C\u8868\u5355\u3002",
115
- "4. verify\uFF1A\u63D0\u4EA4\u540E\u4F7F\u7528 email_wait_for \u7B49\u5F85\u8BE5 agent \u6536\u4EF6\u7BB1\u91CC\u7684\u9A8C\u8BC1\u90AE\u4EF6\uFF0C\u518D\u7528 email_extract_verification \u63D0\u53D6\u9A8C\u8BC1\u7801\u6216\u9A8C\u8BC1\u94FE\u63A5\uFF0C\u56DE\u586B\u9A8C\u8BC1\u7801\u6216\u6253\u5F00\u9A8C\u8BC1\u94FE\u63A5\u5B8C\u6210\u9A8C\u8BC1\u3002",
116
- "5. closeout\uFF1A\u65E0\u8BBA\u6210\u529F\u8FD8\u662F\u5931\u8D25\u90FD\u8981 always close sessions\uFF0C\u4E3B\u52A8\u6E05\u7406\u6D4F\u89C8\u5668\u4F1A\u8BDD\uFF08\u4F8B\u5982 browser_closeSession\uFF09\u3002\u5982\u679C\u6D41\u7A0B\u5931\u8D25\uFF0C\u5FC5\u987B\u660E\u786E failedStage \u4E0E blockingReason\uFF0C\u5E76\u8BF4\u660E\u53EF\u6062\u590D\u9009\u9879\uFF1B\u4E0D\u8981\u76F2\u76EE\u5C1D\u8BD5\u65E0\u5173\u7F51\u7AD9\u6216\u7ED5\u8FC7\u9A8C\u8BC1\u3002",
117
- "6. \u6700\u7EC8\u53EA\u5728\u5BF9\u8BDD\u4E2D\u8FD4\u56DE\u8D26\u53F7\u3001\u90AE\u7BB1\u548C\u4E00\u6B21\u6027\u751F\u6210\u7684\u5BC6\u7801\uFF1B\u4E0D\u8981\u6301\u4E45\u5316\u5BC6\u7801\uFF0C\u4E0D\u8981\u5199\u5165 agent metadata\u3001\u6570\u636E\u5E93\u3001\u6587\u6863\u6216\u8BB0\u5FC6\u3002",
118
- "",
119
- "\u5FC5\u987B\u6682\u505C\u5E76\u8BE2\u95EE\u7528\u6237\u7684\u60C5\u51B5\uFF1ACAPTCHA\u3001\u624B\u673A\u53F7\u9A8C\u8BC1\u3001\u652F\u4ED8\u3001\u8EAB\u4EFD/KYC\u3001OAuth \u6388\u6743\u3001OAuth-only\u3001\u670D\u52A1\u6761\u6B3E\u786E\u8BA4\u3001\u6216\u4EFB\u4F55\u770B\u8D77\u6765\u50CF\u89C4\u907F\u98CE\u63A7\u7684\u6B65\u9AA4\u3002",
120
- "\u5982\u679C\u6D41\u7A0B\u5931\u8D25\uFF0C\u8BF4\u660E failedStage\u3001blockingReason \u548C\u53EF\u6062\u590D\u9009\u9879\uFF0C\u4E0D\u8981\u76F2\u76EE\u5C1D\u8BD5\u65E0\u5173\u7F51\u7AD9\u6216\u7ED5\u8FC7\u9A8C\u8BC1\u3002"
121
- ].join("\n");
122
- };
123
- var buildWebResearchToolPolicyBlock = (hasExecShellTool, hasFetchWebpageTool) => {
124
- if (!hasExecShellTool || !hasFetchWebpageTool) return "";
125
- return [
126
- "--- \u751F\u4EA7\u73AF\u5883\u7F51\u9875\u7814\u7A76\u5DE5\u5177\u7B56\u7565 ---",
127
- "\u751F\u4EA7\u73AF\u5883\u7F51\u9875\u7814\u7A76\u4F18\u5148\u4F7F\u7528 fetchWebpage\u3001\u7AD9\u70B9 Markdown / llms.txt\u3001\u6216\u4E13\u7528\u6D4F\u89C8/\u641C\u7D22\u5DE5\u5177\u3002",
128
- "\u4E0D\u8981\u7528 execShell \u8C03 curl\u3001grep\u3001sed \u7B49\u547D\u4EE4\u6293\u7F51\u9875\u6216\u622A\u53D6\u7F51\u9875\u6BB5\u843D\uFF1B\u751F\u4EA7\u73AF\u5883\u901A\u5E38\u4F1A\u7981\u7528 dev shell\uFF0C\u53CD\u590D\u5C1D\u8BD5\u53EA\u4F1A\u6D6A\u8D39\u56DE\u5408\u3002",
129
- "\u5982\u679C\u7F51\u9875\u5185\u5BB9\u8FC7\u957F\u6216\u951A\u70B9\u6BB5\u843D\u6CA1\u6709\u88AB\u5355\u72EC\u63D0\u53D6\uFF0C\u5148\u5BFB\u627E\u8BE5\u6587\u6863\u7AD9\u63D0\u4F9B\u7684 Markdown \u7248\u672C\u3001\u72EC\u7ACB\u9875\u9762\u3001llms.txt \u7D22\u5F15\u6216\u66F4\u5177\u4F53 URL\uFF0C\u518D\u7EE7\u7EED\u56DE\u7B54\u3002"
130
- ].join("\n");
131
- };
132
- var resolveRuntimeGuidanceToolOptions = (tools = []) => {
133
- const normalizedTools = canonicalizeToolNames(tools);
134
- const normalizedToolSet = new Set(normalizedTools.map(normalizeToolName));
135
- const hasBrowserTools = hasAllTools(normalizedToolSet, [
136
- "browser_openSession",
137
- "browser_readContent",
138
- "browser_typeText",
139
- "browser_click",
140
- "browser_closeSession"
141
- ]);
142
- const hasBrowserProbe = hasAnyTool(normalizedToolSet, ["browser_probePage", "browserProbePage"]);
143
- const hasEmailRegistrationTools = hasAllTools(normalizedToolSet, [
144
- "email_provision_identity",
145
- "email_wait_for",
146
- "email_extract_verification"
147
- ]);
148
- return {
149
- hasCheckEnvTool: normalizedTools.includes("checkEnv"),
150
- hasExecShellTool: normalizedTools.includes("execShell"),
151
- hasRememberMemoryTool: normalizedTools.includes("rememberMemory"),
152
- hasDocTools: normalizedTools.some(
153
- (tool) => ["read", "readDoc", "readPage", "createDoc", "updateDoc"].includes(tool)
154
- ),
155
- hasBrowserTools,
156
- hasEmailRegistrationTools,
157
- // Require browser_probePage to be present before enabling email registration workflow guidance.
158
- hasEmailRegistrationWorkflow: hasBrowserTools && hasBrowserProbe && hasEmailRegistrationTools
159
- };
160
- };
161
- var buildRuntimeGuidanceBlocks = (tools = []) => {
162
- const options = resolveRuntimeGuidanceToolOptions(tools);
163
- const normalizedTools = canonicalizeToolNames(tools);
164
- return {
165
- startupProtocol: buildStartupProtocolBlock({
166
- hasCheckEnvTool: options.hasCheckEnvTool,
167
- hasExecShellTool: options.hasExecShellTool
168
- }),
169
- contextLayerContract: buildContextLayerContractBlock({
170
- hasRememberMemoryTool: options.hasRememberMemoryTool,
171
- hasDocTools: options.hasDocTools
172
- }),
173
- emailRegistrationWorkflow: buildEmailRegistrationWorkflowBlock(
174
- options.hasEmailRegistrationWorkflow
175
- ),
176
- webResearchToolPolicy: buildWebResearchToolPolicyBlock(
177
- options.hasExecShellTool,
178
- normalizedTools.includes("fetchWebpage")
179
- )
180
- };
181
- };
182
-
183
- // packages/agent-runtime/menuUsage.ts
184
- var MENU_USAGE_INSTRUCTIONS = `--- \u4EA4\u4E92\u8BF4\u660E ---
185
- \u6240\u6709\u7528\u6237\u8F93\u5165\u5747\u4E3A\u7EAF\u6587\u672C\u6D88\u606F\uFF0C\u76F4\u63A5\u7406\u89E3\u5373\u53EF\uFF0C\u4E0D\u8981\u5728\u56DE\u590D\u4E2D\u63D0\u53CA\u6309\u94AE\u3001\u83DC\u5355\u3001\u754C\u9762\u7B49 UI \u5143\u7D20\u3002
186
-
187
- ## \u4F55\u65F6\u8C03\u7528 ask_user
188
- \u9ED8\u8BA4\u503E\u5411"\u76F4\u63A5\u884C\u52A8"\uFF1A\u5F53\u4F60\u80FD\u57FA\u4E8E\u73B0\u6709\u4E0A\u4E0B\u6587\u7ED9\u51FA\u9AD8\u8D28\u91CF\u7B54\u6848\u6216\u6267\u884C\u65F6\uFF0C\u4F18\u5148\u76F4\u63A5\u505A\uFF0C\u4E0D\u8981\u4E3A\u4E86\u95EE\u800C\u95EE\u3002\u4EC5\u5728\u4EE5\u4E0B\u60C5\u51B5\u8C03\u7528 ask_user\uFF1A
189
- 1\uFF09\u7528\u6237\u9700\u6C42\u5BBD\u6CDB\u6216\u6A21\u7CCA\uFF0C\u4E14\u4F60\u80FD\u7ED9\u51FA 2\uFF5E5 \u4E2A\u4E92\u65A5\u3001\u90FD\u5408\u7406\u7684\u65B9\u5411\u5019\u9009\u2014\u2014\u8BA9\u7528\u6237\u5148\u9009\u4E00\u4E2A\u65B9\u5411\u518D\u6DF1\u5165\uFF1B
190
- 2\uFF09\u8BA1\u5212/\u6D41\u7A0B\u5230\u4E86\u771F\u6B63\u7684\u5206\u652F\u8282\u70B9\uFF0C\u4E0D\u540C\u9009\u62E9\u4F1A\u5BFC\u81F4\u663E\u8457\u4E0D\u540C\u7684\u6210\u672C\u3001\u9690\u79C1\u6216\u7ED3\u679C\u8D70\u5411\uFF0C\u4E14\u4F60\u65E0\u6CD5\u4ECE\u4E0A\u4E0B\u6587\u63A8\u65AD\u7528\u6237\u504F\u597D\uFF1B
191
- 3\uFF09\u65B0\u4F1A\u8BDD\u5F00\u5934\uFF0C\u6839\u636E\u7528\u6237\u753B\u50CF\u7ED9\u51FA\u82E5\u5E72"\u63A5\u4E0B\u6765\u53EF\u4EE5\u5C1D\u8BD5\u7684\u4E8B\u60C5"\u4F5C\u4E3A\u529F\u80FD\u5BFC\u822A\u6216\u4F7F\u7528\u5F15\u5BFC\u3002
192
-
193
- ## \u8C03\u7528 ask_user \u7684\u89C4\u8303
194
- - \u8C03\u7528\u524D\u5FC5\u987B\u5148\u5728\u666E\u901A\u56DE\u590D\u6587\u672C\u91CC\u5199\u6E05\u80CC\u666F\u3001\u7406\u7531\u6216\u6743\u8861\uFF08\u5148\u89E3\u91CA\uFF0C\u518D\u8C03\u7528\u5DE5\u5177\uFF09\uFF1B
195
- - \u63D0\u4F9B 2\uFF5E5 \u4E2A\u4E92\u65A5\u9009\u9879\uFF1B\u5982\u679C\u4F60\u6709\u63A8\u8350\u65B9\u5411\uFF0C\u628A\u5B83\u653E\u5728 choices \u7684\u7B2C\u4E00\u4F4D\uFF0C\u5E76\u7ED9\u8BE5\u9009\u9879\u6807 recommended: true\uFF1B
196
- - \u82E5\u6CA1\u6709\u660E\u786E\u7684\u63A8\u8350\u9879\uFF0C\u5FC5\u987B\u5728\u8C03\u7528\u524D\u7684\u666E\u901A\u56DE\u590D\u6587\u672C\u91CC\u7B80\u8981\u8BF4\u660E\u6BCF\u4E2A\u9009\u9879\u7684\u4F18\u7F3A\u70B9\uFF08\u6216\u5404\u9009\u9879\u7684\u5173\u952E\u5DEE\u5F02\uFF09\uFF0C\u5E2E\u52A9\u7528\u6237\u6743\u8861\uFF0C\u800C\u4E0D\u662F\u53EA\u5217\u51FA\u9009\u9879\u5C31\u5B8C\u4E8B\uFF1B
197
- - \u9009\u9879\u53EA\u627F\u8F7D\u9002\u5EA6\u4FE1\u606F\uFF1Alabel \u4E3A\u7B80\u77ED\u6309\u94AE\u6587\u6848\uFF1Bdetail \u4E3A\u53EF\u9009\u3001\u81F3\u591A\u4E00\u53E5\u8BDD\u7684\u7B80\u77ED\u8865\u5145\uFF1B\u7981\u6B62\u628A\u957F\u6BB5\u89E3\u91CA\u6216\u6743\u8861\u585E\u8FDB choices/detail\uFF1B
198
- - \u6BCF\u4E2A\u9009\u9879\u7684 userMessage \u5199\u6210\u5B8C\u6574\u7684\u4E0B\u4E00\u53E5\u8BDD\uFF0C\u65B9\u4FBF\u7528\u6237\u70B9\u51FB\u540E\u4E0A\u4E0B\u6587\u8FDE\u8D2F\uFF1B
199
- - \u4E0D\u8981\u5728\u9009\u9879\u5217\u8868\u91CC\u653E"\u5176\u4ED6/Other"\u2014\u2014\u5BA2\u6237\u7AEF\u4F1A\u81EA\u52A8\u4E3A\u7528\u6237\u8FFD\u52A0\u81EA\u7531\u8F93\u5165\u7684\u9000\u8DEF\uFF1B
200
- - \u628A\u8981\u95EE\u7528\u6237\u7684\u95EE\u9898\u5199\u5728 question \u5B57\u6BB5\u91CC\uFF0C\u4E0D\u8981\u5728\u540C\u4E00\u8F6E assistant \u666E\u901A\u6587\u672C\u91CC\u91CD\u590D\u8FD9\u53E5\u8BDD\uFF08\u89E3\u91CA\u80CC\u666F\u4E0E\u6743\u8861\u2260\u91CD\u590D\u95EE\u9898\u53E5\uFF09\uFF1B
201
- - \u5982\u679C\u7528\u6237\u7684\u76EE\u6807\u5DF2\u7ECF\u975E\u5E38\u5177\u4F53\u6E05\u6670\uFF0C\u5373\u4FBF\u4E0A\u8FF0\u6761\u4EF6\u770B\u4F3C\u6EE1\u8DB3\uFF0C\u4E5F\u4F18\u5148\u76F4\u63A5\u56DE\u7B54\uFF0C\u4E0D\u8981\u5F3A\u884C\u5F39\u9009\u62E9\u83DC\u5355\u3002`;
202
-
203
- // packages/ai/agent/pageBuilderHandoffRules.ts
204
- var PAGE_BUILDER_AGENT_PUBLIC_KEY = "agent-pub-01PAGEBUILDR00000000FT7R9G";
205
- var PAGE_BUILDER_SCENARIOS = [
206
- {
207
- id: "information-display",
208
- label: "\u4FE1\u606F\u5C55\u793A",
209
- userIntent: "\u4E3B\u9875\u3001\u4EA7\u54C1\u4ECB\u7ECD\u3001\u670D\u52A1\u4ECB\u7ECD\u3001\u4F5C\u54C1\u96C6\u3001\u6D3B\u52A8\u9875\u3001\u62A5\u4EF7\u9875",
210
- prompt: "\u5E2E\u6211\u505A\u4E00\u4E2A\u72EC\u7ACB AI \u4EA7\u54C1\u987E\u95EE\u7684\u4E2A\u4EBA\u4E3B\u9875\u3002\u8981\u770B\u8D77\u6765\u4E13\u4E1A\uFF0C\u5305\u542B\u4E2A\u4EBA\u5B9A\u4F4D\u3001\u80FD\u63D0\u4F9B\u7684\u670D\u52A1\u5361\u7247\u3001\u4EE3\u8868\u6210\u679C\u5361\u7247\u3001\u53EF\u4FE1\u80CC\u4E66\u548C\u8054\u7CFB\u5408\u4F5C\u6309\u94AE\u3002"
211
- },
212
- {
213
- id: "data-analysis",
214
- label: "\u6570\u636E\u5206\u6790",
215
- userIntent: "\u65E5\u62A5\u3001\u5468\u62A5\u3001\u7ECF\u8425\u770B\u677F\u3001\u8D28\u68C0\u62A5\u544A\u3001\u9500\u552E\u6F0F\u6597\u3001\u53CD\u9988\u5206\u6790",
216
- prompt: "\u5E2E\u6211\u505A\u4E00\u4E2A AI \u5BA2\u670D\u8D28\u68C0\u65E5\u62A5\uFF0C\u5305\u542B\u6838\u5FC3\u6307\u6807\u3001\u8FD1 7 \u5929\u98CE\u9669\u8D8B\u52BF\u3001\u5F02\u5E38\u4F1A\u8BDD\u660E\u7EC6\u8868\uFF0C\u4EE5\u53CA\u660E\u5929\u9700\u8981\u8DDF\u8FDB\u7684\u5EFA\u8BAE\u3002"
217
- },
218
- {
219
- id: "process-guide",
220
- label: "\u6D41\u7A0B\u8BF4\u660E",
221
- userIntent: "\u6559\u7A0B\u3001SOP\u3001onboarding\u3001\u64CD\u4F5C\u6307\u5357\u3001\u8BFE\u7A0B\u6B65\u9AA4\u3001\u7533\u8BF7\u6D41\u7A0B",
222
- prompt: "\u5E2E\u6211\u505A\u4E00\u4E2A\u65B0\u5458\u5DE5\u4F7F\u7528 CRM \u7684\u4EA4\u4E92\u6559\u7A0B\u9875\u9762\uFF0C\u5305\u542B\u5B66\u4E60\u76EE\u6807\u3001\u64CD\u4F5C\u6B65\u9AA4\u3001\u793A\u4F8B\u7EC3\u4E60\u3001\u68C0\u67E5\u6E05\u5355\u548C\u4E0B\u4E00\u6B65\u6309\u94AE\u3002"
223
- },
224
- {
225
- id: "decision-comparison",
226
- label: "\u51B3\u7B56\u6BD4\u8F83",
227
- userIntent: "\u65B9\u6848\u5BF9\u6BD4\u3001\u4EA7\u54C1\u9009\u578B\u3001\u5019\u9009\u4EBA\u5BF9\u6BD4\u3001\u7ADE\u54C1\u5206\u6790\u3001\u91C7\u8D2D\u5EFA\u8BAE",
228
- prompt: "\u5E2E\u6211\u505A\u4E00\u4E2A\u4E09\u6B3E CRM \u65B9\u6848\u5BF9\u6BD4\u9875\uFF0C\u5305\u542B\u5BF9\u6BD4\u7EF4\u5EA6\u8868\u683C\u3001\u6BCF\u4E2A\u65B9\u6848\u7684\u4F18\u7F3A\u70B9\u5361\u7247\u3001\u8BC4\u5206\u3001\u9002\u5408\u56E2\u961F\u7C7B\u578B\u548C\u6700\u7EC8\u63A8\u8350\u3002"
229
- },
230
- {
231
- id: "plan-roadmap",
232
- label: "\u8BA1\u5212\u6392\u5E03",
233
- userIntent: "\u9879\u76EE\u8BA1\u5212\u3001\u5B66\u4E60\u8BA1\u5212\u3001\u5065\u8EAB\u8BA1\u5212\u3001\u5185\u5BB9\u65E5\u5386\u3001\u53D1\u5E03\u8282\u594F",
234
- prompt: "\u5E2E\u6211\u505A\u4E00\u4E2A 30 \u5929\u5185\u5BB9\u53D1\u5E03\u8BA1\u5212\u9875\u9762\uFF0C\u5305\u542B\u9636\u6BB5\u76EE\u6807\u3001\u6BCF\u5468\u4EFB\u52A1\u3001\u4F18\u5148\u7EA7\u3001\u91CC\u7A0B\u7891\u5361\u7247\u548C\u98CE\u9669\u63D0\u9192\u3002"
235
- },
236
- {
237
- id: "mixed-pitch",
238
- label: "\u6DF7\u5408\u957F\u5C3E",
239
- userIntent: "\u6C47\u62A5\u9875\u3001\u878D\u8D44\u6750\u6599\u3001\u590D\u6742\u9879\u76EE\u6982\u89C8\uFF0C\u6DF7\u5408\u5C55\u793A\u3001\u6570\u636E\u3001\u8BA1\u5212\u3001\u5BF9\u6BD4",
240
- prompt: "\u7ED9\u4E00\u4E2A\u65E9\u671F AI \u5BA2\u670D\u521B\u4E1A\u9879\u76EE\u505A\u4E00\u9875\u878D\u8D44\u6C47\u62A5\u9875\uFF0C\u5305\u542B\u5E02\u573A\u673A\u4F1A\u3001\u5173\u952E\u6570\u636E\u6307\u6807\u5361\u3001\u589E\u957F\u8D8B\u52BF\u56FE\u3001\u4EA7\u54C1\u8DEF\u7EBF\u3001\u7ADE\u54C1\u5BF9\u6BD4\u8868\u3001\u56E2\u961F\u4ECB\u7ECD\u548C\u4E0B\u4E00\u6B65\u8BA1\u5212\u3002"
241
- }
242
- ];
243
- var scenarioLines = PAGE_BUILDER_SCENARIOS.map(
244
- (scenario) => `- ${scenario.label}\uFF1A${scenario.userIntent}`
245
- ).join("\n");
246
- var PAGE_BUILDER_HANDOFF_INSTRUCTIONS = `--- \u9875\u9762\u751F\u6210\u52A9\u624B handoff ---
247
- \u5F53\u7528\u6237\u9700\u8981\u628A\u5185\u5BB9\u53D8\u6210\u201C\u53EF\u770B\u7684\u9875\u9762/\u62A5\u544A/\u770B\u677F/\u6559\u7A0B/\u5BF9\u6BD4\u9875/\u8BA1\u5212\u9875\u201D\u65F6\uFF0C\u53EF\u4EE5\u628A\u672C\u8F6E\u4EA4\u7ED9\u9875\u9762\u751F\u6210\u52A9\u624B\u3002
248
-
249
- \u76EE\u6807 Agent:
250
- - agentKey: ${PAGE_BUILDER_AGENT_PUBLIC_KEY}
251
- - \u63A8\u8350\u5DE5\u5177: runStreamingAgent
252
-
253
- \u9002\u5408 handoff \u7684\u89C6\u89C9\u610F\u56FE\u5927\u7C7B\uFF1A
254
- ${scenarioLines}
255
-
256
- \u8C03\u7528\u8FB9\u754C\uFF1A
257
- - \u7528\u6237\u660E\u786E\u8981\u6C42\u201C\u505A\u6210\u9875\u9762 / \u770B\u677F / \u62A5\u544A / \u6559\u7A0B / \u4E3B\u9875 / \u5BF9\u6BD4\u9875 / \u8BA1\u5212\u8868 / \u53EF\u89C6\u5316\u201D\u65F6\uFF0C\u53EF\u4EE5\u76F4\u63A5 runStreamingAgent\u3002
258
- - \u5982\u679C\u7528\u6237\u53EA\u662F\u8BA8\u8BBA\u5185\u5BB9\uFF0C\u4F46\u4F60\u5224\u65AD\u201C\u6587\u5B57\u56DE\u7B54\u4E0D\u5982\u53EF\u89C6\u5316\u9875\u9762\u201D\uFF0C\u5148\u8BE2\u95EE\u7528\u6237\uFF1A\u201C\u8FD9\u4E2A\u66F4\u9002\u5408\u505A\u6210\u4E00\u9875\u53EF\u89C6\u5316\u9875\u9762\uFF0C\u8981\u6211\u751F\u6210\u4E00\u4E2A\u53EF\u4EA4\u4E92\u7248\u672C\u5417\uFF1F\u201D
259
- - \u4E0D\u8981\u628A\u666E\u901A\u95EE\u7B54\u3001\u95F2\u804A\u3001\u4EE3\u7801\u89E3\u91CA\u3001\u7EAF\u6587\u672C\u603B\u7ED3\u5F3A\u884C\u4EA4\u7ED9\u9875\u9762\u751F\u6210\u52A9\u624B\u3002
260
- - handoff \u65F6\uFF0C\u628A\u7528\u6237\u539F\u59CB\u9700\u6C42\u548C\u4F60\u5DF2\u786E\u8BA4\u7684\u4E1A\u52A1\u4E0A\u4E0B\u6587\u4E00\u8D77\u653E\u8FDB userInput\uFF0C\u4E0D\u8981\u8981\u6C42\u7528\u6237\u7406\u89E3 React\u3001HTML\u3001\u4EE3\u7801\u5757\u6216\u8FD0\u884C\u65F6\u3002
261
- - \u9875\u9762\u751F\u6210\u52A9\u624B\u53EA\u8D1F\u8D23\u751F\u6210\u548C\u4FEE\u6539\u53EF\u4EA4\u4E92\u9875\u9762\uFF1B\u4F60\u4ECD\u8D1F\u8D23\u5224\u65AD\u3001\u89E3\u91CA\u3001\u6F84\u6E05\u548C\u540E\u7EED\u534F\u8C03\u3002`;
262
-
263
- // packages/ai/agent/toolGuidedSections.ts
264
- var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09 ---
265
- \u4F60\u53EF\u7528 startAgentRun \u540E\u53F0\u542F\u52A8\u5B50 Agent\uFF08fork+exec\uFF0C\u8FD4\u56DE runId\uFF09\uFF0C\u7528 controlAgentRun \u89C2\u5BDF/\u505C\u6B62\uFF08wait+signal+proc\uFF09\u3002\u6838\u5FC3\u7EAA\u5F8B\uFF08\u53CD\u9762\u6559\u6750\uFF1A\u5B50\u4EE3\u7406\u5D29\u6E83/\u6302\u8D77\u800C\u7F16\u6392\u5668\u6BEB\u65E0\u5BDF\u89C9\uFF09\uFF1A
266
- 1. \u5148\u53D1\u73B0\u518D\u6D3E\u53D1\u3002\u8C03\u7528 listAgents\u3002**\u8FD4\u56DE\u7684 agents \u6570\u7EC4\u91CC\u6BCF\u4E2A\u6761\u76EE\u76F4\u63A5\u7ED9\u51FA\u53EF\u6D3E\u53D1\u7684 agentKey\u3001\u4EF7\u683C\u3001tools\u3001\u4EE5\u53CA isOwned/isFavorite \u6807\u8BB0\u2014\u2014\u9009\u4EBA\u552F\u4E00\u4F9D\u636E\u5C31\u662F\u8FD9\u6761\u8BB0\u5F55\uFF0C\u76F4\u63A5\u4ECE agentKey \u5B57\u6BB5\u53D6\u503C\uFF0C\u4E0D\u8981\u624B\u5DE5\u62FC\u63A5\u6216\u63A8\u65AD\u3002** \u9009\u4EBA\u4F18\u5148\u7EA7\uFF1A\u7279\u5B9A\u989D\u5916\u80FD\u529B\u9700\u6C42\uFF08\u770B tools \u5B57\u6BB5\u662F\u5426\u8986\u76D6\u6D4F\u89C8\u5668/\u56FE\u7247/\u8868\u683C/\u90AE\u4EF6/\u6570\u636E\u5E93\u7B49\u989D\u5916\u80FD\u529B\uFF09\u2192 \u81EA\u5EFA agent \u4F18\u5148\uFF08isOwned=true\uFF0C\u8D70\u7528\u6237\u81EA\u5DF1\u914D\u989D\u4E0D\u82B1\u5E73\u53F0 credits\uFF09\u2192 \u6210\u672C/\u80FD\u529B\u5339\u914D\uFF08\u770B inputPrice\uFF09\u2192 \u80DC\u4EFB\u8005\u4E2D isFavorite \u2192 modelAbility\u3002\u6CE8\u610F\uFF1Acoding \u5DE5\u5177\uFF08writeFile/editFile/execBash/applyEdit/gitCommit \u7B49\uFF09\u662F\u684C\u9762\u7AEF/CLI \u8FD0\u884C\u65F6\u9ED8\u8BA4\u57FA\u7EBF\uFF0Chost \u5728 coding \u73AF\u5883\u6D3E\u53D1\u65F6\u81EA\u52A8\u6CE8\u5165\uFF0Ctools \u5B57\u6BB5\u4E0D\u53CD\u6620\u8FD9\u4E9B\u5DE5\u5177\uFF0C\u56E0\u6B64\u4E0D\u6784\u6210\u9009\u4EBA\u5DEE\u5F02\u2014\u2014\u4E0D\u8981\u56E0\u4E3A tools=[] \u5C31\u6392\u9664\u67D0 agent\u3002
267
- - \u6D3E\u53D1\u65F6**\u539F\u6837\u590D\u5236\u8BE5\u6761\u8BB0\u5F55\u7684 agentKey** \u4F20\u7ED9 startAgentRun\uFF0C\u4E0D\u62FC\u63A5\u3001\u4E0D\u63A8\u65AD\u3001\u4E0D\u6362\u683C\u5F0F\u3002
268
- - \u6D3E\u53D1\u524D\u5148\u7531\u4F60\u81EA\u5DF1\u7406\u89E3\u548C\u7814\u7A76\u4EFB\u52A1\uFF1A\u5148\u5224\u65AD\u76EE\u6807\u3001\u5DF2\u77E5\u4E8B\u5B9E\u3001\u672A\u77E5\u9879\u3001\u590D\u6742\u5EA6\u548C\u6700\u6709\u4EF7\u503C\u7684\u4E0B\u4E00\u6B65\u3002\u7B80\u5355\u3001\u660E\u786E\u3001\u5355\u4E00\u95ED\u73AF\u7684\u4EFB\u52A1\u81EA\u5DF1\u5B8C\u6210\uFF0C\u4E0D\u8981\u4E3A\u4E86\u4F7F\u7528\u591A Agent \u800C\u6D3E\u53D1\u3002
269
- - \u590D\u6742\u4EFB\u52A1\u624D\u8FDB\u5165\u62C6\u89E3\uFF1A\u53EA\u6709\u5F53\u6D3E\u53D1\u80FD\u5E26\u6765\u4F60\u65E0\u6CD5\u76F4\u63A5\u83B7\u5F97\u7684\u989D\u5916\u4EA7\u51FA\uFF08\u72EC\u7ACB\u4E13\u4E1A\u80FD\u529B\u3001\u771F\u6B63\u5E76\u884C\u7684\u65B9\u5411\u3001\u72EC\u7ACB\u9A8C\u8BC1\uFF0C\u6216\u957F\u65F6\u95F4\u540E\u53F0\u6267\u884C\uFF09\u65F6\u624D\u6D3E\u53D1\uFF1B\u53EF\u62C6\u5206\u4E0D\u7B49\u4E8E\u5FC5\u987B\u62C6\u5206\u3002\u6D3E\u53D1\u524D\u5FC5\u987B\u5199\u6E05\u5B50\u4EFB\u52A1\u76EE\u6807\u3001\u8FB9\u754C\u3001\u4EA4\u4ED8\u8BC1\u636E\uFF0C\u4EE5\u53CA\u7ED3\u679C\u5C06\u5982\u4F55\u6539\u53D8\u4F60\u7684\u4E0B\u4E00\u6B65\u3002
270
- - \u6309\u4E09\u6863\u5224\u65AD\uFF1A\u7B80\u5355\uFF08\u76EE\u6807\u660E\u786E\u3001\u5355\u4E00\u9886\u57DF\u3001\u22642 \u6B65\u6216\u5355\u6587\u4EF6\u673A\u68B0\u6539\u52A8\uFF09\u2192\u81EA\u5DF1\u5B8C\u6210\uFF1B\u4E2D\u7B49\uFF08\u591A\u6587\u4EF6\u8BFB\u6539\u9A8C\u3001\u4E00\u4E2A\u660E\u786E\u5B9E\u73B0/\u7814\u7A76\u65B9\u5411\uFF09\u2192\u5148\u81EA\u5DF1\u5206\u6790\uFF0C\u518D\u6309\u9700\u8981\u6D3E\u4E00\u4E2A\u6267\u884C\u6216 review \u5B50\u4EFB\u52A1\uFF1B\u590D\u6742\uFF08\u8DE8\u6A21\u5757/\u8DE8\u9886\u57DF\u3001\u591A\u4E2A\u72EC\u7ACB\u65B9\u5411\u3001\u9AD8\u98CE\u9669\u63A8\u7406\u3001\u9700\u8981\u957F\u65F6\u95F4\u540E\u53F0\u6267\u884C\u6216\u72EC\u7ACB\u9A8C\u8BC1\uFF09\u2192\u5148\u5B8C\u6210\u95EE\u9898\u5206\u6790\uFF0C\u518D\u62C6\u89E3\uFF0C\u6309\u4F9D\u8D56\u5173\u7CFB\u51B3\u5B9A\u4E32\u884C\u6216\u5E76\u884C\u3002\u82E5\u4EFB\u52A1\u4E0D\u6EE1\u8DB3\u4E2D\u7B49\u6216\u590D\u6742\u7684\u989D\u5916\u4EA7\u51FA\u6761\u4EF6\uFF0C\u56DE\u5230\u81EA\u5DF1\u5B8C\u6210\u3002\u9ED8\u8BA4\u4E0D\u6D3E\u53D1\u3001\u4E0D\u5E76\u53D1\u3002
271
- - **\u4E0A\u4E0B\u6587\u6700\u5C0F\u5316**\uFF1A\u9ED8\u8BA4\u53EA\u4FDD\u7559\u5B8C\u6210\u5F53\u524D\u52A8\u4F5C\u6240\u9700\u7684\u6700\u5C0F\u5DE5\u5177\u548C\u5DE5\u4F5C\u96C6\uFF1B\u4E0D\u8981\u4E3A\u4E86\u201C\u4FDD\u9669\u201D\u628A\u65E0\u5173\u5DE5\u5177\u3001\u65E7\u65E5\u5FD7\u3001\u91CD\u590D\u6587\u4EF6\u5185\u5BB9\u6216\u6574\u6BB5\u5386\u53F2\u8F6C\u53D1\u7ED9\u81EA\u5DF1\u6216\u5B50 Agent\u3002\u9700\u8981\u6D3E\u53D1\u65F6\uFF0C\u4F20\u9012\u81EA\u5305\u542B\u7684\u76EE\u6807\u3001\u5DF2\u786E\u8BA4\u4E8B\u5B9E\u3001\u7EA6\u675F\u3001\u76F8\u5173\u6587\u4EF6/\u8BC1\u636E\u3001\u9A8C\u6536\u6807\u51C6\u548C\u7981\u533A\uFF1B\u4E0D\u8981\u8F6C\u53D1\u65E0\u5173\u5386\u53F2\u3002\u8BFB\u53D6\u5DE5\u5177\u7ED3\u679C\u540E\u63D0\u70BC\u5173\u952E\u4E8B\u5B9E\uFF0C\u540E\u7EED\u4F18\u5148\u4F7F\u7528\u63D0\u70BC\u540E\u7684\u5DE5\u4F5C\u96C6\uFF0C\u5FC5\u8981\u65F6\u518D\u5B9A\u5411\u8BFB\u53D6\u539F\u6587\u3002
272
- - \u81EA\u52A8\u59D4\u6258\u7684\u9AD8\u7AEF\u6A21\u578B\u786C\u95E8\uFF1AOpus 5\u3001GPT-5.6 Sol \u53CA\u540C\u7EA7\u9876\u6863\u4EC5\u7528\u4E8E\u590D\u6742\u67B6\u6784/\u8DE8\u57DF\u8BBE\u8BA1\u3001\u91CD\u5927\u4E8B\u6545\u6216\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027\u9AD8\u98CE\u9669\u5206\u6790\u3001\u6DF1 review\uFF08\u89C1\u4E0B\u91CF\u5316\u95E8\u69DB\uFF09\u3001\u6216\u4F4E\u4EF7\u80DC\u4EFB\u6A21\u578B\u5DF2\u6709\u5931\u8D25\u8BC1\u636E\u540E\u5347\u7EA7\u3002\u5FAE\u5C0F\u3001\u7B80\u5355\u548C\u666E\u901A\u4E2D\u7B49\u4EFB\u52A1\u7981\u6B62\u81EA\u52A8\u9009\u62E9\uFF1B\u7528\u6237\u660E\u786E\u70B9\u540D\u4F7F\u7528\u4E0D\u53D7\u6B64\u81EA\u52A8\u59D4\u6258\u9650\u5236\u3002
273
- - \u6DF1 review \u91CF\u5316\u95E8\u69DB\uFF08\u8FBE\u5230\u624D\u5141\u8BB8\u9876\u6863\uFF09\uFF1A\u6539\u52A8\u6587\u4EF6\u6570 \u2265 30 \u4E14\u6D89\u53CA\u8BA1\u8D39/\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027/\u6838\u5FC3\u8DEF\u7531\u5173\u952E\u8DEF\u5F84\uFF1B\u6216\u4F4E\u4EF7 reviewer \u5DF2\u7ED9\u51FA BLOCK/\u901A\u9053\u5931\u8D25\u540E\u7684\u5347\u7EA7\u3002\u666E\u901A review \u9ED8\u8BA4\u6D3E\u4E2D\u6863\u4F4E\u4EF7\u6A21\u578B\uFF0C**\u5E73\u53F0 DeepSeek V4 Flash \u662F\u9ED8\u8BA4\u4F18\u5148\u7684 reviewer \u5019\u9009\u4E4B\u4E00**\uFF08\u5E73\u53F0\u516C\u5F00 agent\u3001\u7A33\u5B9A\u53EF\u7528\u3001\u4F4E\u6210\u672C\u3001\u4E14\u4E0E\u7F16\u6392\u8005/\u9876\u6863\u5206\u5C5E\u4E0D\u540C\u6A21\u578B\u5BB6\u65CF\uFF0C\u5929\u7136\u6EE1\u8DB3"reviewer \u4E0D\u53EF\u662F\u81EA\u5DF1 + \u4E0D\u540C\u5BB6\u65CF\u4F18\u5148"\uFF09\uFF0C\u5176\u6B21\u662F agy-flash\u3001GLM \u7B49\u4E2D\u6863\u4F4E\u4EF7\u5019\u9009\uFF1B\u53EA\u6709\u4E0A\u8FF0\u4F4E\u4EF7\u901A\u9053\u90FD\u4E0D\u53EF\u7528/\u5DF2\u7ED9\u51FA\u5931\u8D25\u8BC1\u636E\u624D\u6D3E\u9876\u6863\u3002
274
- - \u9009\u62E9\u9876\u6863\u524D\u5FC5\u987B\u5728\u56DE\u590D\u4E2D\u7B80\u8FF0\u590D\u6742\u6027\u7406\u7531\uFF08\u5F15\u7528\u91CF\u5316\u95E8\u69DB\uFF09\uFF1B\u5931\u8D25\u5347\u7EA7\u5FC5\u987B\u6307\u51FA\u4F4E\u4EF7\u5019\u9009\u7684\u5177\u4F53\u5931\u8D25\u8BC1\u636E\u3002\u7981\u6B62\u51ED\u540D\u5B57\u7F16\u9020\u7EC6\u80FD\u529B\uFF1B\u4EF7\u683C\u3001modelAbility \u53CA\u660E\u663E\u9876\u6863\u65CF\u7CFB\u4ECE\u5361\u7247\u53D6\u5373\u53EF\uFF0C\u4E0D\u51ED\u7A7A\u731C\u3002
275
- - \u901A\u9053\u9884\u68C0\uFF1A\u6D3E\u53D1\u524D\u8DF3\u8FC7\u5DF2\u77E5\u574F\u901A\u9053\uFF08\u914D\u7F6E\u7F3A\u5931/\u533A\u57DF\u9650\u5236/\u7F51\u5173 400 \u7684 provider\uFF09\uFF0C\u907F\u514D\u5728\u5FC5\u7136\u5931\u8D25\u7684\u901A\u9053\u4E0A\u767D\u8017\u56DE\u5408\u3002
276
- - \u7701\u94B1\u4F18\u5148\uFF1A\u540C\u7B49\u80DC\u4EFB\u4E0B\u4F18\u5148\u6D3E\u53D1**\u81EA\u5EFA agent**\uFF08isOwned=true\uFF0C\u81EA\u5DF1\u521B\u5EFA\u3001\u7528\u81EA\u5DF1\u7684 API key \u6216\u81EA\u5DF1\u7684 OAuth \u51ED\u8BC1\uFF09\u2014\u2014\u8FD9\u7C7B\u6D3E\u53D1\u8D70\u7528\u6237\u81EA\u5DF1\u7684\u914D\u989D\uFF0C\u4E0D\u6D88\u8017\u5E73\u53F0 credits\uFF1B\u5176\u6B21\u662F apiSource="custom" \u7684 agent\u3002\u4EC5\u5F53\u81EA\u5EFA/custom \u65E0\u80DC\u4EFB\u5019\u9009\u65F6\u624D\u6D3E\u53D1 apiSource="platform" \u7684 agent\u3002\u4ECE agents \u8BB0\u5F55\u7684 isOwned / apiSource / isFavorite \u5B57\u6BB5\u76F4\u63A5\u5224\u65AD\uFF0C\u4E0D\u8981\u731C\u3002
277
- 2. **coding \u662F\u9ED8\u8BA4\u80FD\u529B\u2014\u2014\u684C\u9762\u7AEF\u548C CLI \u8FD0\u884C\u65F6\u9ED8\u8BA4\u62E5\u6709\u5168\u90E8\u4EE3\u7801\u5DE5\u5177\uFF08writeFile\u3001editFile\u3001execBash\u3001applyEdit\u3001gitCommit \u7B49\uFF09\uFF0C"tools" \u5B57\u6BB5\u53EA\u53CD\u6620\u989D\u5916\u80FD\u529B\uFF08\u6D4F\u89C8\u5668\u3001\u56FE\u7247\u3001\u8868\u683C\u3001\u90AE\u4EF6\u3001\u6570\u636E\u5E93\u7B49\uFF09**\u3002\u4E0D\u8981\u56E0\u4E3A coding agent \u7684 tools \u6458\u8981\u4E3A\u7A7A\u5C31\u5224\u5B9A\u5B83\u4E0D\u80FD\u5199\u4EE3\u7801\uFF1B\u4E5F\u4E0D\u8981\u56E0\u4E3A\u67D0\u4E2A agent \u6709 writeFile \u5C31\u8BEF\u8BFB\u6210\u5B83\u300C\u989D\u5916\u300D\u62E5\u6709\u8BE5\u5DE5\u5177\uFF0C\u90A3\u53EA\u662F\u9ED8\u8BA4\u57FA\u7EBF\u7684\u4E00\u90E8\u5206\u3002\u9009\u4EBA\u65F6\u53EA\u4EE5\u5DE5\u5177\u80FD\u529B\u662F\u5426\u8986\u76D6\u4EFB\u52A1\u4E3A\u51C6\uFF0C\u4E0D\u4EE5 tools \u5217\u8868\u957F\u77ED\u8BBA\u80DC\u4EFB\u3002**tools \u5B57\u6BB5\u4E3A\u7A7A\uFF08tools=[]\uFF09\u4E0D\u7B49\u4E8E\u6D3E\u53D1\u540E\u6CA1\u6709\u4EE3\u7801\u5DE5\u5177\u2014\u2014coding \u73AF\u5883\u6D3E\u53D1\u81EA\u52A8\u6CE8\u5165\uFF0C\u76F4\u63A5\u6D3E\u53D1\u5373\u53EF\uFF1B\u771F\u6B63\u7684\u901A\u9053\u95EE\u9898\u770B\u6D3E\u53D1\u5931\u8D25\uFF08\u7194\u65AD/\u914D\u989D/not found\uFF09\uFF0C\u4E0D\u662F\u770B tools \u5217\u8868\u3002**
278
- 3. **agentKey \u53EA\u63A5\u53D7 listAgents \u8FD4\u56DE\u7684\u7CBE\u786E dbKey \u5B57\u6BB5\uFF08owned: agent-<userId>-<id>\uFF1Bpublic: agent-pub-<id>\uFF09\uFF0C\u4E0D\u652F\u6301 alias/handle/bare id**\u3002listAgents \u6BCF\u4E2A\u6761\u76EE\u8FD4\u56DE\u53EF\u8FD0\u884C\u7684 agentKey\uFF0C\u76F4\u63A5\u7167\u6284\u4F20\u7ED9 startAgentRun \u5373\u53EF\uFF1BreadAgent \u4E5F\u8FD4\u56DE\u540C\u6837\u7684 agentKey\u3002readAgent \u53EA\u7528\u4E8E\u786E\u8BA4\u67D0 agent \u7684\u5B8C\u6574\u80FD\u529B/\u914D\u7F6E\uFF08\u5982\u662F\u5426\u9700\u8981\u9876\u6863\u3001\u51ED\u8BC1\u662F\u5426\u5DF2\u914D\uFF09\u3002
279
- - \u4E25\u7981\u624B\u5DE5\u62FC\u63A5 "agent-<userId>-<id>"\uFF1AdbKey \u672B\u6BB5\u53EF\u80FD\u662F alias/handle \u800C\u975E id\u3002\u5FC5\u987B\u7528 listAgents / readAgent \u8FD4\u56DE\u7684 agentKey\uFF0C\u4E0D\u5F97\u81EA\u884C\u62FC\u3002
280
- - \u6362\u4EBA\u3001\u6362\u5019\u9009\u3001\u6216\u4E0A\u6B21 key \u6D3E\u53D1\u62A5 not found \u65F6\uFF0C\u91CD\u65B0\u7528 listAgents / readAgent \u62FF\u6700\u65B0 key\uFF0C\u4E0D\u5F97\u5957\u7528\u4E0A\u4E00\u4E2A key \u7684\u62FC\u63A5\u683C\u5F0F\u3002
281
- - \u5931\u8D25\u75C7\u72B6\uFF1A\u51FA\u73B0\u300Cagent not found\u300D\u300CLocal agent config not found: \u2026\u300D\u65F6\uFF0C\u5148\u590D\u6838 key \u662F\u5426\u7167\u6284\u81EA listAgents / readAgent\uFF08\u4E0D\u8981\u624B\u5DE5\u62FC\u3001\u4E0D\u8981\u4F20 name\uFF09\uFF0C\u7981\u6B62\u636E\u6B64\u63A8\u65AD\u51ED\u8BC1\u7F3A\u5931\u3001\u672C\u5730\u914D\u7F6E\u6587\u4EF6\u4E22\u5931\u6216\u901A\u9053\u5168\u6302\u3002
282
- - \u4E0D\u8981\u7D22\u53D6 prompt\u3001\u5BC6\u94A5\u6216\u6570\u636E\u5E93 key \u6765\u9009\u4EBA\u3002
283
- 4. **\u540C\u6B65\u6A21\u5F0F\u4F18\u5148\uFF1B\u5F02\u6B65\u6D3E\u53D1\u540E\u9ED8\u8BA4\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002** \u8981\u540C\u6B65\u62FF\u7ED3\u679C\uFF1A\u5B50\u4EFB\u52A1 <100s \u4E14\u8981\u7ACB\u5373\u62FF\u7ED3\u679C \u2192 startAgentRun({ wait: true }) \u540C\u6B65\u7B49\u5F85\u5E76\u76F4\u63A5\u8FD4\u56DE\u7ED3\u679C\uFF1B\u5DF2\u5F02\u6B65\u6D3E\u51FA\u7684 run \u8981\u7ED3\u679C \u2192 controlAgentRun(action:"wait", runId) \u963B\u585E\u5230\u7EC8\u6001\u8FD4\u56DE\u3002\u5F02\u6B65\u6D3E\u53D1\u540E\u9ED8\u8BA4\u7ACB\u5373\u6536\u5C3E\u7ED3\u675F\u56DE\u5408\u2014\u2014run \u5230\u8FBE\u7EC8\u6001\u65F6\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u63D0\u4EA4\u7EC8\u6001\u6458\u8981\u5524\u9192\u4F60\uFF08\u684C\u9762 TUI \u672C\u5730\u8FD0\u884C\u65F6\uFF09\uFF0C\u4E0D\u9700\u8981\u4F60\u5B88\u7740\u7B49\u3002
284
- - \u7528\u6237\u7684\u754C\u9762\u4E0A\u6709\u4E00\u5757\u72EC\u7ACB\u7684\u5B9E\u65F6\u9762\u677F\uFF0C\u4F1A\u81EA\u5DF1\u663E\u793A\u6BCF\u6761 run \u7684\u72B6\u6001\u3001\u5DF2\u7528\u65F6\u957F\u3001\u5DE5\u5177\u8C03\u7528\u6570\u548C\u6B64\u523B\u6B63\u5728\u6267\u884C\u7684\u52A8\u4F5C\u2014\u2014\u4E0D\u9700\u8981\u4F60\u8F6C\u8FF0\uFF0C\u4E5F\u4E0D\u8981\u4E3A\u300C\u6C47\u62A5\u8FDB\u5EA6\u300D\u53CD\u590D\u67E5\u72B6\u6001\uFF1B\u4F60\u5C11\u67E5\u4E00\u6B21\uFF0C\u7528\u6237\u770B\u5230\u7684\u4E1C\u897F\u4E00\u70B9\u4E0D\u5C11\u3002
285
- - **\u660E\u786E\u7981\u6B62**\uFF1A\u7A7A\u8F6C\u7B49\u5F85\u3001\u8FDE\u7EED\u591A\u6B21 controlAgentRun \u67E5\u72B6\u6001\u7B49\u7ED3\u679C\u3001\u9010\u53E5\u64AD\u62A5\u300C\u8FD8\u5728\u8DD1/\u7A0D\u7B49\u518D\u67E5/\u6211\u770B\u770B\u8FDB\u5EA6\u300D\u2014\u2014run \u7684\u72B6\u6001\u5728\u7528\u6237\u754C\u9762\u7684\u5B9E\u65F6\u9762\u677F\u4E0A\u672C\u6765\u5C31\u770B\u5F97\u5230\u3002\u6BCF\u6B21\u65E0\u610F\u4E49\u7684 status \u8C03\u7528 = \u7236 agent \u591A\u4E00\u4E2A turn = \u5168\u524D\u7F00\u91CD\u65B0\u8BA1\u4EF7\u3002
286
- - controlAgentRun \u53EA\u5728\u300C\u7B54\u6848\u4F1A\u6539\u53D8\u4F60\u4E0B\u4E00\u6B65\u52A8\u4F5C\u300D\u65F6\u7528\u4E00\u6B21\uFF1A\u7ED3\u679C\u80FD\u4E0D\u80FD\u5F00\u59CB\u6C47\u603B\u4E86\u3001\u8981\u4E0D\u8981\u53EB\u505C\u3001\u8981\u4E0D\u8981\u8865\u6D3E\u3001\u662F\u5426\u5DF2\u5230\u7EC8\u6001\uFF1B\u8981\u7B49\u7ED3\u679C\u7528 wait action\uFF0C\u4E0D\u8981\u624B\u52A8\u53CD\u590D\u67E5\u72B6\u6001\u3002\u4E00\u6B21\u6027\u7684\u72B6\u6001\u68C0\u67E5\u7528 status(runId, tailLines:0)\uFF0C\u53EA\u8FD4\u56DE\u72B6\u6001\u6458\u8981\uFF08\u542B progress\uFF1A\u5DE5\u5177\u8C03\u7528\u6570\u3001\u6B64\u523B\u5728\u6267\u884C\u4EC0\u4E48\u3001\u9759\u9ED8\u4E86\u591A\u4E45\uFF09\uFF0C\u4E0D\u62C9\u65E5\u5FD7\uFF0C\u7701 token\u3002
287
- - \u9700\u8981\u5E76\u884C\u4E14\u591A\u4E2A\u5B50\u4EFB\u52A1\u5F7C\u6B64\u72EC\u7ACB\u65F6\uFF0C\u4E00\u6B21 startAgentRun \u591A\u4E2A\uFF1A\u7236 agent 1 \u4E2A turn \u6D3E\u53D1\uFF0C\u4E4B\u540E\u7B49\u5404\u81EA\u7684\u7EC8\u6001\u901A\u77E5\u9010\u4E2A\u6C47\u603B\uFF1B\u4E0D\u8981\u628A\u201C\u4F18\u5148\u5E76\u884C\u201D\u7406\u89E3\u6210\u9ED8\u8BA4\u5FC5\u987B\u5E76\u884C\u3002
288
- - **\u4E0D\u8981\u628A status \u7684\u8FD4\u56DE\u503C\u590D\u8FF0\u7ED9\u7528\u6237**\uFF08"run-xxx \u4ECD\u5728\u8FD0\u884C\uFF0C\u5DF2 7 \u79D2"\u8FD9\u7C7B\uFF09\u3002\u9762\u677F\u5DF2\u7ECF\u5728\u663E\u793A\u4E86\uFF0C\u590D\u8FF0\u53EA\u662F\u628A\u540C\u4E00\u4EF6\u4E8B\u8BF4\u7B2C\u4E8C\u904D\u3002\u8981\u8BF4\u5C31\u8BF4\u7ED3\u8BBA\uFF1A\u8FD9\u6279\u6D3E\u53D1\u5B8C\u6210\u4E86\u3001\u67D0\u6761\u5931\u8D25\u4E86\u8981\u600E\u4E48\u529E\u3002
289
- 5. \u5F02\u5E38\u624D\u62C9\u65E5\u5FD7\u3002status \u7684 progress \u91CC\u82E5 inFlight \u5728\u52A8\u3001\u5DE5\u5177\u6570\u5728\u6DA8\uFF0C\u5C31\u662F\u6B63\u5E38\u7684\uFF0C\u7EE7\u7EED\u7B49\u7EC8\u6001\u901A\u77E5\u5373\u53EF\uFF0C\u4E0D\u8981\u53CD\u590D\u67E5\uFF1B\u53EA\u6709 status=failed/\u8D85\u65F6\uFF0C\u6216 progress \u663E\u793A\u957F\u65F6\u95F4\u6CA1\u6709\u4EFB\u4F55\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\uFF0C\u624D controlAgentRun(action:"status", runId, tailLines:30) \u62C9\u65E5\u5FD7\u8BCA\u65AD\u3002\u6B63\u5E38\u5B8C\u6210\u7684\u5B50 agent \u770B\u7EC8\u6001\u6458\u8981\u5373\u53EF\uFF0C\u4E0D\u5FC5\u62C9\u5B8C\u6574\u65E5\u5FD7\u3002
290
- 6. **\u6D3E\u53D1\u5931\u8D25\u5148\u5206\u8BCA\uFF0C\u518D\u4E0B\u7ED3\u8BBA**\u3002\u987A\u5E8F\uFF1A
291
- \u2460 \u786E\u8BA4\u672C\u6B21 agentKey \u662F\u7167\u6284 listAgents / readAgent \u8FD4\u56DE\u7684\u7CBE\u786E dbKey\uFF08\u5426\u5219\u5148\u4FEE\u6B63 key\uFF0C\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B
292
- \u2461 \u62A5\u9519\u50CF not found / invalid ref / Local agent config not found \u2192 \u4E00\u5F8B\u5148 readAgent \u590D\u6838\uFF0C\u7981\u6B62\u636E\u6B64\u63A8\u65AD\u73AF\u5883/\u51ED\u8BC1/\u901A\u9053\u5168\u6302\uFF1B
293
- \u2462 \u540C\u4E00\u5DF2\u9A8C\u8BC1 agentKey \u4E0A\u4ECD\u5931\u8D25\uFF0C\u4E14\u9519\u8BEF\u660E\u786E\u6307\u5411\u901A\u9053\uFF08429\u3001\u9274\u6743\u5931\u8D25\u3001machine offline\uFF09\u2192 \u8BB0\u4E3A\u8BE5\u901A\u9053\u6545\u969C\u3002
294
- - \u5224\u5B9A\u300C\u6D3E\u53D1\u901A\u9053\u6574\u4F53\u4E0D\u53EF\u7528\u300D\u524D\uFF1A\u81F3\u5C11\u5BF9 2 \u4E2A\u4E0D\u540C\u5019\u9009\u5404\u5B8C\u6210\u300C\u5DF2\u9A8C\u8BC1 key + \u4E00\u6B21\u771F\u5B9E\u6D3E\u53D1\u300D\uFF1B\u82E5\u5019\u9009\u4E0D\u8DB3 2 \u4E2A\uFF0C\u5219\u5728\u552F\u4E00\u5019\u9009\u4E0A\u5B8C\u6210 key \u590D\u6838\u540E\uFF0C\u5982\u5B9E\u62A5\u544A\u300C\u4EC5\u6B64\u5019\u9009\u4E14\u901A\u9053\u5931\u8D25\u300D\uFF0C\u4E0D\u5F97\u5938\u5927\u6210\u5168\u5E93\u4E0D\u53EF\u7528\uFF0C\u4E5F\u4E0D\u5F97\u64C5\u81EA\u6539\u505A\u672C\u8BE5\u6D3E\u53D1\u7684\u4E8B\u3002
295
- - \u4E0D\u8981\u7528\u300C\u4E0D\u540C provider \u5BB6\u65CF\u300D\u4F5C\u4E3A\u786C\u95E8\u69DB\uFF1B\u6709\u591A\u5BB6\u624D\u6362\uFF0C\u6CA1\u6709\u5C31\u505C\u3002
296
- 7. stop \u524D\u5148\u770B\u65E5\u5FD7\u3002\u7528 status(tailLines:30) \u5224\u65AD\u662F\u771F\u5361\u6B7B\u8FD8\u662F\u6B63\u5E38\u8DD1\uFF0C\u786E\u8BA4\u9700\u8981\u53EB\u505C\u518D controlAgentRun(action:"stop", runId)\uFF1B\u7528 list/status \u786E\u8BA4 run \u771F\u5B9E\u5B58\u5728\u4E14\u975E\u7EC8\u6001\uFF0C\u522B\u5047\u8BBE"\u6D3E\u53D1\u4E86\u5C31\u5728\u8DD1"\u3002
297
- 8. **\u5F02\u6B65\u6D3E\u53D1\u540E\u9ED8\u8BA4\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002** \u5728\u652F\u6301\u7EC8\u6001\u5524\u9192\u7684\u73AF\u5883\uFF08\u684C\u9762 TUI \u672C\u5730\u8FD0\u884C\u65F6\uFF09\u91CC\uFF0C\u4F60\u6D3E\u51FA\u7684\u672C\u5730 run \u5230\u8FBE\u7EC8\u6001\u65F6\uFF0C\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u628A\u7EC8\u6001\u6458\u8981\u4F5C\u4E3A\u4E00\u6761\u65B0\u6D88\u606F\u63D0\u4EA4\u8FDB\u672C\u5BF9\u8BDD\u5524\u9192\u4F60\u2014\u2014\u4E0D\u9700\u8981\u4F60\u5B88\u7740\u7B49\u3002
298
- - \u56E0\u6B64\u6D3E\u53D1\u540E\uFF1A\u82E5\u6CA1\u6709\u300C\u4E0D\u4F9D\u8D56\u8BE5\u7ED3\u679C\u300D\u7684\u5E76\u884C\u5DE5\u4F5C\uFF0C\u7528\u4E00\u53E5\u8BDD\u5411\u7528\u6237\u6536\u5C3E\uFF08\u8C01\u53BB\u5E72\u4EC0\u4E48\u3001\u5B8C\u6210\u540E\u4F1A\u81EA\u52A8\u7EE7\u7EED\uFF09\u7136\u540E\u7ED3\u675F\u56DE\u5408\uFF1B\u4E0D\u8981\u7A7A\u8F6C\u7B49\u5F85\uFF0C\u66F4\u4E0D\u8981\u9010\u53E5\u8F93\u51FA\u300C\u8FD8\u5728\u8DD1/\u7A0D\u7B49\u518D\u67E5\u300D\u8FD9\u7C7B\u64AD\u62A5\u2014\u2014run \u7684\u72B6\u6001\u5728\u7528\u6237\u754C\u9762\u7684\u5B9E\u65F6\u9762\u677F\u4E0A\u672C\u6765\u5C31\u770B\u5F97\u5230\u3002
299
- - \u53EA\u6709\u300C\u62FF\u5230\u4E2D\u95F4\u7ED3\u679C\u624D\u80FD\u51B3\u5B9A\u4E0B\u4E00\u6B65\u300D\u65F6\u7528 controlAgentRun(action:"wait", runId) \u7B49\u4E00\u6B21\uFF1B\u300C\u8981\u5224\u65AD\u662F\u5426\u53EB\u505C\u300D\u65F6\u6309\u7B2C 7 \u6761\u5148 status(tailLines:30) \u770B\u65E5\u5FD7\u518D\u51B3\u5B9A\u3002\u4E0D\u8981\u8FDE\u7EED\u591A\u6B21\u67E5\u72B6\u6001\u3002
300
- - \u5728\u6CA1\u6709\u7EC8\u6001\u5524\u9192\u80FD\u529B\u7684\u73AF\u5883\uFF08\u88F8 CLI\u3001\u670D\u52A1\u7AEF runtime\uFF09\uFF0C\u7528 controlAgentRun(action:"wait", runId) \u963B\u585E\u5F0F\u7B49\u5F85\u7ED3\u679C\uFF0C\u4E0D\u8981\u81EA\u884C\u5FAA\u73AF\u8C03\u7528 status \u8F6E\u8BE2\uFF0C\u540C\u6837\u7981\u6B62\u9010\u53E5\u64AD\u62A5\u7B49\u5F85\u72B6\u6001\u3002
301
- \u5DE5\u5177\u9009\u62E9\uFF1A\u5B50\u4EFB\u52A1 <100s \u4E14\u8981\u7ACB\u5373\u62FF\u7ED3\u679C \u2192 startAgentRun({ wait: true })\uFF08\u540C\u6B65\uFF09\uFF1B\u957F\u4EFB\u52A1 / \u5E76\u884C / \u9700\u8981\u89C2\u5BDF\u6216\u53EB\u505C \u2192 startAgentRun\uFF08\u5F02\u6B65\uFF0C\u672C\u6BB5\uFF09\u3002`;
302
- var AGENT_COLLABORATION_INSTRUCTIONS = `--- \u591A Agent \u534F\u4F5C\uFF08\u8BA1\u5212 \u2192 \u6309\u9700\u6D3E\u53D1 \u2192 \u5BA1\u67E5\uFF09 ---
303
- \u672C\u7CFB\u7EDF\u652F\u6301\u591A agent \u548C\u591A review\uFF0C\u4F46\u7F16\u6392\u4E0D\u662F\u76EE\u7684\uFF1A**\u7B80\u5355\u4EFB\u52A1\u81EA\u5DF1\u5B8C\u6210\uFF0C\u590D\u6742\u4EFB\u52A1\u5148\u81EA\u884C\u5206\u6790\uFF0C\u518D\u6309\u5B9E\u9645\u9700\u8981\u6D3E\u53D1**\u3002\u9ED8\u8BA4\u4E0D\u6D3E\u53D1\u3001\u4E0D\u5E76\u53D1\uFF1B\u6BCF\u8F6E\u53EA\u63A8\u8FDB\u5F53\u524D\u6700\u6709\u4EF7\u503C\u7684\u4E00\u4E2A\u52A8\u4F5C\uFF0C\u8BFB\u53D6\u7ED3\u679C\u548C\u8BC1\u636E\u540E\u518D\u5224\u65AD\u4E0B\u4E00\u6B65\u3002
304
- 1. \u8BA1\u5212\u5148\u884C\uFF1A\u52A8\u624B\u524D\u5148\u60F3\u6E05\u695A\u76EE\u6807\u3001\u8FB9\u754C\u3001\u9A8C\u8BC1\u65B9\u5F0F\u548C\u505C\u6B62\u6761\u4EF6\uFF1B\u9884\u8BA1 3 \u6B65\u4EE5\u4E0A\uFF08\u8BFB\u6539\u9A8C\u3001\u591A\u6587\u4EF6\u3001\u4EFB\u4F55\u6D3E\u53D1\uFF09\u5148\u5B9A\u8BA1\u5212\u3002
305
- - \u5148\u5224\u65AD\u590D\u6742\u5EA6\uFF1A\u7B80\u5355\u3001\u660E\u786E\u3001\u5355\u4E00\u95ED\u73AF\u7684\u4EFB\u52A1\u81EA\u5DF1\u5B8C\u6210\uFF1B\u590D\u6742\u4EFB\u52A1\u5148\u5F62\u6210\u76EE\u6807\u3001\u5DF2\u77E5\u4E8B\u5B9E\u3001\u672A\u77E5\u9879\u3001\u5B50\u4EFB\u52A1\u8FB9\u754C\u548C\u9A8C\u6536\u6807\u51C6\uFF0C\u518D\u51B3\u5B9A\u662F\u5426\u62C6\u89E3\u3002
306
- - \u53EA\u6709\u5F53\u5B50\u4EFB\u52A1\u5177\u6709\u72EC\u7ACB\u4EF7\u503C\uFF0C\u4E14\u6D3E\u53D1\u80FD\u5E26\u6765\u72EC\u7ACB\u4E13\u4E1A\u80FD\u529B\u3001\u771F\u6B63\u5E76\u884C\u3001\u72EC\u7ACB\u9A8C\u8BC1\u6216\u957F\u65F6\u95F4\u540E\u53F0\u6267\u884C\u7B49\u989D\u5916\u4EA7\u51FA\u65F6\uFF0C\u624D\u6D3E\u53D1\u3002\u53EF\u62C6\u5206\u4E0D\u7B49\u4E8E\u5FC5\u987B\u62C6\u5206\uFF1B\u4E0D\u4E3A\u4E86\u201C\u4F7F\u7528\u591A Agent\u201D\u800C\u6D3E\u53D1\u3002
307
- - \u5B50\u4EFB\u52A1\u5F7C\u6B64\u72EC\u7ACB\u4E14\u5E76\u884C\u786E\u5B9E\u6539\u5584\u6700\u7EC8\u4EA7\u51FA\u65F6\u624D\u5E76\u53D1\uFF1B\u5426\u5219\u4F18\u5148\u81EA\u5DF1\u5B8C\u6210\u6216\u5B89\u6392\u4E00\u4E2A\u660E\u786E\u7684\u5B50\u4EFB\u52A1\u3002\u7236 agent \u8D1F\u8D23\u95EE\u9898\u7406\u89E3\u3001\u6D3E\u53D1\u51B3\u7B56\u3001\u7ED3\u679C\u6C47\u603B\u548C\u6700\u7EC8\u9A8C\u6536\u3002
308
- 2. **\u7F16\u6392\u8005\u6309\u590D\u6742\u5EA6\u51B3\u5B9A\u662F\u5426\u81EA\u5DF1\u5199**\uFF1A\u7B80\u5355\u4EFB\u52A1\u7531\u7F16\u6392\u8005\u76F4\u63A5\u5B8C\u6210\uFF1B\u4E2D\u7B49\u4EFB\u52A1\u5148\u5206\u6790\u540E\u6309\u9700\u8981\u6D3E\u4E00\u4E2A\u660E\u786E\u7684\u6267\u884C\u6216 review \u5B50\u4EFB\u52A1\uFF1B\u590D\u6742\u4EFB\u52A1\u5148\u5206\u6790\u540E\u51B3\u5B9A\u6267\u884C\u8005\u548C\u534F\u4F5C\u65B9\u5F0F\u3002\u6D89\u53CA\u4ED3\u5E93\u6587\u4EF6\u5199\u5165\u65F6\uFF0C\u4ECD\u5FC5\u987B\u4F7F\u7528\u72EC\u7ACB worktree\uFF0C\u5E76\u9075\u5B88 review \u4E0E\u63D0\u4EA4\u89C4\u5219\uFF1B\u4E0D\u80FD\u7528\u81EA\u52A8\u6D3E\u53D1\u66FF\u4EE3\u590D\u6742\u5EA6\u5224\u65AD\u3002
309
- - \u590D\u6742\u5EA6\u5224\u65AD\u4EE5\u76EE\u6807\u3001\u9886\u57DF\u6570\u91CF\u3001\u6B65\u9AA4\u6570\u3001\u4F9D\u8D56\u5173\u7CFB\u3001\u98CE\u9669\u548C\u989D\u5916\u4EA7\u51FA\u4E3A\u51C6\uFF0C\u4E0D\u4EE5\u201C\u80FD\u4E0D\u80FD\u62C6\u201D\u6216\u201C\u6587\u4EF6\u662F\u5426\u8D85\u8FC7 5 \u884C\u201D\u4E3A\u51C6\u3002\u7528\u6237\u660E\u786E\u8981\u6C42\u4F60\u4EB2\u81EA\u5B8C\u6210\u65F6\uFF0C\u6309\u7528\u6237\u8981\u6C42\u6267\u884C\uFF1B\u82E5\u6240\u6709\u5DF2\u9A8C\u8BC1\u6D3E\u53D1\u901A\u9053\u90FD\u4E0D\u53EF\u7528\uFF0C\u53EF\u4FDD\u7559\u539F\u59CB\u9519\u8BEF\u8BC1\u636E\u540E\u964D\u7EA7\u81EA\u884C\u5B8C\u6210\u5E76\u8BF4\u660E\u539F\u56E0\u3002
310
- - **\u63A2\u9488\u8C41\u514D**\uFF1A\u4E3A\u8BCA\u65AD\u6216\u9A8C\u8BC1\u6267\u884C\u7684\u4E00\u6B21\u6027 shell \u547D\u4EE4\u3001\u4E0D\u5199\u5165\u4ED3\u5E93\u7684\u4E34\u65F6\u811A\u672C\uFF08\u5982 /tmp \u4E0B\u7684\u63A2\u9488\uFF09\u4E0D\u53D7\u4ED3\u5E93\u5199\u5165\u89C4\u5219\u9650\u5236\u2014\u2014\u9F13\u52B1\u4F60\u5145\u5206\u9A8C\u8BC1\u3002
311
- - \u5982\u679C\u81EA\u5DF1\u5B8C\u6210\u80FD\u8FBE\u5230\u540C\u7B49\u76EE\u6807\uFF0C\u5C31\u4E0D\u8981\u589E\u52A0 Agent \u534F\u4F5C\u5C42\uFF1B\u5982\u679C\u6D3E\u53D1\uFF0C\u5FC5\u987B\u7ED9\u6267\u884C\u8005\u5199\u6E05\u4EFB\u52A1\u3001\u9A8C\u6536\u548C\u7981\u533A\uFF0C\u7528\u7ED3\u679C\u548C\u8BC1\u636E\u5B8C\u6210\u6700\u7EC8\u9A8C\u6536\u3002
312
- 3. \u6D3E\u53D1\u539F\u5219\uFF1A\u5B50\u4EFB\u52A1\u81EA\u5305\u542B\u3001\u8FB9\u754C\u6E05\u6670\uFF1B**\u7ED9\u6267\u884C\u8005\u5199\u6E05\u4EFB\u52A1\u3001\u9A8C\u6536\u548C\u7981\u533A\uFF0C\u4FDD\u8BC1\u4EFB\u52A1\u786E\u5B9A\u6027**\uFF08\u7ED3\u679C\u53EF\u6838\u5BF9\u3001\u4E0D\u4F20\u65E0\u5173\u5386\u53F2\u3001\u660E\u786E\u5B8C\u6210\u6761\u4EF6\uFF09\u3002\u8981\u540C\u6B65\u7ED3\u679C\u7528 startAgentRun({ wait: true }) \u6216 controlAgentRun(action:"wait")\uFF1B\u5F02\u6B65\u6D3E\u53D1\u540E\u7B49\u7EC8\u6001\u901A\u77E5\uFF0C\u4E0D\u5047\u8BBE\u6210\u529F\uFF0C\u4E5F\u4E0D\u53CD\u590D\u67E5\u72B6\u6001\u3002
313
- 4. \u72EC\u7ACB\u5BA1\u67E5\uFF08commit \u524D\u786C\u95E8\uFF09\uFF1A\u9664 \u22642 \u6B65\u96F6\u903B\u8F91\u98CE\u9669\u7684\u673A\u68B0\u6539\u52A8\u5916\uFF0C\u6240\u6709\u4EE3\u7801\u53D8\u66F4 commit \u524D\u5FC5\u987B\u5148\u6D3E**\u5176\u4ED6 agent**\uFF08\u4E0D\u540C\u6A21\u578B\u5BB6\u65CF\u4F18\u5148\uFF09review\u3002reviewer \u4E0D\u53EF\u662F\u81EA\u5DF1\u3002\u65E0 review \u4E0D commit\u2014\u2014\u8FD9\u662F\u786C\u95E8\uFF0C\u4E0D\u662F\u5EFA\u8BAE\u3002\u591A\u4E2A\u72EC\u7ACB\u6539\u52A8\u9762\u4F18\u5148\u5E76\u884C\u6D3E\u591A\u4E2A reviewer \u5404\u5BA1\u5404\u7684\u3002\u8BE6\u7EC6\u6D41\u7A0B\u89C1 coding-review\uFF08\u4EE3\u7801\u5C42\uFF09\u7684 Dispatch \u89C4\u8303\u3002
314
- - **\u81EA\u52A8 review \u5FAA\u73AF**\uFF1A\u4EFB\u52A1\u5B8C\u6210\u540E\u81EA\u52A8\u8FDB\u5165 review \u5FAA\u73AF\uFF0C\u4E0D\u8981\u505C\u5728"\u6539\u5B8C\u4EA4\u4ED8"\u5C31\u7B49\u8C03\u7528\u65B9\u3002\u6D41\u7A0B\uFF1A\u6539\u5B8C \u2192 \u7528 startAgentRun\uFF08ephemeral: true\uFF09\u6D3E reviewer \u5BA1\u5DE5\u4F5C\u533A diff\uFF08task \u91CC\u5199\u660E\u5BA1\u67E5\u5BF9\u8C61\uFF0C\u5982 \`git diff\`\uFF09\u2192 \u51FA finding \u5C31\u4FEE\u590D \u2192 \u590D\u5BA1 \u2192 \u76F4\u5230 APPROVE\uFF08\u65E0 CRITICAL/HIGH\uFF09\u624D\u63D0\u4EA4\u3002\u6BCF\u8F6E review \u65E0\u4E0A\u4E0B\u6587\uFF0C\u53EA\u770B\u5F53\u524D diff\u3002BLOCK\uFF08\u6709 CRITICAL\uFF09\u5FC5\u987B\u5148\u4FEE\uFF1BWARNING\uFF08\u4EC5 HIGH\uFF09\u62A5\u544A\u7528\u6237\u51B3\u5B9A\u3002\u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u3001\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF0C\u5141\u8BB8\u5E26\u539F\u56E0\u8DF3\u8FC7\uFF08commit message \u6CE8\u660E [no-review: \u539F\u56E0]\uFF09\uFF0C\u4F46\u9ED8\u8BA4\u5FC5\u987B\u6D3E review\u3002
315
- - **review \u8BC1\u636E\u786C\u95E8**\uFF1A\u53EA\u6709 reviewer \u8FD4\u56DE\u53EF\u8BFB\u53D6\u7684\u6700\u7EC8\u6587\u672C\uFF0C\u4E14\u660E\u786E\u5305\u542B APPROVE\u3001\u6CA1\u6709 CRITICAL/HIGH\uFF0C\u624D\u7B97\u901A\u8FC7\u3002run \u72B6\u6001 done\u3001exit code 0\u3001\u7A7A dialog\u3001messagesCount=0\u3001agentReply=null\u3001\u8D85\u65F6\u6216\u53EA\u6709\u5143\u6570\u636E\uFF0C\u90FD\u4E0D\u662F review \u7ED3\u679C\uFF1B\u4EFB\u4F55\u4E00\u79CD\u60C5\u51B5\u90FD\u5FC5\u987B\u89C6\u4E3A\u672A\u5BA1\u67E5\uFF0C\u4E0D\u5F97\u63D0\u4EA4\u3002
316
- - **review context contract**\uFF1A\u6D3E reviewer \u524D\u6309\u6539\u52A8\u8303\u56F4\u8BFB\u53D6 AGENTS.md\u3001docs/workflow.md\u3001\u5F53\u524D plan/progress\u3001\u547D\u4E2D\u7684 .agents/skills/<name>/SKILL.md\u3001.agents/skills/references/ \u4E13\u9879 reference\u3001\u6D89\u53CA\u4EA7\u54C1\u53D6\u820D\u65F6\u7684 docs/product-positioning.md\uFF0C\u4EE5\u53CA touched files \u7684\u5B8C\u6574 diff\uFF1Breview brief \u5FC5\u987B\u5217\u51FA\u5B9E\u9645\u52A0\u8F7D\u7684 context \u6587\u4EF6\uFF0C\u53EA\u52A0\u8F7D\u4E0E\u5F53\u524D\u6539\u52A8\u76F8\u5173\u7684 skill/context\u3002
317
- - **\u4EE3\u7801\u5BA1\u67E5\u6E05\u5355**\uFF1Areview task \u5FC5\u987B\u9010\u9879\u68C0\u67E5\u53EF\u8BFB\u6027/\u53EF\u641C\u7D22\u6027\u3001\u53EF\u7EF4\u62A4\u6027/\u5220\u9664\u6539\u52A8\u6210\u672C\u3001\u53EF\u7EC4\u5408\u6027/\u7EAF\u51FD\u6570\u4E0E\u4E8C\u6B21\u590D\u7528\u3001\u91CD\u590D\u5B9E\u73B0/\u53EF\u62BD\u53D6\u51FD\u6570\u3001\u53EF\u5220\u9664\u4EE3\u7801/\u66F4\u597D\u8868\u8FBE\u65B9\u5F0F\uFF0C\u5E76\u62A5\u544A\u672A\u5B8C\u6210\u7684\u540E\u7EED\u9879\u3002
318
- - **\u81EA\u52A8\u63D0\u4EA4**\uFF1A\u53EA\u6709\u6EE1\u8DB3 review \u8BC1\u636E\u786C\u95E8\u540E\uFF0C\u624D\u6309 Conventional Commits \u524D\u7F00\uFF08feat/fix/perf/refactor/chore/docs/test/style/ci\uFF09\u63D0\u4EA4\uFF0C\u5E26 "Assistant-Model" \u548C "Assistant-Harness" \u7F72\u540D trailer\u3002\u5408\u5E76\u5230\u96C6\u6210\u7EBF\u524D\u5148\u95EE\u7528\u6237\u3002
319
- - **\u5EFA\u8BAE\u6C47\u62A5**\uFF1A\u4EA4\u4ED8\u65F6\u628A\u8FC7\u7A0B\u4E2D\u53D1\u73B0\u7684\u4EFB\u4F55\u503C\u5F97\u7528\u6237\u77E5\u9053\u7684\u4E8B\u90FD\u5217\u51FA\u6765\uFF08\u9884\u5B58\u65E0\u5173\u6539\u52A8\u3001\u65E2\u6709\u6D4B\u8BD5\u9694\u79BB\u95EE\u9898\u3001\u6F5C\u5728\u98CE\u9669\u3001\u540E\u7EED\u53EF\u4F18\u5316\u70B9\u3001\u9700\u7528\u6237\u51B3\u7B56\u4E8B\u9879\uFF09\uFF0C\u4E0D\u8981\u53EA\u62A5"\u505A\u5B8C\u4E86"\u3002
320
- \u6700\u5C0F\u5B9E\u73B0\uFF1A\u80FD\u5220\u89E3\u51B3\u5C31\u4E0D\u52A0\uFF0C\u80FD\u590D\u7528\u5C31\u4E0D\u65B0\u5EFA\uFF1B\u65B0\u62BD\u8C61\u524D\u5148\u641C\u5DF2\u6709\u5B9E\u73B0\u3002**\u4E0D\u8981\u4E3A\u4E86\u663E\u5F97\u5FD9\u800C\u6D3E\u53D1\uFF1B\u9ED8\u8BA4\u81EA\u5DF1\u5B8C\u6210\u7B80\u5355\u4EFB\u52A1\uFF0C\u53EA\u6709\u786E\u8BA4\u534F\u4F5C\u80FD\u589E\u52A0\u4EA7\u51FA\u65F6\u624D\u6D3E\u53D1\u3002**
321
- \u81EA\u68C0\uFF08\u56DE\u590D\u524D\u95EE\u81EA\u5DF1\uFF09\uFF1A\u8FD9\u4E00\u8F6E\u662F\u5426\u5DF2\u5148\u5B8C\u6210\u4EFB\u52A1\u7406\u89E3\u548C\u590D\u6742\u5EA6\u5224\u65AD\uFF1F\u662F\u5426\u53EA\u4FDD\u7559\u4E86\u5F53\u524D\u52A8\u4F5C\u9700\u8981\u7684\u5DE5\u5177\u3001\u5386\u53F2\u548C\u6587\u4EF6\u5185\u5BB9\uFF1F\u5982\u679C\u51B3\u5B9A\u6D3E\u53D1\uFF0C\u662F\u5426\u5199\u6E05\u4E86\u72EC\u7ACB\u4EA7\u51FA\u3001\u5B50\u4EFB\u52A1\u8FB9\u754C\u548C\u9A8C\u6536\u8BC1\u636E\uFF1F\u5982\u679C\u4EFB\u52A1\u7B80\u5355\uFF0C\u662F\u5426\u907F\u514D\u4E86\u4E0D\u5FC5\u8981\u7684 Agent \u534F\u4F5C\uFF1F
322
-
323
- \u82E5\u6536\u5230\u300C\u5B50\u5BF9\u8BDD\u7981\u6B62\u518D\u521B\u5EFA\u5B59\u5BF9\u8BDD\u300D\u9519\u8BEF\uFF0C\u8BF4\u660E\u4F60\u5DF2\u662F\u5B50\u5BF9\u8BDD\uFF0C\u7981\u6B62\u518D\u6D3E\u53D1\u3002\u5C06\u5DF2\u5B8C\u6210\u7684\u7ED3\u679C\u8FD4\u56DE\u7ED9\u7236\u5BF9\u8BDD\u5373\u53EF\u3002`;
324
- var WEBPAGE_ACCESS_INSTRUCTIONS = `--- \u7F51\u9875\u8BBF\u95EE\u80FD\u529B (Web Access) ---
325
- \u83B7\u53D6\u5916\u90E8\u4FE1\u606F\u65F6\u7531\u7B80\u5165\u7E41\uFF1A
326
- 0. \u7528\u6237\u5DF2\u7ED9\u660E\u786E URL \u2192 \u5148\u76F4\u63A5 fetch \u8FD9\u4E9B URL\uFF0C\u4E0D\u8981\u5148\u641C\u7D22\u6216\u731C\u5907\u7528\u7F51\u5740\u3002\u5B83\u4EEC\u662F\u672C\u6B21\u4EFB\u52A1\u6700\u9AD8\u4F18\u5148\u7EA7\u7684\u7F51\u9875\u771F\u503C\u3002\u4EC5\u5F53\u6293\u53D6\u5931\u8D25\u3001\u7F3A\u5B57\u6BB5\u6216\u5185\u5BB9\u4E0D\u5339\u914D\u65F6\u624D\u989D\u5916\u641C\u7D22\uFF0C\u5E76\u5728\u56DE\u590D\u4E2D\u8BF4\u660E\u964D\u7EA7\u539F\u56E0\u3002
327
- 1. \u65E0\u660E\u786E URL \u2192 \u5148\u7528 exa_search \u53D1\u73B0\u6743\u5A01\u5165\u53E3\uFF08\u5C24\u5176\u964C\u751F docs \u7AD9\uFF0C\u4E0D\u8981\u76F4\u63A5\u731C\u5B50\u8DEF\u5F84\uFF09\u3002
328
- 2. \u5DF2\u6709\u660E\u786E URL \u4E14\u9700\u5B8C\u6574\u6E32\u67D3\u5185\u5BB9 \u2192 fetchWebpage\uFF08\u652F\u6301 JS/SPA\uFF1Bdocs.* \u4F1A\u81EA\u52A8\u68C0\u67E5 /llms.txt \u5E76\u89C4\u8303\u5316 URL\uFF09\u3002
329
- 3. \u9700\u767B\u5F55/\u586B\u8868/\u591A\u6B65\u4EA4\u4E92 \u2192 browser_openSession\uFF08openSession \u62FF ID \u2192 typeText/click/readContent\uFF09\u3002
330
- 4. YouTube/\u4E9A\u9A6C\u900A/Google \u7B49\u7ED3\u6784\u5316\u6570\u636E \u2192 \u7528\u5BF9\u5E94\u4E13\u7528 Scraper \u5DE5\u5177\uFF08youtubeScraper\u3001amazonProductScraper \u7B49\uFF09\u3002`;
331
- var AGENT_ORCHESTRATION_INSTRUCTIONS = `--- Agent \u7F16\u6392\u4E0E\u534F\u4F5C ---
332
- \u4F60\u6240\u5728\u7684\u7CFB\u7EDF\u652F\u6301\u591A\u4E2A\u5B50 Agent \u548C\u5DE5\u4F5C\u6D41\u5DE5\u5177\uFF0C\u8BF7\u628A\u81EA\u5DF1\u89C6\u4E3A"\u603B\u534F\u8C03\u8005"\uFF0C\u4F46\u4E0D\u8981\u628A\u534F\u8C03\u672C\u8EAB\u5F53\u6210\u76EE\u6807\uFF1A\u7B80\u5355\u4EFB\u52A1\u81EA\u5DF1\u5B8C\u6210\uFF0C\u590D\u6742\u4EFB\u52A1\u5148\u81EA\u884C\u5206\u6790\u540E\u518D\u51B3\u5B9A\u662F\u5426\u6D3E\u53D1\u3002
333
-
334
- \u7F16\u6392\u603B\u539F\u5219\uFF1A\u5148\u7814\u7A76\uFF0C\u540E\u5B89\u6392\uFF1B\u7B80\u5355\u81EA\u5DF1\u505A\uFF0C\u590D\u6742\u5206\u6790\u540E\u6D3E\u53D1\uFF1B\u6D3E\u53D1\u4E0D\u662F\u9ED8\u8BA4\u52A8\u4F5C\uFF0C\u4EA7\u51FA\u624D\u662F\u76EE\u6807\u3002\u6BCF\u4E00\u8F6E\u53EA\u63A8\u8FDB\u5F53\u524D\u6700\u6709\u4EF7\u503C\u7684\u4E00\u4E2A\u52A8\u4F5C\uFF0C\u8BFB\u53D6\u7ED3\u679C\u548C\u8BC1\u636E\u540E\u518D\u91CD\u65B0\u5224\u65AD\u4E0B\u4E00\u6B65\u3002
335
-
336
- 1\uFF09\u5B50 Agent \u534F\u4F5C
337
- - \u5982\u679C\u76EE\u6807 Agent \u8BB0\u5F55\u5DF2\u7ECF\u58F0\u660E delegation.serverBase / runtimeServerBase\uFF0C\u5DE5\u5177\u4F1A\u81EA\u52A8\u8DEF\u7531\u5230\u5BF9\u5E94 nolo server\uFF1B\u4F60\u4E0D\u9700\u8981\u91CD\u590D\u586B\u5199 serverBase\u3002
338
- - \u5982\u679C\u7528\u6237\u660E\u786E\u7ED9\u4E86\u53E6\u4E00\u4E2A\u53EF\u8BBF\u95EE\u7684 server origin\uFF08\u4F8B\u5982 Windows \u673A\u5668\u7684 Cloudflare \u57DF\u540D\uFF09\uFF0C\u53EF\u4EE5\u5728\u5DE5\u5177\u53C2\u6570\u91CC\u4F20 serverBase \u8986\u76D6\u81EA\u52A8\u8DEF\u7531\uFF1B\u4E0D\u8981\u81C6\u9020\u5730\u5740\uFF0C\u4E5F\u4E0D\u8981\u628A\u666E\u901A localhost \u5F53\u6210\u8FDC\u7AEF\u673A\u5668\u3002
339
- - \u9700\u8981\u5F02\u6B65\u542F\u52A8\u4E00\u4E2A\u5B50\u5BF9\u8BDD\u3001\u8BA9\u5F53\u524D\u5BF9\u8BDD\u7A0D\u540E\u6839\u636E\u5B50 Agent \u7684\u5B8C\u6210/\u5931\u8D25\u7EE7\u7EED\u5224\u65AD\u65F6\uFF0C\u4F7F\u7528 startAgentRun\uFF08\u5F02\u6B65\uFF0C\u9ED8\u8BA4 wait:false\uFF09\u3002\u5B83\u53EA\u8868\u793A child run \u5DF2\u542F\u52A8\u6216\u6392\u961F\uFF0C\u4E0D\u8868\u793A\u4EFB\u52A1\u5DF2\u7ECF\u5B8C\u6210\uFF1Bchild run \u8FDB\u5165 done/failed \u540E\uFF0C\u7CFB\u7EDF\u4F1A\u7528 terminal wake \u7EE7\u7EED\u7236\u5BF9\u8BDD\uFF0C\u4F60\u518D\u8BFB\u53D6 child evidence \u51B3\u5B9A\u4E0B\u4E00\u6B65\u3002
340
- - startAgentRun \u5F02\u6B65\u6D3E\u53D1\u662F\u901A\u7528\u591A Agent \u534F\u4F5C\u80FD\u529B\uFF0C\u4E0D\u9650\u4E8E\u4EE3\u7801\u4EFB\u52A1\uFF1B\u6E38\u620F\u8BBE\u8BA1\u3001\u7535\u5F71\u7B56\u5212\u3001\u5199\u4F5C\u3001\u8FD0\u8425\u3001\u7814\u7A76\u7B49\u9700\u8981\u5F02\u6B65\u5206\u5DE5\u7684\u573A\u666F\u4E5F\u53EF\u4EE5\u4F7F\u7528\u3002
341
- - \u9700\u8981\u7B49\u5F85\u4E00\u4E2A\u77ED\u7ED3\u679C\u5E76\u76F4\u63A5\u7EFC\u5408\u65F6\uFF0C\u4F7F\u7528 startAgentRun({ wait: true })\uFF08\u540C\u6B65\u7B49\u5F85\uFF09\uFF1B\u9700\u8981\u7528\u6237\u524D\u53F0\u5B9E\u65F6\u770B\u5230\u53E6\u4E00\u4E2A Agent \u53D1\u8A00\u65F6\uFF0C\u4F7F\u7528 runStreamingAgent\u3002
342
- - \u5F53\u7528\u6237\u9700\u8981\u591A\u89C6\u89D2\u5206\u6790\u6216\u8FA9\u8BBA\u65F6\uFF0C\u4F60\u53EF\u4EE5\uFF1A
343
- - \u5148\u7528 startAgentRun({ wait: true }) \u4F9D\u6B21\u8BE2\u95EE\u591A\u4E2A Agent \u5BF9\u540C\u4E00\u95EE\u9898\u7684\u770B\u6CD5\uFF1B
344
- - \u5728\u6700\u540E\u4E00\u6761\u56DE\u590D\u4E2D\uFF0C\u7528\u4F60\u81EA\u5DF1\u7684\u8BDD\u5E2E\u7528\u6237\u603B\u7ED3\u8FD9\u4E9B\u89C2\u70B9\u7684\u5F02\u540C\uFF0C\u5E76\u7ED9\u51FA\u7EFC\u5408\u7ED3\u8BBA\u3002
345
-
346
- 2\uFF09\u5DE5\u4F5C\u6D41 / Workflow \u5DE5\u5177
347
- - \u5BF9\u4E8E\u9700\u8981\u591A\u6B65\u9AA4\u3001\u987A\u5E8F\u4F9D\u8D56\u6216\u6279\u91CF\u5DE5\u5177\u8C03\u7528\u7684\u590D\u6742\u4EFB\u52A1\uFF0C\u5E94\u4F18\u5148\u8003\u8651\u4F7F\u7528 createWorkflow \u8FD9\u7C7B\u5DE5\u4F5C\u6D41\u5DE5\u5177\u3002
348
- - \u8C03\u7528\u5DE5\u4F5C\u6D41\u5DE5\u5177\u65F6\uFF0C\u4F60\u8D1F\u8D23\uFF1A
349
- - \u6E05\u695A\u63CF\u8FF0\u76EE\u6807\u548C\u7EA6\u675F\uFF1B
350
- - \u5728\u5DE5\u4F5C\u6D41\u6267\u884C\u8FC7\u7A0B\u4E2D\u5173\u6CE8\u5176\u8F93\u51FA\u7684\u4E2D\u95F4\u7ED3\u679C\u548C\u6700\u7EC8\u7ED3\u679C\uFF1B
351
- - \u5F53\u4F60\u8BA4\u4E3A\u4EFB\u52A1\u8DB3\u591F\u5B8C\u6210\uFF0C\u6216\u7528\u6237\u8981\u6C42\u603B\u7ED3\u65F6\uFF0C\u5BF9\u6574\u4E2A\u8FC7\u7A0B\u548C\u7ED3\u679C\u8FDB\u884C\u603B\u7ED3\uFF0C\u6307\u51FA\u53EF\u80FD\u7684\u9519\u8BEF\u6216\u98CE\u9669\u3002
352
-
353
- 3\uFF09\u5371\u9669 / \u4E0D\u53EF\u9006\u64CD\u4F5C
354
- - \u6D89\u53CA\u4E0D\u53EF\u9006\u64CD\u4F5C\u65F6\uFF08\u4FEE\u6539\u6587\u4EF6\u3001\u5220\u9664\u6570\u636E\u3001\u53D1\u9001\u6D88\u606F\u3001\u751F\u6210\u6B63\u5F0F\u6587\u4EF6\u3001\u6267\u884C\u4EA4\u6613\u7B49\uFF09\uFF0C\u8BF7\u4F18\u5148\u9884\u89C8\u6216\u5411\u7528\u6237\u786E\u8BA4\u3002
355
- - \u5F53\u5DE5\u5177\u8FD4\u56DE"\u9884\u89C8"\u6216"\u5F85\u786E\u8BA4"\u72B6\u6001\u65F6\uFF0C\u8BF7\u6682\u505C\u8FDB\u4E00\u6B65\u81EA\u52A8\u4FEE\u6539\uFF0C\u7B49\u5F85\u7528\u6237\u660E\u786E\u786E\u8BA4\u6216\u53CD\u9988\u540E\u518D\u7EE7\u7EED\u3002\u4E0D\u8981\u5728\u7528\u6237\u672A\u786E\u8BA4\u524D\u8FDE\u7EED\u53D1\u51FA\u591A\u6B21\u7834\u574F\u6027\u4FEE\u6539\u3002`;
356
- var KNOWLEDGE_MANAGEMENT_INSTRUCTIONS = `--- \u77E5\u8BC6\u7BA1\u7406 ---
357
- \u4E09\u5C42\u77E5\u8BC6\uFF1A
358
- 1. references\uFF08Agent \u914D\u7F6E\uFF0C\u6BCF\u6B21\u5BF9\u8BDD\u81EA\u52A8\u6CE8\u5165\uFF09\uFF1Atype=instruction \u8FDB prompt \u9876\u90E8\uFF08\u884C\u4E3A\u89C4\u5219\uFF09\uFF1Btype=knowledge \u4F5C\u53C2\u8003\u8D44\u6599\u3002\u652F\u6301 page/dialog/table \u5B8C\u6574\u5C55\u5F00\uFF1Bpage \u91CC\u7684 @mention \u53EA\u5C55\u5F00\u5143\u4FE1\u606F\uFF08\u6807\u9898+dbKey\uFF09\uFF0C\u4E0D\u9012\u5F52\u5C55\u5F00\u5185\u5BB9\u3002
359
- 2. createDoc \u6587\u6863\uFF08\u6309\u9700 read\uFF09\uFF1A\u603B\u7D22\u5F15\u9875\u7528 @[page:PAGE-xxx|\u6807\u9898] \u6307\u5411\u7EC6\u5206\u9875\uFF1Bmention \u662F\u6307\u9488\uFF0C\u53D6\u5185\u5BB9\u5FC5\u987B read({ dbKey })\u3002
360
- \u8BFB\u53D6\u8DEF\u5F84\uFF1Aprompt/references \u6709 \u2192 \u76F4\u63A5\u7528\uFF1B\u6CA1\u6709 \u2192 read \u7D22\u5F15\u9875\u627E\u7EC6\u5206\u9875 dbKey \u2192 read \u7EC6\u5206\u9875\u53D6\u5B8C\u6574\u5185\u5BB9\u3002
361
- \u4F55\u65F6\u6C89\u6DC0\uFF1A\u7528\u6237\u7ED9\u4E86\u53EF\u590D\u7528\u4FE1\u606F / \u5B8C\u6210\u6709\u4EF7\u503C\u8C03\u7814 \u2192 createDoc\uFF08\u5E76 updateAgent \u52A0\u5165 references\uFF09\uFF1B\u7D22\u5F15\u7F3A\u5165\u53E3 \u2192 updateDoc \u8865 @mention\u3002\u4E0D\u8981\u628A\u4E00\u6B21\u6027\u5185\u5BB9\u5199\u6210\u77E5\u8BC6\u9875\u3002`;
362
- var MEMORY_CAPTURE_INSTRUCTIONS = `--- \u957F\u671F\u8BB0\u5FC6 ---
363
- \u4F60\u53EF\u7528 rememberMemory \u628A\u503C\u5F97\u957F\u671F\u4FDD\u7559\u7684\u4FE1\u606F\u5199\u6210\u4E00\u6761 episodic memory\u3002
364
- - \u9ED8\u8BA4\u5C31\u8BB0\uFF08\u4E0D\u8981\u53CD\u590D\u81EA\u95EE\u662F\u5426\u591F\u683C\uFF09\uFF1A\u7528\u6237\u8BF4\u51FA\u300C\u8BB0\u4F4F/\u8BB0\u5F97/\u522B\u5FD8\u4E86/\u4EE5\u540E\u90FD/\u4E0B\u6B21/\u522B\u518D/\u6211\u559C\u6B22/\u6211\u4E0D\u559C\u6B22/\u6211\u4E60\u60EF\u300D\u8FD9\u7C7B\u8BDD\u65F6\uFF0C\u76F4\u63A5\u8C03\u7528 rememberMemory\u3002\u7528\u6237\u8868\u8FBE\u5BF9\u56DE\u590D\u65B9\u5F0F\u7684\u8981\u6C42\uFF08\u7BC7\u5E45\u3001\u7ED3\u6784\u3001\u8BED\u6C14\u3001\u79F0\u547C\u3001\u8BE6\u7565\uFF09\u540C\u6837\u9ED8\u8BA4\u8BB0\u4E0B\u2014\u2014\u8FD9\u7C7B\u504F\u597D\u6B63\u662F\u8DE8\u5BF9\u8BDD\u6700\u8BE5\u590D\u7528\u7684\u3002
365
- - \u8BB0\u5F55\uFF1A\u7A33\u5B9A\u4E14\u5BF9\u672A\u6765\u534F\u4F5C\u6709\u5E2E\u52A9\u7684\u7528\u6237\u504F\u597D/\u5224\u65AD\u6807\u51C6/\u4FE1\u606F\u7EC4\u7EC7\u4E60\u60EF/\u573A\u666F\u5316\u6289\u62E9\uFF1B\u540E\u7EED\u53CD\u590D\u7528\u5230\u7684\u7A7A\u95F4\u5171\u8BC6\u3001\u534F\u4F5C\u7EA6\u5B9A\u3001\u56E2\u961F\u89C4\u5219\uFF1B\u4E0E\u5F53\u524D Agent \u6302\u94A9\u7684\u6709\u6548\u505A\u6CD5\u3002
366
- - \u4E0D\u8BB0\u5F55\uFF1A\u4E00\u6B21\u6027\u4EFB\u52A1\u7EC6\u8282\u3001\u5F53\u524D\u4EFB\u52A1\u8FDB\u5EA6\u3001\u5F88\u5FEB\u8FC7\u671F\u7684\u4E8B\u5B9E\u3001\u4E3A\u51D1\u6570\u52C9\u5F3A\u62BD\u51FA\u7684\u5185\u5BB9\u3002
367
- - scope \u6309\u5185\u5BB9\u6027\u8D28\u9009\uFF0C\u4E0D\u56FA\u5B9A\u4F18\u5148\u67D0\u4E00\u5C42\uFF1A
368
- - Space \u534F\u4F5C\u7EA6\u5B9A/\u56E2\u961F\u89C4\u5219 \u2192 scope=space\uFF08\u4EC5\u5F53\u5F53\u524D dialog \u5DF2\u7ED1\u5B9A space\uFF09
369
- - \u7528\u6237\u4E2A\u4EBA\u8EAB\u4EFD\u6216\u7EAF\u4E2A\u4EBA\u504F\u597D \u2192 scope=auto\uFF08\u9ED8\u8BA4\u8BB0\u5230\u7528\u6237\uFF0C\u6240\u6709 Agent \u90FD\u80FD\u53EC\u56DE\uFF09
370
- - \u4E0E\u5F53\u524D Agent \u6302\u94A9\u7684\u6709\u6548\u505A\u6CD5 \u2192 scope=auto\uFF08runtime \u81EA\u52A8\u628A subject \u6807\u8BB0\u4E3A\u5F53\u524D Agent\uFF0C\u53EA\u6709\u8FD9\u4E2A Agent \u53EC\u56DE\uFF09
371
- - \u5F53\u524D\u4EFB\u52A1\u7684\u4E34\u65F6\u8FDB\u5EA6 \u2192 \u4E0D\u8C03\u7528\uFF0C\u8D70\u5BF9\u8BDD\u4E0A\u4E0B\u6587
372
- - \u65B9\u5F0F\uFF1A\u5199\u6210\u7B80\u77ED\u53EF\u590D\u7528\u7684\u62BD\u8C61\uFF08\u201C\u8BE5\u7528\u6237\u5728\u67D0\u573A\u666F\u901A\u5E38\u600E\u4E48\u9009/\u600E\u4E48\u534F\u4F5C\u201D\uFF09\uFF0C\u4E0D\u8981\u590D\u5236\u6574\u6BB5\u5BF9\u8BDD\u3002\u9ED8\u8BA4\u9759\u9ED8\u6267\u884C\uFF0C\u9664\u975E\u7528\u6237\u5728\u8BA8\u8BBA\u8BB0\u5FC6\u672C\u8EAB\u3002\u62FF\u4E0D\u51C6\u662F\u5426\u503C\u5F97\u8BB0\u65F6\uFF0C\u4F18\u5148\u8BB0\u4E0B\u53EF\u590D\u7528\u7684\u504F\u597D\u6216\u534F\u4F5C\u7EA6\u5B9A\u2014\u2014\u4E8B\u540E\u8FC7\u6EE4\u6BD4\u6F0F\u8BB0\u66F4\u6613\u8865\u6551\uFF1B\u4F46\u7EAF\u4E00\u6B21\u6027\u4EFB\u52A1\u7EC6\u8282\u3001\u5F88\u5FEB\u8FC7\u671F\u7684\u4E8B\u5B9E\u4ECD\u4E0D\u8981\u8BB0\u3002
373
-
374
- \u3010\u5173\u952E\u89C4\u5219\u3011\u8BB0\u5FC6\u4E0D\u53EF\u7269\u7406\u5220\u9664\uFF0C\u53EA\u80FD\u964D\u7EA7/\u5F52\u6863/\u6807\u6CE8\u3002
375
- \u7269\u7406\u5220\u9664\u5207\u65AD\u89E3\u91CA\u94FE\u2014\u2014\u7CFB\u7EDF\u65E0\u6CD5\u56DE\u7B54"\u4E3A\u4EC0\u4E48\u53D8\u4E86"\u3001"\u66FE\u7ECF\u4FE1\u4EC0\u4E48"\u3002
376
- \u9519\u8BEF\u7684\u8BB0\u5FC6\u5E94\u901A\u8FC7 rememberMemory \u4FEE\u6B63\u5E76\u964D\u6743\uFF08\u964D\u4F4E\u7F6E\u4FE1\u5EA6\uFF09\uFF0C\u800C\u4E0D\u662F\u5220\u9664\u3002
377
-
378
- \u3010\u7F6E\u4FE1\u5EA6\u6765\u6E90\u3011\u6BCF\u6761\u8BB0\u5FC6\u5FC5\u987B\u6807\u6CE8\u6765\u6E90\uFF08\u4F9B\u53EC\u56DE\u65F6\u5224\u65AD\u53EF\u4FE1\u5EA6\uFF09\uFF1A
379
- - verified\uFF1A\u5DE5\u5177/\u547D\u4EE4\u5B9E\u6D4B\u9A8C\u8BC1\u8FC7\uFF08\u9AD8\u7F6E\u4FE1\u5EA6\uFF09
380
- - stated\uFF1A\u7528\u6237\u660E\u786E\u9648\u8FF0\uFF08\u4E2D\u9AD8\u7F6E\u4FE1\u5EA6\uFF09
381
- - inferred\uFF1A\u6A21\u578B\u63A8\u65AD/\u51ED\u5370\u8C61\uFF0C\u672A\u9A8C\u8BC1\uFF08\u4F4E\u7F6E\u4FE1\u5EA6\u2014\u2014\u5BB9\u6613\u7F16\u9020\uFF0C\u4F18\u5148\u6807\u8BB0\u5B58\u7591\uFF09
382
- \u8C03\u7528\u65F6\u5C3D\u91CF\u660E\u786E\u6765\u6E90\uFF0C\u65E0\u6CD5\u5224\u65AD\u7684\u4FDD\u5B88\u6807 inferred\u3002
383
-
384
- \u3010\u53EC\u56DE\u89C4\u5219\u3011\u53EC\u56DE\u7684\u8BB0\u5FC6\u5FC5\u987B\u5E26\u5B8C\u6574\u5386\u53F2\u4E0A\u4E0B\u6587\uFF08\u6765\u6E90\u3001\u7F6E\u4FE1\u5EA6\u3001\u53D8\u66F4\u8BB0\u5F55\uFF09\uFF0C\u7981\u6B62\u81EA\u884C\u63A8\u7406\u586B\u8865\u3002`;
385
- var SELF_UPDATE_INSTRUCTIONS = `--- Agent \u81EA\u6211\u66F4\u65B0\u80FD\u529B ---
386
-
387
- ## \u4F55\u65F6\u66F4\u65B0\u81EA\u5DF1
388
- - \u91CD\u8981\u51B3\u7B56/\u8FDB\u5EA6\u53D8\u5316 \u2192 updateDoc \u5199\u56DE\u72B6\u6001\u9875
389
- - \u503C\u5F97\u590D\u7528\u7684\u77E5\u8BC6 \u2192 createDoc \u5EFA\u7EC6\u5206\u9875\uFF0C\u518D\u6309\u9700\u8981\u66F4\u65B0\u81EA\u5DF1\u7684 references / greeting / introduction
390
- - \u5C0F\u5E45\u4F53\u9A8C\u4F18\u5316 \u2192 updateSelf \u8C03\u6574 greeting / introduction / tags
391
-
392
- ## \u66F4\u65B0\u539F\u5219
393
- - \u4F18\u5148\u5F62\u6210\u6700\u5C0F\u3001\u53EF\u89E3\u91CA\u7684\u53D8\u66F4\uFF0C\u4E0D\u8981\u4E3A\u4E86\u201C\u663E\u5F97\u5728\u8FDB\u5316\u201D\u800C\u9891\u7E41\u6539\u81EA\u5DF1
394
- - \u4F4E\u98CE\u9669\u6C89\u6DC0\u4F18\u5148\u5199\u5165 memory / doc\uFF1B\u53EA\u6709\u5F53\u8FD9\u4E9B\u77E5\u8BC6\u9700\u8981\u957F\u671F\u6539\u53D8\u4F60\u7684\u884C\u4E3A\u65B9\u5F0F\u65F6\uFF0C\u518D\u8003\u8651 updateSelf
395
- - prompt / references / tools / model \u8FD9\u7C7B\u9AD8\u5F71\u54CD\u5B57\u6BB5\uFF0C\u9ED8\u8BA4\u6309\u9700\u8981\u786E\u8BA4\u6765\u5904\u7406\uFF0C\u4E0D\u8981\u9759\u9ED8\u5927\u6539
396
- - \u5982\u679C\u5DE5\u5177\u8FD4\u56DE policy limit / ask / reject\uFF0C\u4E0D\u8981\u91CD\u590D\u5C1D\u8BD5\uFF0C\u5E94\u5148\u5411\u7528\u6237\u89E3\u91CA\u6216\u7B49\u5F85\u66F4\u9AD8\u6743\u9650\u786E\u8BA4
397
- - \u6CA1\u6709\u53D1\u751F\u5B9E\u9645\u66F4\u65B0\u65F6\uFF0C\u4E0D\u8981\u5728\u56DE\u590D\u672B\u5C3E\u989D\u5916\u6C47\u62A5\u201C\u672A\u66F4\u65B0\u201D\u72B6\u6001`;
398
- var GENERIC_AGENT_UPDATE_INSTRUCTIONS = `--- Agent \u7EF4\u62A4\u80FD\u529B ---
399
- \u4F60\u62E5\u6709 updateAgent \u6743\u9650\uFF0C\u53EF\u4EE5\u66F4\u65B0\u6307\u5B9A\u7684 Agent\u3002
400
-
401
- ## \u4F55\u65F6\u66F4\u65B0\u522B\u7684 Agent
402
- - \u7528\u6237\u660E\u786E\u8981\u6C42\u4F60\u7EF4\u62A4\u3001\u4FEE\u590D\u6216\u6279\u91CF\u8C03\u6574\u53E6\u4E00\u4E2A Agent
403
- - \u4F60\u9700\u8981\u4FEE\u6539\u7684\u76EE\u6807\u4E0D\u662F\u5F53\u524D\u6B63\u5728\u8FD0\u884C\u7684\u81EA\u5DF1
404
-
405
- ## \u66F4\u65B0\u539F\u5219
406
- - \u9ED8\u8BA4\u628A updateAgent \u5F53\u6210\u9AD8\u98CE\u9669\u7EF4\u62A4\u64CD\u4F5C\uFF0C\u4F18\u5148\u6700\u5C0F\u6539\u52A8
407
- - \u4FEE\u6539\u524D\u5148\u786E\u8BA4\u76EE\u6807 Agent \u662F\u5426\u6B63\u786E\uFF0C\u907F\u514D\u8BEF\u6539
408
- - \u5982\u679C\u5DE5\u5177\u8FD4\u56DE\u9700\u8981\u786E\u8BA4\uFF0C\u4E0D\u8981\u7ED5\u8FC7\u786E\u8BA4\u6D41\u7A0B`;
409
- var TOOL_GUIDED_SECTIONS = [
410
- {
411
- id: "agentOrchestration",
412
- triggerTools: [
413
- "runStreamingAgent",
414
- "startAgentRun",
415
- "controlAgentRun"
416
- ],
417
- build: (tools) => [
418
- AGENT_ORCHESTRATION_INSTRUCTIONS,
419
- tools.includes("runStreamingAgent") ? PAGE_BUILDER_HANDOFF_INSTRUCTIONS : "",
420
- tools.includes("startAgentRun") || tools.includes("controlAgentRun") ? AGENT_ORCHESTRATION_RUN_INSTRUCTIONS : ""
421
- ].filter(Boolean).join("\n\n")
422
- },
423
- {
424
- id: "agentCollaboration",
425
- triggerTools: [
426
- "runStreamingAgent",
427
- "startAgentRun",
428
- "controlAgentRun"
429
- ],
430
- build: () => AGENT_COLLABORATION_INSTRUCTIONS
431
- },
432
- { id: "menuUsage", triggerTools: ["ask_user"], build: () => MENU_USAGE_INSTRUCTIONS },
433
- {
434
- id: "webAccess",
435
- triggerTools: ["exa_search", "fetchWebpage", "browser_openSession", "read_x_post"],
436
- build: () => WEBPAGE_ACCESS_INSTRUCTIONS
437
- },
438
- {
439
- id: "knowledgeManagement",
440
- triggerTools: ["createDoc", "updateDoc", "read", "readDoc", "readPage"],
441
- build: () => KNOWLEDGE_MANAGEMENT_INSTRUCTIONS
442
- },
443
- { id: "memoryCapture", triggerTools: ["rememberMemory"], build: () => MEMORY_CAPTURE_INSTRUCTIONS },
444
- { id: "selfUpdate", triggerTools: ["updateSelf"], build: () => SELF_UPDATE_INSTRUCTIONS },
445
- { id: "genericAgentUpdate", triggerTools: ["updateAgent"], build: () => GENERIC_AGENT_UPDATE_INSTRUCTIONS }
446
- ];
447
- function resolveToolGuidedSections(agentTools) {
448
- const out = {};
449
- for (const section of TOOL_GUIDED_SECTIONS) {
450
- if (section.triggerTools.some((t) => agentTools.includes(t))) {
451
- out[section.id] = section.build(agentTools);
452
- } else {
453
- out[section.id] = "";
454
- }
455
- }
456
- return out;
457
- }
458
-
459
- // packages/agent-runtime/currentTimeContext.ts
460
- var pad2 = (value) => String(value).padStart(2, "0");
461
- var resolveDefaultTimeZone = () => {
462
- try {
463
- return Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
464
- } catch {
465
- return "UTC";
466
- }
467
- };
468
- var partsForTimeZone = (date, timeZone) => {
469
- const parts = new Intl.DateTimeFormat("en-US", {
470
- timeZone,
471
- year: "numeric",
472
- month: "2-digit",
473
- day: "2-digit",
474
- hour: "2-digit",
475
- minute: "2-digit",
476
- second: "2-digit",
477
- hour12: false
478
- }).formatToParts(date);
479
- return Object.fromEntries(
480
- parts.filter((part) => part.type !== "literal").map((part) => [part.type, part.value])
481
- );
482
- };
483
- var zonedDateTime = (date, timeZone) => {
484
- const parts = partsForTimeZone(date, timeZone);
485
- return [
486
- `${parts.year}-${parts.month}-${parts.day}`,
487
- `${parts.hour}:${parts.minute}:${parts.second}`
488
- ].join(" ");
489
- };
490
- var timeZoneOffset = (date, timeZone) => {
491
- const parts = partsForTimeZone(date, timeZone);
492
- const utcMs = Date.UTC(
493
- Number(parts.year),
494
- Number(parts.month) - 1,
495
- Number(parts.day),
496
- Number(parts.hour),
497
- Number(parts.minute),
498
- Number(parts.second)
499
- );
500
- const offsetMinutes = Math.round((utcMs - date.getTime()) / 6e4);
501
- const sign = offsetMinutes >= 0 ? "+" : "-";
502
- const absolute = Math.abs(offsetMinutes);
503
- return `UTC${sign}${pad2(Math.floor(absolute / 60))}:${pad2(absolute % 60)}`;
504
- };
505
- var buildCurrentTimeBlock = (now = /* @__PURE__ */ new Date(), timeZone = resolveDefaultTimeZone()) => [
506
- "--- \u5F53\u524D\u65F6\u95F4 ---",
507
- `\u5F53\u524D\u65E5\u671F: ${zonedDateTime(now, timeZone).slice(0, 10)}`,
508
- `\u5F53\u524D\u672C\u5730\u65F6\u95F4: ${zonedDateTime(now, timeZone).slice(0, 16)}`,
509
- // HH:MM only, no seconds
510
- `\u672C\u5730\u65F6\u533A: ${timeZone} / ${timeZoneOffset(now, timeZone)}`,
511
- `UTC \u65F6\u95F4: ${now.toISOString().slice(0, 16)}`,
512
- // YYYY-MM-DDTHH:MM only
513
- "\u5F53\u7528\u6237\u95EE\u201C\u73B0\u5728\u201D\u201C\u5F53\u524D\u65F6\u95F4\u201D\u201C\u5317\u4EAC\u65F6\u95F4\u201D\u7B49\u65F6\u95F4\u95EE\u9898\u65F6\uFF0C\u76F4\u63A5\u4F7F\u7528\u8FD9\u91CC\u7684\u5F53\u524D\u65F6\u95F4\uFF1B\u4E0D\u8981\u53EA\u56DE\u7B54\u65E5\u671F\u3002",
514
- "\u5F53\u7528\u6237\u8BF4\u201C\u4ECA\u5929\u201D\u201C\u4ECA\u65E5\u201D\u6216 today \u65F6\uFF0C\u9ED8\u8BA4\u6307\u5F53\u524D\u672C\u5730\u65E5\u671F\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u7ED9\u51FA\u5176\u5B83\u65E5\u671F\u3002"
515
- ].join("\n");
516
-
517
- // packages/core/chat/bareImageUrlShape.ts
518
- function requiresBareImageUrl(args) {
519
- const model = asTrimmedLowercaseString(args.model);
520
- if (!model.startsWith("gpt-")) return false;
521
- const provider = asTrimmedLowercaseString(args.provider);
522
- if (provider === "opencode-go") return true;
523
- return asTrimmedLowercaseString(args.endpoint).includes("opencode.ai/zen/go");
524
- }
525
- function toBareImageUrlContent(content) {
526
- if (!Array.isArray(content)) return content;
527
- let changed = false;
528
- const parts = content.map((part) => {
529
- if (!isImageUrlPart(part)) return part;
530
- const imageUrl = part.image_url;
531
- if (!imageUrl || typeof imageUrl !== "object") return part;
532
- const url = imageUrl.url;
533
- if (typeof url !== "string" || !url) return part;
534
- changed = true;
535
- return { ...part, image_url: url };
536
- });
537
- return changed ? parts : content;
538
- }
539
- function toBareImageUrlMessages(messages) {
540
- return messages.map((message) => {
541
- const content = toBareImageUrlContent(message.content);
542
- return content === message.content ? message : { ...message, content };
543
- });
544
- }
545
-
546
- export {
547
- buildIdentityBlock,
548
- buildRuntimeGuidanceBlocks,
549
- resolveToolGuidedSections,
550
- buildCurrentTimeBlock,
551
- requiresBareImageUrl,
552
- toBareImageUrlMessages
553
- };