dominds 0.6.2 → 0.6.4

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 (149) hide show
  1. package/dist/access-control.js +2 -2
  2. package/dist/agent-priming.js +826 -92
  3. package/dist/cli/read.js +406 -12
  4. package/dist/dialog.js +4 -0
  5. package/dist/docs/design.md +1 -0
  6. package/dist/docs/design.zh.md +1 -0
  7. package/dist/docs/dialog-system.md +12 -7
  8. package/dist/docs/dialog-system.zh.md +7 -3
  9. package/dist/docs/dominds-agent-priming.md +10 -1
  10. package/dist/docs/dominds-agent-priming.zh.md +9 -1
  11. package/dist/docs/dominds-terminology.md +8 -8
  12. package/dist/docs/fbr-implementation.md +77 -0
  13. package/dist/docs/fbr-implementation.zh.md +77 -0
  14. package/dist/docs/fbr.md +142 -141
  15. package/dist/docs/fbr.zh.md +129 -123
  16. package/dist/docs/keep-going.zh.md +162 -0
  17. package/dist/docs/showing-by-doing.md +208 -0
  18. package/dist/docs/showing-by-doing.zh.md +177 -0
  19. package/dist/docs/tellask-collab.md +250 -0
  20. package/dist/docs/tellask-collab.zh.md +254 -0
  21. package/dist/docs/txt-editing-tools.md +2 -2
  22. package/dist/docs/txt-editing-tools.zh.md +2 -2
  23. package/dist/llm/defaults.yaml +82 -4
  24. package/dist/llm/driver.js +280 -104
  25. package/dist/llm/gen/codex.js +49 -2
  26. package/dist/log.js +385 -30
  27. package/dist/mcp/supervisor.js +113 -40
  28. package/dist/minds/builtin/pangu/persona.zh.md +2 -2
  29. package/dist/minds/load.js +49 -284
  30. package/dist/minds/minds-i18n.js +2 -2
  31. package/dist/minds/promptdocs.js +263 -0
  32. package/dist/minds/system-prompt-parts.js +231 -0
  33. package/dist/minds/system-prompt.js +190 -223
  34. package/dist/persistence.js +66 -1
  35. package/dist/server/websocket-handler.js +14 -0
  36. package/dist/shared/diligence.js +40 -6
  37. package/dist/shared/utils/inter-dialog-format.js +3 -5
  38. package/dist/showing-by-doing.js +34 -31
  39. package/dist/snippets/README.en.md +3 -0
  40. package/dist/static/assets/{_baseUniq-C9vbtHF9.js → _baseUniq-C7IpU2Uk.js} +2 -2
  41. package/dist/static/assets/{_baseUniq-C9vbtHF9.js.map → _baseUniq-C7IpU2Uk.js.map} +1 -1
  42. package/dist/static/assets/{arc-hulXG01i.js → arc-1bhQqjON.js} +2 -2
  43. package/dist/static/assets/{arc-hulXG01i.js.map → arc-1bhQqjON.js.map} +1 -1
  44. package/dist/static/assets/{architectureDiagram-VXUJARFQ-DdLIAMT5.js → architectureDiagram-VXUJARFQ-CkEi1QpB.js} +6 -6
  45. package/dist/static/assets/{architectureDiagram-VXUJARFQ-DdLIAMT5.js.map → architectureDiagram-VXUJARFQ-CkEi1QpB.js.map} +1 -1
  46. package/dist/static/assets/{blockDiagram-VD42YOAC-DACsx66C.js → blockDiagram-VD42YOAC-DaBQ5-pY.js} +7 -7
  47. package/dist/static/assets/{blockDiagram-VD42YOAC-DACsx66C.js.map → blockDiagram-VD42YOAC-DaBQ5-pY.js.map} +1 -1
  48. package/dist/static/assets/{c4Diagram-YG6GDRKO-Cd5xZlLy.js → c4Diagram-YG6GDRKO-ChUgpgkP.js} +3 -3
  49. package/dist/static/assets/{c4Diagram-YG6GDRKO-Cd5xZlLy.js.map → c4Diagram-YG6GDRKO-ChUgpgkP.js.map} +1 -1
  50. package/dist/static/assets/{channel-NQehis0Z.js → channel-CxvmwllM.js} +2 -2
  51. package/dist/static/assets/{channel-NQehis0Z.js.map → channel-CxvmwllM.js.map} +1 -1
  52. package/dist/static/assets/{chunk-4BX2VUAB-DZDPl76b.js → chunk-4BX2VUAB-CKsrU2yk.js} +2 -2
  53. package/dist/static/assets/{chunk-4BX2VUAB-DZDPl76b.js.map → chunk-4BX2VUAB-CKsrU2yk.js.map} +1 -1
  54. package/dist/static/assets/{chunk-55IACEB6-CFSRDUbl.js → chunk-55IACEB6-BAau9SFt.js} +2 -2
  55. package/dist/static/assets/{chunk-55IACEB6-CFSRDUbl.js.map → chunk-55IACEB6-BAau9SFt.js.map} +1 -1
  56. package/dist/static/assets/{chunk-B4BG7PRW-BqQQ9M_z.js → chunk-B4BG7PRW--IiJ7W1m.js} +5 -5
  57. package/dist/static/assets/{chunk-B4BG7PRW-BqQQ9M_z.js.map → chunk-B4BG7PRW--IiJ7W1m.js.map} +1 -1
  58. package/dist/static/assets/{chunk-DI55MBZ5-FiFzz1Gh.js → chunk-DI55MBZ5-B83KrPQj.js} +4 -4
  59. package/dist/static/assets/{chunk-DI55MBZ5-FiFzz1Gh.js.map → chunk-DI55MBZ5-B83KrPQj.js.map} +1 -1
  60. package/dist/static/assets/{chunk-FMBD7UC4-DqqtCyWK.js → chunk-FMBD7UC4-BlDXzeza.js} +2 -2
  61. package/dist/static/assets/{chunk-FMBD7UC4-DqqtCyWK.js.map → chunk-FMBD7UC4-BlDXzeza.js.map} +1 -1
  62. package/dist/static/assets/{chunk-QN33PNHL-F0laQQ-J.js → chunk-QN33PNHL-B596W_v7.js} +2 -2
  63. package/dist/static/assets/{chunk-QN33PNHL-F0laQQ-J.js.map → chunk-QN33PNHL-B596W_v7.js.map} +1 -1
  64. package/dist/static/assets/{chunk-QZHKN3VN-CWhEZPaV.js → chunk-QZHKN3VN-UBBCxgBb.js} +2 -2
  65. package/dist/static/assets/{chunk-QZHKN3VN-CWhEZPaV.js.map → chunk-QZHKN3VN-UBBCxgBb.js.map} +1 -1
  66. package/dist/static/assets/{chunk-TZMSLE5B-Dx9cnwUy.js → chunk-TZMSLE5B-D-wCX2wJ.js} +2 -2
  67. package/dist/static/assets/{chunk-TZMSLE5B-Dx9cnwUy.js.map → chunk-TZMSLE5B-D-wCX2wJ.js.map} +1 -1
  68. package/dist/static/assets/{classDiagram-2ON5EDUG-Dp-dyEGy.js → classDiagram-2ON5EDUG-DvtmzPcu.js} +6 -6
  69. package/dist/static/assets/{classDiagram-2ON5EDUG-Dp-dyEGy.js.map → classDiagram-2ON5EDUG-DvtmzPcu.js.map} +1 -1
  70. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-Dp-dyEGy.js → classDiagram-v2-WZHVMYZB-DvtmzPcu.js} +6 -6
  71. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-Dp-dyEGy.js.map → classDiagram-v2-WZHVMYZB-DvtmzPcu.js.map} +1 -1
  72. package/dist/static/assets/{clone-C6mKvxs5.js → clone-DgJ0ZR-k.js} +2 -2
  73. package/dist/static/assets/{clone-C6mKvxs5.js.map → clone-DgJ0ZR-k.js.map} +1 -1
  74. package/dist/static/assets/{cose-bilkent-S5V4N54A-Dbwh3GoX.js → cose-bilkent-S5V4N54A-DXMyFQvy.js} +2 -2
  75. package/dist/static/assets/{cose-bilkent-S5V4N54A-Dbwh3GoX.js.map → cose-bilkent-S5V4N54A-DXMyFQvy.js.map} +1 -1
  76. package/dist/static/assets/{dagre-6UL2VRFP-BD_6e0Uk.js → dagre-6UL2VRFP-BdaUG-j_.js} +7 -7
  77. package/dist/static/assets/{dagre-6UL2VRFP-BD_6e0Uk.js.map → dagre-6UL2VRFP-BdaUG-j_.js.map} +1 -1
  78. package/dist/static/assets/{diagram-PSM6KHXK-BWt7Q59-.js → diagram-PSM6KHXK-NLiqKBzn.js} +7 -7
  79. package/dist/static/assets/{diagram-PSM6KHXK-BWt7Q59-.js.map → diagram-PSM6KHXK-NLiqKBzn.js.map} +1 -1
  80. package/dist/static/assets/{diagram-QEK2KX5R-D0BvBR_a.js → diagram-QEK2KX5R-D-0fyvY_.js} +6 -6
  81. package/dist/static/assets/{diagram-QEK2KX5R-D0BvBR_a.js.map → diagram-QEK2KX5R-D-0fyvY_.js.map} +1 -1
  82. package/dist/static/assets/{diagram-S2PKOQOG-D8uRdKXp.js → diagram-S2PKOQOG-BQ_FU59m.js} +6 -6
  83. package/dist/static/assets/{diagram-S2PKOQOG-D8uRdKXp.js.map → diagram-S2PKOQOG-BQ_FU59m.js.map} +1 -1
  84. package/dist/static/assets/{erDiagram-Q2GNP2WA-CQoifjFq.js → erDiagram-Q2GNP2WA-DyftKeuC.js} +5 -5
  85. package/dist/static/assets/{erDiagram-Q2GNP2WA-CQoifjFq.js.map → erDiagram-Q2GNP2WA-DyftKeuC.js.map} +1 -1
  86. package/dist/static/assets/{flowDiagram-NV44I4VS-CGhdeaG8.js → flowDiagram-NV44I4VS-9SGefONA.js} +6 -6
  87. package/dist/static/assets/{flowDiagram-NV44I4VS-CGhdeaG8.js.map → flowDiagram-NV44I4VS-9SGefONA.js.map} +1 -1
  88. package/dist/static/assets/{ganttDiagram-JELNMOA3-D8W0wb9H.js → ganttDiagram-JELNMOA3-k_WLhf-r.js} +3 -3
  89. package/dist/static/assets/{ganttDiagram-JELNMOA3-D8W0wb9H.js.map → ganttDiagram-JELNMOA3-k_WLhf-r.js.map} +1 -1
  90. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-ChHni_jP.js → gitGraphDiagram-NY62KEGX-3eoLlCOY.js} +7 -7
  91. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-ChHni_jP.js.map → gitGraphDiagram-NY62KEGX-3eoLlCOY.js.map} +1 -1
  92. package/dist/static/assets/{graph-BWoi_FgC.js → graph-vUevIs4s.js} +3 -3
  93. package/dist/static/assets/{graph-BWoi_FgC.js.map → graph-vUevIs4s.js.map} +1 -1
  94. package/dist/static/assets/{index-th_praGg.js → index-BNBG2CE1.js} +399 -68
  95. package/dist/static/assets/index-BNBG2CE1.js.map +1 -0
  96. package/dist/static/assets/{infoDiagram-WHAUD3N6-B_XKKZTV.js → infoDiagram-WHAUD3N6-CwEhVxkU.js} +5 -5
  97. package/dist/static/assets/{infoDiagram-WHAUD3N6-B_XKKZTV.js.map → infoDiagram-WHAUD3N6-CwEhVxkU.js.map} +1 -1
  98. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-ChGuQ6T9.js → journeyDiagram-XKPGCS4Q-Dtdq4G4Q.js} +5 -5
  99. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-ChGuQ6T9.js.map → journeyDiagram-XKPGCS4Q-Dtdq4G4Q.js.map} +1 -1
  100. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BjWe623u.js → kanban-definition-3W4ZIXB7-Bli-AycJ.js} +3 -3
  101. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BjWe623u.js.map → kanban-definition-3W4ZIXB7-Bli-AycJ.js.map} +1 -1
  102. package/dist/static/assets/{layout-BPyT310w.js → layout-CGlA8c09.js} +5 -5
  103. package/dist/static/assets/{layout-BPyT310w.js.map → layout-CGlA8c09.js.map} +1 -1
  104. package/dist/static/assets/{linear-xUsVjXWq.js → linear-Da2jDWL3.js} +2 -2
  105. package/dist/static/assets/{linear-xUsVjXWq.js.map → linear-Da2jDWL3.js.map} +1 -1
  106. package/dist/static/assets/{min-xFt7zeOd.js → min-Co741hTV.js} +3 -3
  107. package/dist/static/assets/{min-xFt7zeOd.js.map → min-Co741hTV.js.map} +1 -1
  108. package/dist/static/assets/{mindmap-definition-VGOIOE7T-DT_dvf2c.js → mindmap-definition-VGOIOE7T-DvkIjoq8.js} +4 -4
  109. package/dist/static/assets/{mindmap-definition-VGOIOE7T-DT_dvf2c.js.map → mindmap-definition-VGOIOE7T-DvkIjoq8.js.map} +1 -1
  110. package/dist/static/assets/{pieDiagram-ADFJNKIX-B1DQ-OaG.js → pieDiagram-ADFJNKIX-BGuGhTu8.js} +7 -7
  111. package/dist/static/assets/{pieDiagram-ADFJNKIX-B1DQ-OaG.js.map → pieDiagram-ADFJNKIX-BGuGhTu8.js.map} +1 -1
  112. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-IHqyr3iT.js → quadrantDiagram-AYHSOK5B-DAZcrJMg.js} +3 -3
  113. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-IHqyr3iT.js.map → quadrantDiagram-AYHSOK5B-DAZcrJMg.js.map} +1 -1
  114. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-CKBpht7B.js → requirementDiagram-UZGBJVZJ-CXN0DxZs.js} +4 -4
  115. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-CKBpht7B.js.map → requirementDiagram-UZGBJVZJ-CXN0DxZs.js.map} +1 -1
  116. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-D2uGjv3i.js → sankeyDiagram-TZEHDZUN-B7-yAePZ.js} +2 -2
  117. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-D2uGjv3i.js.map → sankeyDiagram-TZEHDZUN-B7-yAePZ.js.map} +1 -1
  118. package/dist/static/assets/{sequenceDiagram-WL72ISMW-wLFRhAKd.js → sequenceDiagram-WL72ISMW-DfBNY6h_.js} +4 -4
  119. package/dist/static/assets/{sequenceDiagram-WL72ISMW-wLFRhAKd.js.map → sequenceDiagram-WL72ISMW-DfBNY6h_.js.map} +1 -1
  120. package/dist/static/assets/{stateDiagram-FKZM4ZOC-BFGQTbx5.js → stateDiagram-FKZM4ZOC-BLo1xRVY.js} +9 -9
  121. package/dist/static/assets/{stateDiagram-FKZM4ZOC-BFGQTbx5.js.map → stateDiagram-FKZM4ZOC-BLo1xRVY.js.map} +1 -1
  122. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-DF7AjJuk.js → stateDiagram-v2-4FDKWEC3-Dq7MAD0I.js} +5 -5
  123. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-DF7AjJuk.js.map → stateDiagram-v2-4FDKWEC3-Dq7MAD0I.js.map} +1 -1
  124. package/dist/static/assets/{timeline-definition-IT6M3QCI-ChHFOb0o.js → timeline-definition-IT6M3QCI-ySWyBF3b.js} +3 -3
  125. package/dist/static/assets/{timeline-definition-IT6M3QCI-ChHFOb0o.js.map → timeline-definition-IT6M3QCI-ySWyBF3b.js.map} +1 -1
  126. package/dist/static/assets/{treemap-KMMF4GRG-BxaNvQU4.js → treemap-KMMF4GRG-DOp4sqOh.js} +4 -4
  127. package/dist/static/assets/{treemap-KMMF4GRG-BxaNvQU4.js.map → treemap-KMMF4GRG-DOp4sqOh.js.map} +1 -1
  128. package/dist/static/assets/{xychartDiagram-PRI3JC2R-CrNKeY_-.js → xychartDiagram-PRI3JC2R-vkmh67qb.js} +3 -3
  129. package/dist/static/assets/{xychartDiagram-PRI3JC2R-CrNKeY_-.js.map → xychartDiagram-PRI3JC2R-vkmh67qb.js.map} +1 -1
  130. package/dist/static/index.html +1 -1
  131. package/dist/team.js +29 -6
  132. package/dist/tool.js +56 -0
  133. package/dist/tools/builtins.js +4 -2
  134. package/dist/tools/context-health.js +7 -7
  135. package/dist/tools/os.js +267 -30
  136. package/dist/tools/pending-tellask-reminder.js +185 -0
  137. package/dist/tools/plan.js +1 -0
  138. package/dist/tools/ripgrep.js +145 -4
  139. package/dist/tools/shell-tools.js +21 -0
  140. package/dist/tools/team-mgmt.js +4 -4
  141. package/dist/tools/toolset-manual.js +74 -0
  142. package/dist/utils/task-doc.js +16 -16
  143. package/package.json +1 -1
  144. package/dist/minds/builtin/cmdr/persona.md +0 -3
  145. package/dist/minds/builtin/dijiang/knowledge.md +0 -287
  146. package/dist/minds/builtin/dijiang/persona.md +0 -7
  147. package/dist/static/assets/index-th_praGg.js.map +0 -1
  148. package/dist/static/testing/dom-observation-utils.js +0 -425
  149. package/dist/static/testing/e2e-test-helper.js +0 -3119
