dominds 0.7.6 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/README.md +2 -2
  2. package/README.zh.md +2 -2
  3. package/dist/agent-priming.js +169 -200
  4. package/dist/cli/read.js +2 -7
  5. package/dist/dialog-factory.js +6 -4
  6. package/dist/dialog-instance-registry.js +2 -2
  7. package/dist/dialog.js +99 -91
  8. package/dist/docs/dialog-persistence.md +2 -2
  9. package/dist/docs/dialog-persistence.zh.md +2 -2
  10. package/dist/docs/dialog-system.md +86 -90
  11. package/dist/docs/dialog-system.zh.md +82 -83
  12. package/dist/docs/diligence-push.md +2 -2
  13. package/dist/docs/diligence-push.zh.md +2 -2
  14. package/dist/docs/dominds-agent-priming.md +11 -11
  15. package/dist/docs/dominds-agent-priming.zh.md +9 -9
  16. package/dist/docs/dominds-terminology.md +34 -34
  17. package/dist/docs/fbr-implementation.md +4 -4
  18. package/dist/docs/fbr-implementation.zh.md +4 -4
  19. package/dist/docs/fbr.md +31 -53
  20. package/dist/docs/fbr.zh.md +30 -48
  21. package/dist/docs/mottos.md +2 -3
  22. package/dist/docs/mottos.zh.md +2 -2
  23. package/dist/docs/q4h.md +6 -6
  24. package/dist/docs/q4h.zh.md +6 -6
  25. package/dist/docs/tellask-collab.md +13 -13
  26. package/dist/docs/tellask-collab.zh.md +18 -18
  27. package/dist/llm/driver-entry.js +9 -33
  28. package/dist/llm/driver-v2/core.js +413 -111
  29. package/dist/llm/driver-v2/index.js +5 -0
  30. package/dist/llm/driver-v2/orchestrator.js +4 -3
  31. package/dist/llm/driver-v2/policy.js +17 -23
  32. package/dist/llm/driver-v2/restore-dialog-hierarchy.js +73 -0
  33. package/dist/llm/driver-v2/round.js +18 -7
  34. package/dist/llm/driver-v2/runtime-utils.js +3 -5
  35. package/dist/llm/driver-v2/saying-events.js +4 -42
  36. package/dist/llm/driver-v2/supdialog-response.js +110 -23
  37. package/dist/llm/driver-v2/tellask-bridge.js +560 -458
  38. package/dist/mcp/sdk-client.js +1 -1
  39. package/dist/mcp/server-runtime.js +1 -1
  40. package/dist/mcp/stdio-client.js +6 -6
  41. package/dist/mcp/tool-names.js +1 -1
  42. package/dist/minds/builtin/fuxi/persona.en.md +10 -10
  43. package/dist/minds/builtin/fuxi/persona.zh.md +12 -12
  44. package/dist/minds/builtin/pangu/persona.en.md +7 -7
  45. package/dist/minds/builtin/pangu/persona.zh.md +6 -6
  46. package/dist/minds/minds-i18n.js +2 -2
  47. package/dist/minds/system-prompt-parts.js +15 -12
  48. package/dist/minds/system-prompt.js +58 -56
  49. package/dist/persistence.js +675 -527
  50. package/dist/server/api-routes.js +1 -1
  51. package/dist/server/websocket-handler.js +10 -20
  52. package/dist/server.js +3 -3
  53. package/dist/shared/diligence.js +12 -12
  54. package/dist/shared/i18n/driver-messages.js +28 -118
  55. package/dist/shared/utils/inter-dialog-format.js +53 -53
  56. package/dist/snippets/starting.en.md +1 -1
  57. package/dist/snippets/starting.zh.md +1 -2
  58. package/dist/static/assets/{_baseUniq-2IQvcpiv.js → _baseUniq-D4N_zVXV.js} +2 -2
  59. package/dist/static/assets/{_baseUniq-2IQvcpiv.js.map → _baseUniq-D4N_zVXV.js.map} +1 -1
  60. package/dist/static/assets/{arc-Boi4s2EY.js → arc-7bP9qomB.js} +2 -2
  61. package/dist/static/assets/{arc-Boi4s2EY.js.map → arc-7bP9qomB.js.map} +1 -1
  62. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CV1IIalQ.js → architectureDiagram-VXUJARFQ-DToIiZuZ.js} +6 -6
  63. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CV1IIalQ.js.map → architectureDiagram-VXUJARFQ-DToIiZuZ.js.map} +1 -1
  64. package/dist/static/assets/{blockDiagram-VD42YOAC-C66ZvUb1.js → blockDiagram-VD42YOAC-C-pRNHpf.js} +7 -7
  65. package/dist/static/assets/{blockDiagram-VD42YOAC-C66ZvUb1.js.map → blockDiagram-VD42YOAC-C-pRNHpf.js.map} +1 -1
  66. package/dist/static/assets/{c4Diagram-YG6GDRKO-2YQZQ-KQ.js → c4Diagram-YG6GDRKO-Bnp-nWKO.js} +3 -3
  67. package/dist/static/assets/{c4Diagram-YG6GDRKO-2YQZQ-KQ.js.map → c4Diagram-YG6GDRKO-Bnp-nWKO.js.map} +1 -1
  68. package/dist/static/assets/{channel-DBG_xYT_.js → channel-CTv1SsAF.js} +2 -2
  69. package/dist/static/assets/{channel-DBG_xYT_.js.map → channel-CTv1SsAF.js.map} +1 -1
  70. package/dist/static/assets/{chunk-4BX2VUAB-D92pQ5qM.js → chunk-4BX2VUAB-D_OGa3ss.js} +2 -2
  71. package/dist/static/assets/{chunk-4BX2VUAB-D92pQ5qM.js.map → chunk-4BX2VUAB-D_OGa3ss.js.map} +1 -1
  72. package/dist/static/assets/{chunk-55IACEB6-T3IKxvjm.js → chunk-55IACEB6-I4o4MCuM.js} +2 -2
  73. package/dist/static/assets/{chunk-55IACEB6-T3IKxvjm.js.map → chunk-55IACEB6-I4o4MCuM.js.map} +1 -1
  74. package/dist/static/assets/{chunk-B4BG7PRW-SKDCq7xY.js → chunk-B4BG7PRW-Bp-TIXg6.js} +5 -5
  75. package/dist/static/assets/{chunk-B4BG7PRW-SKDCq7xY.js.map → chunk-B4BG7PRW-Bp-TIXg6.js.map} +1 -1
  76. package/dist/static/assets/{chunk-DI55MBZ5-CKY9xXzj.js → chunk-DI55MBZ5-Bnph5Hmd.js} +4 -4
  77. package/dist/static/assets/{chunk-DI55MBZ5-CKY9xXzj.js.map → chunk-DI55MBZ5-Bnph5Hmd.js.map} +1 -1
  78. package/dist/static/assets/{chunk-FMBD7UC4-CzaQthG_.js → chunk-FMBD7UC4-q3UyRsNI.js} +2 -2
  79. package/dist/static/assets/{chunk-FMBD7UC4-CzaQthG_.js.map → chunk-FMBD7UC4-q3UyRsNI.js.map} +1 -1
  80. package/dist/static/assets/{chunk-QN33PNHL-8v7ASP75.js → chunk-QN33PNHL-BxUlvLXP.js} +2 -2
  81. package/dist/static/assets/{chunk-QN33PNHL-8v7ASP75.js.map → chunk-QN33PNHL-BxUlvLXP.js.map} +1 -1
  82. package/dist/static/assets/{chunk-QZHKN3VN-Cd3_mr-D.js → chunk-QZHKN3VN-DpQR9BVw.js} +2 -2
  83. package/dist/static/assets/{chunk-QZHKN3VN-Cd3_mr-D.js.map → chunk-QZHKN3VN-DpQR9BVw.js.map} +1 -1
  84. package/dist/static/assets/{chunk-TZMSLE5B-BrTyfkJK.js → chunk-TZMSLE5B-BX8vrVo0.js} +2 -2
  85. package/dist/static/assets/{chunk-TZMSLE5B-BrTyfkJK.js.map → chunk-TZMSLE5B-BX8vrVo0.js.map} +1 -1
  86. package/dist/static/assets/{classDiagram-2ON5EDUG-pLBmQ3Qa.js → classDiagram-2ON5EDUG-Ccx5_2Xq.js} +6 -6
  87. package/dist/static/assets/{classDiagram-2ON5EDUG-pLBmQ3Qa.js.map → classDiagram-2ON5EDUG-Ccx5_2Xq.js.map} +1 -1
  88. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-pLBmQ3Qa.js → classDiagram-v2-WZHVMYZB-Ccx5_2Xq.js} +6 -6
  89. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-pLBmQ3Qa.js.map → classDiagram-v2-WZHVMYZB-Ccx5_2Xq.js.map} +1 -1
  90. package/dist/static/assets/{clone-rjxmrDHc.js → clone-Cl5zSMrO.js} +2 -2
  91. package/dist/static/assets/{clone-rjxmrDHc.js.map → clone-Cl5zSMrO.js.map} +1 -1
  92. package/dist/static/assets/{cose-bilkent-S5V4N54A-DaW3q2vS.js → cose-bilkent-S5V4N54A-B-FUX86B.js} +2 -2
  93. package/dist/static/assets/{cose-bilkent-S5V4N54A-DaW3q2vS.js.map → cose-bilkent-S5V4N54A-B-FUX86B.js.map} +1 -1
  94. package/dist/static/assets/{dagre-6UL2VRFP-BT252775.js → dagre-6UL2VRFP-Bj8vSSpT.js} +7 -7
  95. package/dist/static/assets/{dagre-6UL2VRFP-BT252775.js.map → dagre-6UL2VRFP-Bj8vSSpT.js.map} +1 -1
  96. package/dist/static/assets/{diagram-PSM6KHXK-Cp0jEYgm.js → diagram-PSM6KHXK-BPcgy7jf.js} +7 -7
  97. package/dist/static/assets/{diagram-PSM6KHXK-Cp0jEYgm.js.map → diagram-PSM6KHXK-BPcgy7jf.js.map} +1 -1
  98. package/dist/static/assets/{diagram-QEK2KX5R-BYEiCch_.js → diagram-QEK2KX5R-DHxd6LWi.js} +6 -6
  99. package/dist/static/assets/{diagram-QEK2KX5R-BYEiCch_.js.map → diagram-QEK2KX5R-DHxd6LWi.js.map} +1 -1
  100. package/dist/static/assets/{diagram-S2PKOQOG-SNGZ1B53.js → diagram-S2PKOQOG-C4ynhhLr.js} +6 -6
  101. package/dist/static/assets/{diagram-S2PKOQOG-SNGZ1B53.js.map → diagram-S2PKOQOG-C4ynhhLr.js.map} +1 -1
  102. package/dist/static/assets/{erDiagram-Q2GNP2WA-CMdkkngT.js → erDiagram-Q2GNP2WA-CQ25uxxf.js} +5 -5
  103. package/dist/static/assets/{erDiagram-Q2GNP2WA-CMdkkngT.js.map → erDiagram-Q2GNP2WA-CQ25uxxf.js.map} +1 -1
  104. package/dist/static/assets/{flowDiagram-NV44I4VS-k203P84f.js → flowDiagram-NV44I4VS-ChkkAldk.js} +6 -6
  105. package/dist/static/assets/{flowDiagram-NV44I4VS-k203P84f.js.map → flowDiagram-NV44I4VS-ChkkAldk.js.map} +1 -1
  106. package/dist/static/assets/{ganttDiagram-JELNMOA3-CgsVe01-.js → ganttDiagram-JELNMOA3-CBt_Zorl.js} +3 -3
  107. package/dist/static/assets/{ganttDiagram-JELNMOA3-CgsVe01-.js.map → ganttDiagram-JELNMOA3-CBt_Zorl.js.map} +1 -1
  108. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-BGOR_N5w.js → gitGraphDiagram-NY62KEGX-CtBc2dOO.js} +7 -7
  109. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-BGOR_N5w.js.map → gitGraphDiagram-NY62KEGX-CtBc2dOO.js.map} +1 -1
  110. package/dist/static/assets/{graph-DDHIhCSW.js → graph-BGzNnzuI.js} +3 -3
  111. package/dist/static/assets/{graph-DDHIhCSW.js.map → graph-BGzNnzuI.js.map} +1 -1
  112. package/dist/static/assets/{index-CUZD-Ua6.js → index-Vrp1PT3b.js} +654 -355
  113. package/dist/static/assets/index-Vrp1PT3b.js.map +1 -0
  114. package/dist/static/assets/{infoDiagram-WHAUD3N6-D0GlWUIm.js → infoDiagram-WHAUD3N6-BYJF-Ol5.js} +5 -5
  115. package/dist/static/assets/{infoDiagram-WHAUD3N6-D0GlWUIm.js.map → infoDiagram-WHAUD3N6-BYJF-Ol5.js.map} +1 -1
  116. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-I0W1fDTZ.js → journeyDiagram-XKPGCS4Q-Cl2p8ZBw.js} +5 -5
  117. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-I0W1fDTZ.js.map → journeyDiagram-XKPGCS4Q-Cl2p8ZBw.js.map} +1 -1
  118. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BY5xVZyl.js → kanban-definition-3W4ZIXB7-DBH-HEwY.js} +3 -3
  119. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BY5xVZyl.js.map → kanban-definition-3W4ZIXB7-DBH-HEwY.js.map} +1 -1
  120. package/dist/static/assets/{layout-C7mFT1m6.js → layout-DdWO-uEo.js} +5 -5
  121. package/dist/static/assets/{layout-C7mFT1m6.js.map → layout-DdWO-uEo.js.map} +1 -1
  122. package/dist/static/assets/{linear-WSX0brRY.js → linear-BY3MovaF.js} +2 -2
  123. package/dist/static/assets/{linear-WSX0brRY.js.map → linear-BY3MovaF.js.map} +1 -1
  124. package/dist/static/assets/{min-DOTQTP4p.js → min-aHCJK1uN.js} +3 -3
  125. package/dist/static/assets/{min-DOTQTP4p.js.map → min-aHCJK1uN.js.map} +1 -1
  126. package/dist/static/assets/{mindmap-definition-VGOIOE7T-BWhHo-Hq.js → mindmap-definition-VGOIOE7T-BjJnBRtB.js} +4 -4
  127. package/dist/static/assets/{mindmap-definition-VGOIOE7T-BWhHo-Hq.js.map → mindmap-definition-VGOIOE7T-BjJnBRtB.js.map} +1 -1
  128. package/dist/static/assets/{pieDiagram-ADFJNKIX-B91oxvos.js → pieDiagram-ADFJNKIX-xAcmdymv.js} +7 -7
  129. package/dist/static/assets/{pieDiagram-ADFJNKIX-B91oxvos.js.map → pieDiagram-ADFJNKIX-xAcmdymv.js.map} +1 -1
  130. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DqMUyBPr.js → quadrantDiagram-AYHSOK5B-BPbEGCEj.js} +3 -3
  131. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DqMUyBPr.js.map → quadrantDiagram-AYHSOK5B-BPbEGCEj.js.map} +1 -1
  132. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-COUayA3m.js → requirementDiagram-UZGBJVZJ--w6UfXy0.js} +4 -4
  133. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-COUayA3m.js.map → requirementDiagram-UZGBJVZJ--w6UfXy0.js.map} +1 -1
  134. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-Bp9r8YDi.js → sankeyDiagram-TZEHDZUN-B_T6TQwh.js} +2 -2
  135. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-Bp9r8YDi.js.map → sankeyDiagram-TZEHDZUN-B_T6TQwh.js.map} +1 -1
  136. package/dist/static/assets/{sequenceDiagram-WL72ISMW-CpuTC5cG.js → sequenceDiagram-WL72ISMW-DX_oVvqA.js} +4 -4
  137. package/dist/static/assets/{sequenceDiagram-WL72ISMW-CpuTC5cG.js.map → sequenceDiagram-WL72ISMW-DX_oVvqA.js.map} +1 -1
  138. package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bxoo7e6E.js → stateDiagram-FKZM4ZOC-BAybZU8l.js} +9 -9
  139. package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bxoo7e6E.js.map → stateDiagram-FKZM4ZOC-BAybZU8l.js.map} +1 -1
  140. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Q-DL7tae.js → stateDiagram-v2-4FDKWEC3-BUsvuCdD.js} +5 -5
  141. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Q-DL7tae.js.map → stateDiagram-v2-4FDKWEC3-BUsvuCdD.js.map} +1 -1
  142. package/dist/static/assets/{timeline-definition-IT6M3QCI-DuOiHQPk.js → timeline-definition-IT6M3QCI-DOYN-4XM.js} +3 -3
  143. package/dist/static/assets/{timeline-definition-IT6M3QCI-DuOiHQPk.js.map → timeline-definition-IT6M3QCI-DOYN-4XM.js.map} +1 -1
  144. package/dist/static/assets/{treemap-KMMF4GRG-YbrDC0fO.js → treemap-KMMF4GRG-CQXygT0T.js} +4 -4
  145. package/dist/static/assets/{treemap-KMMF4GRG-YbrDC0fO.js.map → treemap-KMMF4GRG-CQXygT0T.js.map} +1 -1
  146. package/dist/static/assets/{xychartDiagram-PRI3JC2R-DDRlTIfV.js → xychartDiagram-PRI3JC2R-ByFAvTeN.js} +3 -3
  147. package/dist/static/assets/{xychartDiagram-PRI3JC2R-DDRlTIfV.js.map → xychartDiagram-PRI3JC2R-ByFAvTeN.js.map} +1 -1
  148. package/dist/static/index.html +1 -1
  149. package/dist/tools/builtins.js +0 -8
  150. package/dist/tools/env.js +1 -1
  151. package/dist/tools/mcp.js +31 -9
  152. package/dist/tools/pending-tellask-reminder.js +14 -17
  153. package/dist/tools/team-mgmt.js +1 -1
  154. package/package.json +1 -1
  155. package/dist/static/assets/index-CUZD-Ua6.js.map +0 -1
