dominds 1.4.2 → 1.5.1

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 (171) hide show
  1. package/README.md +24 -0
  2. package/README.zh.md +24 -0
  3. package/dist/apps/app-json.js +38 -3
  4. package/dist/apps/dialog-run-controls.js +4 -0
  5. package/dist/apps/enabled-apps.js +8 -1
  6. package/dist/apps/installed-file.js +207 -0
  7. package/dist/apps/run-app-json.js +6 -6
  8. package/dist/apps/runtime-port.js +91 -0
  9. package/dist/apps/runtime.js +316 -68
  10. package/dist/apps-host/client.js +153 -3
  11. package/dist/apps-host/host.js +339 -2
  12. package/dist/apps-host/ipc-types.js +215 -30
  13. package/dist/cli/install.js +21 -1
  14. package/dist/dialog-fork.js +608 -0
  15. package/dist/dialog.js +2 -2
  16. package/dist/docs/app-constitution.md +153 -2
  17. package/dist/docs/app-constitution.zh.md +153 -2
  18. package/dist/docs/dialog-persistence.md +31 -0
  19. package/dist/docs/dialog-persistence.zh.md +31 -0
  20. package/dist/docs/dialog-system.md +29 -0
  21. package/dist/docs/dialog-system.zh.md +29 -0
  22. package/dist/docs/kernel-app-architecture.md +286 -0
  23. package/dist/docs/kernel-app-architecture.zh.md +285 -0
  24. package/dist/llm/defaults.yaml +16 -0
  25. package/dist/llm/driver-entry.js +28 -0
  26. package/dist/llm/driver-v2/context-health.js +121 -0
  27. package/dist/llm/driver-v2/context.js +56 -0
  28. package/dist/llm/driver-v2/core.js +1545 -0
  29. package/dist/llm/driver-v2/index.js +26 -0
  30. package/dist/llm/driver-v2/orchestrator.js +158 -0
  31. package/dist/llm/driver-v2/policy.js +129 -0
  32. package/dist/llm/driver-v2/restore-dialog-hierarchy.js +73 -0
  33. package/dist/llm/driver-v2/round.js +366 -0
  34. package/dist/llm/driver-v2/runtime-utils.js +365 -0
  35. package/dist/llm/driver-v2/saying-events.js +20 -0
  36. package/dist/llm/driver-v2/subdialog-txn.js +42 -0
  37. package/dist/llm/driver-v2/supdialog-response.js +400 -0
  38. package/dist/llm/driver-v2/tellask-bridge.js +1148 -0
  39. package/dist/llm/driver-v2/types.js +10 -0
  40. package/dist/llm/driver-v2-ref-only/context-health.js +121 -0
  41. package/dist/llm/driver-v2-ref-only/context.js +17 -0
  42. package/dist/llm/driver-v2-ref-only/core.js +1710 -0
  43. package/dist/llm/driver-v2-ref-only/index.js +26 -0
  44. package/dist/llm/driver-v2-ref-only/orchestrator.js +158 -0
  45. package/dist/llm/driver-v2-ref-only/policy.js +129 -0
  46. package/dist/llm/driver-v2-ref-only/restore-dialog-hierarchy.js +73 -0
  47. package/dist/llm/driver-v2-ref-only/round.js +366 -0
  48. package/dist/llm/driver-v2-ref-only/runtime-utils.js +473 -0
  49. package/dist/llm/driver-v2-ref-only/saying-events.js +18 -0
  50. package/dist/llm/driver-v2-ref-only/subdialog-txn.js +42 -0
  51. package/dist/llm/driver-v2-ref-only/supdialog-response.js +453 -0
  52. package/dist/llm/driver-v2-ref-only/tellask-bridge.js +1178 -0
  53. package/dist/llm/driver-v2-ref-only/types.js +10 -0
  54. package/dist/llm/gen/anthropic.js +68 -15
  55. package/dist/llm/gen/codex.js +59 -10
  56. package/dist/llm/gen/openai-compatible.js +38 -9
  57. package/dist/llm/gen/openai.js +58 -11
  58. package/dist/llm/gen/tool-output-limit.js +50 -0
  59. package/dist/llm/kernel-driver/subdialog.js +8 -1
  60. package/dist/llm/kernel-driver/tellask-special.js +18 -3
  61. package/dist/minds/load.js +7 -0
  62. package/dist/persistence.js +190 -28
  63. package/dist/priming.js +20 -1
  64. package/dist/server/api-routes.js +82 -0
  65. package/dist/server/setup-routes.js +15 -0
  66. package/dist/static/assets/{_basePickBy-B2o4z1Hf.js → _basePickBy-C-nynT9f.js} +3 -3
  67. package/dist/static/assets/{_basePickBy-B2o4z1Hf.js.map → _basePickBy-C-nynT9f.js.map} +1 -1
  68. package/dist/static/assets/{_baseUniq-CLmcxjdl.js → _baseUniq-CiHd-eVT.js} +2 -2
  69. package/dist/static/assets/{_baseUniq-CLmcxjdl.js.map → _baseUniq-CiHd-eVT.js.map} +1 -1
  70. package/dist/static/assets/{arc-CymD_KN7.js → arc-_OJzDWy1.js} +2 -2
  71. package/dist/static/assets/{arc-CymD_KN7.js.map → arc-_OJzDWy1.js.map} +1 -1
  72. package/dist/static/assets/{architectureDiagram-VXUJARFQ-DJQfSJUH.js → architectureDiagram-VXUJARFQ-CDEG85ub.js} +7 -7
  73. package/dist/static/assets/{architectureDiagram-VXUJARFQ-DJQfSJUH.js.map → architectureDiagram-VXUJARFQ-CDEG85ub.js.map} +1 -1
  74. package/dist/static/assets/{blockDiagram-VD42YOAC-pHVz60D0.js → blockDiagram-VD42YOAC-1LzKVc5t.js} +7 -7
  75. package/dist/static/assets/{blockDiagram-VD42YOAC-pHVz60D0.js.map → blockDiagram-VD42YOAC-1LzKVc5t.js.map} +1 -1
  76. package/dist/static/assets/{c4Diagram-YG6GDRKO-B0WnCfAT.js → c4Diagram-YG6GDRKO-BzYnVyvY.js} +3 -3
  77. package/dist/static/assets/{c4Diagram-YG6GDRKO-B0WnCfAT.js.map → c4Diagram-YG6GDRKO-BzYnVyvY.js.map} +1 -1
  78. package/dist/static/assets/{channel-CX9BlKil.js → channel-VAEDAk9T.js} +2 -2
  79. package/dist/static/assets/{channel-CX9BlKil.js.map → channel-VAEDAk9T.js.map} +1 -1
  80. package/dist/static/assets/{chunk-4BX2VUAB-lXArRj3o.js → chunk-4BX2VUAB-D0r2u3mX.js} +2 -2
  81. package/dist/static/assets/{chunk-4BX2VUAB-lXArRj3o.js.map → chunk-4BX2VUAB-D0r2u3mX.js.map} +1 -1
  82. package/dist/static/assets/{chunk-55IACEB6-CdqwynH9.js → chunk-55IACEB6-Dkl8Xw7i.js} +2 -2
  83. package/dist/static/assets/{chunk-55IACEB6-CdqwynH9.js.map → chunk-55IACEB6-Dkl8Xw7i.js.map} +1 -1
  84. package/dist/static/assets/{chunk-B4BG7PRW-Y-uXcJst.js → chunk-B4BG7PRW-9sxsI8ns.js} +5 -5
  85. package/dist/static/assets/{chunk-B4BG7PRW-Y-uXcJst.js.map → chunk-B4BG7PRW-9sxsI8ns.js.map} +1 -1
  86. package/dist/static/assets/{chunk-DI55MBZ5-C5xSbRST.js → chunk-DI55MBZ5-AHaqkaLl.js} +4 -4
  87. package/dist/static/assets/{chunk-DI55MBZ5-C5xSbRST.js.map → chunk-DI55MBZ5-AHaqkaLl.js.map} +1 -1
  88. package/dist/static/assets/{chunk-FMBD7UC4-5uefwCjI.js → chunk-FMBD7UC4-NWDLDixD.js} +2 -2
  89. package/dist/static/assets/{chunk-FMBD7UC4-5uefwCjI.js.map → chunk-FMBD7UC4-NWDLDixD.js.map} +1 -1
  90. package/dist/static/assets/{chunk-QN33PNHL-DzWVcvpI.js → chunk-QN33PNHL-C2KeUqle.js} +2 -2
  91. package/dist/static/assets/{chunk-QN33PNHL-DzWVcvpI.js.map → chunk-QN33PNHL-C2KeUqle.js.map} +1 -1
  92. package/dist/static/assets/{chunk-QZHKN3VN-BrrvAZdP.js → chunk-QZHKN3VN-B6Eoxo5L.js} +2 -2
  93. package/dist/static/assets/{chunk-QZHKN3VN-BrrvAZdP.js.map → chunk-QZHKN3VN-B6Eoxo5L.js.map} +1 -1
  94. package/dist/static/assets/{chunk-TZMSLE5B-DyKOlPTY.js → chunk-TZMSLE5B-Bc-VyQon.js} +2 -2
  95. package/dist/static/assets/{chunk-TZMSLE5B-DyKOlPTY.js.map → chunk-TZMSLE5B-Bc-VyQon.js.map} +1 -1
  96. package/dist/static/assets/{classDiagram-2ON5EDUG-FCrnlCWC.js → classDiagram-2ON5EDUG-DmPfsN1H.js} +6 -6
  97. package/dist/static/assets/{classDiagram-2ON5EDUG-FCrnlCWC.js.map → classDiagram-2ON5EDUG-DmPfsN1H.js.map} +1 -1
  98. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-FCrnlCWC.js → classDiagram-v2-WZHVMYZB-DmPfsN1H.js} +6 -6
  99. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-FCrnlCWC.js.map → classDiagram-v2-WZHVMYZB-DmPfsN1H.js.map} +1 -1
  100. package/dist/static/assets/{clone-BlI81KqZ.js → clone-B1R4pLTW.js} +2 -2
  101. package/dist/static/assets/{clone-BlI81KqZ.js.map → clone-B1R4pLTW.js.map} +1 -1
  102. package/dist/static/assets/{cose-bilkent-S5V4N54A-yM7S2atz.js → cose-bilkent-S5V4N54A-CxY__sKv.js} +2 -2
  103. package/dist/static/assets/{cose-bilkent-S5V4N54A-yM7S2atz.js.map → cose-bilkent-S5V4N54A-CxY__sKv.js.map} +1 -1
  104. package/dist/static/assets/{dagre-6UL2VRFP-BcweuZHt.js → dagre-6UL2VRFP-CPkB5tQ0.js} +7 -7
  105. package/dist/static/assets/{dagre-6UL2VRFP-BcweuZHt.js.map → dagre-6UL2VRFP-CPkB5tQ0.js.map} +1 -1
  106. package/dist/static/assets/{diagram-PSM6KHXK-D4-QwLW1.js → diagram-PSM6KHXK-C6kCVpCz.js} +8 -8
  107. package/dist/static/assets/{diagram-PSM6KHXK-D4-QwLW1.js.map → diagram-PSM6KHXK-C6kCVpCz.js.map} +1 -1
  108. package/dist/static/assets/{diagram-QEK2KX5R-BVbuejJn.js → diagram-QEK2KX5R-BWF6htf1.js} +7 -7
  109. package/dist/static/assets/{diagram-QEK2KX5R-BVbuejJn.js.map → diagram-QEK2KX5R-BWF6htf1.js.map} +1 -1
  110. package/dist/static/assets/{diagram-S2PKOQOG-pB6N6Tq_.js → diagram-S2PKOQOG-lKGJH6O9.js} +7 -7
  111. package/dist/static/assets/{diagram-S2PKOQOG-pB6N6Tq_.js.map → diagram-S2PKOQOG-lKGJH6O9.js.map} +1 -1
  112. package/dist/static/assets/{erDiagram-Q2GNP2WA-DLKmthuw.js → erDiagram-Q2GNP2WA-DJ3YaFob.js} +5 -5
  113. package/dist/static/assets/{erDiagram-Q2GNP2WA-DLKmthuw.js.map → erDiagram-Q2GNP2WA-DJ3YaFob.js.map} +1 -1
  114. package/dist/static/assets/{flowDiagram-NV44I4VS-BsBhWukh.js → flowDiagram-NV44I4VS-h3eQwA3O.js} +6 -6
  115. package/dist/static/assets/{flowDiagram-NV44I4VS-BsBhWukh.js.map → flowDiagram-NV44I4VS-h3eQwA3O.js.map} +1 -1
  116. package/dist/static/assets/{ganttDiagram-JELNMOA3-Debz-J-C.js → ganttDiagram-JELNMOA3-BCbsDOF_.js} +3 -3
  117. package/dist/static/assets/{ganttDiagram-JELNMOA3-Debz-J-C.js.map → ganttDiagram-JELNMOA3-BCbsDOF_.js.map} +1 -1
  118. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-BnAPFBGR.js → gitGraphDiagram-V2S2FVAM-D0kX6h-T.js} +8 -8
  119. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-BnAPFBGR.js.map → gitGraphDiagram-V2S2FVAM-D0kX6h-T.js.map} +1 -1
  120. package/dist/static/assets/{graph-DbzWiBNK.js → graph-CZIEXp3A.js} +3 -3
  121. package/dist/static/assets/{graph-DbzWiBNK.js.map → graph-CZIEXp3A.js.map} +1 -1
  122. package/dist/static/assets/{index-B-8J28g7.js → index-vIzCTZQE.js} +156 -35
  123. package/dist/static/assets/index-vIzCTZQE.js.map +1 -0
  124. package/dist/static/assets/{infoDiagram-HS3SLOUP-CZ5hWoxV.js → infoDiagram-HS3SLOUP-DUNbcXxv.js} +6 -6
  125. package/dist/static/assets/{infoDiagram-HS3SLOUP-CZ5hWoxV.js.map → infoDiagram-HS3SLOUP-DUNbcXxv.js.map} +1 -1
  126. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-CKN3oSxk.js → journeyDiagram-XKPGCS4Q-Cg_VhiqB.js} +5 -5
  127. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-CKN3oSxk.js.map → journeyDiagram-XKPGCS4Q-Cg_VhiqB.js.map} +1 -1
  128. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BQCMklfJ.js → kanban-definition-3W4ZIXB7-DMVCZVFE.js} +3 -3
  129. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BQCMklfJ.js.map → kanban-definition-3W4ZIXB7-DMVCZVFE.js.map} +1 -1
  130. package/dist/static/assets/{layout-C5B58szc.js → layout-DoKTmwlM.js} +5 -5
  131. package/dist/static/assets/{layout-C5B58szc.js.map → layout-DoKTmwlM.js.map} +1 -1
  132. package/dist/static/assets/{linear-_32fut6G.js → linear-DFVlPfX6.js} +2 -2
  133. package/dist/static/assets/{linear-_32fut6G.js.map → linear-DFVlPfX6.js.map} +1 -1
  134. package/dist/static/assets/{mindmap-definition-VGOIOE7T-C_goMzjx.js → mindmap-definition-VGOIOE7T-l5K7agVV.js} +4 -4
  135. package/dist/static/assets/{mindmap-definition-VGOIOE7T-C_goMzjx.js.map → mindmap-definition-VGOIOE7T-l5K7agVV.js.map} +1 -1
  136. package/dist/static/assets/{pieDiagram-ADFJNKIX-BQ2n0cOB.js → pieDiagram-ADFJNKIX-BfQzSE-A.js} +8 -8
  137. package/dist/static/assets/{pieDiagram-ADFJNKIX-BQ2n0cOB.js.map → pieDiagram-ADFJNKIX-BfQzSE-A.js.map} +1 -1
  138. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-BLg7_neg.js → quadrantDiagram-AYHSOK5B-CJWvA5jc.js} +3 -3
  139. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-BLg7_neg.js.map → quadrantDiagram-AYHSOK5B-CJWvA5jc.js.map} +1 -1
  140. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DwkJt0zi.js → requirementDiagram-UZGBJVZJ-CeBbmqBK.js} +4 -4
  141. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DwkJt0zi.js.map → requirementDiagram-UZGBJVZJ-CeBbmqBK.js.map} +1 -1
  142. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DmxmatUB.js → sankeyDiagram-TZEHDZUN-JeUBTDxx.js} +2 -2
  143. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DmxmatUB.js.map → sankeyDiagram-TZEHDZUN-JeUBTDxx.js.map} +1 -1
  144. package/dist/static/assets/{sequenceDiagram-WL72ISMW-KHU_eApU.js → sequenceDiagram-WL72ISMW-Bd_7Pgc5.js} +4 -4
  145. package/dist/static/assets/{sequenceDiagram-WL72ISMW-KHU_eApU.js.map → sequenceDiagram-WL72ISMW-Bd_7Pgc5.js.map} +1 -1
  146. package/dist/static/assets/{stateDiagram-FKZM4ZOC-B3DBCxAL.js → stateDiagram-FKZM4ZOC-D_WyM3K1.js} +9 -9
  147. package/dist/static/assets/{stateDiagram-FKZM4ZOC-B3DBCxAL.js.map → stateDiagram-FKZM4ZOC-D_WyM3K1.js.map} +1 -1
  148. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-C-uIk7gh.js → stateDiagram-v2-4FDKWEC3-Q_yh26yx.js} +5 -5
  149. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-C-uIk7gh.js.map → stateDiagram-v2-4FDKWEC3-Q_yh26yx.js.map} +1 -1
  150. package/dist/static/assets/{timeline-definition-IT6M3QCI-SysEcQCC.js → timeline-definition-IT6M3QCI-Ca8mCFDg.js} +3 -3
  151. package/dist/static/assets/{timeline-definition-IT6M3QCI-SysEcQCC.js.map → timeline-definition-IT6M3QCI-Ca8mCFDg.js.map} +1 -1
  152. package/dist/static/assets/{treemap-GDKQZRPO-d0AbKEc4.js → treemap-GDKQZRPO-CyBvKC8o.js} +5 -5
  153. package/dist/static/assets/{treemap-GDKQZRPO-d0AbKEc4.js.map → treemap-GDKQZRPO-CyBvKC8o.js.map} +1 -1
  154. package/dist/static/assets/{xychartDiagram-PRI3JC2R-CmSQMxUh.js → xychartDiagram-PRI3JC2R-DY0BLEdj.js} +3 -3
  155. package/dist/static/assets/{xychartDiagram-PRI3JC2R-CmSQMxUh.js.map → xychartDiagram-PRI3JC2R-DY0BLEdj.js.map} +1 -1
  156. package/dist/static/index.html +1 -1
  157. package/dist/team.js +33 -4
  158. package/dist/tools/app-reminders.js +280 -0
  159. package/dist/tools/prompts/memory/en/errors.md +155 -0
  160. package/dist/tools/prompts/memory/en/index.md +47 -0
  161. package/dist/tools/prompts/memory/en/principles.md +79 -0
  162. package/dist/tools/prompts/memory/en/scenarios.md +174 -0
  163. package/dist/tools/prompts/memory/en/tools.md +154 -0
  164. package/dist/tools/prompts/memory/zh/errors.md +155 -0
  165. package/dist/tools/prompts/memory/zh/index.md +47 -0
  166. package/dist/tools/prompts/memory/zh/principles.md +79 -0
  167. package/dist/tools/prompts/memory/zh/scenarios.md +174 -0
  168. package/dist/tools/prompts/memory/zh/tools.md +154 -0
  169. package/dist/tools/ripgrep.js +197 -63
  170. package/package.json +2 -2
  171. package/dist/static/assets/index-B-8J28g7.js.map +0 -1