@@ -0,0 +1,254 @@
1
+ # Tellask 协作最佳实践(草案)
2
+
3
+ 英文版:[English](./tellask-collab.md)
4
+
5
+ > 状态:Draft
6
+ > 语义基线:本文以当前实现为准;“建议/规划”会单独标注。
7
+
8
+ ## 1. 为什么写这份文档
9
+
10
+ `Tellask` 已经是 Dominds 的核心协作机制,但“能用”不等于“用顺”。当前最常见的卡点不是语法错误,而是**协作节奏误判**:
11
+
12
+ - 诉请者收到阶段性回贴后,误以为被诉请者还在后台继续执行最初诉请。
13
+ - 诉请者口头描述“下一步该谁做什么”,却没有真的发出下一轮诉请。
14
+
15
+ 这两个问题会把协作拖进“看似推进、实则停滞”的状态。
16
+
17
+ 本文目标:
18
+
19
+ - 讲清当前已经实现的 tellask 运行时语义(避免心智模型漂移)。
20
+ - 给出可直接执行的协作最佳实践。
21
+ - 针对上述停滞问题,给出“快速且根本”的改进方向,优先考虑 priming + 系统提示。
22
+
23
+ ---
24
+
25
+ ## 2. 当前机制现状(已实现)
26
+
27
+ 以下内容是**当前代码与文档已实现**的行为约束(见 `dialog-system.zh.md`、`fbr.zh.md`、`dominds-agent-priming.zh.md`、`diligence-push.zh.md`)。
28
+
29
+ ### 2.1 Tellask 三形态
30
+
31
+ - `TellaskBack`(回问诉请):`!?@tellasker`,用于向诉请者回问澄清。
32
+ - `Tellask Session`(长线诉请):`!?@<teammate> !tellaskSession <slug>`,可恢复上下文的多轮协作。
33
+ - `Fresh Tellask`(一次性诉请):`!?@<teammate>`,一次性、不可恢复。
34
+
35
+ ### 2.2 `Tellask Session` 的真实语义
36
+
37
+ - `!tellaskSession <slug>` 的作用是“会话寻址 + 历史复用”。
38
+ - 它**不是**“后台持续执行开关”。
39
+ - 同一个 `<slug>` 下,每一次新任务推进,仍然需要新的 `!?@...` 诉请触发。
40
+
41
+ 一句话:`Session` 是“可续接的对话容器”,不是“会自动前进的后台 worker”。
42
+
43
+ ### 2.3 每次诉请调用的生命周期
44
+
45
+ 对诉请者来说,一次队友诉请的运行时节奏是:
46
+
47
+ 1. 发出 `!?@<teammate> ...`。
48
+ 2. 当前对话进入挂起/等待(pending subdialogs)。
49
+ 3. 被诉请者完成本轮驱动并回贴结果。
50
+ 4. 诉请者恢复继续。
51
+
52
+ 关键事实(与停滞问题直接相关):
53
+
54
+ - 当前 `teammate_response` 语义只有 `completed` / `failed`,没有“后台仍执行中”的第三态。
55
+ - 因此,“收到阶段性回贴”在协议上等价于“这一轮诉请已结束,是否继续要由诉请者显式发起下一轮”。
56
+
57
+ ### 2.4 Diligence Push 的边界
58
+
59
+ - Diligence Push 会鞭策根/主线对话继续思考和推进。
60
+ - 它不负责自动补发队友诉请,也不改变 tellask 的调用生命周期。
61
+ - 所以它能缓解“发呆”,但不能根治“口头安排不落地”的协作停滞。
62
+
63
+ ---
64
+
65
+ ## 3. 主要问题与根因
66
+
67
+ ### 3.1 主要问题:阶段性回贴后误判执行状态
68
+
69
+ 表象:
70
+
71
+ - 主线收到“阶段 1 完成”的反馈后,写下“等待对方继续执行”,但没有再次诉请。
72
+ - 实际上队友对应支线已结束,系统也没有自动继续执行原诉请。
73
+
74
+ 根因:
75
+
76
+ - 智能体把“会话连续性”误读成“执行连续性”。
77
+ - 即:把“同一 tellaskSession 能续聊”误解为“同一 tellaskSession 会继续干活”。
78
+
79
+ ### 3.2 后备问题:会说下一步,不会立即执行下一步
80
+
81
+ 典型坏味道:
82
+
83
+ - “我没有 shell 权限,请你让 @<shell_specialist> 执行 `pnpm lint:types` 并回贴。”
84
+
85
+ 这里真正缺的不是知识,而是动作闭环:该发诉请时没发诉请。
86
+
87
+ ---
88
+
89
+ ## 4. 最佳实践(立即可执行)
90
+
91
+ ### 4.1 协作阶段协议(Teammate Tellask 版)
92
+
93
+ 对**队友诉请(非 `!?@self`)**,统一执行四段协议:
94
+
95
+ 1. `发起`:明确目标、约束、验收口径,发出 `!?@...`。
96
+ 2. `等待`:等待本轮回贴,不预设对方会自动继续。
97
+ 3. `判定`:回贴到达后判断“已达成 / 未达成 / 需澄清”。
98
+ 4. `续推`:若未达成,立即发下一轮诉请(通常沿用同一 `!tellaskSession <slug>`)。
99
+
100
+ 强约束:
101
+
102
+ - 任何“等待结果/等待回贴”表述,必须能指向**刚刚已发出的具体诉请**与**等待的验收证据**。
103
+ - 若没有已发出的待回贴诉请,就不能写“等待”;应立刻发诉请或改为本地执行。
104
+
105
+ ### 4.2 续推时必须显式“再诉请”
106
+
107
+ 推荐写法:
108
+
109
+ ```text
110
+ !?@shell_specialist !tellaskSession typecheck-loop
111
+ !?执行 `pnpm lint:types`,仅回贴原始输出。
112
+ !?若失败:只列前 3 个错误(含文件路径与行号),并给出你建议先处理的 1 个错误。
113
+ !?验收:我需要看到命令退出码与首个错误锚点。
114
+ ```
115
+
116
+ 反例(禁止):
117
+
118
+ ```text
119
+ 我先等 @shell_specialist 继续跑下一步。
120
+ ```
121
+
122
+ ### 4.3 “口头转派”改成“直接诉请”
123
+
124
+ 反例(会停滞):
125
+
126
+ ```text
127
+ 我没有执行 shell 权限,需要你让 @shell_specialist 执行 `pnpm lint:types`。
128
+ ```
129
+
130
+ 正例(自主闭环):
131
+
132
+ ```text
133
+ !?@shell_specialist !tellaskSession typecheck-loop
134
+ !?请立即执行 `pnpm lint:types` 并原样回贴结果。
135
+ !?若命令不存在,回贴错误并给出本仓可行替代命令。
136
+ ```
137
+
138
+ ---
139
+
140
+ ## 5. 快速根治路径:Priming + 系统提示
141
+
142
+ 仅靠“提醒一句”通常不够。建议把根治拆成两层:
143
+
144
+ - 第一层:系统提示加硬约束(立刻见效)。
145
+ - 第二层:协作 priming 建立“本能体感”(长期稳态)。
146
+
147
+ ### 5.1 系统提示改进(建议 P0)
148
+
149
+ 建议新增/强化以下约束卡片(中英文各自母语撰写):
150
+
151
+ 1. `回贴终止约束`
152
+ 对队友 tellask 而言,收到回贴即表示该轮调用结束;若要继续推进,必须显式再发一轮 tellask。
153
+ 2. `等待声明约束`
154
+ 只有当存在明确 pending tellask 时,才可声明“等待中”;否则必须执行下一动作。
155
+ 3. `自主执行约束`
156
+ 能通过队友 tellask 完成的执行动作,不得转交给 @human 当“转发员”。
157
+ 4. `动作优先约束`
158
+ 当你写“下一步让 @X 做 Y”时,应在同一回复内直接给出 `!?@X ...`。
159
+
160
+ ### 5.2 协作 Priming 改进(P1)
161
+
162
+ 把“诉请协作节奏”拆成两段短演练,并都落在可复现事实上:
163
+
164
+ 1. 一次性诉请:`uname -a`(环境基线)。
165
+ 2. 长线诉请:`tellaskSession: rtws-vcs-inventory` 两轮盘点仓库现状。
166
+ 3. 在两段证据都到位后,再进入 `!?@self` FBR 和综合提炼。
167
+
168
+ 关键原则:
169
+
170
+ 1. 无可用 `shell_specialist` 时,由 Dominds 运行时采集同样事实(`uname -a` + git 盘点),这是标准模式,不是降级。
171
+ 2. 回贴即本轮结束;要继续必须显式发起下一轮诉请。
172
+ 3. “让队友做”必须直接落成 `!?@...`,不能转交 @human 当转发员。
173
+
174
+ ### 5.3 P1 设计基线(当前实现)
175
+
176
+ #### 设计目标
177
+
178
+ 1. 短:新增流程集中在 `uname` + 两轮 VCS 盘点,不引入长提示词。
179
+ 2. 普适:任何 rtws 都能执行(是否有 shell 专员都可跑通)。
180
+ 3. 稳:关键步骤由运行时模板驱动,降低模型自由发挥漂移。
181
+ 4. 准:通过真实两轮诉请建立“回贴收束、续推再诉请”的行为记忆。
182
+
183
+ #### 统一时序
184
+
185
+ 1. `Prelude Intro`:声明 shell 策略(`specialist_only` / `self_is_specialist` / `no_specialist`)。
186
+ 2. `uname` 基线:
187
+ - `specialist_only`:主线 `!?@<shell_specialist>` 发一次性诉请并接收回贴。
188
+ - 其他两种策略:运行时采集并显示 `uname -a`。
189
+ 3. `VCS Round-1`(同一 `tellaskSession`):确认 rtws 拓扑
190
+ - 根路径是否 git repo
191
+ - submodule 列表
192
+ - 子目录独立 repo 列表
193
+ 4. `VCS Round-2`(同一 `tellaskSession` 的续推):逐 repo 确认
194
+ - remote(fetch/push)
195
+ - branch / upstream
196
+ - dirty 状态
197
+ 5. 汇总 `uname + VCS` 作为同一份环境证据,发起 `!?@self` FBR。
198
+ 6. 收齐 FBR 回贴后做 distillation,产出 priming note。
199
+
200
+ #### 诉请模板约束
201
+
202
+ 1. Round-1/2 tellask body 由运行时模板生成。
203
+ 2. Round-2 正文必须显式写明“Round-1 已结束,本轮是新的续推诉请”。
204
+ 3. 每轮只做单一目标,不夹带修复方案或扩展性任务。
205
+
206
+ #### 无 shell 专员场景(标准模式)
207
+
208
+ 1. 运行时直接给出 `uname` 与两轮 VCS 盘点文本。
209
+ 2. FBR 使用与 shell 专员路径同结构的信息(不缩水,不伪造队友回贴)。
210
+ 3. priming note 语义要求完全一致:回贴收束 + 续推再诉请。
211
+
212
+ #### 数据结构(`agent-priming.ts`)
213
+
214
+ 1. `shell` 使用判别联合:
215
+ - `specialist_tellask`(含诉请正文、回贴、`uname` 快照)
216
+ - `direct_shell`(运行时说明 + `uname` 快照)
217
+ 2. `vcs` 使用判别联合:
218
+ - `specialist_session`(两轮 tellask/response + `inventoryText`)
219
+ - `runtime_inventory`(两轮 runtime note + `inventoryText`)
220
+ 3. `buildCoursePrefixMsgs` 注入顺序固定为:shell 快照 → VCS 盘点 → FBR 摘要 → priming note。
221
+
222
+ #### 验收标准(P1 最小可用)
223
+
224
+ 1. priming 实录可见:`uname` 基线 + VCS 两轮(Round-2 晚于 Round-1 回贴)。
225
+ 2. 无 shell 专员时仍可看到两轮 VCS runtime 盘点,且用于同一轮 FBR。
226
+ 3. priming note 明确写出“回贴=本轮结束;继续=再诉请”。
227
+ 4. replay 可复现对应路径(`specialist_session` 或 `runtime_inventory`)。
228
+ 5. `pnpm -C dominds run lint:types` 通过,且不破坏现有 priming/FBR/diligence 约束。
229
+
230
+ ---
231
+
232
+ ## 6. 面向主线主理人的协作清单
233
+
234
+ 每次协作循环前后,快速自检:
235
+
236
+ 1. 我这轮是否已经发出明确 tellask(有目标、约束、验收)?
237
+ 2. 我现在说“等待”时,是否真有 pending tellask 对应?
238
+ 3. 回贴到达后,我是否做了“判定 + 下一轮诉请/本地动作”?
239
+ 4. 我是否把“让队友做”落成了真实 `!?@...`,而不是口头转派给 @human?
240
+ 5. 关键决策是否已写回 Taskdoc(主线)而不是只留在聊天里?
241
+
242
+ ---
243
+
244
+ ## 7. 后续落地建议
245
+
246
+ 建议按优先级推进:
247
+
248
+ 1. `P0`:更新系统提示中的协作硬约束(先把明显停滞压下去)。
249
+ 2. `P1`:增加 tellask-collab priming(建立“回贴即收束、续推要再诉请”的本能)。
250
+ 3. `P2`:补回归用例,重点覆盖:
251
+ - 收到阶段性回贴后能否自动补发下一轮诉请;
252
+ - 是否还会出现“请人类转发给队友执行”的停滞话术。
253
+
254
+ 这三步结合后,diligence push 才会成为“锦上添花”,而不是“替代执行”的补丁。
@@ -57,8 +57,8 @@ Chinese version: [中文版](./txt-editing-tools.zh.md)
57
57
 
