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.
- package/dist/access-control.js +2 -2
- package/dist/agent-priming.js +826 -92
- package/dist/cli/read.js +406 -12
- package/dist/dialog.js +4 -0
- package/dist/docs/design.md +1 -0
- package/dist/docs/design.zh.md +1 -0
- package/dist/docs/dialog-system.md +12 -7
- package/dist/docs/dialog-system.zh.md +7 -3
- package/dist/docs/dominds-agent-priming.md +10 -1
- package/dist/docs/dominds-agent-priming.zh.md +9 -1
- package/dist/docs/dominds-terminology.md +8 -8
- package/dist/docs/fbr-implementation.md +77 -0
- package/dist/docs/fbr-implementation.zh.md +77 -0
- package/dist/docs/fbr.md +142 -141
- package/dist/docs/fbr.zh.md +129 -123
- package/dist/docs/keep-going.zh.md +162 -0
- package/dist/docs/showing-by-doing.md +208 -0
- package/dist/docs/showing-by-doing.zh.md +177 -0
- package/dist/docs/tellask-collab.md +250 -0
- package/dist/docs/tellask-collab.zh.md +254 -0
- package/dist/docs/txt-editing-tools.md +2 -2
- package/dist/docs/txt-editing-tools.zh.md +2 -2
- package/dist/llm/defaults.yaml +82 -4
- package/dist/llm/driver.js +280 -104
- package/dist/llm/gen/codex.js +49 -2
- package/dist/log.js +385 -30
- package/dist/mcp/supervisor.js +113 -40
- package/dist/minds/builtin/pangu/persona.zh.md +2 -2
- package/dist/minds/load.js +49 -284
- package/dist/minds/minds-i18n.js +2 -2
- package/dist/minds/promptdocs.js +263 -0
- package/dist/minds/system-prompt-parts.js +231 -0
- package/dist/minds/system-prompt.js +190 -223
- package/dist/persistence.js +66 -1
- package/dist/server/websocket-handler.js +14 -0
- package/dist/shared/diligence.js +40 -6
- package/dist/shared/utils/inter-dialog-format.js +3 -5
- package/dist/showing-by-doing.js +34 -31
- package/dist/snippets/README.en.md +3 -0
- package/dist/static/assets/{_baseUniq-C9vbtHF9.js → _baseUniq-C7IpU2Uk.js} +2 -2
- package/dist/static/assets/{_baseUniq-C9vbtHF9.js.map → _baseUniq-C7IpU2Uk.js.map} +1 -1
- package/dist/static/assets/{arc-hulXG01i.js → arc-1bhQqjON.js} +2 -2
- package/dist/static/assets/{arc-hulXG01i.js.map → arc-1bhQqjON.js.map} +1 -1
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-DdLIAMT5.js → architectureDiagram-VXUJARFQ-CkEi1QpB.js} +6 -6
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-DdLIAMT5.js.map → architectureDiagram-VXUJARFQ-CkEi1QpB.js.map} +1 -1
- package/dist/static/assets/{blockDiagram-VD42YOAC-DACsx66C.js → blockDiagram-VD42YOAC-DaBQ5-pY.js} +7 -7
- package/dist/static/assets/{blockDiagram-VD42YOAC-DACsx66C.js.map → blockDiagram-VD42YOAC-DaBQ5-pY.js.map} +1 -1
- package/dist/static/assets/{c4Diagram-YG6GDRKO-Cd5xZlLy.js → c4Diagram-YG6GDRKO-ChUgpgkP.js} +3 -3
- package/dist/static/assets/{c4Diagram-YG6GDRKO-Cd5xZlLy.js.map → c4Diagram-YG6GDRKO-ChUgpgkP.js.map} +1 -1
- package/dist/static/assets/{channel-NQehis0Z.js → channel-CxvmwllM.js} +2 -2
- package/dist/static/assets/{channel-NQehis0Z.js.map → channel-CxvmwllM.js.map} +1 -1
- package/dist/static/assets/{chunk-4BX2VUAB-DZDPl76b.js → chunk-4BX2VUAB-CKsrU2yk.js} +2 -2
- package/dist/static/assets/{chunk-4BX2VUAB-DZDPl76b.js.map → chunk-4BX2VUAB-CKsrU2yk.js.map} +1 -1
- package/dist/static/assets/{chunk-55IACEB6-CFSRDUbl.js → chunk-55IACEB6-BAau9SFt.js} +2 -2
- package/dist/static/assets/{chunk-55IACEB6-CFSRDUbl.js.map → chunk-55IACEB6-BAau9SFt.js.map} +1 -1
- package/dist/static/assets/{chunk-B4BG7PRW-BqQQ9M_z.js → chunk-B4BG7PRW--IiJ7W1m.js} +5 -5
- package/dist/static/assets/{chunk-B4BG7PRW-BqQQ9M_z.js.map → chunk-B4BG7PRW--IiJ7W1m.js.map} +1 -1
- package/dist/static/assets/{chunk-DI55MBZ5-FiFzz1Gh.js → chunk-DI55MBZ5-B83KrPQj.js} +4 -4
- package/dist/static/assets/{chunk-DI55MBZ5-FiFzz1Gh.js.map → chunk-DI55MBZ5-B83KrPQj.js.map} +1 -1
- package/dist/static/assets/{chunk-FMBD7UC4-DqqtCyWK.js → chunk-FMBD7UC4-BlDXzeza.js} +2 -2
- package/dist/static/assets/{chunk-FMBD7UC4-DqqtCyWK.js.map → chunk-FMBD7UC4-BlDXzeza.js.map} +1 -1
- package/dist/static/assets/{chunk-QN33PNHL-F0laQQ-J.js → chunk-QN33PNHL-B596W_v7.js} +2 -2
- package/dist/static/assets/{chunk-QN33PNHL-F0laQQ-J.js.map → chunk-QN33PNHL-B596W_v7.js.map} +1 -1
- package/dist/static/assets/{chunk-QZHKN3VN-CWhEZPaV.js → chunk-QZHKN3VN-UBBCxgBb.js} +2 -2
- package/dist/static/assets/{chunk-QZHKN3VN-CWhEZPaV.js.map → chunk-QZHKN3VN-UBBCxgBb.js.map} +1 -1
- package/dist/static/assets/{chunk-TZMSLE5B-Dx9cnwUy.js → chunk-TZMSLE5B-D-wCX2wJ.js} +2 -2
- package/dist/static/assets/{chunk-TZMSLE5B-Dx9cnwUy.js.map → chunk-TZMSLE5B-D-wCX2wJ.js.map} +1 -1
- package/dist/static/assets/{classDiagram-2ON5EDUG-Dp-dyEGy.js → classDiagram-2ON5EDUG-DvtmzPcu.js} +6 -6
- package/dist/static/assets/{classDiagram-2ON5EDUG-Dp-dyEGy.js.map → classDiagram-2ON5EDUG-DvtmzPcu.js.map} +1 -1
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-Dp-dyEGy.js → classDiagram-v2-WZHVMYZB-DvtmzPcu.js} +6 -6
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-Dp-dyEGy.js.map → classDiagram-v2-WZHVMYZB-DvtmzPcu.js.map} +1 -1
- package/dist/static/assets/{clone-C6mKvxs5.js → clone-DgJ0ZR-k.js} +2 -2
- package/dist/static/assets/{clone-C6mKvxs5.js.map → clone-DgJ0ZR-k.js.map} +1 -1
- package/dist/static/assets/{cose-bilkent-S5V4N54A-Dbwh3GoX.js → cose-bilkent-S5V4N54A-DXMyFQvy.js} +2 -2
- package/dist/static/assets/{cose-bilkent-S5V4N54A-Dbwh3GoX.js.map → cose-bilkent-S5V4N54A-DXMyFQvy.js.map} +1 -1
- package/dist/static/assets/{dagre-6UL2VRFP-BD_6e0Uk.js → dagre-6UL2VRFP-BdaUG-j_.js} +7 -7
- package/dist/static/assets/{dagre-6UL2VRFP-BD_6e0Uk.js.map → dagre-6UL2VRFP-BdaUG-j_.js.map} +1 -1
- package/dist/static/assets/{diagram-PSM6KHXK-BWt7Q59-.js → diagram-PSM6KHXK-NLiqKBzn.js} +7 -7
- package/dist/static/assets/{diagram-PSM6KHXK-BWt7Q59-.js.map → diagram-PSM6KHXK-NLiqKBzn.js.map} +1 -1
- package/dist/static/assets/{diagram-QEK2KX5R-D0BvBR_a.js → diagram-QEK2KX5R-D-0fyvY_.js} +6 -6
- package/dist/static/assets/{diagram-QEK2KX5R-D0BvBR_a.js.map → diagram-QEK2KX5R-D-0fyvY_.js.map} +1 -1
- package/dist/static/assets/{diagram-S2PKOQOG-D8uRdKXp.js → diagram-S2PKOQOG-BQ_FU59m.js} +6 -6
- package/dist/static/assets/{diagram-S2PKOQOG-D8uRdKXp.js.map → diagram-S2PKOQOG-BQ_FU59m.js.map} +1 -1
- package/dist/static/assets/{erDiagram-Q2GNP2WA-CQoifjFq.js → erDiagram-Q2GNP2WA-DyftKeuC.js} +5 -5
- package/dist/static/assets/{erDiagram-Q2GNP2WA-CQoifjFq.js.map → erDiagram-Q2GNP2WA-DyftKeuC.js.map} +1 -1
- package/dist/static/assets/{flowDiagram-NV44I4VS-CGhdeaG8.js → flowDiagram-NV44I4VS-9SGefONA.js} +6 -6
- package/dist/static/assets/{flowDiagram-NV44I4VS-CGhdeaG8.js.map → flowDiagram-NV44I4VS-9SGefONA.js.map} +1 -1
- package/dist/static/assets/{ganttDiagram-JELNMOA3-D8W0wb9H.js → ganttDiagram-JELNMOA3-k_WLhf-r.js} +3 -3
- package/dist/static/assets/{ganttDiagram-JELNMOA3-D8W0wb9H.js.map → ganttDiagram-JELNMOA3-k_WLhf-r.js.map} +1 -1
- package/dist/static/assets/{gitGraphDiagram-NY62KEGX-ChHni_jP.js → gitGraphDiagram-NY62KEGX-3eoLlCOY.js} +7 -7
- package/dist/static/assets/{gitGraphDiagram-NY62KEGX-ChHni_jP.js.map → gitGraphDiagram-NY62KEGX-3eoLlCOY.js.map} +1 -1
- package/dist/static/assets/{graph-BWoi_FgC.js → graph-vUevIs4s.js} +3 -3
- package/dist/static/assets/{graph-BWoi_FgC.js.map → graph-vUevIs4s.js.map} +1 -1
- package/dist/static/assets/{index-th_praGg.js → index-BNBG2CE1.js} +399 -68
- package/dist/static/assets/index-BNBG2CE1.js.map +1 -0
- package/dist/static/assets/{infoDiagram-WHAUD3N6-B_XKKZTV.js → infoDiagram-WHAUD3N6-CwEhVxkU.js} +5 -5
- package/dist/static/assets/{infoDiagram-WHAUD3N6-B_XKKZTV.js.map → infoDiagram-WHAUD3N6-CwEhVxkU.js.map} +1 -1
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-ChGuQ6T9.js → journeyDiagram-XKPGCS4Q-Dtdq4G4Q.js} +5 -5
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-ChGuQ6T9.js.map → journeyDiagram-XKPGCS4Q-Dtdq4G4Q.js.map} +1 -1
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-BjWe623u.js → kanban-definition-3W4ZIXB7-Bli-AycJ.js} +3 -3
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-BjWe623u.js.map → kanban-definition-3W4ZIXB7-Bli-AycJ.js.map} +1 -1
- package/dist/static/assets/{layout-BPyT310w.js → layout-CGlA8c09.js} +5 -5
- package/dist/static/assets/{layout-BPyT310w.js.map → layout-CGlA8c09.js.map} +1 -1
- package/dist/static/assets/{linear-xUsVjXWq.js → linear-Da2jDWL3.js} +2 -2
- package/dist/static/assets/{linear-xUsVjXWq.js.map → linear-Da2jDWL3.js.map} +1 -1
- package/dist/static/assets/{min-xFt7zeOd.js → min-Co741hTV.js} +3 -3
- package/dist/static/assets/{min-xFt7zeOd.js.map → min-Co741hTV.js.map} +1 -1
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-DT_dvf2c.js → mindmap-definition-VGOIOE7T-DvkIjoq8.js} +4 -4
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-DT_dvf2c.js.map → mindmap-definition-VGOIOE7T-DvkIjoq8.js.map} +1 -1
- package/dist/static/assets/{pieDiagram-ADFJNKIX-B1DQ-OaG.js → pieDiagram-ADFJNKIX-BGuGhTu8.js} +7 -7
- package/dist/static/assets/{pieDiagram-ADFJNKIX-B1DQ-OaG.js.map → pieDiagram-ADFJNKIX-BGuGhTu8.js.map} +1 -1
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-IHqyr3iT.js → quadrantDiagram-AYHSOK5B-DAZcrJMg.js} +3 -3
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-IHqyr3iT.js.map → quadrantDiagram-AYHSOK5B-DAZcrJMg.js.map} +1 -1
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-CKBpht7B.js → requirementDiagram-UZGBJVZJ-CXN0DxZs.js} +4 -4
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-CKBpht7B.js.map → requirementDiagram-UZGBJVZJ-CXN0DxZs.js.map} +1 -1
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-D2uGjv3i.js → sankeyDiagram-TZEHDZUN-B7-yAePZ.js} +2 -2
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-D2uGjv3i.js.map → sankeyDiagram-TZEHDZUN-B7-yAePZ.js.map} +1 -1
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-wLFRhAKd.js → sequenceDiagram-WL72ISMW-DfBNY6h_.js} +4 -4
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-wLFRhAKd.js.map → sequenceDiagram-WL72ISMW-DfBNY6h_.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-BFGQTbx5.js → stateDiagram-FKZM4ZOC-BLo1xRVY.js} +9 -9
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-BFGQTbx5.js.map → stateDiagram-FKZM4ZOC-BLo1xRVY.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-DF7AjJuk.js → stateDiagram-v2-4FDKWEC3-Dq7MAD0I.js} +5 -5
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-DF7AjJuk.js.map → stateDiagram-v2-4FDKWEC3-Dq7MAD0I.js.map} +1 -1
- package/dist/static/assets/{timeline-definition-IT6M3QCI-ChHFOb0o.js → timeline-definition-IT6M3QCI-ySWyBF3b.js} +3 -3
- package/dist/static/assets/{timeline-definition-IT6M3QCI-ChHFOb0o.js.map → timeline-definition-IT6M3QCI-ySWyBF3b.js.map} +1 -1
- package/dist/static/assets/{treemap-KMMF4GRG-BxaNvQU4.js → treemap-KMMF4GRG-DOp4sqOh.js} +4 -4
- package/dist/static/assets/{treemap-KMMF4GRG-BxaNvQU4.js.map → treemap-KMMF4GRG-DOp4sqOh.js.map} +1 -1
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-CrNKeY_-.js → xychartDiagram-PRI3JC2R-vkmh67qb.js} +3 -3
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-CrNKeY_-.js.map → xychartDiagram-PRI3JC2R-vkmh67qb.js.map} +1 -1
- package/dist/static/index.html +1 -1
- package/dist/team.js +29 -6
- package/dist/tool.js +56 -0
- package/dist/tools/builtins.js +4 -2
- package/dist/tools/context-health.js +7 -7
- package/dist/tools/os.js +267 -30
- package/dist/tools/pending-tellask-reminder.js +185 -0
- package/dist/tools/plan.js +1 -0
- package/dist/tools/ripgrep.js +145 -4
- package/dist/tools/shell-tools.js +21 -0
- package/dist/tools/team-mgmt.js +4 -4
- package/dist/tools/toolset-manual.js +74 -0
- package/dist/utils/task-doc.js +16 -16
- package/package.json +1 -1
- package/dist/minds/builtin/cmdr/persona.md +0 -3
- package/dist/minds/builtin/dijiang/knowledge.md +0 -287
- package/dist/minds/builtin/dijiang/persona.md +0 -7
- package/dist/static/assets/index-th_praGg.js.map +0 -1
- package/dist/static/testing/dom-observation-utils.js +0 -425
- 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
|
|
61
|
-
- 当前实现使用 `promptFilesI18n`:把综合指南放到 markdown
|
|
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
|
|
61
|
-
- 当前实现使用 `promptFilesI18n`:把综合指南放到 markdown
|
|
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`
|
package/dist/llm/defaults.yaml
CHANGED
|
@@ -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/
|
|
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/
|
|
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
|