@@ -0,0 +1,174 @@
1
+ # memory Usage Scenarios
2
+
3
+ ## Template (Scenarios)
4
+
5
+ ### Scenario Format
6
+
7
+ - Goal
8
+ - Preconditions
9
+ - Steps
10
+ - Expected Signal
11
+ - Failure Branch
12
+ - Completion Criteria
13
+
14
+ ## Scenario 1: Task Progress Tracking
15
+
16
+ ### Scenario Description
17
+
18
+ In long-running tasks, you need to persist task progress to continue after restart.
19
+
20
+ ### Example
21
+
22
+ **Add Task List**
23
+
24
+ ```typescript
25
+ add_memory({
26
+ path: 'project/i18n-tasks',
27
+ content:
28
+ '## TODO\n\n- [ ] Create ws_mod manual\n- [ ] Create team_mgmt manual\n- [ ] Create memory manual\n- [ ] Create control manual\n\n## In Progress\n- [ ] Create ws_mod manual [100%]',
29
+ });
30
+ ```
31
+
32
+ **Update Task Progress**
33
+
34
+ ```typescript
35
+ replace_memory({
36
+ path: 'project/i18n-tasks',
37
+ content:
38
+ '## TODO\n\n- [ ] Create team_mgmt manual\n- [ ] Create memory manual\n- [ ] Create control manual\n\n## Completed\n- [x] Create ws_mod manual\n\n## In Progress\n- [ ] Create team_mgmt manual [50%]',
39
+ });
40
+ ```
41
+
42
+ ## Scenario 2: User Preferences Storage
43
+
44
+ ### Scenario Description
45
+
46
+ Save user preferences, such as programming language, theme, etc.
47
+
48
+ ### Example
49
+
50
+ **Save User Preferences**
51
+
52
+ ```typescript
53
+ add_memory({
54
+ path: 'user/preferences',
55
+ content:
56
+ '## User Preferences\n\n- Programming Language: TypeScript\n- Code Style: strict\n- Theme: dark\n- Auto Save: true',
57
+ });
58
+ ```
59
+
60
+ **Update Preferences**
61
+
62
+ ```typescript
63
+ replace_memory({
64
+ path: 'user/preferences',
65
+ content:
66
+ '## User Preferences\n\n- Programming Language: TypeScript\n- Code Style: strict\n- Theme: light\n- Auto Save: true',
67
+ });
68
+ ```
69
+
70
+ ## Scenario 3: Context Information Preservation
71
+
72
+ ### Scenario Description
73
+
74
+ In complex tasks, save important context information to avoid repeated queries.
75
+
76
+ ### Example
77
+
78
+ **Save API Information**
79
+
80
+ ```typescript
81
+ add_memory({
82
+ path: 'context/api-endpoints',
83
+ content:
84
+ '## API Endpoints\n\n- User Login: POST /api/auth/login\n- Get User Info: GET /api/user/info\n- Update User Settings: PUT /api/user/settings\n\n## Authentication\n- Use Bearer Token\n- Validity: 24 hours',
85
+ });
86
+ ```
87
+
88
+ **Save Tech Stack**
89
+
90
+ ```typescript
91
+ add_memory({
92
+ path: 'context/tech-stack',
93
+ content:
94
+ '## Tech Stack\n\n- Frontend: React + TypeScript\n- Backend: Node.js + Express\n- Database: PostgreSQL\n- Cache: Redis',
95
+ });
96
+ ```
97
+
98
+ ## Scenario 4: Meeting Notes
99
+
100
+ ### Scenario Description
101
+
102
+ Save meeting highlights and decisions.
103
+
104
+ ### Example
105
+
106
+ ```typescript
107
+ add_memory({
108
+ path: 'meeting/2024-01-15',
109
+ content:
110
+ '## Meeting Notes: 2024-01-15\n\n### Participants\n- @fullstack\n- @i18n\n- @ux\n\n### Agenda\n1. i18n manual creation plan\n2. man function UX improvements\n\n### Decisions\n- Prioritize creating ws_mod and team_mgmt manuals\n- man function supports fuzzy matching\n\n### TODO\n- @i18n: Create memory manual\n- @fullstack: Optimize man function',
111
+ });
112
+ ```
113
+
114
+ ## Scenario 5: Knowledge Base
115
+
116
+ ### Scenario Description
117
+
118
+ Build a personal knowledge base and save learning notes.
119
+
120
+ ### Example
121
+
122
+ ```typescript
123
+ add_memory({
124
+ path: 'knowledge/typescript-tips',
125
+ content:
126
+ '## TypeScript Tips\n\n### 1. Type Inference\nconst x = 1; // Type inferred as number\n\n### 2. Interface vs Type\n- Interface: Extensible, suitable for object types\n- Type: Supports union types, intersection types\n\n### 3. Strict Mode\nEnabling strict mode provides better type safety',
127
+ });
128
+ ```
129
+
130
+ ## Scenario 6: Temporary Notes
131
+
132
+ ### Scenario Description
133
+
134
+ Temporarily save information to process later.
135
+
136
+ ### Example
137
+
138
+ ```typescript
139
+ add_memory({
140
+ path: 'scratchpad/temp-notes',
141
+ content:
142
+ '## Temporary Notes\n\n- TODO: Check team.yaml configuration\n- TODO: Verify man function types\n- TODO: Update taskdoc progress',
143
+ });
144
+ ```
145
+
146
+ **Delete after processing**
147
+
148
+ ```typescript
149
+ drop_memory({
150
+ path: 'scratchpad/temp-notes',
151
+ });
152
+ ```
153
+
154
+ ## Scenario 7: Cleaning Up Outdated Memory
155
+
156
+ ### Scenario Description
157
+
158
+ Regularly clean up memories that are no longer needed.
159
+
160
+ ### Example
161
+
162
+ ```typescript
163
+ // View all current memories (agent can read)
164
+ // Delete unnecessary memories one by one
165
+ drop_memory({
166
+ path: 'project/old-feature',
167
+ });
168
+ ```
169
+
170
+ Or use `clear_memory` to clear all memories (use with caution):
171
+
172
+ ```typescript
173
+ clear_memory({});
174
+ ```
@@ -0,0 +1,154 @@
1
+ # memory Tool Reference
2
+
3
+ ## Template (Tools)
4
+
5
+ ### How to Read
6
+
7
+ - The schema-generated "Tool Contract (Schema)" section is canonical for parameters/returns.
8
+
9
+ ### Per-Tool Fields (order)
10
+
11
+ 1. Purpose
12
+ 2. Call Signature
13
+ 3. Parameters (refer to schema)
14
+ 4. Preconditions
15
+ 5. Success Signal
16
+ 6. Failure/Errors
17
+ 7. Copy-Ready Example
18
+ 8. Common Misuse
19
+
20
+ ## Tool List
21
+
22
+ ### 1. add_memory
23
+
24
+ Create new memory (when path does not exist).
25
+
26
+ **Parameters:**
27
+
28
+ - `path` (required): Unique identifier for the memory
29
+ - `content` (required): Memory content
30
+
31
+ **Returns:**
32
+
33
+ ```yaml
34
+ status: ok|error
35
+ path: <memory path>
36
+ content_size: <content size in bytes>
37
+ created_at: <creation timestamp>
38
+ ```
39
+
40
+ **Errors:**
41
+
42
+ - `MEMORY_ALREADY_EXISTS`: Path already exists, use `replace_memory` to update
43
+
44
+ ### 2. replace_memory
45
+
46
+ Update existing memory (when path exists).
47
+
48
+ **Parameters:**
49
+
50
+ - `path` (required): Unique identifier for the memory
51
+ - `content` (required): New memory content
52
+
53
+ **Returns:**
54
+
55
+ ```yaml
56
+ status: ok|error
57
+ path: <memory path>
58
+ content_size: <content size in bytes>
59
+ updated_at: <update timestamp>
60
+ ```
61
+
62
+ **Errors:**
63
+
64
+ - `MEMORY_NOT_FOUND`: Path does not exist, use `add_memory` to create
65
+
66
+ ### 3. drop_memory
67
+
68
+ Delete specified memory.
69
+
70
+ **Parameters:**
71
+
72
+ - `path` (required): Memory path to delete
73
+
74
+ **Returns:**
75
+
76
+ ```yaml
77
+ status: ok|error
78
+ path: <memory path>
79
+ deleted_at: <deletion timestamp>
80
+ ```
81
+
82
+ **Errors:**
83
+
84
+ - `MEMORY_NOT_FOUND`: Path does not exist
85
+
86
+ ### 4. clear_memory
87
+
88
+ Clear all personal memory.
89
+
90
+ **Warning:** This operation is irreversible!
91
+
92
+ **Parameters:** None
93
+
94
+ **Returns:**
95
+
96
+ ```yaml
97
+ status: ok|error
98
+ cleared_count: <number of memories deleted>
99
+ cleared_at: <deletion timestamp>
100
+ ```
101
+
102
+ **Errors:**
103
+
104
+ - None (returns success even if no memories exist)
105
+
106
+ ## Usage Examples
107
+
108
+ ### Add New Memory
109
+
110
+ ```typescript
111
+ add_memory({
112
+ path: 'project/todo',
113
+ content: '- Complete i18n docs\n- Write test cases\n- Update README',
114
+ });
115
+ ```
116
+
117
+ ### Update Existing Memory
118
+
119
+ ```typescript
120
+ replace_memory({
121
+ path: 'project/todo',
122
+ content: '- Complete i18n docs [DONE]\n- Write test cases [IN PROGRESS]\n- Update README',
123
+ });
124
+ ```
125
+
126
+ ### Delete Memory
127
+
128
+ ```typescript
129
+ drop_memory({
130
+ path: 'project/todo',
131
+ });
132
+ ```
133
+
134
+ ### Clear All Memory
135
+
136
+ ```typescript
137
+ clear_memory({});
138
+ ```
139
+
140
+ ## YAML Output Contract
141
+
142
+ All tool outputs use YAML format for programmatic processing:
143
+
144
+ - `status`: Operation status, `ok` for success, `error` for failure
145
+ - `path`: Memory path
146
+ - Other fields: Additional information for specific operations
147
+
148
+ On error, returns:
149
+
150
+ ```yaml
151
+ status: error
152
+ error_code: <error code>
153
+ message: <error message>
154
+ ```
@@ -0,0 +1,155 @@
1
+ # memory 错误处理
2
+
3
+ ## 模板(错误)
4
+
5
+ ### 错误行动链(必填)
6
+
7
+ 1. 触发条件
8
+ 2. 检测信号
9
+ 3. 恢复步骤
10
+ 4. 成功判据
11
+ 5. 升级路径(可选)
12
+
13
+ ## 错误代码
14
+
15
+ ### MEMORY_ALREADY_EXISTS
16
+
17
+ **描述:** 路径已存在,无法使用 `add_memory` 创建新记忆。
18
+
19
+ **原因:**
20
+
21
+ - 尝试添加的路径已经被其他记忆占用
22
+
23
+ **解决方案:**
24
+
25
+ - 使用 `replace_memory` 更新已有记忆
26
+ - 或者使用不同的路径创建新记忆
27
+
28
+ **示例:**
29
+
30
+ ```
31
+ 错误:
32
+ status: error
33
+ error_code: MEMORY_ALREADY_EXISTS
34
+ message: 路径 "project/todo" 已存在,请使用 replace_memory 更新
35
+ ```
36
+
37
+ ### MEMORY_NOT_FOUND
38
+
39
+ **描述:** 路径不存在,无法执行操作。
40
+
41
+ **原因:**
42
+
43
+ - 尝试访问的记忆路径不存在
44
+ - 路径被删除或从未创建
45
+
46
+ **解决方案:**
47
+
48
+ - 如果是更新/删除操作,先使用 `add_memory` 创建
49
+ - 检查路径是否正确
50
+
51
+ **示例:**
52
+
53
+ ```
54
+ 错误:
55
+ status: error
56
+ error_code: MEMORY_NOT_FOUND
57
+ message: 路径 "project/todo" 不存在,请先使用 add_memory 创建
58
+ ```
59
+
60
+ ### MEMORY_PATH_INVALID
61
+
62
+ **描述:** 路径格式无效。
63
+
64
+ **原因:**
65
+
66
+ - 路径包含非法字符
67
+ - 路径长度超过限制
68
+
69
+ **解决方案:**
70
+
71
+ - 确保路径只包含字母、数字、下划线、斜杠
72
+ - 路径长度不超过 255 个字符
73
+
74
+ **示例:**
75
+
76
+ ```
77
+ 错误:
78
+ status: error
79
+ error_code: MEMORY_PATH_INVALID
80
+ message: 路径 "project/*invalid*" 包含非法字符
81
+ ```
82
+
83
+ ### MEMORY_CONTENT_TOO_LARGE
84
+
85
+ **描述:** 记忆内容过大。
86
+
87
+ **原因:**
88
+
89
+ - 单条记忆内容超过 1MB 限制
90
+
91
+ **解决方案:**
92
+
93
+ - 压缩内容
94
+ - 拆分为多条记忆
95
+ - 使用外部存储(如文件)
96
+
97
+ **示例:**
98
+
99
+ ```
100
+ 错误:
101
+ status: error
102
+ error_code: MEMORY_CONTENT_TOO_LARGE
103
+ message: 内容大小 1.2MB 超过 1MB 限制
104
+ ```
105
+
106
+ ### MEMORY_STORAGE_ERROR
107
+
108
+ **描述:** 存储错误。
109
+
110
+ **原因:**
111
+
112
+ - 磁盘空间不足
113
+ - 权限问题
114
+ - 文件系统错误
115
+
116
+ **解决方案:**
117
+
118
+ - 检查磁盘空间
119
+ - 检查文件权限
120
+ - 重试操作
121
+
122
+ **示例:**
123
+
124
+ ```
125
+ 错误:
126
+ status: error
127
+ error_code: MEMORY_STORAGE_ERROR
128
+ message: 无法写入存储,磁盘空间不足
129
+ ```
130
+
131
+ ## 常见问题
132
+
133
+ ### Q: 记忆会自动保存吗?
134
+
135
+ A: 是的,所有记忆操作都会立即持久化到磁盘。不需要手动保存。
136
+
137
+ ### Q: 记忆有数量限制吗?
138
+
139
+ A: 没有严格的数量限制,但建议保持记忆数量在合理范围内(建议少于 100 条)。
140
+
141
+ ### Q: 记忆可以被其他成员看到吗?
142
+
143
+ A: 不可以,memory 是个人记忆工具,只有当前智能体可以访问。如果需要共享给团队成员,请使用 team_memory。
144
+
145
+ ### Q: clear_memory 会删除所有记忆吗?
146
+
147
+ A: 是的,`clear_memory` 会删除所有个人记忆,此操作不可恢复。请谨慎使用。
148
+
149
+ ### Q: 记忆会过期吗?
150
+
151
+ A: 不会,记忆会永久保存,直到被显式删除。
152
+
153
+ ### Q: 如何查看当前所有记忆?
154
+
155
+ A: 智能体在生成回复时可以访问所有个人记忆。你可以直接询问智能体当前有哪些记忆。
@@ -0,0 +1,47 @@
1
+ # memory 个人记忆工具手册
2
+
3
+ ## 模板(概述)
4
+
5
+ ### 一句话定位
6
+
7
+ - <该工具集用途,一句话描述>
8
+
9
+ ### 工具清单
10
+
11
+ - <列出核心工具,或指向 Tools/Schema 章节>
12
+
13
+ ### 30 秒上手
14
+
15
+ 1. <调用 ...>
16
+ 2. <观察 ...>
17
+ 3. <下一步 ...>
18
+
19
+ ### 导航
20
+
21
+ - principles / tools / scenarios / errors
22
+
23
+ ### 与其他工具集的边界
24
+
25
+ - <何时用本工具集、何时用相邻工具集>
26
+
27
+ memory 是 Dominds 的**个人记忆工具集**,用于管理智能体的私有记忆:
28
+
29
+ - **私有性**:记忆仅对当前智能体可见,不会共享给其他成员
30
+ - **持久化**:记忆会持久化到磁盘,在对话重启后仍然保留
31
+ - **结构化**:支持按路径组织记忆,便于分类和检索
32
+
33
+ ## 快速导航
34
+
35
+ | 主题 | 描述 |
36
+ | ----------------------------- | -------------------------------- |
37
+ | [principles](./principles.md) | 核心概念、记忆生命周期、最佳实践 |
38
+ | [tools](./tools.md) | 完整工具列表与接口契约 |
39
+ | [scenarios](./scenarios.md) | 常见使用场景与示例(复制即用) |
40
+ | [errors](./errors.md) | 错误代码与解决方案 |
41
+
42
+ ## 状态
43
+
44
+ - 状态:已实现
45
+ - 主要实现文件:
46
+ - 工具实现:`dominds/main/tools/mem.ts`
47
+ - toolset 元信息:`dominds/main/tools/builtins.ts`、`dominds/main/tools/registry.ts`
@@ -0,0 +1,79 @@
1
+ # memory 原则与核心概念
2
+
3
+ ## 模板(原则)
4
+
5
+ ### 设计目标
6
+
7
+ - <目标 1>
8
+ - <目标 2>
9
+
10
+ ### 契约原则
11
+
12
+ - <输入/输出契约规则>
13
+
14
+ ### 安全与边界
15
+
16
+ - <访问约束/护栏>
17
+
18
+ ### 失败与恢复
19
+
20
+ - <调用失败时的行动>
21
+
22
+ ### 术语表
23
+
24
+ - <该工具集特有术语>
25
+
26
+ ## 记忆模型
27
+
28
+ memory 工具集采用**路径键值存储**模型:
29
+
30
+ - **路径(path)**:记忆的唯一标识符,类似于文件系统路径,例如 `project/todo` 或 `user/preferences/theme`
31
+ - **内容(content)**:记忆的实际内容,可以是任意文本
32
+
33
+ ## 工具概览
34
+
35
+ | 工具 | 功能 |
36
+ | -------------- | ---------------------------- |
37
+ | add_memory | 创建新记忆(路径不存在时) |
38
+ | replace_memory | 更新已有记忆(路径存在时) |
39
+ | drop_memory | 删除记忆 |
40
+ | clear_memory | 清空所有个人记忆(不可恢复) |
41
+
42
+ ## 记忆生命周期
43
+
44
+ 1. **创建(add)**:使用 `add_memory` 创建新记忆
45
+ 2. **读取(read)**:智能体在生成回复时可读取已有记忆
46
+ 3. **更新(replace)**:使用 `replace_memory` 更新记忆内容
47
+ 4. **删除(drop)**:使用 `drop_memory` 删除特定记忆
48
+
49
+ ## 最佳实践
50
+
51
+ ### 1. 路径命名规范
52
+
53
+ - 使用描述性路径:`project/architecture`、`user/preferences/language`
54
+ - 避免使用特殊字符:路径中不要包含 `/`、`\`、`*` 等
55
+ - 使用层级结构:按主题组织记忆,例如 `project/todo`、`project/done`
56
+
57
+ ### 2. 内容格式
58
+
59
+ - 保持内容简洁:每条记忆只包含一个主题
60
+ - 使用结构化格式:可以使用 Markdown 格式组织内容
61
+ - 定期清理:定期检查并删除过时的记忆
62
+
63
+ ### 3. 使用场景
64
+
65
+ - **任务持久化**:保存长期任务进度
66
+ - **上下文记忆**:保存对话上下文中的重要信息
67
+ - **偏好设置**:保存用户偏好和配置信息
68
+
69
+ ## 与其他工具的关系
70
+
71
+ - **team_memory**:团队共享记忆,所有成员可见
72
+ - **reminder**:临时提醒,会话级别
73
+ - **change_mind**:更新差遣牒(goals/constraints/progress)
74
+
75
+ ## 限制与注意事项
76
+
77
+ 1. 记忆内容有大小限制(单条记忆最大 1MB)
78
+ 2. 记忆路径不能超过 255 个字符
79
+ 3. `clear_memory` 会删除所有记忆,**不可恢复**