58
58
  ### 3.2 机制(当前实现)
59
59
 
60
- - `ToolsetMeta` 支持 toolset 级 prompt(`I18nText`,目前 `en|zh`),在 system prompt 构建时注入到 tool 列表之前(按成员实际启用的 toolsets)。
61
- - 当前实现使用 `promptFilesI18n`:把综合指南放到 markdown 文件中,并在构建 system prompt 时**按需读取**(no cache)。
60
+ - `ToolsetMeta` 支持 toolset 级 prompt(`I18nText`,目前 `en|zh`),用于 **man\_<toolset> 手册** 的按需读取(不是自动注入到 system prompt)。
61
+ - 当前实现使用 `promptFilesI18n`:把综合指南放到 markdown 文件中,**仅在调用 man\_<toolset> 时读取**(no cache)。
62
62
  - `ws_mod`:
63
63
  - `dominds/main/tools/prompts/ws_mod.zh.md`
64
64
  - `dominds/main/tools/prompts/ws_mod.en.md`
@@ -57,8 +57,8 @@ updated: 2026-01-24
57
57
 
58
58
  ### 3.2 机制(当前实现)
59
59
 
60
- - `ToolsetMeta` 支持 toolset 级 prompt(`I18nText`,目前 `en|zh`),在 system prompt 构建时注入到 tool 列表之前(按成员实际启用的 toolsets)。
61
- - 当前实现使用 `promptFilesI18n`:把综合指南放到 markdown 文件中,并在构建 system prompt 时**按需读取**(no cache)。
60
+ - `ToolsetMeta` 支持 toolset 级 prompt(`I18nText`,目前 `en|zh`),用于 **man\_<toolset> 手册** 的按需读取(不自动注入 system prompt)。
61
+ - 当前实现使用 `promptFilesI18n`:把综合指南放到 markdown 文件中,**仅在调用 man\_<toolset> 时读取**(no cache)。
62
62
  - `ws_mod`:
