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.
- package/README.md +2 -2
- package/README.zh.md +2 -2
- package/dist/agent-priming.js +169 -200
- package/dist/cli/read.js +2 -7
- package/dist/dialog-factory.js +6 -4
- package/dist/dialog-instance-registry.js +2 -2
- package/dist/dialog.js +99 -91
- package/dist/docs/dialog-persistence.md +2 -2
- package/dist/docs/dialog-persistence.zh.md +2 -2
- package/dist/docs/dialog-system.md +86 -90
- package/dist/docs/dialog-system.zh.md +82 -83
- package/dist/docs/diligence-push.md +2 -2
- package/dist/docs/diligence-push.zh.md +2 -2
- package/dist/docs/dominds-agent-priming.md +11 -11
- package/dist/docs/dominds-agent-priming.zh.md +9 -9
- package/dist/docs/dominds-terminology.md +34 -34
- package/dist/docs/fbr-implementation.md +4 -4
- package/dist/docs/fbr-implementation.zh.md +4 -4
- package/dist/docs/fbr.md +31 -53
- package/dist/docs/fbr.zh.md +30 -48
- package/dist/docs/mottos.md +2 -3
- package/dist/docs/mottos.zh.md +2 -2
- package/dist/docs/q4h.md +6 -6
- package/dist/docs/q4h.zh.md +6 -6
- package/dist/docs/tellask-collab.md +13 -13
- package/dist/docs/tellask-collab.zh.md +18 -18
- package/dist/llm/driver-entry.js +9 -33
- package/dist/llm/driver-v2/core.js +413 -111
- package/dist/llm/driver-v2/index.js +5 -0
- package/dist/llm/driver-v2/orchestrator.js +4 -3
- package/dist/llm/driver-v2/policy.js +17 -23
- package/dist/llm/driver-v2/restore-dialog-hierarchy.js +73 -0
- package/dist/llm/driver-v2/round.js +18 -7
- package/dist/llm/driver-v2/runtime-utils.js +3 -5
- package/dist/llm/driver-v2/saying-events.js +4 -42
- package/dist/llm/driver-v2/supdialog-response.js +110 -23
- package/dist/llm/driver-v2/tellask-bridge.js +560 -458
- package/dist/mcp/sdk-client.js +1 -1
- package/dist/mcp/server-runtime.js +1 -1
- package/dist/mcp/stdio-client.js +6 -6
- package/dist/mcp/tool-names.js +1 -1
- package/dist/minds/builtin/fuxi/persona.en.md +10 -10
- package/dist/minds/builtin/fuxi/persona.zh.md +12 -12
- package/dist/minds/builtin/pangu/persona.en.md +7 -7
- package/dist/minds/builtin/pangu/persona.zh.md +6 -6
- package/dist/minds/minds-i18n.js +2 -2
- package/dist/minds/system-prompt-parts.js +15 -12
- package/dist/minds/system-prompt.js +58 -56
- package/dist/persistence.js +675 -527
- package/dist/server/api-routes.js +1 -1
- package/dist/server/websocket-handler.js +10 -20
- package/dist/server.js +3 -3
- package/dist/shared/diligence.js +12 -12
- package/dist/shared/i18n/driver-messages.js +28 -118
- package/dist/shared/utils/inter-dialog-format.js +53 -53
- package/dist/snippets/starting.en.md +1 -1
- package/dist/snippets/starting.zh.md +1 -2
- package/dist/static/assets/{_baseUniq-2IQvcpiv.js → _baseUniq-D4N_zVXV.js} +2 -2
- package/dist/static/assets/{_baseUniq-2IQvcpiv.js.map → _baseUniq-D4N_zVXV.js.map} +1 -1
- package/dist/static/assets/{arc-Boi4s2EY.js → arc-7bP9qomB.js} +2 -2
- package/dist/static/assets/{arc-Boi4s2EY.js.map → arc-7bP9qomB.js.map} +1 -1
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-CV1IIalQ.js → architectureDiagram-VXUJARFQ-DToIiZuZ.js} +6 -6
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-CV1IIalQ.js.map → architectureDiagram-VXUJARFQ-DToIiZuZ.js.map} +1 -1
- package/dist/static/assets/{blockDiagram-VD42YOAC-C66ZvUb1.js → blockDiagram-VD42YOAC-C-pRNHpf.js} +7 -7
- package/dist/static/assets/{blockDiagram-VD42YOAC-C66ZvUb1.js.map → blockDiagram-VD42YOAC-C-pRNHpf.js.map} +1 -1
- package/dist/static/assets/{c4Diagram-YG6GDRKO-2YQZQ-KQ.js → c4Diagram-YG6GDRKO-Bnp-nWKO.js} +3 -3
- package/dist/static/assets/{c4Diagram-YG6GDRKO-2YQZQ-KQ.js.map → c4Diagram-YG6GDRKO-Bnp-nWKO.js.map} +1 -1
- package/dist/static/assets/{channel-DBG_xYT_.js → channel-CTv1SsAF.js} +2 -2
- package/dist/static/assets/{channel-DBG_xYT_.js.map → channel-CTv1SsAF.js.map} +1 -1
- package/dist/static/assets/{chunk-4BX2VUAB-D92pQ5qM.js → chunk-4BX2VUAB-D_OGa3ss.js} +2 -2
- package/dist/static/assets/{chunk-4BX2VUAB-D92pQ5qM.js.map → chunk-4BX2VUAB-D_OGa3ss.js.map} +1 -1
- package/dist/static/assets/{chunk-55IACEB6-T3IKxvjm.js → chunk-55IACEB6-I4o4MCuM.js} +2 -2
- package/dist/static/assets/{chunk-55IACEB6-T3IKxvjm.js.map → chunk-55IACEB6-I4o4MCuM.js.map} +1 -1
- package/dist/static/assets/{chunk-B4BG7PRW-SKDCq7xY.js → chunk-B4BG7PRW-Bp-TIXg6.js} +5 -5
- package/dist/static/assets/{chunk-B4BG7PRW-SKDCq7xY.js.map → chunk-B4BG7PRW-Bp-TIXg6.js.map} +1 -1
- package/dist/static/assets/{chunk-DI55MBZ5-CKY9xXzj.js → chunk-DI55MBZ5-Bnph5Hmd.js} +4 -4
- package/dist/static/assets/{chunk-DI55MBZ5-CKY9xXzj.js.map → chunk-DI55MBZ5-Bnph5Hmd.js.map} +1 -1
- package/dist/static/assets/{chunk-FMBD7UC4-CzaQthG_.js → chunk-FMBD7UC4-q3UyRsNI.js} +2 -2
- package/dist/static/assets/{chunk-FMBD7UC4-CzaQthG_.js.map → chunk-FMBD7UC4-q3UyRsNI.js.map} +1 -1
- package/dist/static/assets/{chunk-QN33PNHL-8v7ASP75.js → chunk-QN33PNHL-BxUlvLXP.js} +2 -2
- package/dist/static/assets/{chunk-QN33PNHL-8v7ASP75.js.map → chunk-QN33PNHL-BxUlvLXP.js.map} +1 -1
- package/dist/static/assets/{chunk-QZHKN3VN-Cd3_mr-D.js → chunk-QZHKN3VN-DpQR9BVw.js} +2 -2
- package/dist/static/assets/{chunk-QZHKN3VN-Cd3_mr-D.js.map → chunk-QZHKN3VN-DpQR9BVw.js.map} +1 -1
- package/dist/static/assets/{chunk-TZMSLE5B-BrTyfkJK.js → chunk-TZMSLE5B-BX8vrVo0.js} +2 -2
- package/dist/static/assets/{chunk-TZMSLE5B-BrTyfkJK.js.map → chunk-TZMSLE5B-BX8vrVo0.js.map} +1 -1
- package/dist/static/assets/{classDiagram-2ON5EDUG-pLBmQ3Qa.js → classDiagram-2ON5EDUG-Ccx5_2Xq.js} +6 -6
- package/dist/static/assets/{classDiagram-2ON5EDUG-pLBmQ3Qa.js.map → classDiagram-2ON5EDUG-Ccx5_2Xq.js.map} +1 -1
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-pLBmQ3Qa.js → classDiagram-v2-WZHVMYZB-Ccx5_2Xq.js} +6 -6
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-pLBmQ3Qa.js.map → classDiagram-v2-WZHVMYZB-Ccx5_2Xq.js.map} +1 -1
- package/dist/static/assets/{clone-rjxmrDHc.js → clone-Cl5zSMrO.js} +2 -2
- package/dist/static/assets/{clone-rjxmrDHc.js.map → clone-Cl5zSMrO.js.map} +1 -1
- package/dist/static/assets/{cose-bilkent-S5V4N54A-DaW3q2vS.js → cose-bilkent-S5V4N54A-B-FUX86B.js} +2 -2
- package/dist/static/assets/{cose-bilkent-S5V4N54A-DaW3q2vS.js.map → cose-bilkent-S5V4N54A-B-FUX86B.js.map} +1 -1
- package/dist/static/assets/{dagre-6UL2VRFP-BT252775.js → dagre-6UL2VRFP-Bj8vSSpT.js} +7 -7
- package/dist/static/assets/{dagre-6UL2VRFP-BT252775.js.map → dagre-6UL2VRFP-Bj8vSSpT.js.map} +1 -1
- package/dist/static/assets/{diagram-PSM6KHXK-Cp0jEYgm.js → diagram-PSM6KHXK-BPcgy7jf.js} +7 -7
- package/dist/static/assets/{diagram-PSM6KHXK-Cp0jEYgm.js.map → diagram-PSM6KHXK-BPcgy7jf.js.map} +1 -1
- package/dist/static/assets/{diagram-QEK2KX5R-BYEiCch_.js → diagram-QEK2KX5R-DHxd6LWi.js} +6 -6
- package/dist/static/assets/{diagram-QEK2KX5R-BYEiCch_.js.map → diagram-QEK2KX5R-DHxd6LWi.js.map} +1 -1
- package/dist/static/assets/{diagram-S2PKOQOG-SNGZ1B53.js → diagram-S2PKOQOG-C4ynhhLr.js} +6 -6
- package/dist/static/assets/{diagram-S2PKOQOG-SNGZ1B53.js.map → diagram-S2PKOQOG-C4ynhhLr.js.map} +1 -1
- package/dist/static/assets/{erDiagram-Q2GNP2WA-CMdkkngT.js → erDiagram-Q2GNP2WA-CQ25uxxf.js} +5 -5
- package/dist/static/assets/{erDiagram-Q2GNP2WA-CMdkkngT.js.map → erDiagram-Q2GNP2WA-CQ25uxxf.js.map} +1 -1
- package/dist/static/assets/{flowDiagram-NV44I4VS-k203P84f.js → flowDiagram-NV44I4VS-ChkkAldk.js} +6 -6
- package/dist/static/assets/{flowDiagram-NV44I4VS-k203P84f.js.map → flowDiagram-NV44I4VS-ChkkAldk.js.map} +1 -1
- package/dist/static/assets/{ganttDiagram-JELNMOA3-CgsVe01-.js → ganttDiagram-JELNMOA3-CBt_Zorl.js} +3 -3
- package/dist/static/assets/{ganttDiagram-JELNMOA3-CgsVe01-.js.map → ganttDiagram-JELNMOA3-CBt_Zorl.js.map} +1 -1
- package/dist/static/assets/{gitGraphDiagram-NY62KEGX-BGOR_N5w.js → gitGraphDiagram-NY62KEGX-CtBc2dOO.js} +7 -7
- package/dist/static/assets/{gitGraphDiagram-NY62KEGX-BGOR_N5w.js.map → gitGraphDiagram-NY62KEGX-CtBc2dOO.js.map} +1 -1
- package/dist/static/assets/{graph-DDHIhCSW.js → graph-BGzNnzuI.js} +3 -3
- package/dist/static/assets/{graph-DDHIhCSW.js.map → graph-BGzNnzuI.js.map} +1 -1
- package/dist/static/assets/{index-CUZD-Ua6.js → index-Vrp1PT3b.js} +654 -355
- package/dist/static/assets/index-Vrp1PT3b.js.map +1 -0
- package/dist/static/assets/{infoDiagram-WHAUD3N6-D0GlWUIm.js → infoDiagram-WHAUD3N6-BYJF-Ol5.js} +5 -5
- package/dist/static/assets/{infoDiagram-WHAUD3N6-D0GlWUIm.js.map → infoDiagram-WHAUD3N6-BYJF-Ol5.js.map} +1 -1
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-I0W1fDTZ.js → journeyDiagram-XKPGCS4Q-Cl2p8ZBw.js} +5 -5
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-I0W1fDTZ.js.map → journeyDiagram-XKPGCS4Q-Cl2p8ZBw.js.map} +1 -1
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-BY5xVZyl.js → kanban-definition-3W4ZIXB7-DBH-HEwY.js} +3 -3
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-BY5xVZyl.js.map → kanban-definition-3W4ZIXB7-DBH-HEwY.js.map} +1 -1
- package/dist/static/assets/{layout-C7mFT1m6.js → layout-DdWO-uEo.js} +5 -5
- package/dist/static/assets/{layout-C7mFT1m6.js.map → layout-DdWO-uEo.js.map} +1 -1
- package/dist/static/assets/{linear-WSX0brRY.js → linear-BY3MovaF.js} +2 -2
- package/dist/static/assets/{linear-WSX0brRY.js.map → linear-BY3MovaF.js.map} +1 -1
- package/dist/static/assets/{min-DOTQTP4p.js → min-aHCJK1uN.js} +3 -3
- package/dist/static/assets/{min-DOTQTP4p.js.map → min-aHCJK1uN.js.map} +1 -1
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-BWhHo-Hq.js → mindmap-definition-VGOIOE7T-BjJnBRtB.js} +4 -4
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-BWhHo-Hq.js.map → mindmap-definition-VGOIOE7T-BjJnBRtB.js.map} +1 -1
- package/dist/static/assets/{pieDiagram-ADFJNKIX-B91oxvos.js → pieDiagram-ADFJNKIX-xAcmdymv.js} +7 -7
- package/dist/static/assets/{pieDiagram-ADFJNKIX-B91oxvos.js.map → pieDiagram-ADFJNKIX-xAcmdymv.js.map} +1 -1
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DqMUyBPr.js → quadrantDiagram-AYHSOK5B-BPbEGCEj.js} +3 -3
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DqMUyBPr.js.map → quadrantDiagram-AYHSOK5B-BPbEGCEj.js.map} +1 -1
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-COUayA3m.js → requirementDiagram-UZGBJVZJ--w6UfXy0.js} +4 -4
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-COUayA3m.js.map → requirementDiagram-UZGBJVZJ--w6UfXy0.js.map} +1 -1
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-Bp9r8YDi.js → sankeyDiagram-TZEHDZUN-B_T6TQwh.js} +2 -2
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-Bp9r8YDi.js.map → sankeyDiagram-TZEHDZUN-B_T6TQwh.js.map} +1 -1
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-CpuTC5cG.js → sequenceDiagram-WL72ISMW-DX_oVvqA.js} +4 -4
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-CpuTC5cG.js.map → sequenceDiagram-WL72ISMW-DX_oVvqA.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bxoo7e6E.js → stateDiagram-FKZM4ZOC-BAybZU8l.js} +9 -9
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bxoo7e6E.js.map → stateDiagram-FKZM4ZOC-BAybZU8l.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Q-DL7tae.js → stateDiagram-v2-4FDKWEC3-BUsvuCdD.js} +5 -5
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Q-DL7tae.js.map → stateDiagram-v2-4FDKWEC3-BUsvuCdD.js.map} +1 -1
- package/dist/static/assets/{timeline-definition-IT6M3QCI-DuOiHQPk.js → timeline-definition-IT6M3QCI-DOYN-4XM.js} +3 -3
- package/dist/static/assets/{timeline-definition-IT6M3QCI-DuOiHQPk.js.map → timeline-definition-IT6M3QCI-DOYN-4XM.js.map} +1 -1
- package/dist/static/assets/{treemap-KMMF4GRG-YbrDC0fO.js → treemap-KMMF4GRG-CQXygT0T.js} +4 -4
- package/dist/static/assets/{treemap-KMMF4GRG-YbrDC0fO.js.map → treemap-KMMF4GRG-CQXygT0T.js.map} +1 -1
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-DDRlTIfV.js → xychartDiagram-PRI3JC2R-ByFAvTeN.js} +3 -3
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-DDRlTIfV.js.map → xychartDiagram-PRI3JC2R-ByFAvTeN.js.map} +1 -1
- package/dist/static/index.html +1 -1
- package/dist/tools/builtins.js +0 -8
- package/dist/tools/env.js +1 -1
- package/dist/tools/mcp.js +31 -9
- package/dist/tools/pending-tellask-reminder.js +14 -17
- package/dist/tools/team-mgmt.js +1 -1
- package/package.json +1 -1
- package/dist/static/assets/index-CUZD-Ua6.js.map +0 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## 摘要
|
|
6
6
|
|
|
7
|
-
Dominds 的诉请(Tellask
|
|
7
|
+
Dominds 的诉请(Tellask,`tellask* function call`)与扪心自问(FBR,`freshBootsReasoning`)并不是“写在系统提示里的约定”,而是**后端真实可驱动、可执行、可回传、可持久化**的机制。
|
|
8
8
|
|
|
9
9
|
问题在于:即使系统提示把这些机制写得再细,大多数基础模型也并未在“真的可以随时拉一个队友去跑 shell 命令并把结果带回来”的世界里被训练过,因此容易把提示当成“说说而已 / 仅供参考”。这会直接削弱诉请与 FBR 的可用性。
|
|
10
10
|
|
|
@@ -20,7 +20,7 @@ Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并
|
|
|
20
20
|
|
|
21
21
|
- 诉请机制与对话系统:[`dialog-system.zh.md`](./dialog-system.zh.md)
|
|
22
22
|
- 术语约定(主线/支线;诉请方/应答方):[`dominds-terminology.md`](./dominds-terminology.md)
|
|
23
|
-
- FBR
|
|
23
|
+
- FBR(`freshBootsReasoning`):[`fbr.zh.md`](./fbr.zh.md)
|
|
24
24
|
- 工作语言 vs UI 语言:[`i18n.zh.md`](./i18n.zh.md)
|
|
25
25
|
|
|
26
26
|
---
|
|
@@ -28,7 +28,7 @@ Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并
|
|
|
28
28
|
## 目标
|
|
29
29
|
|
|
30
30
|
- 在对话一开始就建立“诉请/回传/持久化都是真的”的信任。
|
|
31
|
-
- 在对话一开始就跑通一次
|
|
31
|
+
- 在对话一开始就跑通一次 `freshBootsReasoning` 的 FBR 回路。
|
|
32
32
|
- 把“发起 FBR 后先等待回贴,再做综合决策”的时序固化为肌肉记忆。
|
|
33
33
|
- 把多份 FBR 草稿做一次**综合提炼**,把“取精华、去糟粕”的动作也变成体感的一部分。
|
|
34
34
|
- 过程足够小、可控、低风险(默认只执行 `uname -a`)。
|
|
@@ -46,9 +46,9 @@ Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并
|
|
|
46
46
|
|
|
47
47
|
- **主线对话**:用户与主要智能体交互的那条线。
|
|
48
48
|
- **支线对话**:由诉请 / FBR 触发的临时工作线,产出结果回传主线。
|
|
49
|
-
- **诉请(Tellask)**:以
|
|
49
|
+
- **诉请(Tellask)**:以 `tellask({ targetAgentId: "<memberId>", sessionSlug: "<slug>", tellaskContent: "..." })` 向队友/对话发起的结构化请求。
|
|
50
50
|
- **Shell 专员(shell specialist)**:被允许执行 shell 命令并回传结果的队友(由 `shell_specialists` 配置指定)。
|
|
51
|
-
- **FBR(扪心自问)**:以
|
|
51
|
+
- **FBR(扪心自问)**:以 `freshBootsReasoning` 触发的“无工具支线推理”,产出报告回传主线。
|
|
52
52
|
|
|
53
53
|
---
|
|
54
54
|
|
|
@@ -83,7 +83,7 @@ Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并
|
|
|
83
83
|
|
|
84
84
|
### 3)真实 FBR:基于环境信息做一次“扪心自问”
|
|
85
85
|
|
|
86
|
-
拿到环境快照后,主线智能体触发一次
|
|
86
|
+
拿到环境快照后,主线智能体触发一次 `freshBootsReasoning` FBR,并在 FBR 的诉请正文里带上:
|
|
87
87
|
|
|
88
88
|
- 命令 `uname -a` 的完整输出(明确注明命令名,未来可能更换命令,不能靠猜)
|
|
89
89
|
- FBR 的工具约束(FBR 无工具;主线工具另论)
|
|
@@ -91,14 +91,14 @@ Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并
|
|
|
91
91
|
|
|
92
92
|
并发草稿(可选):
|
|
93
93
|
|
|
94
|
-
- 若团队成员配置启用了 `fbr_effort`(默认值为 `3`),运行时会并发创建多份
|
|
94
|
+
- 若团队成员配置启用了 `fbr_effort`(默认值为 `3`),运行时会并发创建多份 `freshBootsReasoning` FBR 支线对话,让“初心自我”从不同角度独立推理,形成多份草稿供主线对话综合提炼。
|
|
95
95
|
- 这些草稿之间**没有稳定身份映射**,也没有必须遵循的先后顺序;主线对话应当把它们当作“多份匿名草稿”,而不是“固定的三个角色”。
|
|
96
96
|
- 若 `fbr_effort` 为 `0`,则跳过 FBR。
|
|
97
97
|
- 若 `fbr_effort` 大于 `100`,运行时会报错并终止启动流程(配置错误)。
|
|
98
98
|
|
|
99
99
|
阶段边界(关键):
|
|
100
100
|
|
|
101
|
-
-
|
|
101
|
+
- `freshBootsReasoning` 只是**发起动作**,不是“已完成决策”。
|
|
102
102
|
- 主线对话必须先进入等待态,直到该次 FBR 的回贴返回。
|
|
103
103
|
- 若 `fbr_effort = N`,主线必须等待全部 N 条回贴后再进入综合提炼;不得基于部分草稿提前定稿。
|
|
104
104
|
|
|
@@ -175,7 +175,7 @@ Dominds 的诉请(Tellask,`!?@...`)与扪心自问(FBR,`!?@self`)并
|
|
|
175
175
|
- 智能体启动应以真实对话转录展示,用户可展开查看细节。
|
|
176
176
|
- 建议在对话顶部提供一个可折叠区域,并带上清晰标签:
|
|
177
177
|
- “队友诉请(shell)”
|
|
178
|
-
- “FBR
|
|
178
|
+
- “FBR(`freshBootsReasoning`)”
|
|
179
179
|
- “智能体启动(Agent Priming)”
|
|
180
180
|
|
|
181
181
|
### 创建对话时可选择跳过(opt-out)
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
- EN: `Sideline dialog` | ZH: `支线对话`
|
|
43
43
|
- EN: `Taskdoc` | ZH: `差遣牒`
|
|
44
44
|
- EN: `Taskdoc package (*.tsk/)` | ZH: `任务包`
|
|
45
|
-
- EN:
|
|
45
|
+
- EN: `sessionSlug` | ZH: 会话 Slug(只写在 headline)
|
|
46
46
|
- EN: `CLI (entrypoint UI)` | ZH: `CLI(入口界面)`
|
|
47
47
|
- EN: `TUI (interactive UI)` | ZH: `TUI(交互前端)`
|
|
48
48
|
- EN: `WebUI (interactive UI)` | ZH: `WebUI(交互前端)`
|
|
@@ -82,19 +82,19 @@
|
|
|
82
82
|
|
|
83
83
|
#### Tellask headline(诉请头)
|
|
84
84
|
|
|
85
|
-
- EN: The first line of a Tellask block, starting with
|
|
86
|
-
- ZH: 诉请块的第一行,以
|
|
85
|
+
- EN: The first line of a Tellask block, starting with `tellaskSessionless({ targetAgentId: "<name>", tellaskContent: "..." })`.
|
|
86
|
+
- ZH: 诉请块的第一行,以 `tellaskSessionless({ targetAgentId: "<name>", tellaskContent: "..." })` 开头。
|
|
87
87
|
|
|
88
|
-
- EN: Additional lines starting with
|
|
89
|
-
- ZH: 同一诉请块内,后续以
|
|
88
|
+
- EN: Additional lines starting with `tellask* function call` in the same block are appended to the headline (they do not start a new Tellask).
|
|
89
|
+
- ZH: 同一诉请块内,后续以 `tellask* function call` 开头的行会被并入诉请头(不会开启新的诉请)。
|
|
90
90
|
|
|
91
|
-
- EN: Put structured directives such as
|
|
92
|
-
- ZH: 结构化指令(例如
|
|
91
|
+
- EN: Put structured directives such as `sessionSlug` in the headline.
|
|
92
|
+
- ZH: 结构化指令(例如 `sessionSlug`)必须放在诉请头中。
|
|
93
93
|
|
|
94
94
|
#### Tellask body(诉请正文)
|
|
95
95
|
|
|
96
|
-
- EN:
|
|
97
|
-
- ZH:
|
|
96
|
+
- EN: The `tellaskContent` argument in tellask-special function calls. It carries request context (steps, constraints, acceptance criteria, etc.).
|
|
97
|
+
- ZH: tellask-special 函数调用里的 `tellaskContent` 参数,用于承载诉请正文(步骤、上下文、约束、验收标准等)。
|
|
98
98
|
|
|
99
99
|
### 3 种诉请形态(Three Tellask Modes)
|
|
100
100
|
|
|
@@ -117,13 +117,13 @@
|
|
|
117
117
|
- EN (what “Back” means): “Back” refers to routing back to the tellasker dialog; it does **not** imply hierarchy/seniority.
|
|
118
118
|
- ZH(Back 的含义): “Back” 指回到诉请者对话,**不暗示上下级**。
|
|
119
119
|
|
|
120
|
-
- EN (typical carrier):
|
|
121
|
-
- ZH(典型载体):
|
|
120
|
+
- EN (typical carrier): `tellaskBack({ tellaskContent: "..." }) ...` (only available inside a sideline dialog)
|
|
121
|
+
- ZH(典型载体): `tellaskBack({ tellaskContent: "..." }) ...`(只在你处于支线对话语境时可用)
|
|
122
122
|
|
|
123
123
|
Example / 示例(概念):
|
|
124
124
|
|
|
125
|
-
- EN:
|
|
126
|
-
- ZH:
|
|
125
|
+
- EN: `tellaskBack({ tellaskContent: "..." }) I need you to confirm the file extensions: only .md, or also .txt/.rst?`
|
|
126
|
+
- ZH: `tellaskBack({ tellaskContent: "..." }) 我需要你确认要扫描的文件扩展名:只包含 .md 还是也包含 .txt/.rst?`
|
|
127
127
|
|
|
128
128
|
#### 2) Tellask Session(长线诉请)
|
|
129
129
|
|
|
@@ -135,8 +135,8 @@ Example / 示例(概念):
|
|
|
135
135
|
|
|
136
136
|
##### 会话 Slug(Session Slug)
|
|
137
137
|
|
|
138
|
-
- EN (directive; headline only):
|
|
139
|
-
- ZH(指令;仅 headline):
|
|
138
|
+
- EN (directive; headline only): `sessionSlug`
|
|
139
|
+
- ZH(指令;仅 headline): `sessionSlug`
|
|
140
140
|
|
|
141
141
|
- EN (parameter name concept): `tellaskSession` (parameter names are English-only; not i18n'd)
|
|
142
142
|
- ZH(参数名概念): `tellaskSession`(参数名只用英文,不做 i18n)
|
|
@@ -144,8 +144,8 @@ Example / 示例(概念):
|
|
|
144
144
|
- EN (slug format): short, stable, human-readable (e.g. `ws-schema-v2`, `tooling-read-file-ux`).
|
|
145
145
|
- ZH(slug 格式): 简短、稳定、可读(例如 `ws-schema-v2`、`tooling-read-file-ux`)。
|
|
146
146
|
|
|
147
|
-
- EN (placement rule): Put
|
|
148
|
-
- ZH(位置规则):
|
|
147
|
+
- EN (placement rule): Put `sessionSlug` in the Tellask headline; do not put it on a second line (it would become body text).
|
|
148
|
+
- ZH(位置规则): `sessionSlug` 必须写在诉请 headline 中;不要放到第二行(否则会进入 body 变成普通文本)。
|
|
149
149
|
|
|
150
150
|
##### 多人会话(Multi-Party Sessions)
|
|
151
151
|
|
|
@@ -161,11 +161,11 @@ Example / 示例(概念):
|
|
|
161
161
|
Example / 示例(概念):
|
|
162
162
|
|
|
163
163
|
```plain-text
|
|
164
|
-
|
|
164
|
+
tellask({ targetAgentId: "server", sessionSlug: "ws-schema-v2", tellaskContent: "..." })
|
|
165
165
|
!?Please confirm the WS packet schema versioning strategy and point to code anchors.
|
|
166
166
|
!?请确认 WS packet schema 的版本化策略,并指出相关代码锚点。
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
tellask({ targetAgentId: "webui", sessionSlug: "ws-schema-v2", tellaskContent: "..." })
|
|
169
169
|
!?Explain which missing fields cause UX degradation along the current WebUI subscribe/render path.
|
|
170
170
|
!?按当前 WebUI 订阅/渲染路径说明:哪些字段缺失会导致 UX 退化。
|
|
171
171
|
```
|
|
@@ -181,18 +181,18 @@ Example / 示例(概念):
|
|
|
181
181
|
- EN (key property): “Fresh/one-shot” is not only “new context”; it also means **no continuation semantics** — later Tellasks are not expected to resume the same session context.
|
|
182
182
|
- ZH(关键性质): “Fresh/一次性”不仅表示“新开上下文”,更表示:**没有后续续话语义** —— 后续诉请不应被期待能自动续接本次一次性诉请的上下文。
|
|
183
183
|
|
|
184
|
-
- EN (practical guidance): If you need a follow-up after a Fresh Tellask, treat it as a new request and restate necessary context; if you need iterative follow-ups, use `Tellask Session` with
|
|
185
|
-
- ZH(实践建议): 如果你在一次性诉请后还要追问,应当把追问当作全新请求并补齐必要上下文;如果你需要可迭代的追问/推进,请使用 `Tellask Session` 并提供
|
|
184
|
+
- EN (practical guidance): If you need a follow-up after a Fresh Tellask, treat it as a new request and restate necessary context; if you need iterative follow-ups, use `Tellask Session` with `sessionSlug`.
|
|
185
|
+
- ZH(实践建议): 如果你在一次性诉请后还要追问,应当把追问当作全新请求并补齐必要上下文;如果你需要可迭代的追问/推进,请使用 `Tellask Session` 并提供 `sessionSlug`。
|
|
186
186
|
|
|
187
187
|
Example / 示例(概念):
|
|
188
188
|
|
|
189
|
-
- EN:
|
|
190
|
-
- ZH:
|
|
189
|
+
- EN: `tellaskSessionless({ targetAgentId: "shell-specialist", tellaskContent: "Please run a single build and paste the failure output." })`
|
|
190
|
+
- ZH: `tellaskSessionless({ targetAgentId: "shell-specialist", tellaskContent: "请运行一次构建并回贴失败信息。" })`
|
|
191
191
|
|
|
192
192
|
### 系统提示可复用的一句话(One-Sentence Summary for System Prompts)
|
|
193
193
|
|
|
194
|
-
- EN: `TellaskBack` asks the tellasker dialog for clarification; `Tellask Session` uses
|
|
195
|
-
- ZH: `TellaskBack` 回问诉请者澄清;`Tellask Session` 用
|
|
194
|
+
- EN: `TellaskBack` asks the tellasker dialog for clarification; `Tellask Session` uses `sessionSlug` for resumable multi-turn work; `Fresh Tellask` is one-shot and non-resumable.
|
|
195
|
+
- ZH: `TellaskBack` 回问诉请者澄清;`Tellask Session` 用 `sessionSlug` 进行可续用多轮协作;`Fresh Tellask` 是一次性且不可恢复。
|
|
196
196
|
|
|
197
197
|
### 为何保留 `!` 前缀?(Why keep the `!` prefix?)
|
|
198
198
|
|
|
@@ -260,8 +260,8 @@ Example / 示例(概念):
|
|
|
260
260
|
|
|
261
261
|
### Q4H (Question for Human) (向人类的诉请)
|
|
262
262
|
|
|
263
|
-
- EN: A mechanism for raising questions to humans, initiated via
|
|
264
|
-
- ZH: 一种通过
|
|
263
|
+
- EN: A mechanism for raising questions to humans, initiated via `!?askHuman()`, which suspends dialog progression until the human responds. **Always use "Q4H" (capital Q, numeral 4, capital H); never use "Q-for-H", "QforH", or "4-hour".**
|
|
264
|
+
- ZH: 一种通过 `!?askHuman()` 向人类提问的机制,暂停对话进度直到人类响应。**统一使用"Q4H"(大写 Q、数字 4、大写 H);禁止使用"Q-for-H"、"QforH"、"每四小时"等变体。**
|
|
265
265
|
|
|
266
266
|
### Fresh Boots Reasoning(扪心自问)
|
|
267
267
|
|
|
@@ -402,16 +402,16 @@ Example / 示例(概念):
|
|
|
402
402
|
- EN: The implementation may still use the internal labels **Type A/B/C** to classify teammate-tellask patterns.
|
|
403
403
|
- ZH: 实现层仍可能使用 **Type A/B/C** 作为队友诉请形态的内部分类。
|
|
404
404
|
|
|
405
|
-
- EN: Type A: TellaskBack call (a subdialog asking back to its tellasker dialog); primary syntax
|
|
406
|
-
- ZH: Type A:回问诉请(子对话回问其诉请者对话);主语法
|
|
405
|
+
- EN: Type A: TellaskBack call (a subdialog asking back to its tellasker dialog); primary syntax `tellaskBack({ tellaskContent: "..." })` (NO `sessionSlug`).
|
|
406
|
+
- ZH: Type A:回问诉请(子对话回问其诉请者对话);主语法 `tellaskBack({ tellaskContent: "..." })`(不带 `sessionSlug`)。
|
|
407
407
|
|
|
408
|
-
- EN: Type B: registered subdialog call (resumable) keyed by `
|
|
409
|
-
- ZH: Type B:registered subdialog call(可恢复),用 `
|
|
408
|
+
- EN: Type B: registered subdialog call (resumable) keyed by `agentIdsessionSlug`.
|
|
409
|
+
- ZH: Type B:registered subdialog call(可恢复),用 `agentIdsessionSlug` 作为 registry key。
|
|
410
410
|
|
|
411
411
|
- EN: Type C: transient subdialog call (one-shot), not registered.
|
|
412
412
|
- ZH: Type C:transient subdialog call(一次性),不注册到 registry。
|
|
413
413
|
|
|
414
|
-
###
|
|
414
|
+
### `sessionSlug` / 会话 Slug 指令
|
|
415
415
|
|
|
416
|
-
- EN: Resumable registered subdialogs use
|
|
417
|
-
- ZH: 可恢复的注册子对话使用 Tellask headline 内的
|
|
416
|
+
- EN: Resumable registered subdialogs use `sessionSlug` in the Tellask headline.
|
|
417
|
+
- ZH: 可恢复的注册子对话使用 Tellask headline 内的 `sessionSlug`。
|
|
@@ -27,7 +27,7 @@ For FBR policy, runtime:
|
|
|
27
27
|
- uses `buildFbrSystemPrompt(...)` (no tool instructions)
|
|
28
28
|
- injects a separate `buildNoToolsNotice(...)`
|
|
29
29
|
- forces `effectiveAgentTools = []`
|
|
30
|
-
- forces `tellaskPolicy =
|
|
30
|
+
- forces `tellaskPolicy = deny_all`
|
|
31
31
|
- forces `allowFunctionCalls = false`
|
|
32
32
|
- applies `fbr_model_params` override when configured
|
|
33
33
|
|
|
@@ -39,7 +39,7 @@ For FBR policy, runtime:
|
|
|
39
39
|
|
|
40
40
|
Both streaming and non-streaming paths call `resolveDrivePolicyViolationKind(...)` to detect:
|
|
41
41
|
|
|
42
|
-
- disallowed
|
|
42
|
+
- disallowed tellask-special function calls (FBR technical mode disallows all function calls)
|
|
43
43
|
- disallowed tool/function calls (FBR disallows all)
|
|
44
44
|
|
|
45
45
|
On violation, runtime emits `formatDomindsNoteFbrToollessViolation(...)` consistently.
|
|
@@ -51,7 +51,7 @@ Before generation, runtime runs `validateDrivePolicyInvariants(...)` and fail-fa
|
|
|
51
51
|
- system prompt must exactly equal `buildFbrSystemPrompt(...)`
|
|
52
52
|
- `effectiveAgentTools` must be empty
|
|
53
53
|
- `allowFunctionCalls` must be `false`
|
|
54
|
-
- `tellaskPolicy` must be `
|
|
54
|
+
- `tellaskPolicy` must be `deny_all`
|
|
55
55
|
- `prependedContextMessages` must contain exactly one `buildNoToolsNotice(...)`
|
|
56
56
|
|
|
57
57
|
If any check fails, runtime throws `FBR policy isolation violation`, preventing global tool-manual/tool-prompt paths from leaking into FBR.
|
|
@@ -74,4 +74,4 @@ If any check fails, runtime throws `FBR policy isolation violation`, preventing
|
|
|
74
74
|
- FBR system prompt has no tool instructions.
|
|
75
75
|
- Tool-related wording appears only in the separate `buildNoToolsNotice(...)`.
|
|
76
76
|
- FBR/non-FBR context assembly flow is structurally identical; only policy fields differ.
|
|
77
|
-
- Any FBR tool/function call or
|
|
77
|
+
- Any FBR tool/function call or tellask-special function call is hard-rejected with explicit feedback.
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
- 切换到 `buildFbrSystemPrompt(...)`(不含工具说明)
|
|
28
28
|
- 注入单独 `buildNoToolsNotice(...)`
|
|
29
29
|
- 强制 `effectiveAgentTools = []`
|
|
30
|
-
- 强制 `tellaskPolicy =
|
|
30
|
+
- 强制 `tellaskPolicy = deny_all`
|
|
31
31
|
- 强制 `allowFunctionCalls = false`
|
|
32
32
|
- 在需要时对成员应用 `fbr_model_params` 覆盖
|
|
33
33
|
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
|
|
40
40
|
流式与非流式两条路径都调用 `resolveDrivePolicyViolationKind(...)`:
|
|
41
41
|
|
|
42
|
-
- 违规 tellask
|
|
42
|
+
- 违规 tellask-special 函数调用(FBR 技术模式下禁止全部函数调用)
|
|
43
43
|
- 违规 function/tool call(FBR 禁止)
|
|
44
44
|
|
|
45
45
|
一旦违规,统一产出 `formatDomindsNoteFbrToollessViolation(...)`,保持用户反馈与日志语义一致。
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
- system prompt 必须严格等于 `buildFbrSystemPrompt(...)`
|
|
52
52
|
- `effectiveAgentTools` 必须为空
|
|
53
53
|
- `allowFunctionCalls` 必须为 `false`
|
|
54
|
-
- `tellaskPolicy` 必须为 `
|
|
54
|
+
- `tellaskPolicy` 必须为 `deny_all`
|
|
55
55
|
- `prependedContextMessages` 必须且仅能包含一条 `buildNoToolsNotice(...)`
|
|
56
56
|
|
|
57
57
|
若任一条件不满足,运行时直接抛出 `FBR policy isolation violation`,防止全局工具手册/工具提示路径回流污染 FBR。
|
|
@@ -74,4 +74,4 @@
|
|
|
74
74
|
- FBR system prompt 不包含工具说明。
|
|
75
75
|
- “无工具”文案仅来自独立 `buildNoToolsNotice(...)`。
|
|
76
76
|
- FBR 与非 FBR 的上下文装配主流程一致,差异只来自策略字段。
|
|
77
|
-
- FBR 中任意 tool/function call
|
|
77
|
+
- FBR 中任意 tool/function call 或 tellask-special 函数调用都被运行时硬拒绝并给出明确回执。
|
package/dist/docs/fbr.md
CHANGED
|
@@ -9,8 +9,8 @@ Chinese version: [中文版](./fbr.zh.md)
|
|
|
9
9
|
**Fresh Boots Reasoning (FBR)** is a Dominds mechanism for “reasoning again from a clean slate” on a bounded sub-problem,
|
|
10
10
|
then reporting back to the mainline dialog.
|
|
11
11
|
|
|
12
|
-
In Dominds, FBR is triggered
|
|
13
|
-
|
|
12
|
+
In Dominds, FBR is triggered by the dedicated function tool `freshBootsReasoning({ tellaskContent: "..." })`.
|
|
13
|
+
The mechanism is the runtime-enforced contract applied to the spawned sideline dialog(s).
|
|
14
14
|
|
|
15
15
|
## 2. Design principles and tradeoffs
|
|
16
16
|
|
|
@@ -24,7 +24,7 @@ predictable, FBR sideline dialogs must be:
|
|
|
24
24
|
|
|
25
25
|
### 2.2 No silent failure
|
|
26
26
|
|
|
27
|
-
If FBR is disabled by configuration (e.g. `fbr-effort: 0`), the runtime MUST reject
|
|
27
|
+
If FBR is disabled by configuration (e.g. `fbr-effort: 0`), the runtime MUST reject `freshBootsReasoning({ tellaskContent: "..." })` loudly and clearly. A
|
|
28
28
|
silent ignore is worse than an error.
|
|
29
29
|
|
|
30
30
|
### 2.3 Many-shot reasoning, not “multi-agent collaboration”
|
|
@@ -32,28 +32,25 @@ silent ignore is worse than an error.
|
|
|
32
32
|
`fbr-effort` is for producing multiple _independent_ reasoning samples in parallel. The mainline dialog is responsible
|
|
33
33
|
for synthesis; FBR sidelines do not coordinate with each other.
|
|
34
34
|
|
|
35
|
-
## 3. User syntax
|
|
35
|
+
## 3. User syntax
|
|
36
36
|
|
|
37
37
|
### 3.1 Trigger forms
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
Use the dedicated FBR form:
|
|
40
40
|
|
|
41
|
-
-
|
|
42
|
-
- **Rare (resumable)**: `!?@self !tellaskSession <tellaskSession>`
|
|
41
|
+
- `freshBootsReasoning({ tellaskContent: "..." })`
|
|
43
42
|
|
|
44
43
|
Notes:
|
|
45
44
|
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
- Resumability comes from `!tellaskSession`, not from `@self`.
|
|
45
|
+
- FBR does not use `targetAgentId`, `sessionSlug`, or `mentionList`.
|
|
46
|
+
- `tellaskContent` is the authoritative task context for the FBR sideline.
|
|
49
47
|
|
|
50
48
|
### 3.2 Scope
|
|
51
49
|
|
|
52
|
-
This document specifies the FBR mechanism and its
|
|
50
|
+
This document specifies the FBR mechanism and its `freshBootsReasoning({ tellaskContent: "..." })` contract. General teammate Tellasks (`tellaskSessionless({ targetAgentId: "<teammate>", tellaskContent: "..." })`) follow
|
|
53
51
|
the taxonomy and capability model in [`dialog-system.md`](./dialog-system.md).
|
|
54
52
|
|
|
55
|
-
If you want a “fresh” sideline dialog that still has tools,
|
|
56
|
-
is granted the needed toolsets (or use the general `!?@<agentId>` mechanism intentionally).
|
|
53
|
+
If you want a “fresh” sideline dialog that still has tools, use an explicit teammate identity via the general teammate Tellask flow.
|
|
57
54
|
|
|
58
55
|
## 4. Runtime contract (normative)
|
|
59
56
|
|
|
@@ -61,20 +58,17 @@ This section uses MUST / MUST NOT / SHOULD / MAY for requirements.
|
|
|
61
58
|
|
|
62
59
|
### 4.1 Isolation and context
|
|
63
60
|
|
|
64
|
-
When driving an FBR sideline dialog created by
|
|
61
|
+
When driving an FBR sideline dialog created by `freshBootsReasoning({ tellaskContent: "..." })`, runtime MUST enforce:
|
|
65
62
|
|
|
66
63
|
- **No dependency on tellasker dialog history**
|
|
67
64
|
- the tellaskee MUST NOT assume access to the tellasker’s mainline/sideline history
|
|
68
65
|
- the tellaskee MUST treat the tellask body as the primary, authoritative task context
|
|
69
|
-
- for the resumable `!tellaskSession` form, the tellaskee MAY use the sideline’s _own_ `tellaskSession` history as
|
|
70
|
-
explicit context
|
|
71
66
|
- **No tool-based context fetch**
|
|
72
67
|
- no reading files / running commands / browsing
|
|
73
68
|
- no accessing Memory or rtws (runtime workspace) state
|
|
74
69
|
|
|
75
70
|
Intuition: “fresh boots” means “fresh relative to the caller thread”, not “ignores baseline system rules”. Runtime may
|
|
76
|
-
still inject baseline policy/safety/formatting context, but the tellask body remains the authority
|
|
77
|
-
the sideline’s own resumable history).
|
|
71
|
+
still inject baseline policy/safety/formatting context, but the tellask body remains the authority.
|
|
78
72
|
|
|
79
73
|
### 4.2 Tool-less (prompt + technical enforcement)
|
|
80
74
|
|
|
@@ -90,7 +84,7 @@ The FBR system prompt MUST communicate (wording may vary, meaning must hold):
|
|
|
90
84
|
- this is an FBR sideline dialog; the tellask body is the primary context
|
|
91
85
|
- do not assume access to tellasker dialog history
|
|
92
86
|
- if critical context is missing, list what is missing and why it blocks reasoning
|
|
93
|
-
-
|
|
87
|
+
- `tellaskBack({ tellaskContent: "..." })` is allowed only when you must clarify critical missing context; otherwise do not emit any tellasks
|
|
94
88
|
|
|
95
89
|
And: the **system prompt body MUST NOT include tool instructions** (no tool lists, allowlists, example commands, “how to
|
|
96
90
|
use tools”, etc.).
|
|
@@ -113,16 +107,16 @@ Under no circumstances should the FBR sideline dialog see any tool definitions.
|
|
|
113
107
|
|
|
114
108
|
#### 4.2.3 The LLM request MUST be “zero tools”
|
|
115
109
|
|
|
116
|
-
The LLM request for an
|
|
110
|
+
The LLM request for an FBR sideline dialog (`freshBootsReasoning`) MUST have **zero tools available**:
|
|
117
111
|
|
|
118
112
|
- the request payload must not include tool/function definitions (effective tool list must be empty)
|
|
119
113
|
- provider tool-calling / function-calling modes must not be enabled
|
|
120
114
|
|
|
121
115
|
If the model attempts a tool/function call anyway, runtime MUST hard-reject it (see 4.5).
|
|
122
116
|
|
|
123
|
-
### 4.3 Tellask restriction: only
|
|
117
|
+
### 4.3 Tellask restriction: only `tellaskBack({ tellaskContent: "..." })`
|
|
124
118
|
|
|
125
|
-
FBR sideline dialogs MUST NOT issue teammate Tellasks (including
|
|
119
|
+
FBR sideline dialogs MUST NOT issue teammate Tellasks (including `askHuman({ tellaskContent: "..." })`). The only exception is `tellaskBack({ tellaskContent: "..." })`:
|
|
126
120
|
|
|
127
121
|
- sideline-only TellaskBack to the upstream tellasker dialog
|
|
128
122
|
- allowed only when critical context must be clarified
|
|
@@ -133,14 +127,14 @@ FBR sideline dialogs MUST NOT issue teammate Tellasks (including `!?@human`). Th
|
|
|
133
127
|
An FBR sideline dialog should produce a compact artifact that is easy for the tellasker to integrate. Suggested shape:
|
|
134
128
|
|
|
135
129
|
1. **Conclusion**
|
|
136
|
-
2. **Reasoning** (grounded in the tellask body
|
|
130
|
+
2. **Reasoning** (grounded in the tellask body)
|
|
137
131
|
3. **Assumptions** (explicitly sourced: body vs session history)
|
|
138
132
|
4. **Unknowns / missing context**
|
|
139
133
|
5. **Next steps for mainline** (where tools/teammates may exist)
|
|
140
134
|
|
|
141
135
|
### 4.5 Violations and errors (loud + debuggable)
|
|
142
136
|
|
|
143
|
-
- Any disallowed tellask (
|
|
137
|
+
- Any disallowed tellask (anything other than `tellaskBack({ tellaskContent: "..." })`) or any tool/function call attempt inside FBR MUST be treated as a hard
|
|
144
138
|
violation.
|
|
145
139
|
- The runtime MUST return a clear, user-visible error, and MUST log/emit a debuggable reason string (no silent swallow).
|
|
146
140
|
|
|
@@ -150,25 +144,22 @@ An FBR sideline dialog should produce a compact artifact that is easy for the te
|
|
|
150
144
|
|
|
151
145
|
- Type: integer
|
|
152
146
|
- Default: `3`
|
|
153
|
-
- `0`: disable
|
|
154
|
-
- `1..100`: spawn N FBR sideline dialogs per
|
|
147
|
+
- `0`: disable `freshBootsReasoning({ tellaskContent: "..." })` FBR for that member (runtime MUST reject `freshBootsReasoning({ tellaskContent: "..." })` clearly)
|
|
148
|
+
- `1..100`: spawn N FBR sideline dialogs per `freshBootsReasoning({ tellaskContent: "..." })`
|
|
155
149
|
- `> 100` / non-integer / negative: validation error (reject; no clamping)
|
|
156
150
|
|
|
157
151
|
When `fbr-effort = N`:
|
|
158
152
|
|
|
159
|
-
- runtime expands a single
|
|
153
|
+
- runtime expands a single `freshBootsReasoning({ tellaskContent: "..." })` into **N parallel tool-less FBR sideline dialogs**
|
|
160
154
|
- each sideline receives the same tellask body and the same tool-less constraints
|
|
161
155
|
- mainline receives all N responses; **ordering must not be relied on** (completion order is fine)
|
|
162
156
|
|
|
163
|
-
For resumable `!?@self !tellaskSession <tellaskSession>` with `N > 1`, runtime MUST derive **distinct** session keys so
|
|
164
|
-
parallel sidelines do not share history (recommended: `<tellaskSession>.fbr-<i>`).
|
|
165
|
-
|
|
166
157
|
## 6. FBR-only model overrides: `fbr_model_params`
|
|
167
158
|
|
|
168
159
|
`fbr_model_params` overrides model params **only when driving FBR sideline dialogs**:
|
|
169
160
|
|
|
170
161
|
- Schema: identical to `model_params` (documented by `model_param_options` in `dominds/main/llm/defaults.yaml`)
|
|
171
|
-
- Scope:
|
|
162
|
+
- Scope: `freshBootsReasoning({ tellaskContent: "..." })` only
|
|
172
163
|
- Merge: recommended deep-merge on top of the member’s effective `model_params`
|
|
173
164
|
- `max_tokens` may be configured as top-level `max_tokens` or `general.max_tokens` (pick one; do not set both)
|
|
174
165
|
|
|
@@ -179,38 +170,25 @@ parallel sidelines do not share history (recommended: `<tellaskSession>.fbr-<i>`
|
|
|
179
170
|
Bad (depends on external context/tools):
|
|
180
171
|
|
|
181
172
|
```text
|
|
182
|
-
|
|
183
|
-
Find the bug and fix it.
|
|
173
|
+
freshBootsReasoning({ tellaskContent: "Find the bug and fix it." })
|
|
184
174
|
```
|
|
185
175
|
|
|
186
176
|
Good (puts the actual context into the body):
|
|
187
177
|
|
|
188
178
|
```text
|
|
189
|
-
|
|
190
|
-
You are doing tool-less FBR. Use ONLY the text below.
|
|
191
|
-
|
|
192
|
-
Goal: identify the most likely root cause and propose 2–3 viable fixes.
|
|
193
|
-
|
|
194
|
-
Observed:
|
|
195
|
-
- Clicking “Run” sometimes freezes the UI for ~10s.
|
|
196
|
-
|
|
197
|
-
Constraint:
|
|
198
|
-
- We cannot change the backend protocol.
|
|
199
|
-
|
|
200
|
-
Evidence:
|
|
201
|
-
<paste relevant logs / code / stack trace here>
|
|
179
|
+
freshBootsReasoning({ tellaskContent: "You are doing tool-less FBR. Use ONLY the text below.\n\nGoal: identify the most likely root cause and propose 2–3 viable fixes.\n\nObserved:\n- Clicking “Run” sometimes freezes the UI for ~10s.\n\nConstraint:\n- We cannot change the backend protocol.\n\nEvidence:\n<paste relevant logs / code / stack trace here>" })
|
|
202
180
|
```
|
|
203
181
|
|
|
204
182
|
### 7.2 `.minds/team.yaml`
|
|
205
183
|
|
|
206
184
|
```yaml
|
|
207
185
|
member_defaults:
|
|
208
|
-
# Spawn 3 tool-less FBR sideline dialogs per
|
|
186
|
+
# Spawn 3 tool-less FBR sideline dialogs per `freshBootsReasoning({ tellaskContent: "..." })` by default.
|
|
209
187
|
fbr-effort: 3
|
|
210
188
|
|
|
211
189
|
members:
|
|
212
190
|
ux:
|
|
213
|
-
# Spawn 5 independent reasoning samples per
|
|
191
|
+
# Spawn 5 independent reasoning samples per `freshBootsReasoning({ tellaskContent: "..." })`.
|
|
214
192
|
fbr-effort: 5
|
|
215
193
|
|
|
216
194
|
# Make FBR more exploratory without changing mainline behavior.
|
|
@@ -224,14 +202,14 @@ members:
|
|
|
224
202
|
|
|
225
203
|
## 8. Relationship to general sideline dialogs
|
|
226
204
|
|
|
227
|
-
-
|
|
228
|
-
- General
|
|
229
|
-
- If you need “same persona + tools” in a sideline,
|
|
205
|
+
- `freshBootsReasoning({ tellaskContent: "..." })` is a special case: tool-less, body-first, tellask-restricted, optionally fanned out via `fbr-effort`.
|
|
206
|
+
- General `tellaskSessionless({ targetAgentId: "<teammate>", tellaskContent: "..." })` sidelines remain fully capable (tools/toolsets as configured).
|
|
207
|
+
- If you need “same persona + tools” in a sideline, use an explicit teammate identity (`tellask` / `tellaskSessionless`).
|
|
230
208
|
|
|
231
209
|
## 9. Acceptance checklist
|
|
232
210
|
|
|
233
|
-
-
|
|
211
|
+
- `freshBootsReasoning({ tellaskContent: "..." })` triggers tool-less FBR; the LLM request is technically “zero tools”.
|
|
234
212
|
- The system prompt body contains no tool instructions; tool-related wording comes only from the separate fixed notice.
|
|
235
|
-
- FBR sidelines cannot issue teammate Tellasks; only
|
|
213
|
+
- FBR sidelines cannot issue teammate Tellasks; only `tellaskBack({ tellaskContent: "..." })` is allowed when necessary.
|
|
236
214
|
- `fbr-effort` defaults to `3`, accepts `0..100`, rejects invalid values, and fails loudly when disabled.
|
|
237
215
|
- `fbr_model_params` applies only to FBR and follows the same schema/merge intent as `model_params`.
|