dominds 1.7.0 → 1.7.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 (129) hide show
  1. package/README.md +1 -1
  2. package/README.zh.md +1 -1
  3. package/dist/dialog.js +8 -8
  4. package/dist/docs/OEC-philosophy.md +11 -11
  5. package/dist/docs/OEC-philosophy.zh.md +1 -1
  6. package/dist/docs/context-health.md +35 -14
  7. package/dist/docs/context-health.zh.md +28 -7
  8. package/dist/docs/design.zh.md +8 -8
  9. package/dist/docs/dialog-persistence.zh.md +4 -4
  10. package/dist/docs/dialog-system.md +19 -14
  11. package/dist/docs/dialog-system.zh.md +102 -97
  12. package/dist/docs/encapsulated-taskdoc.md +5 -17
  13. package/dist/docs/encapsulated-taskdoc.zh.md +11 -11
  14. package/dist/docs/fbr.zh.md +1 -1
  15. package/dist/docs/mcp-support.zh.md +1 -1
  16. package/dist/docs/memory-system.zh.md +4 -4
  17. package/dist/docs/mottos.zh.md +7 -7
  18. package/dist/docs/roadmap.zh.md +1 -1
  19. package/dist/docs/team_mgmt-toolset.zh.md +1 -1
  20. package/dist/docs/tellask-collab.md +9 -4
  21. package/dist/docs/tellask-collab.zh.md +21 -15
  22. package/dist/llm/kernel-driver/drive.js +8 -6
  23. package/dist/llm/kernel-driver/flow.js +4 -3
  24. package/dist/llm/kernel-driver/subdialog.js +1 -1
  25. package/dist/minds/load.js +12 -0
  26. package/dist/minds/system-prompt-parts.js +31 -9
  27. package/dist/minds/system-prompt.js +63 -31
  28. package/dist/persistence.js +11 -11
  29. package/dist/priming.js +4 -4
  30. package/dist/shared/i18n/driver-messages.js +25 -10
  31. package/dist/shared/utils/inter-dialog-format.js +27 -7
  32. package/dist/static/assets/{_basePickBy-B5JpcIlf.js → _basePickBy-DOCpneO0.js} +3 -3
  33. package/dist/static/assets/{_basePickBy-B5JpcIlf.js.map → _basePickBy-DOCpneO0.js.map} +1 -1
  34. package/dist/static/assets/{_baseUniq-B6ENA5xp.js → _baseUniq-DBZLqTK1.js} +2 -2
  35. package/dist/static/assets/{_baseUniq-B6ENA5xp.js.map → _baseUniq-DBZLqTK1.js.map} +1 -1
  36. package/dist/static/assets/{arc-CztgHQ6S.js → arc-Dw9YkyBZ.js} +2 -2
  37. package/dist/static/assets/{arc-CztgHQ6S.js.map → arc-Dw9YkyBZ.js.map} +1 -1
  38. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CdI-KLc0.js → architectureDiagram-VXUJARFQ-DiXBIlTy.js} +7 -7
  39. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CdI-KLc0.js.map → architectureDiagram-VXUJARFQ-DiXBIlTy.js.map} +1 -1
  40. package/dist/static/assets/{blockDiagram-VD42YOAC-BALBf4XM.js → blockDiagram-VD42YOAC-CBTqG3TT.js} +7 -7
  41. package/dist/static/assets/{blockDiagram-VD42YOAC-BALBf4XM.js.map → blockDiagram-VD42YOAC-CBTqG3TT.js.map} +1 -1
  42. package/dist/static/assets/{c4Diagram-YG6GDRKO-a1k6yPrP.js → c4Diagram-YG6GDRKO-CKltdqcg.js} +3 -3
  43. package/dist/static/assets/{c4Diagram-YG6GDRKO-a1k6yPrP.js.map → c4Diagram-YG6GDRKO-CKltdqcg.js.map} +1 -1
  44. package/dist/static/assets/{channel-CWNdqJ-I.js → channel-CsfA5ddv.js} +2 -2
  45. package/dist/static/assets/{channel-CWNdqJ-I.js.map → channel-CsfA5ddv.js.map} +1 -1
  46. package/dist/static/assets/{chunk-4BX2VUAB-BQeTUB5q.js → chunk-4BX2VUAB-BCdL9ibi.js} +2 -2
  47. package/dist/static/assets/{chunk-4BX2VUAB-BQeTUB5q.js.map → chunk-4BX2VUAB-BCdL9ibi.js.map} +1 -1
  48. package/dist/static/assets/{chunk-55IACEB6-DDefFY4X.js → chunk-55IACEB6-CcKnxlqS.js} +2 -2
  49. package/dist/static/assets/{chunk-55IACEB6-DDefFY4X.js.map → chunk-55IACEB6-CcKnxlqS.js.map} +1 -1
  50. package/dist/static/assets/{chunk-B4BG7PRW-B3r4W-g_.js → chunk-B4BG7PRW-BnypOYYo.js} +5 -5
  51. package/dist/static/assets/{chunk-B4BG7PRW-B3r4W-g_.js.map → chunk-B4BG7PRW-BnypOYYo.js.map} +1 -1
  52. package/dist/static/assets/{chunk-DI55MBZ5-BDKIjQbt.js → chunk-DI55MBZ5-BGYHpvhR.js} +4 -4
  53. package/dist/static/assets/{chunk-DI55MBZ5-BDKIjQbt.js.map → chunk-DI55MBZ5-BGYHpvhR.js.map} +1 -1
  54. package/dist/static/assets/{chunk-FMBD7UC4-BRjO7LO2.js → chunk-FMBD7UC4-Crf0Br1R.js} +2 -2
  55. package/dist/static/assets/{chunk-FMBD7UC4-BRjO7LO2.js.map → chunk-FMBD7UC4-Crf0Br1R.js.map} +1 -1
  56. package/dist/static/assets/{chunk-QN33PNHL-DtUbDqMq.js → chunk-QN33PNHL-Cg1EQYdQ.js} +2 -2
  57. package/dist/static/assets/{chunk-QN33PNHL-DtUbDqMq.js.map → chunk-QN33PNHL-Cg1EQYdQ.js.map} +1 -1
  58. package/dist/static/assets/{chunk-QZHKN3VN-HvxW4tgI.js → chunk-QZHKN3VN-DRH7UNkC.js} +2 -2
  59. package/dist/static/assets/{chunk-QZHKN3VN-HvxW4tgI.js.map → chunk-QZHKN3VN-DRH7UNkC.js.map} +1 -1
  60. package/dist/static/assets/{chunk-TZMSLE5B-8kvbFL8c.js → chunk-TZMSLE5B-CaZqBdnu.js} +2 -2
  61. package/dist/static/assets/{chunk-TZMSLE5B-8kvbFL8c.js.map → chunk-TZMSLE5B-CaZqBdnu.js.map} +1 -1
  62. package/dist/static/assets/{classDiagram-2ON5EDUG-BT0K1-Ue.js → classDiagram-2ON5EDUG-DSsG0iFI.js} +6 -6
  63. package/dist/static/assets/{classDiagram-2ON5EDUG-BT0K1-Ue.js.map → classDiagram-2ON5EDUG-DSsG0iFI.js.map} +1 -1
  64. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-BT0K1-Ue.js → classDiagram-v2-WZHVMYZB-DSsG0iFI.js} +6 -6
  65. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-BT0K1-Ue.js.map → classDiagram-v2-WZHVMYZB-DSsG0iFI.js.map} +1 -1
  66. package/dist/static/assets/{clone-C8ji-9VG.js → clone-xhbAL4G8.js} +2 -2
  67. package/dist/static/assets/{clone-C8ji-9VG.js.map → clone-xhbAL4G8.js.map} +1 -1
  68. package/dist/static/assets/{cose-bilkent-S5V4N54A-DgZIHStr.js → cose-bilkent-S5V4N54A-B7Rtmhjt.js} +2 -2
  69. package/dist/static/assets/{cose-bilkent-S5V4N54A-DgZIHStr.js.map → cose-bilkent-S5V4N54A-B7Rtmhjt.js.map} +1 -1
  70. package/dist/static/assets/{dagre-6UL2VRFP-CoLMSS7V.js → dagre-6UL2VRFP-BkqhLTnX.js} +7 -7
  71. package/dist/static/assets/{dagre-6UL2VRFP-CoLMSS7V.js.map → dagre-6UL2VRFP-BkqhLTnX.js.map} +1 -1
  72. package/dist/static/assets/{diagram-PSM6KHXK-BbaRu7Ko.js → diagram-PSM6KHXK-CZKtGq3a.js} +8 -8
  73. package/dist/static/assets/{diagram-PSM6KHXK-BbaRu7Ko.js.map → diagram-PSM6KHXK-CZKtGq3a.js.map} +1 -1
  74. package/dist/static/assets/{diagram-QEK2KX5R-w2QJoEvf.js → diagram-QEK2KX5R-CnMVuAHl.js} +7 -7
  75. package/dist/static/assets/{diagram-QEK2KX5R-w2QJoEvf.js.map → diagram-QEK2KX5R-CnMVuAHl.js.map} +1 -1
  76. package/dist/static/assets/{diagram-S2PKOQOG-CZ3V7aTH.js → diagram-S2PKOQOG-CeSf7JXc.js} +7 -7
  77. package/dist/static/assets/{diagram-S2PKOQOG-CZ3V7aTH.js.map → diagram-S2PKOQOG-CeSf7JXc.js.map} +1 -1
  78. package/dist/static/assets/{erDiagram-Q2GNP2WA-B_D5zZGW.js → erDiagram-Q2GNP2WA-CSt8_Jg8.js} +5 -5
  79. package/dist/static/assets/{erDiagram-Q2GNP2WA-B_D5zZGW.js.map → erDiagram-Q2GNP2WA-CSt8_Jg8.js.map} +1 -1
  80. package/dist/static/assets/{flowDiagram-NV44I4VS-CdleeZSt.js → flowDiagram-NV44I4VS-D5Ml-CXN.js} +6 -6
  81. package/dist/static/assets/{flowDiagram-NV44I4VS-CdleeZSt.js.map → flowDiagram-NV44I4VS-D5Ml-CXN.js.map} +1 -1
  82. package/dist/static/assets/{ganttDiagram-JELNMOA3-D4I0mcXy.js → ganttDiagram-JELNMOA3-CyMWbWsa.js} +3 -3
  83. package/dist/static/assets/{ganttDiagram-JELNMOA3-D4I0mcXy.js.map → ganttDiagram-JELNMOA3-CyMWbWsa.js.map} +1 -1
  84. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-2TDy5WsI.js → gitGraphDiagram-V2S2FVAM-vl516Is8.js} +8 -8
  85. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-2TDy5WsI.js.map → gitGraphDiagram-V2S2FVAM-vl516Is8.js.map} +1 -1
  86. package/dist/static/assets/{graph-6qmT9kvE.js → graph-BGZ_sL_x.js} +3 -3
  87. package/dist/static/assets/{graph-6qmT9kvE.js.map → graph-BGZ_sL_x.js.map} +1 -1
  88. package/dist/static/assets/{index-DZjf7VGN.js → index-C-RsyM0K.js} +33 -33
  89. package/dist/static/assets/{index-DZjf7VGN.js.map → index-C-RsyM0K.js.map} +1 -1
  90. package/dist/static/assets/{infoDiagram-HS3SLOUP-Cdngu1wO.js → infoDiagram-HS3SLOUP-6wx0LbHY.js} +6 -6
  91. package/dist/static/assets/{infoDiagram-HS3SLOUP-Cdngu1wO.js.map → infoDiagram-HS3SLOUP-6wx0LbHY.js.map} +1 -1
  92. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-C8JGH9qX.js → journeyDiagram-XKPGCS4Q-YPjC-r77.js} +5 -5
  93. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-C8JGH9qX.js.map → journeyDiagram-XKPGCS4Q-YPjC-r77.js.map} +1 -1
  94. package/dist/static/assets/{kanban-definition-3W4ZIXB7-CgcdAoUr.js → kanban-definition-3W4ZIXB7-DlG-ZWTO.js} +3 -3
  95. package/dist/static/assets/{kanban-definition-3W4ZIXB7-CgcdAoUr.js.map → kanban-definition-3W4ZIXB7-DlG-ZWTO.js.map} +1 -1
  96. package/dist/static/assets/{layout--9zDsdfQ.js → layout-BZJKhYY3.js} +5 -5
  97. package/dist/static/assets/{layout--9zDsdfQ.js.map → layout-BZJKhYY3.js.map} +1 -1
  98. package/dist/static/assets/{linear-f6M3OqrG.js → linear-Bau37zh5.js} +2 -2
  99. package/dist/static/assets/{linear-f6M3OqrG.js.map → linear-Bau37zh5.js.map} +1 -1
  100. package/dist/static/assets/{mindmap-definition-VGOIOE7T-O6D8o0NA.js → mindmap-definition-VGOIOE7T-n2WXgX4b.js} +4 -4
  101. package/dist/static/assets/{mindmap-definition-VGOIOE7T-O6D8o0NA.js.map → mindmap-definition-VGOIOE7T-n2WXgX4b.js.map} +1 -1
  102. package/dist/static/assets/{pieDiagram-ADFJNKIX-B73iJXia.js → pieDiagram-ADFJNKIX-DgW7FkI4.js} +8 -8
  103. package/dist/static/assets/{pieDiagram-ADFJNKIX-B73iJXia.js.map → pieDiagram-ADFJNKIX-DgW7FkI4.js.map} +1 -1
  104. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-1MkdhL3o.js → quadrantDiagram-AYHSOK5B-BtsDjIpC.js} +3 -3
  105. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-1MkdhL3o.js.map → quadrantDiagram-AYHSOK5B-BtsDjIpC.js.map} +1 -1
  106. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-BANDg6Jt.js → requirementDiagram-UZGBJVZJ-DPzuPEge.js} +4 -4
  107. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-BANDg6Jt.js.map → requirementDiagram-UZGBJVZJ-DPzuPEge.js.map} +1 -1
  108. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-XEoMNqRv.js → sankeyDiagram-TZEHDZUN-BJS1ETtL.js} +2 -2
  109. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-XEoMNqRv.js.map → sankeyDiagram-TZEHDZUN-BJS1ETtL.js.map} +1 -1
  110. package/dist/static/assets/{sequenceDiagram-WL72ISMW-Brw-9CPI.js → sequenceDiagram-WL72ISMW-DXEpa4ly.js} +4 -4
  111. package/dist/static/assets/{sequenceDiagram-WL72ISMW-Brw-9CPI.js.map → sequenceDiagram-WL72ISMW-DXEpa4ly.js.map} +1 -1
  112. package/dist/static/assets/{stateDiagram-FKZM4ZOC-CVzsrvr2.js → stateDiagram-FKZM4ZOC-CGU6VJY5.js} +9 -9
  113. package/dist/static/assets/{stateDiagram-FKZM4ZOC-CVzsrvr2.js.map → stateDiagram-FKZM4ZOC-CGU6VJY5.js.map} +1 -1
  114. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-B9j-EAhS.js → stateDiagram-v2-4FDKWEC3-Dx_GvlFA.js} +5 -5
  115. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-B9j-EAhS.js.map → stateDiagram-v2-4FDKWEC3-Dx_GvlFA.js.map} +1 -1
  116. package/dist/static/assets/{timeline-definition-IT6M3QCI-S3mM3ltV.js → timeline-definition-IT6M3QCI-DcWLmdgJ.js} +3 -3
  117. package/dist/static/assets/{timeline-definition-IT6M3QCI-S3mM3ltV.js.map → timeline-definition-IT6M3QCI-DcWLmdgJ.js.map} +1 -1
  118. package/dist/static/assets/{treemap-GDKQZRPO-Cf1b3Cgv.js → treemap-GDKQZRPO-BhUwKF9C.js} +5 -5
  119. package/dist/static/assets/{treemap-GDKQZRPO-Cf1b3Cgv.js.map → treemap-GDKQZRPO-BhUwKF9C.js.map} +1 -1
  120. package/dist/static/assets/{xychartDiagram-PRI3JC2R-CYvqfglb.js → xychartDiagram-PRI3JC2R-Cr4t0oCq.js} +3 -3
  121. package/dist/static/assets/{xychartDiagram-PRI3JC2R-CYvqfglb.js.map → xychartDiagram-PRI3JC2R-Cr4t0oCq.js.map} +1 -1
  122. package/dist/static/index.html +1 -1
  123. package/dist/tools/ctrl.js +5 -4
  124. package/dist/tools/prompts/control/en/principles.md +2 -2
  125. package/dist/tools/prompts/control/en/tools.md +2 -2
  126. package/dist/tools/prompts/control/zh/index.md +2 -2
  127. package/dist/tools/prompts/control/zh/principles.md +4 -4
  128. package/dist/tools/prompts/control/zh/tools.md +4 -4
  129. package/package.json +1 -1