63
63
  - `dominds/main/tools/prompts/ws_mod.zh.md`
64
64
  - `dominds/main/tools/prompts/ws_mod.en.md`
@@ -49,6 +49,12 @@ providers:
49
49
  parallel_tool_calls:
50
50
  type: boolean
51
51
  description: Allow the model to emit parallel tool calls (enable by default in Dominds).
52
+ web_search:
53
+ prominent: true
54
+ default: live
55
+ type: enum
56
+ values: [disabled, cached, live]
57
+ description: Enable native web search tool mode (disabled/cached/live).
52
58
  max_tokens:
53
59
  type: integer
54
60
  min: 1
@@ -94,8 +100,26 @@ providers:
94
100
  apiType: anthropic
95
101
  baseUrl: https://api.minimaxi.com/anthropic
96
102
  apiKeyEnvVar: MINIMAX_CN_CP_API_KEY
97
- tech_spec_url: https://platform.minimaxi.com/document/guides
103
+ tech_spec_url: https://platform.minimaxi.com/docs/api-reference/text-anthropic-api
98
104
  api_mgmt_url: https://platform.minimaxi.com/
105
+ model_param_options:
106
+ general:
107
+ max_tokens:
108
+ type: integer
109
+ min: 1
110
+ description: Fully supported. Maximum number of tokens to generate.
111
+ anthropic:
112
+ temperature:
113
+ type: number
114
+ min: 0
115
+ max: 1
116
+ default: 1
117
+ description: 'Fully supported. Range (0.0, 1.0], controls output randomness; recommended value: 1.'
118
+ top_p:
119
+ type: number
120
+ min: 0
121
+ max: 1
122
+ description: Fully supported. Nucleus sampling parameter.
99
123
  models:
100
124
  MiniMax-M2.1:
101
125
  name: MiniMax M2.1
@@ -114,8 +138,26 @@ providers:
114
138
  apiType: anthropic
115
139
  baseUrl: https://api.minimaxi.com/anthropic
116
140
  apiKeyEnvVar: MINIMAX_CN_API_KEY
117
- tech_spec_url: https://platform.minimaxi.com/document/guides
141
+ tech_spec_url: https://platform.minimaxi.com/docs/api-reference/text-anthropic-api
118
142
  api_mgmt_url: https://platform.minimaxi.com/
143
+ model_param_options:
144
+ general:
145
+ max_tokens:
146
+ type: integer
147
+ min: 1
148
+ description: Fully supported. Maximum number of tokens to generate.
149
+ anthropic:
150
+ temperature:
151
+ type: number
152
+ min: 0
153
+ max: 1
154
+ default: 1
155
+ description: 'Fully supported. Range (0.0, 1.0], controls output randomness; recommended value: 1.'
156
+ top_p:
157
+ type: number
158
+ min: 0
159
+ max: 1
160
+ description: Fully supported. Nucleus sampling parameter.
119
161
  models:
120
162
  MiniMax-M2.1:
121
163
  name: MiniMax M2.1
@@ -134,8 +176,26 @@ providers:
134
176
  apiType: anthropic