@@ -36,82 +36,84 @@ function formatTeamIntro(team, selfAgentId, language) {
36
36
  }
37
37
  function buildSystemPrompt(input) {
38
38
  const fbrScopeRuleZh = input.dialogScope === 'mainline'
39
- ? '- 每次扪心自问(FBR)之前,务必先基于当前可观测事实调用 \\`change_mind\\` 更新差遣牒,体现任务最新进展情况。\\`!?@self\\` 自诉请正文不要冗余包含差遣牒已有信息。'
40
- : '- 每次扪心自问(FBR)之前,务必先基于当前可观测事实分析是否与差遣牒内容存在差异,并将发现的情况包含在 \\`!?@self\\` 自诉请正文中。';
39
+ ? '- 系统会持续自动监控上下文健康度:没有吃紧/告急提示时,可以安全进行 FBR。如果有吃紧/告急提示,系统会提醒你,应先处理(提炼 + clear_mind)。随后基于当前可观测事实调用 \\`change_mind\\` 更新差遣牒,体现任务最新进展情况。FBR 自诉请正文不要冗余包含差遣牒已有信息。'
40
+ : '- 系统会持续自动监控上下文健康度:没有吃紧/告急提示时,可以安全进行 FBR。如果有吃紧/告急提示,系统会提醒你,应先处理。随后基于当前可观测事实分析是否与差遣牒内容存在差异,并将发现的情况包含在 FBR 自诉请正文中。';
41
41
  const fbrScopeRuleEn = input.dialogScope === 'mainline'
42
- ? '- Before every FBR, first call \\`change_mind\\` based on currently observable facts to update the Taskdoc with the latest task progress, do not redundantly include information already present in the Taskdoc in the \\`!?@self\\` tellask body.'
43
- : '- Before every FBR, first analyze whether currently observable facts differ from the Taskdoc, and include the findings in the \\`!?@self\\` tellask body.';
42
+ ? '- Before every FBR, the system will automatically alert on context health status: if there are no yellow/red alerts, you can safely proceed with FBR. If there are yellow/red alerts, handle them first (distill + clear_mind). Then call \\`change_mind\\` based on currently observable facts to update the Taskdoc with the latest task progress; do not redundantly include information already present in the Taskdoc in the FBR FBR body.'
43
+ : '- Before every FBR, the system will automatically alert on context health status: if there are no yellow/red alerts, you can safely proceed with FBR. If there are yellow/red alerts, handle them first. Then analyze whether currently observable facts differ from the Taskdoc, and include the findings in the FBR FBR body.';
44
44
  const fbrPhaseContractZh = [
45
- '- FBR 必须按“发起 → 等待回贴 → 综合决策”三段执行:\\`!?@self\\` 只代表发起,不代表你已完成这轮推理。',
46
- '- 发出 \\`!?@self\\` 后必须进入等待态:在该次 FBR 支线回贴返回前,不得给出“最终下一步行动决策”。',
45
+ '- FBR 必须按“发起 → 等待回贴 → 综合决策”三段执行:发起 `freshBootsReasoning` 只代表发起,不代表你已完成这轮推理。',
46
+ '- 发出 `freshBootsReasoning` 后必须进入等待态:在该次 FBR 支线回贴返回前,不得给出“最终下一步行动决策”。',
47
47
  '- 若 \\`fbr-effort = N\\`,必须等待全部 N 条回贴后再综合;不得基于部分回贴提前定稿。',
48
48
  '- 综合阶段必须显式区分“证据(FBR 回贴事实)”与“决策(下一步行动)”;若关键事实仍缺失,先补事实再迭代 FBR。',
49
49
  ].join('\n');
50
50
  const fbrPhaseContractEn = [
51
- '- FBR MUST follow three phases: “initiate -> wait for feedback -> synthesize and decide”. \\`!?@self\\` means initiation only, not completed reasoning.',
52
- '- After emitting \\`!?@self\\`, enter wait state: do not output a final next-action decision before feedback from that FBR sideline returns.',
51
+ '- FBR MUST follow three phases: “initiate -> wait for feedback -> synthesize and decide”. Calling `freshBootsReasoning` means initiation only, not completed reasoning.',
52
+ '- After calling `freshBootsReasoning`, enter wait state: do not output a final next-action decision before feedback from that FBR sideline returns.',
53
53
  '- If \\`fbr-effort = N\\`, wait for all N feedback drafts before synthesis; do not finalize based on partial drafts.',
54
54
  '- During synthesis, explicitly separate “evidence (FBR feedback facts)” from “decision (next action)”; if key facts are still missing, collect facts first and iterate FBR.',
55
55
  ].join('\n');
56
56
  const teammatePhaseContractZh = [
57
57
  '- 队友诉请必须遵循“发起 → 等待 → 判定 → 续推”四段协议:若目标未达成,立即发出下一轮诉请推进。',
58
- '- 对队友诉请而言,收到回贴即表示该轮调用已结束;不存在“对方仍在后台继续执行同一诉请”的默认语义。要继续必须显式再发一轮诉请(通常沿用同一 \\`!tellaskSession <slug>\\`)。',
58
+ '- 对队友诉请而言,收到回贴即表示该轮调用已结束;不存在“对方仍在后台继续执行同一诉请”的默认语义。要继续必须显式再发一轮诉请函数(通常 \\`tellask\\` 复用同一 \\`sessionSlug\\`)。',
59
59
  '- 只有在存在明确 pending tellask 时,才可声明“等待回贴/等待结果”;否则必须执行下一动作(直接诉请或本地执行)。',
60
- '- 能由队友诉请完成的执行性工作,禁止转交 @human 做“转发员”;当你写“让 @X 执行 Y”时,必须在同一回复内直接发出 \\`!?@X ...\\`。',
61
- '- 当你处于队友诉请触发的支线且需要澄清时,必须发回问诉请 \\`!?@tellasker\\`(禁止携带 \\`!tellaskSession\\`)。例如在 @fullstack 诉请你的支线中,禁止写 \\`!?@fullstack !tellaskSession ...\\` 回问;正确写法是 \\`!?@tellasker\\`。',
60
+ '- 能由队友诉请完成的执行性工作,禁止转交 \\`askHuman\\` 做“转发员”;当你写“让 @X 执行 Y”时,必须在同一回复内直接发出 \\`tellask\\` 或 \\`tellaskSessionless\\`。',
61
+ '- 当你处于队友诉请触发的支线且需要澄清时,必须使用 \\`tellaskBack\\` 回问上游诉请者;\\`tellaskBack\\` 不携带 \\`sessionSlug\\`。',
62
62
  ].join('\n');
63
63
  const teammatePhaseContractEn = [
64
64
  '- Teammate Tellasks MUST follow four phases: “initiate -> wait -> judge -> continue”. If the objective is not met, immediately send the next Tellask round.',
65
- '- For teammate Tellasks, a delivered response closes that call round; there is no default “still running in background” state for the same Tellask. To continue, emit a new Tellask explicitly (usually reusing the same \\`!tellaskSession <slug>\\`).',
65
+ '- For teammate Tellasks, a delivered response closes that call round; there is no default “still running in background” state for the same Tellask. To continue, emit a new Tellask function call explicitly (usually \\`tellask\\` with the same \\`sessionSlug\\`).',
66
66
  '- You may claim “waiting for reply/result” only when a concrete pending Tellask exists; otherwise execute the next action now (direct Tellask or local action).',
67
- '- Do not use @human as a relay for executable teammate work. If you write “ask @X to do Y”, emit \\`!?@X ...\\` in the same response.',
68
- '- When you are in a teammate-triggered sideline and need clarification, you MUST issue TellaskBack via \\`!?@tellasker\\` (and it must NOT carry \\`!tellaskSession\\`). For example, in a sideline tellasked by @fullstack, do NOT ask back with \\`!?@fullstack !tellaskSession ...\\`; the correct form is \\`!?@tellasker\\`.',
67
+ '- Do not use \\`askHuman\\` as a relay for executable teammate work. If you write “ask @X to do Y”, emit \\`tellask\\` or \\`tellaskSessionless\\` in the same response.',
68
+ '- When you are in a teammate-triggered sideline and need clarification, you MUST issue \\`tellaskBack\\` to ask back upstream; \\`tellaskBack\\` must not carry \\`sessionSlug\\`.',
69
69
  ].join('\n');
70
70
  const collaborationProtocolZh = [
71
- '- \\`!?@...\\` 仅用于诉请队友/@self/@human,不是函数工具调用通道。',
72
- '- 函数工具只能通过原生 function-calling 调用;不要把工具名写进 \\`!?@...\\` 诉请头。',
73
- '- 对队友诉请默认带 \\`!tellaskSession <slug>\\` 并在同一会话续推(适用于非 \\`!?@self\\` 且非 \\`!?@tellasker\\` 的目标);仅在确认一次性诉请足够时才可省略,且需说明理由。',
74
- '- 例外优先级(强制):\\`!?@tellasker\\` 是回问诉请专用目标,不属于“队友长线诉请默认规则”;因此既不适用默认 \\`!tellaskSession\\`,也禁止携带 \\`!tellaskSession\\`。',
71
+ '- Tellask 统一走函数工具通道:\\`tellaskBack\\` / \\`tellask\\` / \\`tellaskSessionless\\` / \\`askHuman\\` / \\`freshBootsReasoning\\`。',
72
+ '- 对队友诉请默认使用 \\`tellask\\` 并复用 \\`sessionSlug\\`;仅在确认一次性诉请足够时才使用 \\`tellaskSessionless\\`,且需说明理由。',
73
+ '- 例外优先级(强制):\\`tellaskBack\\` 仅用于回问上游诉请者,不适用队友长线默认规则,也不携带 \\`sessionSlug\\`。',
75
74
  '- 队友诉请阶段协议(强制):',
76
75
  teammatePhaseContractZh,
77
76
  ].join('\n');
78
77
  const collaborationProtocolEn = [
79
- '- \\`!?@...\\` is only for tellasking teammates/@self/@human; it is not a function-tool invocation channel.',
80
- '- Function tools must be invoked through native function-calling only; do not put tool names in \\`!?@...\\` tellask headlines.',
81
- '- For teammate tellasks, default to \\`!tellaskSession <slug>\\` and continue in that same session (applies to targets other than \\`!?@self\\` and \\`!?@tellasker\\`); omit only for a justified one-shot call.',
82
- '- Mandatory exception precedence: \\`!?@tellasker\\` is TellaskBack-only and outside the teammate-session default; it therefore does not use the default \\`!tellaskSession\\` and must never carry \\`!tellaskSession\\`.',
78
+ '- Tellask must use the function-tool channel: \\`tellaskBack\\` / \\`tellask\\` / \\`tellaskSessionless\\` / \\`askHuman\\` / \\`freshBootsReasoning\\`.',
79
+ '- For teammate tellasks, default to \\`tellask\\` and continue with the same \\`sessionSlug\\`; use \\`tellaskSessionless\\` only for justified one-shot calls.',
80
+ '- Mandatory exception precedence: \\`tellaskBack\\` is ask-back-only and outside the teammate-session default; it does not carry \\`sessionSlug\\`.',
83
81
  '- Teammate Tellask phase contract (mandatory):',
84
82
  teammatePhaseContractEn,
85
83
  ].join('\n');
86
84
  const fbrGuidelinesZh = [
87
- '- \\`!?@self\\` FBR 特有机制,不属于“队友诉请”分类;请按本节规则执行,不要套用“队友诉请默认带 \\`!tellaskSession\\`”的规则。',
88
- '- 当用户明确要求“做一次 FBR/扪心自问”,对话主理人必须用 \\`!?@self\\` 发起。',
85
+ '- FBR \\`freshBootsReasoning\\` 触发,不属于普通队友诉请分类;请按本节规则执行。',
86
+ '- 当用户明确要求“做一次 FBR/扪心自问”,对话主理人必须发起 \\`freshBootsReasoning\\`。',
89
87
  fbrScopeRuleZh,
90
- '- FBR 的默认入口是瞬态 \\`!?@self\\`(不带 \\`!tellaskSession\\`);仅当明确需要可恢复的长期 FBR 会话时,才使用 \\`!?@self !tellaskSession <slug>\\`,并说明理由。',
91
- '- 即使用户未明确要求,在诉诸 @human(Q4H)之前,若感觉目标不够清晰或难以决定下一步行动,应首先发起一次扪心自问,充分总结当前对话上下文的事实情况作为 FBR 正文;在收到该次 FBR 回贴前,不要提前下最终行动决策。',
88
+ '- FBR 的标准入口是 \\`freshBootsReasoning({ tellaskContent })\\`;禁止用 \\`tellask\\` / \\`tellaskSessionless\\` 对自己发起 self-target 诉请来替代。',
89
+ '- 即使用户未明确要求,在诉诸 \\`askHuman\\`(Q4H)之前,若感觉目标不够清晰或难以决定下一步行动,应首先发起一次扪心自问,充分总结当前对话上下文的事实情况作为 FBR 正文;在收到该次 FBR 回贴前,不要提前下最终行动决策。',
92
90
  '- FBR 阶段协议(强制):',
93
91
  fbrPhaseContractZh,
94
92
  '- 鼓励 FBR 自我建议立即获取哪些未明事实,得到建议利用当前对话工具获取,再补足上下文迭代 FBR 直到获得清晰的下一步行动思路。',
95
93
  ].join('\n');
96
94
  const fbrGuidelinesEn = [
97
- '- \\`!?@self\\` is an FBR-specific mechanism, not part of the teammate-tellask category; follow this section’s rules instead of teammate-tellask defaults.',
98
- '- When the user explicitly requests “do an FBR / fresh boots reasoning”, the Dialog Responder must initiate \\`!?@self\\`.',
95
+ '- FBR is triggered by `freshBootsReasoning`, not by normal teammate tellasks; follow this section’s rules.',
96
+ '- When the user explicitly requests “do an FBR / fresh boots reasoning”, the Dialog Responder must call `freshBootsReasoning`.',
99
97
  fbrScopeRuleEn,
100
- '- The default FBR entry is transient \\`!?@self\\` (without \\`!tellaskSession\\`); use \\`!?@self !tellaskSession <slug>\\` only when you explicitly need a resumable long-lived FBR thread, and explain why.',
101
- '- Even without an explicit request, before resorting to @human (Q4H), if the goal is unclear or deciding the next action is difficult, you should first initiate FBR and summarize current dialog facts as the FBR body; do not finalize the next action before that FBR feedback returns.',
98
+ '- The standard FBR entry is \\`freshBootsReasoning({ tellaskContent })\\`; do not emulate FBR via self-targeted \\`tellask\\` / \\`tellaskSessionless\\`.',
99
+ '- Even without an explicit request, before resorting to \\`askHuman\\` (Q4H), if the goal is unclear or deciding the next action is difficult, you should first initiate FBR and summarize current dialog facts as the FBR body; do not finalize the next action before that FBR feedback returns.',
102
100
  '- FBR phase contract (mandatory):',
103
101
  fbrPhaseContractEn,
104
102
  '- Encourage FBR to recommend which missing facts to obtain immediately; then use the current dialog’s tools to fetch them, update context, and iterate FBR until a clear next action emerges.',
105
103
  ].join('\n');
106
104
  const tellaskInteractionRulesZh = [
107
- '- 诉请(tellask)使用逐行前缀语法:只有第 0 列以 \\`!?\\` 开头的行才会被当作诉请行。',
108
- '- 诉请块以连续 \\`!?...\\` 行组成;遇到第一行普通行即结束。',
109
- '- 一个诉请块的第一行必须是 \\`!?@<name> ...\\`。',
105
+ '- \\`tellaskBack\\`:仅用于支线回问上游诉请者。',
106
+ '- \\`tellask\\`:用于可恢复的长线诉请(必须提供 \\`targetAgentId\\` / \\`sessionSlug\\` / \\`tellaskContent\\`)。',
107
+ '- \\`tellaskSessionless\\`:用于一次性诉请(必须提供 \\`targetAgentId\\` / \\`tellaskContent\\`)。',
108
+ '- \\`askHuman\\`:用于 Q4H(向人类请求必要澄清/决策/授权/缺失输入)。',
109
+ '- \\`freshBootsReasoning\\`:用于发起扪心自问(FBR)支线(仅需 \\`tellaskContent\\`)。',
110
110
  ].join('\n');
111
111
  const tellaskInteractionRulesEn = [
112
- '- Tellask uses a line-prefix grammar: only lines starting at column 0 with \\`!?\\` are tellask lines.',
113
- '- A tellask block is a consecutive run of \\`!?...\\` lines; the first non-\\`!?\\` line ends the block.',
114
- '- The first tellask line in a block must start with \\`!?@<name> ...\\`.',
112
+ '- \\`tellaskBack\\`: ask back upstream from a sideline dialog only.',
113
+ '- \\`tellask\\`: resumable tellask (requires \\`targetAgentId\\` / \\`sessionSlug\\` / \\`tellaskContent\\`).',
114
+ '- \\`tellaskSessionless\\`: one-shot tellask (requires \\`targetAgentId\\` / \\`tellaskContent\\`).',
115
+ '- \\`askHuman\\`: Q4H for necessary clarification/decision/authorization/missing input.',
116
+ '- \\`freshBootsReasoning\\`: starts an FBR sideline dialog (requires \\`tellaskContent\\`).',
115
117
  ].join('\n');
116
118
  const functionToolRulesZh = [
117
119
  '- 回答必须基于可观测事实;为获取事实优先使用可用工具,缺乏观测事实时明确说明并请求/补充获取,不得臆测。',
@@ -146,15 +148,15 @@ function buildSystemPrompt(input) {
146
148
  ## 术语表
147
149
 
148
150
  - 诉请(Tellask):对智能体的结构化请求。
149
- - 诉请头(Tellask headline):诉请块第一行,形如 \`!?@<name> ...\`,结构化指令(如 \`!tellaskSession <slug>\`)写在这里。
150
- - 诉请正文(Tellask body):诉请块内以 \`!?\` 开头但不以 \`!?@\` 开头的行,用于承载上下文/约束/验收。
151
+ - 提及列表(mentionList):仅用于 \`tellask\` / \`tellaskSessionless\` 的队友目标列表(\`@<agentId>\`)。
152
+ - 诉请内容(tellaskContent):tellask 系列函数的正文参数,用于承载上下文/约束/验收。
151
153
  - 对话主理人(Dialog Responder):负责当前对话推进与输出的智能体。
152
154
  - 诉请者(tellasker):发出诉请的对话主理人。
153
155
  - 被诉请者(tellaskee):接收诉请的对话主理人/队友。
154
- - 回问诉请(TellaskBack):支线对话用 \`!?@tellasker\` 回问诉请者以澄清。
155
- - 扪心自问(FBR):仅由 \`!?@self\` 触发的“无工具”支线推理机制。
156
- - Q4H(Question for Human):通过 \`!?@human\` 向人类请求必要的澄清/决策/授权/缺失输入。
157
- - 长线诉请(Tellask Session):使用 \`!tellaskSession <slug>\` 的可恢复多轮协作。
156
+ - 回问诉请(TellaskBack):支线对话用 \`tellaskBack\` 回问诉请者以澄清。
157
+ - 扪心自问(FBR):由 \`freshBootsReasoning\` 触发的“无工具”支线推理机制。
158
+ - Q4H(Question for Human):通过 \`askHuman\` 向人类请求必要的澄清/决策/授权/缺失输入。
159
+ - 长线诉请(Tellask Session):使用 \`tellask\` + \`sessionSlug\` 的可恢复多轮协作。
158
160
  - 一次性诉请(Fresh Tellask):一次性、不可恢复的诉请。
159
161
  - 主线对话(Mainline dialog):承载共享差遣牒并负责整体推进的对话。
160
162
  - 支线对话(Sideline dialog):为分项任务临时创建的工作对话。
@@ -178,9 +180,9 @@ ${input.envIntro}
178
180
 
179
181
  ## 团队目录
180
182
 
181
- **特殊成员**:人类(@human)是特殊团队成员。你可以使用 \`!?@human ...\` 发起 Q4H(Question for Human),用于请求必要的澄清/决策/授权/提供缺失输入,或汇报当前环境中无法由智能体自主完成的阻塞事项。
182
- **注意**:不要把可由智能体完成的执行性工作外包给 @human。向 @human 的请求应尽量最小化、可验证(给出需要的具体信息、预期格式/选项),并在得到答复后继续由智能体自主完成后续工作。
183
- **补充**:像“发起队友诉请/推进迭代/收集回贴”这类常规协作动作属于智能体的自主工作流,不要向 @human 询问“是否要执行”;直接执行并在必要时汇报进度即可。
183
+ **Q4H 机制**:通过 \`askHuman\` 发起向人类请求(澄清/决策/授权/缺失输入),或汇报当前环境中无法由智能体自主完成的阻塞事项。
184
+ **注意**:不要把可由智能体完成的执行性工作外包给 \`askHuman\`。Q4H 请求应尽量最小化、可验证(给出需要的具体信息、预期格式/选项),并在得到答复后继续由智能体自主完成后续工作。
185
+ **补充**:像“发起队友诉请/推进迭代/收集回贴”这类常规协作动作属于智能体的自主工作流,不要向 \`askHuman\` 询问“是否要执行”;直接执行并在必要时汇报进度即可。
184
186
 
185
187
  你与以下智能体队友协作。使用他们的呼号与其交流、安排分项工作。
186
188
 
@@ -208,7 +210,7 @@ ${input.toolsetManualIntro}
208
210
 
209
211
  ## 交互协议
210
212
 
211
- ### Tellask(仅用于队友/@self/@human
213
+ ### Tellask Special Functions(队友/FBR/Q4H
212
214
  ${tellaskInteractionRulesZh}
213
215
 
214
216
  ### 函数工具(仅原生 function-calling)
@@ -237,15 +239,15 @@ System notifications convey important state changes (e.g., context caution/criti
237
239
  ## Glossary
238
240
 
239
241
  - Tellask: a structured request addressed to an agent.
240
- - Tellask headline: the first line of a Tellask block, e.g. \`!?@<name> ...\`; directives like \`!tellaskSession <slug>\` go here.
241
- - Tellask body: lines starting with \`!?\` but not \`!?@\`, carrying context/constraints/acceptance.
242
+ - Mention list (\`mentionList\`): teammate targets for \`tellask\` / \`tellaskSessionless\` only (\`@<agentId>\`).
243
+ - Tellask content (\`tellaskContent\`): main call payload carrying context/constraints/acceptance.
242
244
  - Dialog Responder: the role responsible for driving a dialog and producing responses.
243
245
  - tellasker: the Dialog Responder that issued the Tellask.
244
246
  - tellaskee: the Dialog Responder/agent that receives the Tellask.
245
- - TellaskBack: a sideline uses \`!?@tellasker\` to ask the tellasker for clarification.
246
- - Fresh Boots Reasoning (FBR): a tool-less sideline reasoning mechanism triggered only by \`!?@self\`.
247
- - Q4H (Question for Human): use \`!?@human\` to request necessary clarification/decision/authorization/missing input from a human.
248
- - Tellask Session: resumable multi-turn work using \`!tellaskSession <slug>\`.
247
+ - TellaskBack: a sideline uses \`tellaskBack\` to ask the tellasker for clarification.
248
+ - Fresh Boots Reasoning (FBR): a tool-less sideline reasoning mechanism triggered by \`freshBootsReasoning\`.
249
+ - Q4H (Question for Human): use \`askHuman\` to request necessary clarification/decision/authorization/missing input from a human.
250
+ - Tellask Session: resumable multi-turn work using \`tellask\` with \`sessionSlug\`.
249
251
  - Fresh Tellask: a one-shot, non-resumable Tellask.
250
252
  - Mainline dialog: the dialog that owns the shared Taskdoc and overall progress.
251
253
  - Sideline dialog: a temporary dialog for a subtask.
@@ -269,9 +271,9 @@ ${input.envIntro}
269
271
 
270
272
  ## Team Directory
271
273
 
272
- **Special member**: Human (@human) is a special team member. You may use \`!?@human ...\` to ask a Q4H (Question for Human) when you need necessary clarification/decision/authorization/missing inputs, or to report blockers that cannot be completed autonomously in the current environment.
273
- **Note**: Do not outsource executable work to @human. Keep Q4H requests minimal and verifiable (ask for specific info, expected format/options), then continue the remaining work autonomously after receiving the answer.
274
- **Addendum**: Routine coordination actions (e.g., tellasking teammates, driving iterations, collecting replies) are part of the agent’s autonomous workflow; do not ask @human for permission to do them. Execute and report progress when needed.
274
+ **Q4H mechanism**: Use \`askHuman\` when you need clarification/decision/authorization/missing inputs from a human, or when reporting blockers that cannot be completed autonomously in the current environment.
275
+ **Note**: Do not outsource executable work through \`askHuman\`. Keep Q4H requests minimal and verifiable (ask for specific info, expected format/options), then continue the remaining work autonomously after receiving the answer.
276
+ **Addendum**: Routine coordination actions (e.g., tellasking teammates, driving iterations, collecting replies) are part of the agent’s autonomous workflow; do not use \`askHuman\` for permission-seeking on those actions. Execute and report progress when needed.
275
277
 
276
278
  You collaborate with the following teammates. Use their call signs to address them.
277
279
 
@@ -299,7 +301,7 @@ ${input.toolsetManualIntro}
299
301
 
300
302
  ## Interaction Protocols
301
303
 
302
- ### Tellask (teammates/@self/@human only)
304
+ ### Tellask Special Functions (teammates/FBR/Q4H)
303
305
  ${tellaskInteractionRulesEn}
304
306
 
305
307
  ### Function Tools (native function-calling only)