@@ -2,15 +2,15 @@
2
2
 
3
3
  英文版:[English](./dialog-system.md)
4
4
 
5
- 本文档提供 Dominds 对话系统的详细实现规范,包括核心工具、技术架构、对话管理、内存管理、系统集成以及"向人类提问"(Q4H)机制。
5
+ 本文档提供 Dominds 对话系统的详细实现规范,包括核心工具、技术架构、对话管理、内存管理、系统集成以及向人请示(Q4H)机制。
6
6
 
7
7
  ## 目录
8
8
 
9
9
  1. [术语](#术语)
10
10
  2. [后端驱动架构](#后端驱动架构)
11
- 3. [三类队友 Tellask 分类](#三类队友-tellask-分类)
11
+ 3. [三类队友诉请分类](#三类队友诉请分类)
12
12
  4. [核心机制](#核心机制)
13
- 5. [Q4H:向人类提问](#q4h向人类提问)
13
+ 5. [Q4H:向人请示](#q4h向人请示)
14
14
  6. [对话层级与子对话](#对话层级与子对话)
15
15
  7. [思维清晰工具](#思维清晰工具)
16
16
  8. [提醒管理](#提醒管理)
@@ -28,21 +28,21 @@
28
28
 
29
29
  本章定义本文档中使用的面向实现的术语。
30
30
  关于双语/面向用户的命名约定(主线对话/支线对话;诉请者对话/被诉请者对话),请参阅 [`dominds-terminology.md`](./dominds-terminology.md)。
31
- 关于 Taskdoc 包结构和封装规则,请参阅 [`encapsulated-taskdoc.zh.md`](./encapsulated-taskdoc.zh.md)。
31
+ 关于差遣牒任务包结构和封装规则,请参阅 [`encapsulated-taskdoc.zh.md`](./encapsulated-taskdoc.zh.md)。
32
32
 
33
- ### 上位对话 (Supdialog)
33
+ ### 上位对话
34
34
 
35
- **上位对话** (supdialog,全称 "super dialog") 是层级对话关系中的上位对话。它编排和管理子对话,提供上下文、目标和指导,同时接收来自子对话的结果、问题和升级。上位对话维护整体任务上下文,并决定何时不再需要子对话。
35
+ **上位对话**是层级对话关系中的上位对话。它编排和管理子对话,提供上下文、目标和指导,同时接收来自子对话的结果、问题和升级。上位对话维护整体任务上下文,并决定何时不再需要子对话。
36
36
 
37
37
  注意:**上位对话**是层级结构里的父对话,并不等同于**诉请者对话**(本次诉请的发起者)。TYPE A(`tellaskBack`)时,诉请者对话就是直接上位对话;TYPE B/C 时,诉请者对话可能是不同的对话。
38
38
 
39
- 上位对话可以在子对话执行期间接收来自子对话的 **TellaskBack(回问诉请)**。当子对话需要指导或额外上下文时,它可以用 `tellaskBack({ tellaskContent: "..." })` 回问(TYPE A / `TellaskBack` / 回问诉请),并将响应反馈到子对话上下文。
39
+ 上位对话可以在子对话执行期间接收来自子对话的**回问诉请**。当子对话需要指导或额外上下文时,它可以用 `tellaskBack({ tellaskContent: "..." })` 回问,并将响应反馈到子对话上下文。
40
40
 
41
- ### 子对话 (Subdialog)
41
+ ### 子对话
42
42
 
43
43
  **子对话** 是由上位对话生成的专门对话,用于处理特定子任务。子对话使用新的上下文操作,专注于定向目标,同时保持与上位对话的通信链接。
44
44
 
45
- **TellaskBack(回问诉请)**:子对话可以在任务执行期间向**诉请者对话**回问澄清。TYPE A 中诉请者对话就是直接上位对话。此机制允许子对话在保持自身上下文和进度的同时提问并接收指导。
45
+ **回问诉请**:子对话可以在任务执行期间向**诉请者对话**回问澄清。TYPE A 中诉请者对话就是直接上位对话。此机制允许子对话在保持自身上下文和进度的同时提问并接收指导。
46
46
 
47
47
  ### 诉请者对话 / 被诉请者对话(调用角色)
48
48
 
@@ -52,13 +52,13 @@
52
52
  - TYPE B/C 时,诉请者对话可能是主线对话,也可能是其他支线对话。
53
53
  - 回贴会路由到 `assignmentFromSup` 中记录的**当前诉请者对话**。
54
54
 
55
- ### 主对话 (Root Dialog)
55
+ ### 主对话
56
56
 
57
57
  **主对话** (也称为 **根对话**) 是对话层级中的顶级对话,没有上位对话关系。它作为任务执行的主要入口点,可以生成多级子对话。这些术语在系统中可互换使用。
58
58
 
59
- ### Q4H (向人类提问)
59
+ ### 向人请示(Q4H
60
60
 
61
- **Q4H** 是由对话(主对话或子对话)提出的待处理问题,需要人工输入才能继续。Q4H 被索引在对话的 `q4h.yaml` 文件中(一个索引,不是真理之源),并由 `clear_mind` 操作清除。实际的问题内容存储在对话的对话消息中,其中记录了 `askHuman({ tellaskContent: "..." })` Tellask。
61
+ **Q4H** 是由对话(主对话或子对话)提出的待处理问题,需要人工输入才能继续。Q4H 被索引在对话的 `q4h.yaml` 文件中(一个索引,不是真理之源),并由 `clear_mind` 操作清除。实际的问题内容存储在对话的对话消息中,其中记录了 `askHuman({ tellaskContent: "..." })` 诉请。
62
62
 
63
63
  ### 子对话索引 (subdlg.yaml)
64
64
 
@@ -72,14 +72,14 @@
72
72
 
73
73
  **子对话注册表** 是根对话作用域的 Map,维护对已注册子对话的持久引用。注册表使用 `agentId!sessionSlug` 作为其键格式。当根完成时,它随根移动到 `done/`,并在根加载时通过扫描 done/ 子对话 YAML 重建。若某个支线对话被宣布卡死,其对应的 TYPE B 注册表条目会被移除,以便后续可用同一 `agentId!sessionSlug` 创建全新的支线对话。
74
74
 
75
- ### 队友 Tellask
75
+ ### 队友诉请
76
76
 
77
- **队友 Tellask** 是 Dominds 特定的语法,触发与另一个作为子对话的智能体的通信。队友 Tellask 有三种不同模式,具有不同语义(见第 3 节)。
77
+ **队友诉请** 是 Dominds 特定的语法,触发与另一个作为子对话的智能体的通信。队友诉请有三种不同模式,具有不同语义(见第 3 节)。
78
78
 
79
79
  **诉请块结构**(另见 [`dominds-terminology.md`](./dominds-terminology.md)):
80
80
 
81
- - **诉请头(Tellask headline)**:诉请块第一行 `tellaskSessionless({ targetAgentId: "<name>", tellaskContent: "..." })`(同一诉请块内,后续以 `tellask* function call` 开头的行会并入诉请头)。
82
- - **诉请正文(Tellask body)**:由 tellask-special 函数参数 `tellaskContent` 承载的正文载荷。
81
+ - **诉请头**:诉请块第一行 `tellaskSessionless({ targetAgentId: "<name>", tellaskContent: "..." })`(同一诉请块内,后续以 `tellask* function call` 开头的行会并入诉请头)。
82
+ - **诉请正文**:由 tellask-special 函数参数 `tellaskContent` 承载的正文载荷。
83
83
  - `sessionSlug` 等结构化指令必须写在诉请头中。
84
84
 
85
85
  ---
@@ -144,20 +144,20 @@
144
144
 
145
145
  ---
146
146
 
147
- ## 三类队友 Tellask 分类
147
+ ## 三类队友诉请分类
148
148
 
149
- 本节记录 Dominds 系统中三种不同类型的队友 Tellask,它们的语法、行为和用例。
149
+ 本节记录 Dominds 系统中三种不同类型的队友诉请,它们的语法、行为和用例。
150
150
 
151
151
  ```mermaid
152
152
  flowchart TD
153
153
  M[LLM 发出 tellaskSessionless({ targetAgentId: "mention", tellaskContent: "..." })] --> Q{这是子对话回问其直接上位对话(TYPE A 的诉请者对话)吗?}
154
- Q -- 是 --> A[TYPE A:回问诉请<br/>(`TellaskBack` / 回问诉请)<br/>主要:`tellaskBack({ tellaskContent: "..." })`(无 sessionSlug)]
154
+ Q -- 是 --> A[TYPE A:回问诉请<br/>主要:`tellaskBack({ tellaskContent: "..." })`(无 sessionSlug)]
155
155
  Q -- 否 --> T{是否存在 sessionSlug?}
156
- T -- 是 --> B[TYPE B:已注册子对话 Tellask<br/>(`Tellask Session` / 长线诉请)<br/>tellask({ targetAgentId: "agentId", sessionSlug: "tellaskSession", tellaskContent: "..." })]
157
- T -- 否 --> C[TYPE C:瞬态子对话 Tellask<br/>(`Fresh Tellask` / 一次性诉请)<br/>tellaskSessionless({ targetAgentId: "agentId", tellaskContent: "..." })]
156
+ T -- 是 --> B[TYPE B:已注册子对话诉请<br/>(长线诉请)<br/>tellask({ targetAgentId: "agentId", sessionSlug: "tellaskSession", tellaskContent: "..." })]
157
+ T -- 否 --> C[TYPE C:瞬态子对话诉请<br/>(一次性诉请)<br/>tellaskSessionless({ targetAgentId: "agentId", tellaskContent: "..." })]
158
158
  ```
159
159
 
160
- ### TYPE A:回问诉请(Type A / `TellaskBack` / 回问诉请)
160
+ ### TYPE A:回问诉请
161
161
 
162
162
  **主要语法**:`tellaskBack({ tellaskContent: "..." })`(无 `sessionSlug`)— `tellaskBack({ tellaskContent: "..." }) sessionSlug ...` 是**语法错误**
163
163
 
@@ -186,10 +186,15 @@ flowchart TD
186
186
  **跨对话传递与标记(强制)**:
187
187
 
188
188
  - 运行时会生成“跨对话传递正文”作为标准载荷;该正文会进入目标智能体上下文,且 UI 必须与其保持一致。
189
- - 首行标记由运行时按语义自动注入到该传递正文,智能体不应手写:
190
- - 回问诉请回贴:`【tellaskBack】`
191
- - 常规支线完成回贴:`【最终完成】`
192
- - FBR 回贴:`【FBR-直接回复】` 或 `【FBR-仅推理】`
189
+ - 首行标记由运行时按工作语言和语义自动注入到该传递正文,智能体不应手写:
190
+ - 中文工作语言:
191
+ - 回问诉请回贴:`【回问诉请】`
192
+ - 常规支线完成回贴:`【最终完成】`
193
+ - FBR 回贴:`【FBR-直接回复】` 或 `【FBR-仅推理】`
194
+ - 英文工作语言:
195
+ - 回问诉请回贴:`【TellaskBack】`
196
+ - 常规支线完成回贴:`【Completed】`
197
+ - FBR 回贴:`【FBR-Direct Reply】` 或 `【FBR-Reasoning Only】`
193
198
  - 源对话的模型原始输出(raw)天然保留在源对话持久记录中;跨对话传递不得改写或覆盖该源 raw。
194
199
  - 允许将“某对话的模型原文”拼接进运行时模板后,作为传递到另一对话的正文(即模板化传递是规范路径)。
195
200
 
@@ -212,17 +217,17 @@ LLM 发出:tellaskSessionless({ targetAgentId: "orchestrator", tellaskContent:
212
217
  - sub-001 恢复,Orchestrator 的响应在上下文中
213
218
  ```
214
219
 
215
- ### TYPE B:已注册子对话 Tellask(Type B / `Tellask Session` / 长线诉请)
220
+ ### TYPE B:已注册子对话诉请(长线诉请)
216
221
 
217
222
  **语法**:`tellask({ targetAgentId: "<anyAgentId>", sessionSlug: "<tellaskSession>", tellaskContent: "..." })`(注意 `sessionSlug` 前的空格)
218
223
 
219
224
  **扪心自问 (FBR) 语法**:`freshBootsReasoning({ tellaskContent: "..." })`
220
225
 
221
- - `freshBootsReasoning` 是专用函数工具,不是 Tellask 的特殊 target 别名。
226
+ - `freshBootsReasoning` 是专用函数工具,不是诉请的特殊 target 别名。
222
227
  - FBR 不接受 `sessionSlug` 或 `mentionList`。
223
228
  - FBR 由更严格的“无工具”策略驱动;详见 [`fbr.zh.md`](./fbr.zh.md)。
224
229
 
225
- **Tellask 会话键模式**:`<tellaskSession>` 使用与 `<mention-id>` 相同的标识符模式:`[a-zA-Z][a-zA-Z0-9_-]*`。解析在空白或标点处停止;任何尾随的标题文本在 tellaskSession 解析时被忽略。
230
+ **诉请会话键模式**:`<tellaskSession>` 使用与 `<mention-id>` 相同的标识符模式:`[a-zA-Z][a-zA-Z0-9_-]*`。解析在空白或标点处停止;任何尾随的标题文本在 tellaskSession 解析时被忽略。
226
231
 
227
232
  **注册表键**:`agentId!sessionSlug`
228
233
 
@@ -237,23 +242,23 @@ LLM 发出:tellaskSessionless({ targetAgentId: "orchestrator", tellaskContent:
237
242
 
238
243
  **当前调用者跟踪(对复用很重要):**
239
244
 
240
- 当已注册的子对话被再次 Tellask(相同的 `agentId!sessionSlug`)时,调用者可能是**不同的对话**(根对话或其他支线对话)。在每次 TYPE B Tellask 时,子对话的元数据都会更新为:
245
+ 当已注册的子对话再次收到诉请(相同的 `agentId!sessionSlug`)时,调用者可能是**不同的对话**(根对话或其他支线对话)。在每次 TYPE B 诉请时,子对话的元数据都会更新为:
241
246
 
242
247
  - **当前调用者对话 ID**(这样响应就会路由回*最新*的调用者)
243
- - **Tellask 信息**(标题/正文、来源角色、来源成员、callId)
248
+ - **诉请信息**(标题/正文、来源角色、来源成员、callId)
244
249
 
245
- 这使得 TYPE B 子对话可以在多个 Tellask 站点复用,而不会丢失正确的响应路由。
250
+ 这使得 TYPE B 子对话可以在多个诉请站点复用,而不会丢失正确的响应路由。
246
251
 
247
- **恢复时的 Tellask 上下文**:
252
+ **恢复时的诉请上下文**:
248
253
 
249
- - 在每次 TYPE B Tellask(新的或恢复的)时,父级提供的 `mentionList`/`tellaskContent`
254
+ - 在每次 TYPE B 诉请(新的或恢复的)时,父级提供的 `mentionList`/`tellaskContent`
250
255
  在驱动子对话之前作为新用户消息追加到子对话中。
251
- 这确保子对话在每次 Tellask 时都能收到最新的请求上下文。
252
- - 系统注入的恢复提示仅用于上下文,**不会被解析**为队友/工具 Tellask。
256
+ 这确保子对话在每次诉请时都能收到最新的请求上下文。
257
+ - 系统注入的恢复提示仅用于上下文,**不会被解析**为队友诉请或工具调用。
253
258
 
254
259
  **关键特征**:
255
260
 
256
- - 每次 Tellask 都会执行注册表查找
261
+ - 每次诉请都会执行注册表查找
257
262
  - 支持**恢复**先前的子对话
258
263
  - 已注册的子对话在正常流程中会保留;若支线被宣布卡死,其条目会从注册表移除
259
264
  - 注册表是根对话作用域的(子对话无法访问)
@@ -286,7 +291,7 @@ LLM 再次发出:tellask({ targetAgentId: "researcher", sessionSlug: "market-a
286
291
  - orchestrator 恢复
287
292
  ```
288
293
 
289
- ### TYPE C:瞬态子对话 Tellask(Type C / `Fresh Tellask` / 一次性诉请)
294
+ ### TYPE C:瞬态子对话诉请(一次性诉请)
290
295
 
291
296
  **语法**:`tellaskSessionless({ targetAgentId: "<nonSupdialogAgentId>", tellaskContent: "..." })`(无 `sessionSlug`)
292
297
 
@@ -309,7 +314,7 @@ LLM 再次发出:tellask({ targetAgentId: "researcher", sessionSlug: "market-a
309
314
  **关键特征**:
310
315
 
311
316
  - **无注册表查找** - 总是创建新的子对话
312
- - **不注册** - 在 Tellask 之间不持久化
317
+ - **不注册** - 在各次诉请之间不持久化
313
318
  - 子对话本身一般是“完整能力”的;但 `freshBootsReasoning({ tellaskContent: "..." })` FBR 是特例:无工具且禁止任何诉请(见 `fbr.zh.md`)。
314
319
  - 与 TYPE B 的唯一区别:无注册表查找/恢复能力
315
320
  - 用于一次性的、独立的任务
@@ -324,7 +329,7 @@ LLM 发出:@code-reviewer 请审查这个 PR
324
329
  结果:
325
330
  - orchestrator 挂起
326
331
  - 使用 agentId "code-reviewer" 创建新的子对话
327
- - 驱动 code-reviewer 子对话(它可以进行自己的 Tellask、工具等)
332
+ - 驱动 code-reviewer 子对话(它可以进行自己的诉请、工具等)
328
333
  - code-reviewer 完成并返回审查结果
329
334
  - orchestrator 恢复,审查结果在上下文中
330
335
 
@@ -339,7 +344,7 @@ LLM 再次发出:@code-reviewer 审查这个其他 PR
339
344
 
340
345
  ### 对比总结
341
346
 
342
- | 方面 | TYPE A:回问诉请 (`TellaskBack`) | TYPE B:已注册子对话 Tellask (`Tellask Session`) | TYPE C:瞬态子对话 Tellask (`Fresh Tellask`) |
347
+ | 方面 | TYPE A:回问诉请 | TYPE B:已注册子对话诉请(长线诉请) | TYPE C:瞬态子对话诉请(一次性诉请) |
343
348
  | --------------- | ---------------------------------------- | ---------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
344
349
  | **语法** | `tellaskBack({ tellaskContent: "..." })` | `tellask({ targetAgentId: "<anyAgentId>", sessionSlug: "<id>", tellaskContent: "..." })` | `tellaskSessionless({ targetAgentId: "<nonSupdialogAgentId>", tellaskContent: "..." })` |
345
350
  | **sessionSlug** | 不允许 | 必须 | 不允许 |
@@ -348,7 +353,7 @@ LLM 再次发出:@code-reviewer 审查这个其他 PR
348
353
  | **注册** | 不适用 | 创建并注册 | 永不注册 |
349
354
  | **父级行为** | 子对话挂起 | 父级挂起 | 父级挂起 |
350
355
  | **子对话能力** | 完整(上位调用、队友、工具) | 完整(上位调用、队友、工具) | 完整(上位调用、队友、工具) |
351
- | **用例** | 从父级澄清(`TellaskBack`) | 恢复持久子任务(`Tellask Session`) | 一次性独立任务(`Fresh Tellask`) |
356
+ | **用例** | 从父级澄清 | 恢复持久子任务 | 一次性独立任务 |
352
357
 
353
358
  ---
354
359
 
@@ -373,17 +378,17 @@ flowchart TD
373
378
 
374
379
  ### 关键设计原则
375
380
 
376
- 1. **Q4H 索引在 `q4h.yaml` 中**:Q4H 问题被索引在 `q4h.yaml` 中(作为索引,不是真理之源),并由思维清晰操作清除。实际的问题内容在对话的对话消息中,其中记录了 `askHuman({ tellaskContent: "..." })` Tellask。它们不会在 `clear_mind` 中存活。
381
+ 1. **Q4H 索引在 `q4h.yaml` 中**:Q4H 问题被索引在 `q4h.yaml` 中(作为索引,不是真理之源),并由思维清晰操作清除。实际的问题内容在对话的对话消息中,其中记录了 `askHuman({ tellaskContent: "..." })` 诉请。它们不会在 `clear_mind` 中存活。
377
382
 
378
383
  2. **层级 Q4H**:层级中的任何对话都可以自行提出 Q4H(根对话或子对话)。问题被索引在提出问题的对话中,而不是向上传递。
379
384
 
380
385
  3. **子对话 Q4H 自主性**:子对话可以直接提出 Q4H 问题,而不是作为父级的智能体。用户导航到子对话的对话中以内联回答。
381
386
 
382
- 4. **UI 将 Q4H 呈现为队友 Tellask**:UI 类似于其他队友 Tellask 处理 Q4H — 具有导航链接到对话对话中的 Tellask 站点。用户使用与常规消息相同的输入文本区域内联回答。
387
+ 4. **UI 将 Q4H 呈现为队友诉请**:UI 类似于其他队友诉请处理 Q4H,具有导航链接到对话中的诉请站点。用户使用与常规消息相同的输入文本区域内联回答。
383
388
 
384
- 5. **子对话响应供应**:子对话通过持久化将响应写入*当前 Tellask 者*的上下文(不是回调)。对于 TYPE B,每次 Tellask 都会用最新的 Tellask 者 + tellaskInfo 更新子对话的 `assignmentFromSup`,因此响应被路由到最近的 Tellask 者(根或子对话)。这支持分离操作、复用和崩溃恢复。
389
+ 5. **子对话响应供应**:子对话通过持久化将响应写入*当前诉请者*的上下文(不是回调)。对于 TYPE B,每次诉请都会用最新的诉请者 + tellaskInfo 更新子对话的 `assignmentFromSup`,因此响应被路由到最近的诉请者(根或子对话)。这支持分离操作、复用和崩溃恢复。
385
390
 
386
- 6. **子对话注册表**:已注册的子对话(TYPE B Tellask)在根对话作用域的注册表中跟踪。注册表在 `clear_mind` 操作中持续存在,并在根加载时重建。
391
+ 6. **子对话注册表**:已注册的子对话(TYPE B 长线诉请)在根对话作用域的注册表中跟踪。注册表在 `clear_mind` 操作中持续存在,并在根加载时重建。
387
392
 
388
393
  7. **状态保留契约**:
389
394
  - `clear_mind`:清除消息,清除 Q4H 索引,保留提醒,保留注册表
@@ -405,7 +410,7 @@ Q4H(向人类提问)是对话可以暂停执行并请求人工输入的机
405
410
  /**
406
411
  * HumanQuestion - 索引条目持久化在每个对话的 q4h.yaml 中
407
412
  * 注意:这是索引,不是真理之源。实际的 question
408
- * 内容在对话的对话消息中,其中记录了 askHuman() Tellask
413
+ * 内容在对话的对话消息中,其中记录了 askHuman() 诉请
409
414
  *(通过 askHuman({ tellaskContent: "..." }) 调用)。
410
415
  */
411
416
  interface HumanQuestion {
@@ -418,7 +423,7 @@ interface HumanQuestion {
418
423
 
419
424
  **存储位置**:`<dialog-path>/q4h.yaml` - 作为快速查找的索引
420
425
 
421
- **真理之源**:实际的 `askHuman({ tellaskContent: "..." })` Tellask 存储在对话的对话消息中(course JSONL 文件),即提出问题的地方。
426
+ **真理之源**:实际的 `askHuman({ tellaskContent: "..." })` 诉请存储在对话的对话消息中(course JSONL 文件),即提出问题的地方。
422
427
 
423
428
  ### Q4H 机制流程
424
429
 
@@ -458,7 +463,7 @@ askHuman({ tellaskContent: '<问题标题>\n<问题正文内容>' });
458
463
  ### Q4H 记录过程
459
464
 
460
465
  ```typescript
461
- // 当检测到 askHuman({ tellaskContent: "..." }) 作为队友 Tellask 时
466
+ // 当检测到 askHuman({ tellaskContent: "..." }) 作为队友诉请时
462
467
  async function recordQuestionForHuman(
463
468
  dlg: Dialog,
464
469
  mentionList: string,
@@ -508,8 +513,8 @@ postDialogEvent(dialog, questionsCountUpdateEvt);
508
513
  1. 接收 `questions_count_update` 事件
509
514
  2. 读取 `q4h.yaml` 获取问题索引条目
510
515
  3. 在对话上显示 Q4H 指示器/徽章
511
- 4. 问题链接到对话中它们的 Tellask 站点
512
- 5. 用户点击链接导航到 Tellask 站点,内联回答
516
+ 4. 问题链接到对话中它们的诉请站点
517
+ 5. 用户点击链接导航到诉请站点,内联回答
513
518
 
514
519
  ### 用户如何回答 Q4H(智能体拉取模型)
515
520
 
@@ -532,7 +537,7 @@ interface DriveDialogByUserAnswerRequest {
532
537
  **流程(智能体拉取模型)**:
533
538
 
534
539
  1. 用户在 UI 中看到 Q4H 指示器/徽章
535
- 2. 用户点击面板/列表中的 Q4H,导航到 `askHuman()` Tellask 站点
540
+ 2. 用户点击面板/列表中的 Q4H,导航到 `askHuman()` 诉请站点
536
541
  3. 用户在输入文本区域中输入答案(与常规消息相同)
537
542
  4. 前端发送 `drive_dialog_by_user_answer` 数据包
538
543
  5. 后端根据 q4h.yaml 验证 `questionId`
@@ -710,7 +715,7 @@ async function checkSubdialogRevival(supdialog: Dialog): Promise<void> {
710
715
  - **清除所有 Q4H 问题**(关键!)
711
716
  - 保留子对话注册表(仅限根对话)
712
717
  - 对上位对话没有影响
713
- - 将注意力重定向到 Taskdoc
718
+ - 将注意力重定向到差遣牒
714
719
  - 系统生成的“开启新一程对话”提示已排队,作为新一程的首个 role=user 消息
715
720
  - 开启新一程对话
716
721
 
@@ -718,12 +723,12 @@ async function checkSubdialogRevival(supdialog: Dialog): Promise<void> {
718
723
 
719
724
  - 操作仅作用于当前对话
720
725
  - 子对话不受父级 `clear_mind` 的影响
721
- - Taskdoc 保持不变且可访问
726
+ - 差遣牒保持不变且可访问
722
727
  - 提醒在清晰操作中提供连续性
723
728
 
724
729
  ### `change_mind`
725
730
 
726
- **目的**:更新对话树中所有对话引用的共享 Taskdoc 内容(不开启新一程对话)。把 Taskdoc 当作任务的**实时协调公告板**。
731
+ **目的**:更新对话树中所有对话引用的共享差遣牒内容(不开启新一程对话)。把差遣牒当作任务的**实时协调公告板**。
727
732
 
728
733
  **函数工具参数**:
729
734
 
@@ -738,18 +743,18 @@ async function checkSubdialogRevival(supdialog: Dialog): Promise<void> {
738
743
 
739
744
  **行为**:
740
745
 
741
- - 更新 rtws(运行时工作区)Taskdoc 内容(`*.tsk/` Taskdoc 包中恰好一个章节文件)
742
- - **不更改 Taskdoc 路径。** `dlg.taskDocPath` 在对话的整个生命周期中是不可变的。
746
+ - 更新 rtws(运行时工作区)差遣牒内容(`*.tsk/` 任务包中恰好一个章节文件)
747
+ - **不更改差遣牒路径。** `dlg.taskDocPath` 在对话的整个生命周期中是不可变的。
743
748
  - 更新的文件立即对引用它的所有对话可用
744
749
  - **不开启新一程对话。** 如需开启新一程对话,请单独使用 `clear_mind`。
745
750
  - 本身不清除消息、提醒、Q4H 或注册表
746
- - 影响引用相同 Taskdoc 的所有参与智能体(主对话和子对话)
751
+ - 影响引用相同差遣牒的所有参与智能体(主对话和子对话)
747
752
  - 关键决策/当前状态/下一步写回 `progress`;硬约束写回 `constraints`(不要只留在对话/提醒项里)。
748
753
 
749
754
  **实现说明**:
750
755
 
751
- - `change_mind` 仅在根对话中可用(不在子对话中);子对话必须通过回问诉请(`tellaskBack({ tellaskContent: "..." })`)询问诉请者以更新共享 Taskdoc。
752
- - 对于 `*.tsk/` Taskdoc 包,Taskdoc 是封装的:通用文件工具不得读取/写入/列出/删除 `*.tsk/` 下的任何内容。请参阅 [`encapsulated-taskdoc.zh.md`](./encapsulated-taskdoc.zh.md)。
756
+ - `change_mind` 仅在根对话中可用(不在子对话中);子对话必须通过回问诉请(`tellaskBack({ tellaskContent: "..." })`)询问诉请者以更新共享差遣牒。
757
+ - 对于 `*.tsk/` 差遣牒任务包,差遣牒是封装的:通用文件工具不得读取/写入/列出/删除 `*.tsk/` 下的任何内容。请参阅 [`encapsulated-taskdoc.zh.md`](./encapsulated-taskdoc.zh.md)。
753
758
 
754
759
  ---
755
760
 
@@ -781,7 +786,7 @@ async function checkSubdialogRevival(supdialog: Dialog): Promise<void> {
781
786
 
782
787
  ### 概述
783
788
 
784
- **子对话注册表** 是根对话作用域的数据结构,维护通过 TYPE B(已注册子对话 Tellask / `Tellask Session`)队友 Tellask 创建的已注册子对话的持久引用。
789
+ **子对话注册表** 是根对话作用域的数据结构,维护通过 TYPE B(已注册子对话诉请 / 长线诉请)创建的已注册子对话的持久引用。
785
790
 
786
791
  ### 关键特征
787
792
 
@@ -809,7 +814,7 @@ researcher!market-analysis:
809
814
 
810
815
  ```mermaid
811
816
  flowchart TD
812
- Tellask[TYPE B Tellask: tellask({ targetAgentId: "agentId", sessionSlug: "tellaskSession", tellaskContent: "..." })] --> Key[计算键:agentId!sessionSlug]
817
+ Tellask[TYPE B 长线诉请: tellask({ targetAgentId: "agentId", sessionSlug: "tellaskSession", tellaskContent: "..." })] --> Key[计算键:agentId!sessionSlug]
813
818
  Key --> Lookup{注册表命中?}
814
819
  Lookup -- 是 --> Resume[恢复 + 驱动现有子对话]
815
820
  Lookup -- 否 --> Create[创建 + 注册 + 驱动新的子对话]
@@ -849,9 +854,9 @@ interface SubdialogRegistry {
849
854
  [key: string]: {
850
855
  subdialogId: string; // 子对话的 UUID
851
856
  agentId: string; // 智能体标识符
852
- tellaskSession: string; // Tellask 会话键
857
+ tellaskSession: string; // 诉请会话键
853
858
  createdAt: string; // ISO 时间戳
854
- lastAccessed?: string; // ISO 时间戳(在每次 Tellask 时更新)
859
+ lastAccessed?: string; // ISO 时间戳(在每次诉请时更新)
855
860
  locked: boolean; // 互斥锁状态 - 现在有人正在驱动这个吗?
856
861
  };
857
862
  }
@@ -880,7 +885,7 @@ interface SubdialogRegistry {
880
885
  - **清理头脑操作**:`startNewRound(newRoundPrompt)` 方法(清除消息,清除 Q4H,开启新一程对话,为下一轮驱动排队开启提示)
881
886
  - **子对话管理**:专门子任务的创建和协调
882
887
  - **Q4H 管理**:用于问题跟踪的 `updateQuestions4Human()` 方法
883
- - **内存访问**:与 Taskdoc 和团队/智能体内存的集成
888
+ - **内存访问**:与差遣牒和团队/智能体内存的集成
884
889
  - **注册表管理**(仅限 RootDialog):子对话的注册和查找
885
890
 
886
891
  ### 主对话解析
@@ -938,8 +943,8 @@ interface RegistryMethods {
938
943
 
939
944
  **上下文继承**:新的子对话自动接收:
940
945
 
941
- - 对相同 rtws(运行时工作区)Taskdoc 的引用(推荐:`tasks/feature-auth.tsk/`);`dlg.taskDocPath` 在对话创建时固定,永不重新分配
942
- - 诉请者对话 Tellask 上下文(mentionList + tellaskContent)解释其目的
946
+ - 对相同 rtws(运行时工作区)差遣牒的引用(推荐:`tasks/feature-auth.tsk/`);`dlg.taskDocPath` 在对话创建时固定,永不重新分配
947
+ - 诉请者对话的诉请上下文(mentionList + tellaskContent)解释其目的
943
948
  - 访问共享团队内存
944
949
  - 访问其智能体的个人内存
945
950
 
@@ -947,7 +952,7 @@ interface RegistryMethods {
947
952
 
948
953
  **导航**:每个子对话都保持对其父级的引用,向上遍历到主对话。
949
954
 
950
- **注册表**:已注册的子对话(TYPE B Tellask)在根对话的注册表中跟踪,并在重启后持久化;若子对话被宣布卡死,其条目会被裁剪,不再参与后续同 slug 复用。
955
+ **注册表**:已注册的子对话(TYPE B 长线诉请)在根对话的注册表中跟踪,并在重启后持久化;若子对话被宣布卡死,其条目会被裁剪,不再参与后续同 slug 复用。
951
956
 
952
957
  ### Root dialog fork(根对话分叉)
953
958
 
@@ -974,7 +979,7 @@ interface RegistryMethods {
974
979
 
975
980
  **一致性要求**:
976
981
 
977
- - fork 必须保留同一 Taskdoc 引用
982
+ - fork 必须保留同一差遣牒引用
978
983
  - fork 后的 root/subdialog 都落到 `running/`,并拥有新的 rootId
979
984
  - 前端不得对 sideline dialog 暴露该入口;当前实现仅支持 fork root dialog
980
985
 
@@ -1011,17 +1016,17 @@ interface RegistryMethods {
1011
1016
 
1012
1017
  **向上通信**:子对话向诉请者对话通信结果、问题和升级。
1013
1018
 
1014
- - **澄清请求(TYPE A / `TellaskBack`)**:子对话在处理其子任务时可能向诉请者对话 Tellask 以请求澄清。TYPE A 中诉请者对话为直接上位对话。诉请者对话提供指导,子对话在新上下文中继续。
1015
- - **子任务响应**:当子对话产生最终的 "saying" 内容块(没有待处理的 Q4H)时,该消息被视为对**当前调用者**的响应,记录在 `assignmentFromSup` 中(根或另一个子对话)。这使响应与最新的 Tellask 站点保持一致。
1019
+ - **澄清请求(TYPE A / 回问诉请)**:子对话在处理其子任务时可能向诉请者对话发起诉请以请求澄清。TYPE A 中诉请者对话为直接上位对话。诉请者对话提供指导,子对话在新上下文中继续。
1020
+ - **子任务响应**:当子对话产生最终的 "saying" 内容块(没有待处理的 Q4H)时,该消息被视为对**当前调用者**的响应,记录在 `assignmentFromSup` 中(根或另一个子对话)。这使响应与最新的诉请站点保持一致。
1016
1021
  - **Q4H 升级**:如果子对话有 Q4H,它会暂停。用户可以通过 UI 回答,这只会触发子对话的继续。
1017
- - **已注册的子对话(TYPE B / `Tellask Session`)**:父级可以恢复先前创建的已注册子对话,实现持续的任务继续。
1018
- - **瞬态子对话(TYPE C / `Fresh Tellask`)**:父级可以生成一次性子对话用于不需要持久化的独立任务。
1022
+ - **已注册的子对话(TYPE B / 长线诉请)**:父级可以恢复先前创建的已注册子对话,实现持续的任务继续。
1023
+ - **瞬态子对话(TYPE C / 一次性诉请)**:父级可以生成一次性子对话用于不需要持久化的独立任务。
1019
1024
 
1020
1025
  **向下通信**:上位对话向子对话提供上下文、目标和指导。
1021
1026
 
1022
1027
  **横向通信**:兄弟子对话通过共享上位对话进行协调。
1023
1028
 
1024
- **广播通信**:主对话(根对话)可以通过 Taskdoc 引用将更改(如 rtws Taskdoc 文件更新)传达给所有对话。
1029
+ **广播通信**:主对话(根对话)可以通过差遣牒引用将更改(如 rtws 差遣牒文件更新)传达给所有对话。
1025
1030
 
1026
1031
  ---
1027
1032
 
@@ -1047,7 +1052,7 @@ interface RegistryMethods {
1047
1052
 
1048
1053
  ### 内存同步
1049
1054
 
1050
- **Taskdoc 传播**:对 rtws Taskdoc 文件的更改对引用它的所有对话立即可见。
1055
+ **差遣牒传播**:对 rtws 差遣牒文件的更改对引用它的所有对话立即可见。
1051
1056
 
1052
1057
  **内存更新**:团队和智能体内存异步更新,最终在所有对话中保持一致。
1053
1058
 
@@ -1072,7 +1077,7 @@ interface RegistryMethods {
1072
1077
  - `<dialog-root>/subdialogs/<subdialog-id>/dialog.yaml`
1073
1078
  - `<dialog-root>/subdialogs/<subdialog-id>/q4h.yaml` — 每个子对话的 Q4H 索引(被清晰清除)
1074
1079
 
1075
- **Taskdoc 存储**:Taskdoc 是对话通过路径引用的 rtws 产物。Taskdoc 必须是封装的 `*.tsk/` Taskdoc 包。
1080
+ **差遣牒存储**:差遣牒是对话通过路径引用的 rtws 产物。差遣牒必须是封装的 `*.tsk/` 任务包。
1076
1081
 
1077
1082
  **内存存储**:团队和智能体内存存储在 rtws 内的专用文件中。
1078
1083
  **注册表存储**:子对话注册表(`registry.yaml`)存储在根对话目录中,并在根完成时移动到 `done/`。
@@ -1110,13 +1115,13 @@ Dominds 内部持久化的消息粒度较细(thinking/saying/tool call/tool re
1110
1115
 
1111
1116
  **上下文感知**:智能体可以完全访问其对话上下文、内存、层级位置、来自子对话的待处理 Q4H,以及(对于根对话)子对话注册表。
1112
1117
 
1113
- **队友 Tellask 能力**:智能体可以调用所有三种类型的队友 Tellask:
1118
+ **队友诉请能力**:智能体可以调用所有三种类型的队友诉请:
1114
1119
 
1115
- - TYPE A / `TellaskBack`:向上位对话 Tellask 以请求澄清
1116
- - TYPE B / `Tellask Session`:Tellask/恢复已注册的子对话
1117
- - TYPE C / `Fresh Tellask`:生成瞬态子对话
1120
+ - TYPE A / 回问诉请:向上位对话发起诉请以请求澄清
1121
+ - TYPE B / 长线诉请:诉请或恢复已注册的子对话
1122
+ - TYPE C / 一次性诉请:生成瞬态子对话
1118
1123
 
1119
- **工具访问**:所有思维清晰工具、Q4H 能力和队友 Tellask 工具都可用于智能体进行自主认知管理。
1124
+ **工具访问**:所有思维清晰工具、Q4H 能力和队友诉请工具都可用于智能体进行自主认知管理。
1120
1125
 
1121
1126
  ### 对话状态机
1122
1127
 
@@ -1152,11 +1157,11 @@ flowchart TD
1152
1157
  E -- 否 --> I
1153
1158
  ```
1154
1159
 
1155
- ### 队友 Tellask 状态转换
1160
+ ### 队友诉请状态转换
1156
1161
 
1157
1162
  这些图表专注于**控制流**,避免框图对齐,以便在不同的markdown查看器中呈现时保持可读性。
1158
1163
 
1159
- #### TYPE A:回问诉请(`TellaskBack`)(`tellaskBack({ tellaskContent: "..." })`,无 `sessionSlug`)
1164
+ #### TYPE A:回问诉请(`tellaskBack({ tellaskContent: "..." })`,无 `sessionSlug`)
1160
1165
 
1161
1166
  ```mermaid
1162
1167
  sequenceDiagram
@@ -1170,7 +1175,7 @@ sequenceDiagram
1170
1175
  Driver-->>Sub: 恢复子对话,响应在上下文中
1171
1176
  ```
1172
1177
 
1173
- #### TYPE B:已注册子对话 Tellask(`Tellask Session`)(`tellask({ targetAgentId: "agentId", sessionSlug: "tellaskSession", tellaskContent: "..." })`)
1178
+ #### TYPE B:已注册子对话诉请(长线诉请)(`tellask({ targetAgentId: "agentId", sessionSlug: "tellaskSession", tellaskContent: "..." })`)
1174
1179
 
1175
1180
  ```mermaid
1176
1181
  sequenceDiagram
@@ -1198,7 +1203,7 @@ end
1198
1203
 
1199
1204
  ````
1200
1205
 
1201
- #### TYPE C:瞬态子对话 Tellask(`Fresh Tellask`)(`tellaskSessionless({ targetAgentId: "agentId", tellaskContent: "..." })`,或 `freshBootsReasoning({ tellaskContent: "..." })`)
1206
+ #### TYPE C:瞬态子对话诉请(一次性诉请)(`tellaskSessionless({ targetAgentId: "agentId", tellaskContent: "..." })`,或 `freshBootsReasoning({ tellaskContent: "..." })`)
1202
1207
 
1203
1208
  ```mermaid
1204
1209
  sequenceDiagram
@@ -1217,7 +1222,7 @@ sequenceDiagram
1217
1222
 
1218
1223
  ```mermaid
1219
1224
  flowchart TD
1220
- A[askHuman({ tellaskContent: "..." }) Tellask 发出] --> B[将 HumanQuestion 条目追加到 q4h.yaml]
1225
+ A[askHuman({ tellaskContent: "..." }) 诉请发出] --> B[将 HumanQuestion 条目追加到 q4h.yaml]
1221
1226
  B --> C[发出 questions_count_update]
1222
1227
  C --> D[UI 显示 Q4H 徽章/列表]
1223
1228
  D --> E{如何清除?}
@@ -1321,7 +1326,7 @@ sequenceDiagram
1321
1326
  Sub-->>Sup: supply response(恢复根对话)
1322
1327
  ```
1323
1328
 
1324
- ### 3. 已注册子对话 Tellask(TYPE B / `Tellask Session` / 长线诉请)
1329
+ ### 3. 已注册子对话诉请(TYPE B / 长线诉请)
1325
1330
 
1326
1331
  ```mermaid
1327
1332
  sequenceDiagram
@@ -1351,7 +1356,7 @@ sequenceDiagram
1351
1356
  | 提醒项 | 保留 |
1352
1357
  | 注册表 | 保留 |
1353
1358
 
1354
- `change_mind` 不是清晰度操作;它就地更新差遣牒(Taskdoc)内容,不会清除消息/Q4H/提醒项/注册表。
1359
+ `change_mind` 不是清晰度操作;它就地更新差遣牒内容,不会清除消息/Q4H/提醒项/注册表。
1355
1360
 
1356
1361
  ---
1357
1362
 
@@ -1381,7 +1386,7 @@ sequenceDiagram
1381
1386
 
1382
1387
  **健康检查**:定期验证对话层次结构完整性、Q4H 持久化、注册表一致性和内存。
1383
1388
 
1384
- **调试支持**:全面的日志记录和检查工具,用于排查队友 Tellasks、注册表操作和 Q4H 流程。
1389
+ **调试支持**:全面的日志记录和检查工具,用于排查队友诉请、注册表操作和 Q4H 流程。
1385
1390
 
1386
1391
  ---
1387
1392
 
@@ -1399,18 +1404,18 @@ Dominds 对话系统为层次化、人在回路的 AI 协作提供了一个强
1399
1404
  | **提醒项** | 持久化工作内存 | 是 | N/A |
1400
1405
  | **子对话注册表** | 已注册子对话跟踪 | 是 | `declare_subdialog_dead` 时裁剪 dead 条目 |
1401
1406
 
1402
- ### 三种队友 Tellask 类型
1407
+ ### 三种队友诉请类型
1403
1408
 
1404
- | 类型(内部) | 用户可见术语 | 语法 | 注册表 | 用例 |
1405
- | ------------ | ----------------- | ----------------------------------------------------------------------------------- | --------------------- | ---------------- |
1406
- | TYPE A | `TellaskBack` | `tellaskBack({ tellaskContent: "..." })` | 无注册表 | 澄清(询问来源) |
1407
- | TYPE B | `Tellask Session` | `tellask({ targetAgentId: "agentId", sessionSlug: "<id>", tellaskContent: "..." })` | `agentId!sessionSlug` | 可恢复多轮工作 |
1408
- | TYPE C | `Fresh Tellask` | `tellaskSessionless({ targetAgentId: "agentId", tellaskContent: "..." })` | 未注册 | 单次 / 不可恢复 |
1409
+ | 类型(内部) | 用户可见术语 | 语法 | 注册表 | 用例 |
1410
+ | ------------ | ------------ | ----------------------------------------------------------------------------------- | --------------------- | ---------------- |
1411
+ | TYPE A | 回问诉请 | `tellaskBack({ tellaskContent: "..." })` | 无注册表 | 澄清(询问来源) |
1412
+ | TYPE B | 长线诉请 | `tellask({ targetAgentId: "agentId", sessionSlug: "<id>", tellaskContent: "..." })` | `agentId!sessionSlug` | 可恢复多轮工作 |
1413
+ | TYPE C | 一次性诉请 | `tellaskSessionless({ targetAgentId: "agentId", tellaskContent: "..." })` | 未注册 | 单次 / 不可恢复 |
1409
1414
 
1410
1415
  ### 类职责
1411
1416
 
1412
- - **根对话**:管理注册表,可以发起所有三种队友 Tellask 类型
1413
- - **子对话**:拥有父对话引用,可以直接发起 TYPE A 和 TYPE C;TYPE B 通过根注册表路由,并在每次 Tellask 时更新调用者上下文
1417
+ - **根对话**:管理注册表,可以发起所有三种队友诉请类型
1418
+ - **子对话**:拥有父对话引用,可以直接发起 TYPE A 和 TYPE C;TYPE B 通过根注册表路由,并在每次诉请时更新调用者上下文
1414
1419
 
1415
1420
  ### 持久化保证
1416
1421
 
@@ -143,23 +143,7 @@ The system prompt and any tool documentation shown to agents MUST make the follo
143
143
 
144
144
  Below is the canonical copy. If you need to rephrase it for UI layout, you MUST preserve the semantics.
145
145
 
146
- #### Canonical copy (zh; semantic baseline)
147
-
148
- **Taskdoc 封装与访问限制**
149
-
150
- - 任何 `.tsk/` 目录及其子路径(`**/*.tsk/**`)都是封装状态:禁止使用任何通用文件工具读取/写入/列目录(例如 `read_file` / `write_file` / `list_dir` 等)。
151
- - 更新 Taskdoc 只能使用函数工具 `change_mind`(按章节整段替换;顶层用 `selector`,额外章节用 `category + selector`)。
152
- - 读取“不会自动注入上下文”的额外章节,只能使用函数工具 `recall_taskdoc({ category, selector })`。
153
-
154
- **Taskdoc 自动注入规则(系统提示)**
155
-
156
- - 系统提示会把“有效 Taskdoc”自动注入到模型上下文中。
157
- - 一定会注入顶层三段:`goals.md`、`constraints.md`、`progress.md`(按此顺序)。
158
- - 可选注入 `bearinmind/`(仅固定白名单,最多 6 个文件):`contracts.md`、`acceptance.md`、`grants.md`、`runbook.md`、`decisions.md`、`risks.md`。
159
- - 若存在 `bearinmind/` 注入块,它会以 `## Bear In Mind` 出现在 `## Constraints` 与 `## Progress` 之间,并按以上固定顺序拼接。
160
- - 除此之外,`.tsk/` 内任何其他目录/文件都不会被自动注入正文(系统只会注入一个“额外章节索引”用于提示;需要时用 `recall_taskdoc` 显式读取)。
161
-
162
- #### Reference copy (en; must match zh)
146
+ #### Canonical copy (en; semantic baseline)
163
147
 
164
148
  **Taskdoc encapsulation & access restrictions**
165
149
 
@@ -175,6 +159,10 @@ Below is the canonical copy. If you need to rephrase it for UI layout, you MUST
175
159
  - If present, the injected block appears as `## Bear In Mind` between `## Constraints` and `## Progress`, and the files are concatenated in the fixed order above.
176
160
  - No other directories/files inside `.tsk/` are auto-injected as body content (only an “extra sections index” may be injected for discoverability; use `recall_taskdoc` when needed).
177
161
 
162
+ #### Chinese reference
163
+
164
+ See [the Chinese doc](./encapsulated-taskdoc.zh.md) for the matching Simplified Chinese copy.
165
+
178
166
  Notes:
179
167
 
180
168
  - The effective Taskdoc MUST be deterministic (no hidden reformatting beyond the above framing).