135
177
  baseUrl: https://api.minimax.io/anthropic
136
178
  apiKeyEnvVar: MINIMAX_CP_API_KEY
137
- tech_spec_url: https://platform.minimax.io/docs/api-reference
179
+ tech_spec_url: https://platform.minimax.io/docs/api-reference/text-anthropic-api
138
180
  api_mgmt_url: https://platform.minimax.io/
181
+ model_param_options:
182
+ general:
183
+ max_tokens:
184
+ type: integer
185
+ min: 1
186
+ description: Fully supported. Maximum number of tokens to generate.
187
+ anthropic:
188
+ temperature:
189
+ type: number
190
+ min: 0
191
+ max: 1
192
+ default: 1
193
+ description: 'Fully supported. Range (0.0, 1.0], controls output randomness; recommended value: 1.'
194
+ top_p:
195
+ type: number
196
+ min: 0
197
+ max: 1
198
+ description: Fully supported. Nucleus sampling parameter.
139
199
  models:
140
200
  MiniMax-M2.1:
141
201
  name: MiniMax M2.1
@@ -154,8 +214,26 @@ providers:
154
214
  apiType: anthropic
155
215
  baseUrl: https://api.minimax.io/anthropic
156
216
  apiKeyEnvVar: MINIMAX_API_KEY
157
- tech_spec_url: https://platform.minimax.io/docs/api-reference
217
+ tech_spec_url: https://platform.minimax.io/docs/api-reference/text-anthropic-api
158
218
  api_mgmt_url: https://platform.minimax.io/
219
+ model_param_options:
220
+ general:
221
+ max_tokens:
222
+ type: integer
223
+ min: 1
224
+ description: Fully supported. Maximum number of tokens to generate.
225
+ anthropic:
226
+ temperature:
227
+ type: number
228
+ min: 0
229
+ max: 1
230
+ default: 1
231
+ description: 'Fully supported. Range (0.0, 1.0], controls output randomness; recommended value: 1.'
232
+ top_p:
233
+ type: number
234
+ min: 0
235
+ max: 1
236
+ description: Fully supported. Nucleus sampling parameter.
159
237
  models:
160
238
  MiniMax-M2.1:
161
239
  name: MiniMax M2.1