dominds 1.3.1 → 1.4.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 +9 -2
- package/README.zh.md +9 -2
- package/dist/apps/app-lock-file.js +33 -57
- package/dist/apps/configuration-file.js +267 -0
- package/dist/apps/enabled-apps.js +217 -252
- package/dist/apps/manifest.js +132 -0
- package/dist/apps/resolution-file.js +80 -192
- package/dist/apps/workspace-app-state.js +8 -0
- package/dist/cli/disable.js +18 -22
- package/dist/cli/enable.js +20 -58
- package/dist/cli/install.js +74 -80
- package/dist/cli/uninstall.js +48 -25
- package/dist/cli/update.js +36 -80
- package/dist/docs/app-constitution.md +12 -7
- package/dist/docs/app-constitution.zh.md +13 -8
- package/dist/llm/kernel-driver/engine.js +10 -4
- package/dist/llm/kernel-driver/flow.js +93 -0
- package/dist/llm/kernel-driver/loop.js +4 -1
- package/dist/llm/kernel-driver/subdialog.js +5 -1
- package/dist/llm/kernel-driver/tellask-special.js +48 -6
- package/dist/server/server-core.js +19 -4
- package/dist/server/websocket-handler.js +26 -6
- package/dist/static/assets/{_basePickBy-CmziIRM9.js → _basePickBy-B2o4z1Hf.js} +3 -3
- package/dist/static/assets/{_basePickBy-CmziIRM9.js.map → _basePickBy-B2o4z1Hf.js.map} +1 -1
- package/dist/static/assets/{_baseUniq-CgDZxcD0.js → _baseUniq-CLmcxjdl.js} +2 -2
- package/dist/static/assets/{_baseUniq-CgDZxcD0.js.map → _baseUniq-CLmcxjdl.js.map} +1 -1
- package/dist/static/assets/{arc-Df9rjNNk.js → arc-CymD_KN7.js} +2 -2
- package/dist/static/assets/{arc-Df9rjNNk.js.map → arc-CymD_KN7.js.map} +1 -1
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-Bif8topC.js → architectureDiagram-VXUJARFQ-DJQfSJUH.js} +7 -7
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-Bif8topC.js.map → architectureDiagram-VXUJARFQ-DJQfSJUH.js.map} +1 -1
- package/dist/static/assets/{blockDiagram-VD42YOAC-D9Egoflr.js → blockDiagram-VD42YOAC-pHVz60D0.js} +7 -7
- package/dist/static/assets/{blockDiagram-VD42YOAC-D9Egoflr.js.map → blockDiagram-VD42YOAC-pHVz60D0.js.map} +1 -1
- package/dist/static/assets/{c4Diagram-YG6GDRKO-DBf1NeBf.js → c4Diagram-YG6GDRKO-B0WnCfAT.js} +3 -3
- package/dist/static/assets/{c4Diagram-YG6GDRKO-DBf1NeBf.js.map → c4Diagram-YG6GDRKO-B0WnCfAT.js.map} +1 -1
- package/dist/static/assets/{channel-Dc34yAJl.js → channel-CX9BlKil.js} +2 -2
- package/dist/static/assets/{channel-Dc34yAJl.js.map → channel-CX9BlKil.js.map} +1 -1
- package/dist/static/assets/{chunk-4BX2VUAB-B65G1dJI.js → chunk-4BX2VUAB-lXArRj3o.js} +2 -2
- package/dist/static/assets/{chunk-4BX2VUAB-B65G1dJI.js.map → chunk-4BX2VUAB-lXArRj3o.js.map} +1 -1
- package/dist/static/assets/{chunk-55IACEB6-CSDEOGl2.js → chunk-55IACEB6-CdqwynH9.js} +2 -2
- package/dist/static/assets/{chunk-55IACEB6-CSDEOGl2.js.map → chunk-55IACEB6-CdqwynH9.js.map} +1 -1
- package/dist/static/assets/{chunk-B4BG7PRW-Cb6W3QWJ.js → chunk-B4BG7PRW-Y-uXcJst.js} +5 -5
- package/dist/static/assets/{chunk-B4BG7PRW-Cb6W3QWJ.js.map → chunk-B4BG7PRW-Y-uXcJst.js.map} +1 -1
- package/dist/static/assets/{chunk-DI55MBZ5-ZAJWeVWH.js → chunk-DI55MBZ5-C5xSbRST.js} +4 -4
- package/dist/static/assets/{chunk-DI55MBZ5-ZAJWeVWH.js.map → chunk-DI55MBZ5-C5xSbRST.js.map} +1 -1
- package/dist/static/assets/{chunk-FMBD7UC4-DiwRlImb.js → chunk-FMBD7UC4-5uefwCjI.js} +2 -2
- package/dist/static/assets/{chunk-FMBD7UC4-DiwRlImb.js.map → chunk-FMBD7UC4-5uefwCjI.js.map} +1 -1
- package/dist/static/assets/{chunk-QN33PNHL-wilj7fb5.js → chunk-QN33PNHL-DzWVcvpI.js} +2 -2
- package/dist/static/assets/{chunk-QN33PNHL-wilj7fb5.js.map → chunk-QN33PNHL-DzWVcvpI.js.map} +1 -1
- package/dist/static/assets/{chunk-QZHKN3VN-DGmviJfR.js → chunk-QZHKN3VN-BrrvAZdP.js} +2 -2
- package/dist/static/assets/{chunk-QZHKN3VN-DGmviJfR.js.map → chunk-QZHKN3VN-BrrvAZdP.js.map} +1 -1
- package/dist/static/assets/{chunk-TZMSLE5B-Nm5wTXa_.js → chunk-TZMSLE5B-DyKOlPTY.js} +2 -2
- package/dist/static/assets/{chunk-TZMSLE5B-Nm5wTXa_.js.map → chunk-TZMSLE5B-DyKOlPTY.js.map} +1 -1
- package/dist/static/assets/{classDiagram-2ON5EDUG-BvUbXD6H.js → classDiagram-2ON5EDUG-FCrnlCWC.js} +6 -6
- package/dist/static/assets/{classDiagram-2ON5EDUG-BvUbXD6H.js.map → classDiagram-2ON5EDUG-FCrnlCWC.js.map} +1 -1
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-BvUbXD6H.js → classDiagram-v2-WZHVMYZB-FCrnlCWC.js} +6 -6
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-BvUbXD6H.js.map → classDiagram-v2-WZHVMYZB-FCrnlCWC.js.map} +1 -1
- package/dist/static/assets/{clone-0VLS7GaA.js → clone-BlI81KqZ.js} +2 -2
- package/dist/static/assets/{clone-0VLS7GaA.js.map → clone-BlI81KqZ.js.map} +1 -1
- package/dist/static/assets/{cose-bilkent-S5V4N54A-anaPs-75.js → cose-bilkent-S5V4N54A-yM7S2atz.js} +2 -2
- package/dist/static/assets/{cose-bilkent-S5V4N54A-anaPs-75.js.map → cose-bilkent-S5V4N54A-yM7S2atz.js.map} +1 -1
- package/dist/static/assets/{dagre-6UL2VRFP-YwdsZ11r.js → dagre-6UL2VRFP-BcweuZHt.js} +7 -7
- package/dist/static/assets/{dagre-6UL2VRFP-YwdsZ11r.js.map → dagre-6UL2VRFP-BcweuZHt.js.map} +1 -1
- package/dist/static/assets/{diagram-PSM6KHXK-5KQCf3h2.js → diagram-PSM6KHXK-D4-QwLW1.js} +8 -8
- package/dist/static/assets/{diagram-PSM6KHXK-5KQCf3h2.js.map → diagram-PSM6KHXK-D4-QwLW1.js.map} +1 -1
- package/dist/static/assets/{diagram-QEK2KX5R-Mf24XxZL.js → diagram-QEK2KX5R-BVbuejJn.js} +7 -7
- package/dist/static/assets/{diagram-QEK2KX5R-Mf24XxZL.js.map → diagram-QEK2KX5R-BVbuejJn.js.map} +1 -1
- package/dist/static/assets/{diagram-S2PKOQOG-DyQjD4D5.js → diagram-S2PKOQOG-pB6N6Tq_.js} +7 -7
- package/dist/static/assets/{diagram-S2PKOQOG-DyQjD4D5.js.map → diagram-S2PKOQOG-pB6N6Tq_.js.map} +1 -1
- package/dist/static/assets/{erDiagram-Q2GNP2WA-CEzTKw1u.js → erDiagram-Q2GNP2WA-DLKmthuw.js} +5 -5
- package/dist/static/assets/{erDiagram-Q2GNP2WA-CEzTKw1u.js.map → erDiagram-Q2GNP2WA-DLKmthuw.js.map} +1 -1
- package/dist/static/assets/{flowDiagram-NV44I4VS-DT821XSz.js → flowDiagram-NV44I4VS-BsBhWukh.js} +6 -6
- package/dist/static/assets/{flowDiagram-NV44I4VS-DT821XSz.js.map → flowDiagram-NV44I4VS-BsBhWukh.js.map} +1 -1
- package/dist/static/assets/{ganttDiagram-JELNMOA3-DlmeVsGg.js → ganttDiagram-JELNMOA3-Debz-J-C.js} +3 -3
- package/dist/static/assets/{ganttDiagram-JELNMOA3-DlmeVsGg.js.map → ganttDiagram-JELNMOA3-Debz-J-C.js.map} +1 -1
- package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-yAfyBG_d.js → gitGraphDiagram-V2S2FVAM-BnAPFBGR.js} +8 -8
- package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-yAfyBG_d.js.map → gitGraphDiagram-V2S2FVAM-BnAPFBGR.js.map} +1 -1
- package/dist/static/assets/{graph-BYv8vyWe.js → graph-DbzWiBNK.js} +3 -3
- package/dist/static/assets/{graph-BYv8vyWe.js.map → graph-DbzWiBNK.js.map} +1 -1
- package/dist/static/assets/{index-DMbwqOm6.js → index-B-8J28g7.js} +987 -1049
- package/dist/static/assets/index-B-8J28g7.js.map +1 -0
- package/dist/static/assets/{index-BiNcBn_U.css → index-CD5wtC_i.css} +1 -1
- package/dist/static/assets/{infoDiagram-HS3SLOUP-DaadramQ.js → infoDiagram-HS3SLOUP-CZ5hWoxV.js} +6 -6
- package/dist/static/assets/{infoDiagram-HS3SLOUP-DaadramQ.js.map → infoDiagram-HS3SLOUP-CZ5hWoxV.js.map} +1 -1
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-ftN8hxu3.js → journeyDiagram-XKPGCS4Q-CKN3oSxk.js} +5 -5
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-ftN8hxu3.js.map → journeyDiagram-XKPGCS4Q-CKN3oSxk.js.map} +1 -1
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-BIXETQ-C.js → kanban-definition-3W4ZIXB7-BQCMklfJ.js} +3 -3
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-BIXETQ-C.js.map → kanban-definition-3W4ZIXB7-BQCMklfJ.js.map} +1 -1
- package/dist/static/assets/{layout-OTbrj0Ye.js → layout-C5B58szc.js} +5 -5
- package/dist/static/assets/{layout-OTbrj0Ye.js.map → layout-C5B58szc.js.map} +1 -1
- package/dist/static/assets/{linear-CVfOC669.js → linear-_32fut6G.js} +2 -2
- package/dist/static/assets/{linear-CVfOC669.js.map → linear-_32fut6G.js.map} +1 -1
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-D2zv5uI9.js → mindmap-definition-VGOIOE7T-C_goMzjx.js} +4 -4
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-D2zv5uI9.js.map → mindmap-definition-VGOIOE7T-C_goMzjx.js.map} +1 -1
- package/dist/static/assets/{pieDiagram-ADFJNKIX-DaUXTsv7.js → pieDiagram-ADFJNKIX-BQ2n0cOB.js} +8 -8
- package/dist/static/assets/{pieDiagram-ADFJNKIX-DaUXTsv7.js.map → pieDiagram-ADFJNKIX-BQ2n0cOB.js.map} +1 -1
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-B7O2wPX9.js → quadrantDiagram-AYHSOK5B-BLg7_neg.js} +3 -3
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-B7O2wPX9.js.map → quadrantDiagram-AYHSOK5B-BLg7_neg.js.map} +1 -1
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DpauVPY1.js → requirementDiagram-UZGBJVZJ-DwkJt0zi.js} +4 -4
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DpauVPY1.js.map → requirementDiagram-UZGBJVZJ-DwkJt0zi.js.map} +1 -1
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-B3Hbfvad.js → sankeyDiagram-TZEHDZUN-DmxmatUB.js} +2 -2
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-B3Hbfvad.js.map → sankeyDiagram-TZEHDZUN-DmxmatUB.js.map} +1 -1
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-KdbWByWT.js → sequenceDiagram-WL72ISMW-KHU_eApU.js} +4 -4
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-KdbWByWT.js.map → sequenceDiagram-WL72ISMW-KHU_eApU.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-yDOCVezC.js → stateDiagram-FKZM4ZOC-B3DBCxAL.js} +9 -9
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-yDOCVezC.js.map → stateDiagram-FKZM4ZOC-B3DBCxAL.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-CpCJhvQO.js → stateDiagram-v2-4FDKWEC3-C-uIk7gh.js} +5 -5
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-CpCJhvQO.js.map → stateDiagram-v2-4FDKWEC3-C-uIk7gh.js.map} +1 -1
- package/dist/static/assets/{timeline-definition-IT6M3QCI-CHxuEjhV.js → timeline-definition-IT6M3QCI-SysEcQCC.js} +3 -3
- package/dist/static/assets/{timeline-definition-IT6M3QCI-CHxuEjhV.js.map → timeline-definition-IT6M3QCI-SysEcQCC.js.map} +1 -1
- package/dist/static/assets/{treemap-GDKQZRPO-Bsqu3wIy.js → treemap-GDKQZRPO-d0AbKEc4.js} +5 -5
- package/dist/static/assets/{treemap-GDKQZRPO-Bsqu3wIy.js.map → treemap-GDKQZRPO-d0AbKEc4.js.map} +1 -1
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-RZy33lFF.js → xychartDiagram-PRI3JC2R-CmSQMxUh.js} +3 -3
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-RZy33lFF.js.map → xychartDiagram-PRI3JC2R-CmSQMxUh.js.map} +1 -1
- package/dist/static/index.html +2 -2
- package/dist/tools/fs.js +1 -1
- package/package.json +9 -7
- package/dist/agent-priming.js +0 -2051
- package/dist/apps/installed-file.js +0 -207
- package/dist/apps/runtime-port.js +0 -91
- package/dist/docs/dominds-agent-priming.md +0 -218
- package/dist/docs/dominds-agent-priming.zh.md +0 -196
- package/dist/docs/drive-logic-context-refactor-plan.zh.md +0 -338
- package/dist/docs/keep-going.md +0 -176
- package/dist/docs/keep-going.zh.md +0 -162
- package/dist/docs/kernel-app-architecture.md +0 -286
- package/dist/docs/kernel-app-architecture.zh.md +0 -285
- package/dist/docs/showing-by-doing.md +0 -208
- package/dist/docs/showing-by-doing.zh.md +0 -177
- package/dist/docs/team-mgmt-toolset.md +0 -482
- package/dist/docs/team-mgmt-toolset.zh.md +0 -426
- package/dist/llm/driver-entry.js +0 -28
- package/dist/llm/driver-v2/context-health.js +0 -121
- package/dist/llm/driver-v2/context.js +0 -56
- package/dist/llm/driver-v2/core.js +0 -1545
- package/dist/llm/driver-v2/index.js +0 -26
- package/dist/llm/driver-v2/orchestrator.js +0 -158
- package/dist/llm/driver-v2/policy.js +0 -129
- package/dist/llm/driver-v2/restore-dialog-hierarchy.js +0 -73
- package/dist/llm/driver-v2/round.js +0 -366
- package/dist/llm/driver-v2/runtime-utils.js +0 -365
- package/dist/llm/driver-v2/saying-events.js +0 -20
- package/dist/llm/driver-v2/subdialog-txn.js +0 -42
- package/dist/llm/driver-v2/supdialog-response.js +0 -400
- package/dist/llm/driver-v2/tellask-bridge.js +0 -1148
- package/dist/llm/driver-v2/types.js +0 -10
- package/dist/llm/driver-v2-ref-only/context-health.js +0 -121
- package/dist/llm/driver-v2-ref-only/context.js +0 -17
- package/dist/llm/driver-v2-ref-only/core.js +0 -1710
- package/dist/llm/driver-v2-ref-only/index.js +0 -26
- package/dist/llm/driver-v2-ref-only/orchestrator.js +0 -158
- package/dist/llm/driver-v2-ref-only/policy.js +0 -129
- package/dist/llm/driver-v2-ref-only/restore-dialog-hierarchy.js +0 -73
- package/dist/llm/driver-v2-ref-only/round.js +0 -366
- package/dist/llm/driver-v2-ref-only/runtime-utils.js +0 -473
- package/dist/llm/driver-v2-ref-only/saying-events.js +0 -18
- package/dist/llm/driver-v2-ref-only/subdialog-txn.js +0 -42
- package/dist/llm/driver-v2-ref-only/supdialog-response.js +0 -453
- package/dist/llm/driver-v2-ref-only/tellask-bridge.js +0 -1178
- package/dist/llm/driver-v2-ref-only/types.js +0 -10
- package/dist/llm/driver.js +0 -4093
- package/dist/minds/promptdocs.js +0 -263
- package/dist/server/prompts-routes.js +0 -545
- package/dist/shared/team-mgmt-manual.js +0 -120
- package/dist/shared/types/prompts.js +0 -2
- package/dist/shared/types/tellask.js +0 -8
- package/dist/showing-by-doing.js +0 -1091
- package/dist/snippets/README.en.md +0 -3
- package/dist/snippets/README.md +0 -4
- package/dist/static/assets/index-DMbwqOm6.js.map +0 -1
- package/dist/tellask.js +0 -439
- package/dist/tools/context-health.js +0 -177
- package/dist/tools/diag.js +0 -583
- package/dist/tools/prompts/memory/en/errors.md +0 -155
- package/dist/tools/prompts/memory/en/index.md +0 -47
- package/dist/tools/prompts/memory/en/principles.md +0 -87
- package/dist/tools/prompts/memory/en/scenarios.md +0 -174
- package/dist/tools/prompts/memory/en/tools.md +0 -129
- package/dist/tools/prompts/memory/zh/errors.md +0 -155
- package/dist/tools/prompts/memory/zh/index.md +0 -47
- package/dist/tools/prompts/memory/zh/principles.md +0 -89
- package/dist/tools/prompts/memory/zh/scenarios.md +0 -174
- package/dist/tools/prompts/memory/zh/tools.md +0 -129
- package/dist/tools/team-mgmt.js +0 -3487
- package/dist/utils/task-doc.js +0 -236
|
@@ -1,155 +0,0 @@
|
|
|
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: 智能体在生成回复时可以访问所有个人记忆。你可以直接询问智能体当前有哪些记忆。
|
|
@@ -1,47 +0,0 @@
|
|
|
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`
|
|
@@ -1,89 +0,0 @@
|
|
|
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
|
-
- 不允许绝对路径(不能以 `/` 开头)
|
|
56
|
-
- 不允许路径穿越(`..` 禁止)
|
|
57
|
-
- 避免使用 `\\`(跨平台可读性差,统一用 `/`)
|
|
58
|
-
- 保持路径扁平:优先少量主题文件,而不是深层目录树(个人记忆的目标是“快速索引”,不是建文件系统)。
|
|
59
|
-
|
|
60
|
-
### 2. 内容格式
|
|
61
|
-
|
|
62
|
-
- 把个人记忆当作“长期随身携带的稳定事实备忘”:让你在职责范围内尽量做到 **0 次 ripgrep 就能开工**。
|
|
63
|
-
- 内容只写稳定事实:**落点(文件/符号)+ 一句话语义 + 关键契约/优先级(≤3 条)**。
|
|
64
|
-
- 记忆文件更少更好:按“未来会一起更新的内容”合并在同一文件里;不要为了“看起来整齐”引入额外的“目录套目录”。
|
|
65
|
-
- 不要把任务进度/当天状态写进个人记忆:
|
|
66
|
-
- 任务协作公告板用差遣牒(Taskdoc 的 `progress`)
|
|
67
|
-
- 短期工作集用提醒项(reminders)
|
|
68
|
-
|
|
69
|
-
### 3. 使用场景
|
|
70
|
-
|
|
71
|
-
- **任务持久化**:保存长期任务进度
|
|
72
|
-
- **上下文记忆**:保存对话上下文中的重要信息
|
|
73
|
-
- **偏好设置**:保存用户偏好和配置信息
|
|
74
|
-
|
|
75
|
-
> 注:如果你发现自己在用个人记忆保存“这次对话的当前进展”,大概率应该写到 Taskdoc `progress` 或 reminders。
|
|
76
|
-
|
|
77
|
-
## 与其他工具的关系
|
|
78
|
-
|
|
79
|
-
- **team_memory**:团队共享记忆,所有成员可见
|
|
80
|
-
- **reminder**:临时提醒,会话级别
|
|
81
|
-
- **change_mind**:更新差遣牒(goals/constraints/progress)
|
|
82
|
-
|
|
83
|
-
## 限制与注意事项
|
|
84
|
-
|
|
85
|
-
1. 路径护栏:不允许绝对路径;不允许包含 `..`。
|
|
86
|
-
2. 内容护栏:`content` 不能为空字符串。
|
|
87
|
-
3. `clear_memory` 会删除当前智能体的全部个人记忆,**不可恢复**。
|
|
88
|
-
|
|
89
|
-
> 建议:即使当前实现没有硬性 size 限制,也应保持记忆内容精炼,否则会显著增加上下文成本与过期风险。
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
# memory 使用场景
|
|
2
|
-
|
|
3
|
-
## 模板(场景)
|
|
4
|
-
|
|
5
|
-
### 场景格式
|
|
6
|
-
|
|
7
|
-
- 目标
|
|
8
|
-
- 前置条件
|
|
9
|
-
- 步骤
|
|
10
|
-
- 期望信号
|
|
11
|
-
- 失败分支处理
|
|
12
|
-
- 完成判据
|
|
13
|
-
|
|
14
|
-
## 场景 1:任务进度跟踪
|
|
15
|
-
|
|
16
|
-
### 场景描述
|
|
17
|
-
|
|
18
|
-
在长时间任务中,需要持久化任务进度,以便重启后继续。
|
|
19
|
-
|
|
20
|
-
### 示例
|
|
21
|
-
|
|
22
|
-
**添加任务列表**
|
|
23
|
-
|
|
24
|
-
```typescript
|
|
25
|
-
add_memory({
|
|
26
|
-
path: 'project/i18n-tasks',
|
|
27
|
-
content:
|
|
28
|
-
'## 待办任务\n\n- [ ] 创建 ws_mod 手册\n- [ ] 创建 team_mgmt 手册\n- [ ] 创建 memory 手册\n- [ ] 创建 control 手册\n\n## 进行中\n- [ ] 创建 ws_mod 手册 [100%]',
|
|
29
|
-
});
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
**更新任务进度**
|
|
33
|
-
|
|
34
|
-
```typescript
|
|
35
|
-
replace_memory({
|
|
36
|
-
path: 'project/i18n-tasks',
|
|
37
|
-
content:
|
|
38
|
-
'## 待办任务\n\n- [ ] 创建 team_mgmt 手册\n- [ ] 创建 memory 手册\n- [ ] 创建 control 手册\n\n## 已完成\n- [x] 创建 ws_mod 手册\n\n## 进行中\n- [ ] 创建 team_mgmt 手册 [50%]',
|
|
39
|
-
});
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## 场景 2:用户偏好存储
|
|
43
|
-
|
|
44
|
-
### 场景描述
|
|
45
|
-
|
|
46
|
-
保存用户偏好设置,例如编程语言、主题等。
|
|
47
|
-
|
|
48
|
-
### 示例
|
|
49
|
-
|
|
50
|
-
**保存用户偏好**
|
|
51
|
-
|
|
52
|
-
```typescript
|
|
53
|
-
add_memory({
|
|
54
|
-
path: 'user/preferences',
|
|
55
|
-
content:
|
|
56
|
-
'## 用户偏好\n\n- 编程语言: TypeScript\n- 代码风格: strict\n- 主题: dark\n- 自动保存: true',
|
|
57
|
-
});
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
**更新偏好**
|
|
61
|
-
|
|
62
|
-
```typescript
|
|
63
|
-
replace_memory({
|
|
64
|
-
path: 'user/preferences',
|
|
65
|
-
content:
|
|
66
|
-
'## 用户偏好\n\n- 编程语言: TypeScript\n- 代码风格: strict\n- 主题: light\n- 自动保存: true',
|
|
67
|
-
});
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## 场景 3:上下文信息保存
|
|
71
|
-
|
|
72
|
-
### 场景描述
|
|
73
|
-
|
|
74
|
-
在复杂任务中,保存重要的上下文信息,避免重复查询。
|
|
75
|
-
|
|
76
|
-
### 示例
|
|
77
|
-
|
|
78
|
-
**保存 API 信息**
|
|
79
|
-
|
|
80
|
-
```typescript
|
|
81
|
-
add_memory({
|
|
82
|
-
path: 'context/api-endpoints',
|
|
83
|
-
content:
|
|
84
|
-
'## API 端点\n\n- 用户登录: POST /api/auth/login\n- 获取用户信息: GET /api/user/info\n- 更新用户设置: PUT /api/user/settings\n\n## 认证\n- 使用 Bearer Token\n- 有效期: 24 小时',
|
|
85
|
-
});
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
**保存技术栈**
|
|
89
|
-
|
|
90
|
-
```typescript
|
|
91
|
-
add_memory({
|
|
92
|
-
path: 'context/tech-stack',
|
|
93
|
-
content:
|
|
94
|
-
'## 技术栈\n\n- 前端: React + TypeScript\n- 后端: Node.js + Express\n- 数据库: PostgreSQL\n- 缓存: Redis',
|
|
95
|
-
});
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
## 场景 4:会议记录
|
|
99
|
-
|
|
100
|
-
### 场景描述
|
|
101
|
-
|
|
102
|
-
保存会议要点和决策。
|
|
103
|
-
|
|
104
|
-
### 示例
|
|
105
|
-
|
|
106
|
-
```typescript
|
|
107
|
-
add_memory({
|
|
108
|
-
path: 'meeting/2024-01-15',
|
|
109
|
-
content:
|
|
110
|
-
'## 会议纪要: 2024-01-15\n\n### 参与者\n- @fullstack\n- @i18n\n- @ux\n\n### 议题\n1. i18n 手册创建计划\n2. man 函数 UX 改进\n\n### 决策\n- 优先创建 ws_mod 和 team_mgmt 手册\n- man 函数支持模糊匹配\n\n### 待办\n- @i18n: 创建 memory 手册\n- @fullstack: 优化 man 函数',
|
|
111
|
-
});
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
## 场景 5:知识库
|
|
115
|
-
|
|
116
|
-
### 场景描述
|
|
117
|
-
|
|
118
|
-
建立个人知识库,保存学习笔记。
|
|
119
|
-
|
|
120
|
-
### 示例
|
|
121
|
-
|
|
122
|
-
```typescript
|
|
123
|
-
add_memory({
|
|
124
|
-
path: 'knowledge/typescript-tips',
|
|
125
|
-
content:
|
|
126
|
-
'## TypeScript 技巧\n\n### 1. 类型推断\nconst x = 1; // 类型推断为 number\n\n### 2. 接口 vs 类型\n- 接口: 可扩展,适合对象类型\n- 类型: 支持联合类型、交叉类型\n\n### 3. strict 模式\n启用 strict 模式可以获得更好的类型安全',
|
|
127
|
-
});
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## 场景 6:临时笔记
|
|
131
|
-
|
|
132
|
-
### 场景描述
|
|
133
|
-
|
|
134
|
-
临时保存需要稍后处理的信息。
|
|
135
|
-
|
|
136
|
-
### 示例
|
|
137
|
-
|
|
138
|
-
```typescript
|
|
139
|
-
add_memory({
|
|
140
|
-
path: 'scratchpad/temp-notes',
|
|
141
|
-
content:
|
|
142
|
-
'## 临时笔记\n\n- TODO: 检查 team.yaml 配置\n- TODO: 验证 man 函数类型\n- TODO: 更新差遣牒进度',
|
|
143
|
-
});
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
**处理完后删除**
|
|
147
|
-
|
|
148
|
-
```typescript
|
|
149
|
-
drop_memory({
|
|
150
|
-
path: 'scratchpad/temp-notes',
|
|
151
|
-
});
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
## 场景 7:清理过时记忆
|
|
155
|
-
|
|
156
|
-
### 场景描述
|
|
157
|
-
|
|
158
|
-
定期清理不再需要的记忆。
|
|
159
|
-
|
|
160
|
-
### 示例
|
|
161
|
-
|
|
162
|
-
```typescript
|
|
163
|
-
// 查看当前所有记忆(智能体可读取)
|
|
164
|
-
// 逐个删除不需要的记忆
|
|
165
|
-
drop_memory({
|
|
166
|
-
path: 'project/old-feature',
|
|
167
|
-
});
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
或者使用 `clear_memory` 清空所有记忆(谨慎使用):
|
|
171
|
-
|
|
172
|
-
```typescript
|
|
173
|
-
clear_memory({});
|
|
174
|
-
```
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
# memory 工具参考
|
|
2
|
-
|
|
3
|
-
## 模板(工具)
|
|
4
|
-
|
|
5
|
-
### 阅读方式
|
|
6
|
-
|
|
7
|
-
- "工具契约(Schema)" 为参数/返回的权威来源。
|
|
8
|
-
|
|
9
|
-
### 单工具字段顺序
|
|
10
|
-
|
|
11
|
-
1. 用途
|
|
12
|
-
2. 调用签名
|
|
13
|
-
3. 参数(参见 schema)
|
|
14
|
-
4. 前置条件
|
|
15
|
-
5. 成功信号
|
|
16
|
-
6. 失败/错误
|
|
17
|
-
7. 可直接执行示例
|
|
18
|
-
8. 常见误用
|
|
19
|
-
|
|
20
|
-
## 工具列表
|
|
21
|
-
|
|
22
|
-
### 1. add_memory
|
|
23
|
-
|
|
24
|
-
创建新记忆(路径不存在时)。
|
|
25
|
-
|
|
26
|
-
**参数:**
|
|
27
|
-
|
|
28
|
-
- `path`(必需):记忆的唯一标识符
|
|
29
|
-
- `content`(必需):记忆内容
|
|
30
|
-
|
|
31
|
-
**返回:**
|
|
32
|
-
|
|
33
|
-
- 成功:返回简短文本(按工作语言),例如 `已添加`。
|
|
34
|
-
- 失败:返回错误文本(通常以 `错误:` 开头),并包含可执行的下一步(例如提示改用 `replace_memory`)。
|
|
35
|
-
|
|
36
|
-
**错误:**
|
|
37
|
-
|
|
38
|
-
- `MEMORY_ALREADY_EXISTS`:路径已存在,使用 `replace_memory` 更新
|
|
39
|
-
|
|
40
|
-
### 2. replace_memory
|
|
41
|
-
|
|
42
|
-
更新已有记忆(路径存在时)。
|
|
43
|
-
|
|
44
|
-
**参数:**
|
|
45
|
-
|
|
46
|
-
- `path`(必需):记忆的唯一标识符
|
|
47
|
-
- `content`(必需):新的记忆内容
|
|
48
|
-
|
|
49
|
-
**返回:**
|
|
50
|
-
|
|
51
|
-
- 成功:返回简短文本(按工作语言),例如 `已更新`。
|
|
52
|
-
- 失败:返回错误文本(通常以 `错误:` 开头),并包含可执行的下一步(例如提示改用 `add_memory`)。
|
|
53
|
-
|
|
54
|
-
**错误:**
|
|
55
|
-
|
|
56
|
-
- `MEMORY_NOT_FOUND`:路径不存在,使用 `add_memory` 创建
|
|
57
|
-
|
|
58
|
-
### 3. drop_memory
|
|
59
|
-
|
|
60
|
-
删除指定记忆。
|
|
61
|
-
|
|
62
|
-
**参数:**
|
|
63
|
-
|
|
64
|
-
- `path`(必需):要删除的记忆路径
|
|
65
|
-
|
|
66
|
-
**返回:**
|
|
67
|
-
|
|
68
|
-
- 成功:返回简短文本(按工作语言),例如 `已删除`。
|
|
69
|
-
- 失败:返回错误文本(通常以 `错误:` 开头)。
|
|
70
|
-
|
|
71
|
-
**错误:**
|
|
72
|
-
|
|
73
|
-
- `MEMORY_NOT_FOUND`:路径不存在
|
|
74
|
-
|
|
75
|
-
### 4. clear_memory
|
|
76
|
-
|
|
77
|
-
清空所有个人记忆。
|
|
78
|
-
|
|
79
|
-
**警告:** 此操作不可恢复!
|
|
80
|
-
|
|
81
|
-
**参数:** 无
|
|
82
|
-
|
|
83
|
-
**返回:**
|
|
84
|
-
|
|
85
|
-
- 成功:返回简短文本(按工作语言),例如 `已清空`;若没有可清空内容,会返回类似 `没有可清空的个人记忆。`。
|
|
86
|
-
- 失败:返回错误文本。
|
|
87
|
-
|
|
88
|
-
**错误:**
|
|
89
|
-
|
|
90
|
-
- 无(即使没有记忆也会返回成功)
|
|
91
|
-
|
|
92
|
-
## 使用示例
|
|
93
|
-
|
|
94
|
-
### 添加新记忆
|
|
95
|
-
|
|
96
|
-
```typescript
|
|
97
|
-
add_memory({
|
|
98
|
-
path: 'project/todo',
|
|
99
|
-
content: '- 完成 i18n 文档\n- 编写测试用例\n- 更新 README',
|
|
100
|
-
});
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### 更新已有记忆
|
|
104
|
-
|
|
105
|
-
```typescript
|
|
106
|
-
replace_memory({
|
|
107
|
-
path: 'project/todo',
|
|
108
|
-
content: '- 完成 i18n 文档 [DONE]\n- 编写测试用例 [IN PROGRESS]\n- 更新 README',
|
|
109
|
-
});
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### 删除记忆
|
|
113
|
-
|
|
114
|
-
```typescript
|
|
115
|
-
drop_memory({
|
|
116
|
-
path: 'project/todo',
|
|
117
|
-
});
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### 清空所有记忆
|
|
121
|
-
|
|
122
|
-
```typescript
|
|
123
|
-
clear_memory({});
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
## 输出与语言
|
|
127
|
-
|
|
128
|
-
- 输出是**纯文本**,不是结构化 JSON/YAML。
|
|
129
|
-
- 文本语言跟随“工作语言(work language)”。
|