dominds 1.17.6 → 1.17.7
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/minds/system-prompt-parts.js +2 -2
- package/dist/server/websocket-handler.d.ts +5 -0
- package/dist/server/websocket-handler.js +17 -4
- package/dist/tools/prompts/control/en/errors.md +1 -1
- package/dist/tools/prompts/control/en/index.md +2 -2
- package/dist/tools/prompts/control/en/principles.md +19 -4
- package/dist/tools/prompts/control/en/scenarios.md +14 -13
- package/dist/tools/prompts/control/en/tools.md +2 -2
- package/dist/tools/prompts/control/zh/errors.md +1 -1
- package/dist/tools/prompts/control/zh/index.md +2 -2
- package/dist/tools/prompts/control/zh/principles.md +19 -4
- package/dist/tools/prompts/control/zh/scenarios.md +13 -12
- package/dist/tools/prompts/control/zh/tools.md +2 -2
- package/dist/tools/prompts/personal_memory/en/index.md +2 -0
- package/dist/tools/prompts/personal_memory/en/principles.md +12 -7
- package/dist/tools/prompts/personal_memory/en/scenarios.md +32 -74
- package/dist/tools/prompts/personal_memory/en/tools.md +7 -5
- package/dist/tools/prompts/personal_memory/zh/index.md +2 -0
- package/dist/tools/prompts/personal_memory/zh/principles.md +12 -7
- package/dist/tools/prompts/personal_memory/zh/scenarios.md +32 -74
- package/dist/tools/prompts/personal_memory/zh/tools.md +7 -5
- package/dist/tools/prompts/team_memory/en/index.md +5 -4
- package/dist/tools/prompts/team_memory/en/principles.md +14 -3
- package/dist/tools/prompts/team_memory/en/scenarios.md +8 -8
- package/dist/tools/prompts/team_memory/en/tools.md +3 -3
- package/dist/tools/prompts/team_memory/zh/index.md +5 -4
- package/dist/tools/prompts/team_memory/zh/principles.md +13 -2
- package/dist/tools/prompts/team_memory/zh/scenarios.md +8 -8
- package/dist/tools/prompts/team_memory/zh/tools.md +3 -3
- package/dist/tools/team_mgmt.js +16 -4
- package/dist/utils/taskdoc.js +2 -2
- package/package.json +3 -3
- package/webapp/dist/assets/{_basePickBy-CdAKD4rj.js → _basePickBy-u7tNFRWr.js} +3 -3
- package/webapp/dist/assets/{_basePickBy-CdAKD4rj.js.map → _basePickBy-u7tNFRWr.js.map} +1 -1
- package/webapp/dist/assets/{_baseUniq-_dXSeigA.js → _baseUniq-CH9LRkiH.js} +2 -2
- package/webapp/dist/assets/{_baseUniq-_dXSeigA.js.map → _baseUniq-CH9LRkiH.js.map} +1 -1
- package/webapp/dist/assets/{arc-DNnfKGXe.js → arc-Bo0Lw3ZP.js} +2 -2
- package/webapp/dist/assets/{arc-DNnfKGXe.js.map → arc-Bo0Lw3ZP.js.map} +1 -1
- package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-400MthuC.js → architectureDiagram-VXUJARFQ-Ckyr89Iw.js} +7 -7
- package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-400MthuC.js.map → architectureDiagram-VXUJARFQ-Ckyr89Iw.js.map} +1 -1
- package/webapp/dist/assets/{blockDiagram-VD42YOAC-UjvoDLu0.js → blockDiagram-VD42YOAC-BSXoLLq_.js} +7 -7
- package/webapp/dist/assets/{blockDiagram-VD42YOAC-UjvoDLu0.js.map → blockDiagram-VD42YOAC-BSXoLLq_.js.map} +1 -1
- package/webapp/dist/assets/{c4Diagram-YG6GDRKO-BUPEBKuT.js → c4Diagram-YG6GDRKO-CgCG1cP0.js} +3 -3
- package/webapp/dist/assets/{c4Diagram-YG6GDRKO-BUPEBKuT.js.map → c4Diagram-YG6GDRKO-CgCG1cP0.js.map} +1 -1
- package/webapp/dist/assets/{channel-Bc-dSNjB.js → channel-Crbz0zgt.js} +2 -2
- package/webapp/dist/assets/{channel-Bc-dSNjB.js.map → channel-Crbz0zgt.js.map} +1 -1
- package/webapp/dist/assets/{chunk-4BX2VUAB-D0CwOvuG.js → chunk-4BX2VUAB-BIIEb_5S.js} +2 -2
- package/webapp/dist/assets/{chunk-4BX2VUAB-D0CwOvuG.js.map → chunk-4BX2VUAB-BIIEb_5S.js.map} +1 -1
- package/webapp/dist/assets/{chunk-55IACEB6-_z-JPBKr.js → chunk-55IACEB6-CaJzGgc9.js} +2 -2
- package/webapp/dist/assets/{chunk-55IACEB6-_z-JPBKr.js.map → chunk-55IACEB6-CaJzGgc9.js.map} +1 -1
- package/webapp/dist/assets/{chunk-B4BG7PRW-D4q30SD5.js → chunk-B4BG7PRW-DHQwhO9F.js} +5 -5
- package/webapp/dist/assets/{chunk-B4BG7PRW-D4q30SD5.js.map → chunk-B4BG7PRW-DHQwhO9F.js.map} +1 -1
- package/webapp/dist/assets/{chunk-DI55MBZ5-c4c0VIRJ.js → chunk-DI55MBZ5-CG1lO0R8.js} +4 -4
- package/webapp/dist/assets/{chunk-DI55MBZ5-c4c0VIRJ.js.map → chunk-DI55MBZ5-CG1lO0R8.js.map} +1 -1
- package/webapp/dist/assets/{chunk-FMBD7UC4-BZJ6MV7q.js → chunk-FMBD7UC4-DAUsTLPS.js} +2 -2
- package/webapp/dist/assets/{chunk-FMBD7UC4-BZJ6MV7q.js.map → chunk-FMBD7UC4-DAUsTLPS.js.map} +1 -1
- package/webapp/dist/assets/{chunk-QN33PNHL-Dt5_zoWx.js → chunk-QN33PNHL-BfQs-QHE.js} +2 -2
- package/webapp/dist/assets/{chunk-QN33PNHL-Dt5_zoWx.js.map → chunk-QN33PNHL-BfQs-QHE.js.map} +1 -1
- package/webapp/dist/assets/{chunk-QZHKN3VN-C233UTgJ.js → chunk-QZHKN3VN-C5iKQ6mQ.js} +2 -2
- package/webapp/dist/assets/{chunk-QZHKN3VN-C233UTgJ.js.map → chunk-QZHKN3VN-C5iKQ6mQ.js.map} +1 -1
- package/webapp/dist/assets/{chunk-TZMSLE5B-CYz6GjE2.js → chunk-TZMSLE5B-CBShDwy2.js} +2 -2
- package/webapp/dist/assets/{chunk-TZMSLE5B-CYz6GjE2.js.map → chunk-TZMSLE5B-CBShDwy2.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-2ON5EDUG-Bh9Mw-kt.js → classDiagram-2ON5EDUG-DrfJDzYO.js} +6 -6
- package/webapp/dist/assets/{classDiagram-2ON5EDUG-Bh9Mw-kt.js.map → classDiagram-2ON5EDUG-DrfJDzYO.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-Bh9Mw-kt.js → classDiagram-v2-WZHVMYZB-DrfJDzYO.js} +6 -6
- package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-Bh9Mw-kt.js.map → classDiagram-v2-WZHVMYZB-DrfJDzYO.js.map} +1 -1
- package/webapp/dist/assets/{clone-2lFjyI7N.js → clone-Cd-48URG.js} +2 -2
- package/webapp/dist/assets/{clone-2lFjyI7N.js.map → clone-Cd-48URG.js.map} +1 -1
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-3DOT2IPV.js → cose-bilkent-S5V4N54A-CCji0YN3.js} +2 -2
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-3DOT2IPV.js.map → cose-bilkent-S5V4N54A-CCji0YN3.js.map} +1 -1
- package/webapp/dist/assets/{dagre-6UL2VRFP-ClogWVOL.js → dagre-6UL2VRFP-B94p-Dpl.js} +7 -7
- package/webapp/dist/assets/{dagre-6UL2VRFP-ClogWVOL.js.map → dagre-6UL2VRFP-B94p-Dpl.js.map} +1 -1
- package/webapp/dist/assets/{diagram-PSM6KHXK-C7W5uMOI.js → diagram-PSM6KHXK-DP-zGmAS.js} +8 -8
- package/webapp/dist/assets/{diagram-PSM6KHXK-C7W5uMOI.js.map → diagram-PSM6KHXK-DP-zGmAS.js.map} +1 -1
- package/webapp/dist/assets/{diagram-QEK2KX5R-2hcqk2fE.js → diagram-QEK2KX5R-DquJirs4.js} +7 -7
- package/webapp/dist/assets/{diagram-QEK2KX5R-2hcqk2fE.js.map → diagram-QEK2KX5R-DquJirs4.js.map} +1 -1
- package/webapp/dist/assets/{diagram-S2PKOQOG-DSTjb4Ot.js → diagram-S2PKOQOG-Dt5W2t6V.js} +7 -7
- package/webapp/dist/assets/{diagram-S2PKOQOG-DSTjb4Ot.js.map → diagram-S2PKOQOG-Dt5W2t6V.js.map} +1 -1
- package/webapp/dist/assets/{erDiagram-Q2GNP2WA-Cyzo2gRU.js → erDiagram-Q2GNP2WA-Bs0-2Rfj.js} +5 -5
- package/webapp/dist/assets/{erDiagram-Q2GNP2WA-Cyzo2gRU.js.map → erDiagram-Q2GNP2WA-Bs0-2Rfj.js.map} +1 -1
- package/webapp/dist/assets/{flowDiagram-NV44I4VS-vwGV7In0.js → flowDiagram-NV44I4VS-cJjXWAlK.js} +6 -6
- package/webapp/dist/assets/{flowDiagram-NV44I4VS-vwGV7In0.js.map → flowDiagram-NV44I4VS-cJjXWAlK.js.map} +1 -1
- package/webapp/dist/assets/{ganttDiagram-JELNMOA3-BwnKcFdH.js → ganttDiagram-JELNMOA3-Du1AUaKm.js} +3 -3
- package/webapp/dist/assets/{ganttDiagram-JELNMOA3-BwnKcFdH.js.map → ganttDiagram-JELNMOA3-Du1AUaKm.js.map} +1 -1
- package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-AHZBVTYC.js → gitGraphDiagram-V2S2FVAM-D_jVOYOK.js} +8 -8
- package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-AHZBVTYC.js.map → gitGraphDiagram-V2S2FVAM-D_jVOYOK.js.map} +1 -1
- package/webapp/dist/assets/{graph-8UtNyWA6.js → graph-CuF_sq4r.js} +3 -3
- package/webapp/dist/assets/{graph-8UtNyWA6.js.map → graph-CuF_sq4r.js.map} +1 -1
- package/webapp/dist/assets/{index-BxP2ljx_.js → index-DAShQcjb.js} +67 -47
- package/webapp/dist/assets/{index-BxP2ljx_.js.map → index-DAShQcjb.js.map} +1 -1
- package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BjVLGKXo.js → infoDiagram-HS3SLOUP-CEFlo_Hl.js} +6 -6
- package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BjVLGKXo.js.map → infoDiagram-HS3SLOUP-CEFlo_Hl.js.map} +1 -1
- package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-CR4SmnDB.js → journeyDiagram-XKPGCS4Q-zc2Q4Se9.js} +5 -5
- package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-CR4SmnDB.js.map → journeyDiagram-XKPGCS4Q-zc2Q4Se9.js.map} +1 -1
- package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-BRwp6TGw.js → kanban-definition-3W4ZIXB7-oT42RM2a.js} +3 -3
- package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-BRwp6TGw.js.map → kanban-definition-3W4ZIXB7-oT42RM2a.js.map} +1 -1
- package/webapp/dist/assets/{layout-CGl07Gcr.js → layout-BvaOu3k2.js} +5 -5
- package/webapp/dist/assets/{layout-CGl07Gcr.js.map → layout-BvaOu3k2.js.map} +1 -1
- package/webapp/dist/assets/{linear-BZLEuG3I.js → linear-Cg-CjocS.js} +2 -2
- package/webapp/dist/assets/{linear-BZLEuG3I.js.map → linear-Cg-CjocS.js.map} +1 -1
- package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-CSKILdE-.js → mindmap-definition-VGOIOE7T-CVFVrU22.js} +4 -4
- package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-CSKILdE-.js.map → mindmap-definition-VGOIOE7T-CVFVrU22.js.map} +1 -1
- package/webapp/dist/assets/{pieDiagram-ADFJNKIX-B_V3b26u.js → pieDiagram-ADFJNKIX-Bai5CMos.js} +8 -8
- package/webapp/dist/assets/{pieDiagram-ADFJNKIX-B_V3b26u.js.map → pieDiagram-ADFJNKIX-Bai5CMos.js.map} +1 -1
- package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-CUtWvL54.js → quadrantDiagram-AYHSOK5B-BPXDO_2E.js} +3 -3
- package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-CUtWvL54.js.map → quadrantDiagram-AYHSOK5B-BPXDO_2E.js.map} +1 -1
- package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-i2tJjoPk.js → requirementDiagram-UZGBJVZJ-Dgj9X9cE.js} +4 -4
- package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-i2tJjoPk.js.map → requirementDiagram-UZGBJVZJ-Dgj9X9cE.js.map} +1 -1
- package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-nPQL9_d2.js → sankeyDiagram-TZEHDZUN-Dc0mO4OD.js} +2 -2
- package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-nPQL9_d2.js.map → sankeyDiagram-TZEHDZUN-Dc0mO4OD.js.map} +1 -1
- package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-C2hX7rec.js → sequenceDiagram-WL72ISMW-DZJTga0d.js} +4 -4
- package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-C2hX7rec.js.map → sequenceDiagram-WL72ISMW-DZJTga0d.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-C94MSmDQ.js → stateDiagram-FKZM4ZOC-RNxYatKM.js} +9 -9
- package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-C94MSmDQ.js.map → stateDiagram-FKZM4ZOC-RNxYatKM.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-C3pjtK0h.js → stateDiagram-v2-4FDKWEC3-ADxYqWzo.js} +5 -5
- package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-C3pjtK0h.js.map → stateDiagram-v2-4FDKWEC3-ADxYqWzo.js.map} +1 -1
- package/webapp/dist/assets/{timeline-definition-IT6M3QCI-c087-Lzc.js → timeline-definition-IT6M3QCI-Qx_h1e-i.js} +3 -3
- package/webapp/dist/assets/{timeline-definition-IT6M3QCI-c087-Lzc.js.map → timeline-definition-IT6M3QCI-Qx_h1e-i.js.map} +1 -1
- package/webapp/dist/assets/{treemap-GDKQZRPO-PkjxSOwj.js → treemap-GDKQZRPO-BHzYvXGn.js} +5 -5
- package/webapp/dist/assets/{treemap-GDKQZRPO-PkjxSOwj.js.map → treemap-GDKQZRPO-BHzYvXGn.js.map} +1 -1
- package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-DtMWPXHa.js → xychartDiagram-PRI3JC2R-DGdjkYQQ.js} +3 -3
- package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-DtMWPXHa.js.map → xychartDiagram-PRI3JC2R-DGdjkYQQ.js.map} +1 -1
- package/webapp/dist/index.html +1 -1
|
@@ -162,7 +162,7 @@ function getMemoryPromptCopy(ctx) {
|
|
|
162
162
|
temporaryInfoLine: '你的聊天记录与工具输出是临时信息:会快速累积、很快过时,并增加你的认知负担。在同一轮对话中,除了 `clear_mind` 以外你无法真正丢弃这些历史。',
|
|
163
163
|
clearMindLine: '`clear_mind` 会开启新一程对话(保留差遣牒、提醒项与记忆层),从而卸掉这部分认知负载并继续推进。因此你必须先把关键信息提炼到高价值载体:',
|
|
164
164
|
taskdocContractLine: '- 差遣牒(`*.tsk/`):全队共享的任务契约(goals/constraints/progress);不是个人笔记,保持足够短,每轮都应可通读。',
|
|
165
|
-
taskdocSemanticsLine: '- 章节语义约定:`progress`
|
|
165
|
+
taskdocSemanticsLine: '- 章节语义约定:`progress` 是全队共享、准实时、可扫读的任务公告牌,用来记录当前有效状态、关键决策、下一步与仍成立阻塞;不是流水账,也不是个人工作记录。`goals` / `constraints` 是较稳定的任务契约;每次更新都必须保留仍然有效的他人条目。',
|
|
166
166
|
taskdocSectionReplaceLine: `- 更新差遣牒的任意分段时:每次调用会替换该分段全文;你必须先对照“上下文中注入的当前内容”做合并/压缩;禁止覆盖/抹掉他人条目;自己负责维护的条目必须标注责任人(例如 \`- [owner:@${ctx.agentId}] ...\` 或用 \`### @${ctx.agentId}\` 分块)。`,
|
|
167
167
|
progressLine: '- 更新 `progress` 时:它必须始终是可供全队扫读的完整当前快照,而不是只追加自己这一轮的零散笔记。',
|
|
168
168
|
injectedTaskdocLine: '- 重要:差遣牒内容会被系统以内联形式注入到上下文中(本轮生成视角下即为最新;注入内容不包括全局约束)。需要回顾时请直接基于上下文里的差遣牒内容回顾与决策,不要试图用通用文件工具读取 `*.tsk/` 下的文件(会被拒绝)。',
|
|
@@ -186,7 +186,7 @@ function getMemoryPromptCopy(ctx) {
|
|
|
186
186
|
temporaryInfoLine: 'Dialog history and tool outputs are temporary: they accumulate quickly, become stale, and increase cognitive load. Within a course, you cannot truly drop that history except via `clear_mind`.',
|
|
187
187
|
clearMindLine: '`clear_mind` starts a new course while preserving Taskdoc, reminders, and memory layers. Therefore, before clearing, distill key information into durable layers:',
|
|
188
188
|
taskdocContractLine: '- Taskdoc (`*.tsk/`): the team-shared task contract (goals/constraints/progress). It is not a personal notebook; keep it small enough to read every course.',
|
|
189
|
-
taskdocSemanticsLine: '- Section semantics: `progress` is the team
|
|
189
|
+
taskdocSemanticsLine: '- Section semantics: `progress` is the team-shared, quasi-real-time, scannable task bulletin board for current effective state, key decisions, next steps, and still-active blockers; it is not a raw log or personal work record. `goals` / `constraints` are the more stable task contract; every update must preserve still-valid entries from others.',
|
|
190
190
|
taskdocSectionReplaceLine: `- When updating any Taskdoc section: each call replaces the entire section; always start from the current injected content and merge/compress; do not overwrite other contributors; add an explicit owner tag for entries you maintain (e.g., \`- [owner:@${ctx.agentId}] ...\` or a \`### @${ctx.agentId}\` block).`,
|
|
191
191
|
progressLine: '- When updating `progress`, keep it as a complete, team-scannable current snapshot instead of appending only your own latest notes.',
|
|
192
192
|
injectedTaskdocLine: '- Important: the Taskdoc content is injected inline into the context (the latest as of this generation; injected content excludes global constraints). Review the injected Taskdoc instead of trying to read files under `*.tsk/` via general file tools (they will be rejected).',
|
|
@@ -3,6 +3,11 @@ import { type LanguageCode } from '@longrun-ai/kernel/types/language';
|
|
|
3
3
|
import type { Server } from 'http';
|
|
4
4
|
import { WebSocket, WebSocketServer } from 'ws';
|
|
5
5
|
import type { AuthConfig } from './auth';
|
|
6
|
+
export declare function shouldQueueUserSupplementAtGenerationBoundary(args: {
|
|
7
|
+
latestGenerating: boolean;
|
|
8
|
+
inMemoryGenerating: boolean;
|
|
9
|
+
isLocked: boolean;
|
|
10
|
+
}): boolean;
|
|
6
11
|
/**
|
|
7
12
|
* Handle incoming WebSocket messages
|
|
8
13
|
*/
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shouldQueueUserSupplementAtGenerationBoundary = shouldQueueUserSupplementAtGenerationBoundary;
|
|
3
4
|
exports.handleWebSocketMessage = handleWebSocketMessage;
|
|
4
5
|
exports.setupWebSocketServer = setupWebSocketServer;
|
|
5
6
|
exports.cleanupEventSystems = cleanupEventSystems;
|
|
@@ -209,12 +210,22 @@ function syncDialogLanguagePreference(dialog, language, options) {
|
|
|
209
210
|
}
|
|
210
211
|
dialog.resetCourseLanguageNotice();
|
|
211
212
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
if (latest?.generating !== true) {
|
|
213
|
+
function shouldQueueUserSupplementAtGenerationBoundary(args) {
|
|
214
|
+
if (!args.isLocked) {
|
|
215
215
|
return false;
|
|
216
216
|
}
|
|
217
|
-
|
|
217
|
+
return args.latestGenerating || args.inMemoryGenerating;
|
|
218
|
+
}
|
|
219
|
+
async function queueUserSupplementAtGenerationBoundary(dialog, prompt) {
|
|
220
|
+
const latest = await persistence_1.DialogPersistence.loadDialogLatest(dialog.id, 'running');
|
|
221
|
+
const inMemoryGenerating = dialog.hasActiveGeneration;
|
|
222
|
+
// Live UX can observe generating_start before latest.yaml flips generating=true, so boundary
|
|
223
|
+
// queuing must honor either persisted or in-memory generation state.
|
|
224
|
+
if (!shouldQueueUserSupplementAtGenerationBoundary({
|
|
225
|
+
latestGenerating: latest?.generating === true,
|
|
226
|
+
inMemoryGenerating,
|
|
227
|
+
isLocked: dialog.isLocked(),
|
|
228
|
+
})) {
|
|
218
229
|
return false;
|
|
219
230
|
}
|
|
220
231
|
const queued = dialog.queueUserPromptAtGenerationBoundary({
|
|
@@ -237,6 +248,8 @@ async function queueUserSupplementAtGenerationBoundary(dialog, prompt) {
|
|
|
237
248
|
selfId: dialog.id.selfId,
|
|
238
249
|
msgId: queued.msgId,
|
|
239
250
|
incomingMsgId: prompt.msgId,
|
|
251
|
+
latestGenerating: latest?.generating === true,
|
|
252
|
+
inMemoryGenerating,
|
|
240
253
|
});
|
|
241
254
|
return true;
|
|
242
255
|
}
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
|
|
88
88
|
### Q: What's the difference between dialog reminders, personal reminders, and memory?
|
|
89
89
|
|
|
90
|
-
A: `dialog` reminders are only for the current dialog. `personal` reminders stay visible in all later dialogs you lead, but still belong to the
|
|
90
|
+
A: `dialog` reminders are only for the current dialog's working set. `personal` reminders stay visible in all later dialogs you lead, but still belong to the working set rather than long-term knowledge. `personal_memory` is for durable facts and reusable knowledge saved to disk; if the information should synchronize the team's current effective state, key decisions, next step, or still-active blockers, write it to Taskdoc `progress` instead of a reminder.
|
|
91
91
|
|
|
92
92
|
### Q: How do I choose `personal` vs `dialog`?
|
|
93
93
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
control is Dominds' **dialog control toolset** for managing dialog state, reminders, taskdocs, and inter-dialog reply closure semantics:
|
|
28
28
|
|
|
29
29
|
- **Reminder management**: Two reminder scopes. Default to dialog-local working set; use `personal` only for responsibility-linked notes that you should keep seeing in all later dialogs you lead
|
|
30
|
-
- **Taskdoc operations**: Update task contracts (goals/constraints/progress)
|
|
30
|
+
- **Taskdoc operations**: Update task contracts (goals/constraints/progress); within Taskdoc, `progress` is the team-shared, quasi-real-time, scannable task bulletin board
|
|
31
31
|
- **Context maintenance**: Reduce cognitive load without losing key resume state
|
|
32
32
|
- **Reply routing**: Separate `tellaskBack`, `replyTellask*`, and plain text by responsibility in sideline / ask-back flows
|
|
33
33
|
|
|
@@ -69,4 +69,4 @@ Taskdoc is a **task contract** containing:
|
|
|
69
69
|
|
|
70
70
|
- **goals**: Task objectives
|
|
71
71
|
- **constraints**: Constraints
|
|
72
|
-
- **progress**:
|
|
72
|
+
- **progress**: A quasi-real-time team task bulletin board / current effective-state snapshot for team-wide sync
|
|
@@ -63,19 +63,20 @@ Default to `dialog`. Use `personal` only when you should keep seeing that note i
|
|
|
63
63
|
|
|
64
64
|
### 2. Taskdoc
|
|
65
65
|
|
|
66
|
-
Taskdoc is a **task contract**
|
|
66
|
+
Taskdoc is a **task contract** and the task's **team-shared source of current truth** during execution; within it, `progress` acts as a **quasi-real-time team task bulletin board / current effective-state snapshot**.
|
|
67
67
|
|
|
68
68
|
**Structure:**
|
|
69
69
|
|
|
70
70
|
- **goals.md**: Task objectives
|
|
71
71
|
- **constraints.md**: Constraints
|
|
72
|
-
- **progress.md**:
|
|
72
|
+
- **progress.md**: The current effective state, key decisions, next steps, and still-active blockers for team-wide sync
|
|
73
73
|
|
|
74
74
|
**Update Rules:**
|
|
75
75
|
|
|
76
76
|
- Each `change_mind` call replaces entire chapter
|
|
77
77
|
- Does not reset dialog rounds
|
|
78
78
|
- Changes visible to all teammates
|
|
79
|
+
- When writing `progress`, assume teammates will skim it to synchronize on the current task truth rather than read your private process log
|
|
79
80
|
|
|
80
81
|
## Tool Overview
|
|
81
82
|
|
|
@@ -118,15 +119,29 @@ Taskdoc is a **task contract** defining goals, constraints, and progress.
|
|
|
118
119
|
|
|
119
120
|
- **Goal changes**: When task objectives change
|
|
120
121
|
- **Constraint adjustments**: When constraints need adjustment
|
|
121
|
-
- **Progress updates**: When
|
|
122
|
+
- **Progress updates**: When the team needs the current effective state, key decisions, next steps, or still-active blockers synchronized
|
|
122
123
|
|
|
123
124
|
### 3. Update Strategy
|
|
124
125
|
|
|
125
126
|
- Keep concise: reminders are often 1-3 items; prefer `update_reminder` to compress/merge
|
|
126
|
-
- Separate carriers:
|
|
127
|
+
- Separate carriers: information that must synchronize the team's current effective state, key decisions, next steps, or still-active blockers belongs in `progress`, the quasi-real-time task bulletin board; reminders keep local resume details
|
|
128
|
+
- Team-facing: keep `progress` scannable and centered on what is still effective now; do not let it degrade into a personal log, raw chronology, scratchpad, or stale history pile
|
|
127
129
|
- Collapse before clearing: default to a structured continuation-package reminder; if the current course is already under system remediation, rough multi-reminder carry-over is acceptable but must be reconciled first in the new course
|
|
128
130
|
- Avoid raw-material dumps: do not paste long logs or large tool outputs into reminders
|
|
129
131
|
|
|
132
|
+
### 4. What Belongs in `progress`
|
|
133
|
+
|
|
134
|
+
- Good fits for `progress`:
|
|
135
|
+
- key decisions already in effect
|
|
136
|
+
- blockers that are confirmed and still active
|
|
137
|
+
- the next step the team should currently align on
|
|
138
|
+
- completed stage closures and remaining gaps
|
|
139
|
+
- Poor fits for `progress`:
|
|
140
|
+
- “I just read file X”
|
|
141
|
+
- “I might try a small idea next”
|
|
142
|
+
- scratch notes only useful to the current speaker
|
|
143
|
+
- historical traces whose current validity is unclear
|
|
144
|
+
|
|
130
145
|
## Limitations and Notes
|
|
131
146
|
|
|
132
147
|
1. `dialog` reminders end with the dialog; `personal` reminders stay visible in all later dialogs you lead
|
|
@@ -11,18 +11,18 @@
|
|
|
11
11
|
- Failure Branch
|
|
12
12
|
- Completion Criteria
|
|
13
13
|
|
|
14
|
-
## Scenario 1:
|
|
14
|
+
## Scenario 1: Reminder Working Set Tracking
|
|
15
15
|
|
|
16
16
|
### Scenario Description
|
|
17
17
|
|
|
18
|
-
Use reminders
|
|
18
|
+
Use reminders for the current dialog's working set: next steps, blockers, and volatile details that are not meant to become the team's Taskdoc bulletin board.
|
|
19
19
|
|
|
20
20
|
### Example
|
|
21
21
|
|
|
22
22
|
```typescript
|
|
23
|
-
// Add
|
|
23
|
+
// Add a dialog-scoped working-set reminder
|
|
24
24
|
add_reminder({
|
|
25
|
-
content: '
|
|
25
|
+
content: 'Next step: verify the control manual wording against Taskdoc progress semantics',
|
|
26
26
|
});
|
|
27
27
|
|
|
28
28
|
// Add a personal reminder only because this is a responsibility-linked cue
|
|
@@ -32,13 +32,13 @@ add_reminder({
|
|
|
32
32
|
scope: 'personal',
|
|
33
33
|
});
|
|
34
34
|
|
|
35
|
-
// Update after
|
|
35
|
+
// Update after the local working-set detail changes
|
|
36
36
|
update_reminder({
|
|
37
37
|
reminder_id: 'abc123de',
|
|
38
|
-
content: '
|
|
38
|
+
content: 'Blocker cleared: control manual wording now aligned with Taskdoc progress semantics',
|
|
39
39
|
});
|
|
40
40
|
|
|
41
|
-
// Delete
|
|
41
|
+
// Delete the reminder once it is no longer needed
|
|
42
42
|
delete_reminder({
|
|
43
43
|
reminder_id: 'abc123de',
|
|
44
44
|
});
|
|
@@ -46,8 +46,9 @@ delete_reminder({
|
|
|
46
46
|
|
|
47
47
|
### Key Points
|
|
48
48
|
|
|
49
|
-
- Default to `dialog` for
|
|
49
|
+
- Default to `dialog` for local next steps, temporary blockers, and volatile bridge details
|
|
50
50
|
- Use `personal` only when you should still see the note in all later dialogs you lead
|
|
51
|
+
- If the information should synchronize the whole team's current effective state, put it in Taskdoc `progress` instead
|
|
51
52
|
- If the note is durable knowledge rather than an active working-set cue, move it to `personal_memory` instead
|
|
52
53
|
|
|
53
54
|
## Scenario 2: Sideline is complete, and the assignment header requires replyTellask
|
|
@@ -115,7 +116,7 @@ replyTellaskBack({
|
|
|
115
116
|
|
|
116
117
|
### Scenario Description
|
|
117
118
|
|
|
118
|
-
|
|
119
|
+
Announce the current effective state, key decisions, next step, and still-active blockers to the whole team rather than writing a private chronology.
|
|
119
120
|
|
|
120
121
|
### Example
|
|
121
122
|
|
|
@@ -123,7 +124,7 @@ Update task progress to taskdoc.
|
|
|
123
124
|
change_mind({
|
|
124
125
|
selector: 'progress',
|
|
125
126
|
content:
|
|
126
|
-
'## Progress\n\n###
|
|
127
|
+
'## Progress\n\n### Current Effective State\n- The memory-carrier boundary cleanup is complete; next we strengthen the Taskdoc bulletin-board semantics\n\n### Decisions In Effect\n- `personal_memory` is no longer treated as a short-term junk drawer\n- `team_memory` now carries only long-lived team conventions and invariants\n\n### Next Step\n- Add stronger `progress` bulletin-board guidance in control / team_mgmt manuals\n\n### Still-Active Blockers\n- None',
|
|
127
128
|
});
|
|
128
129
|
```
|
|
129
130
|
|
|
@@ -185,15 +186,15 @@ recall_taskdoc({
|
|
|
185
186
|
|
|
186
187
|
### Scenario Description
|
|
187
188
|
|
|
188
|
-
Maintain taskdoc integrity and consistency.
|
|
189
|
+
Maintain taskdoc integrity and consistency, and keep `progress` as a team-scannable current-truth snapshot.
|
|
189
190
|
|
|
190
191
|
### Example
|
|
191
192
|
|
|
192
193
|
```typescript
|
|
193
|
-
// Update progress (keep goals
|
|
194
|
+
// Update progress (keep goals / constraints / progress consistent)
|
|
194
195
|
change_mind({
|
|
195
196
|
selector: 'progress',
|
|
196
197
|
content:
|
|
197
|
-
'## Progress\n\n###
|
|
198
|
+
'## Progress\n\n### Current Effective State\n- The boundary wording has been propagated into handbook sources and tests\n\n### Decisions In Effect\n- role assets / personal_memory / team_memory / Taskdoc-progress / reminders now have separated responsibilities\n\n### Next Step\n- Re-verify control manual wording, Taskdoc display text, and boundary tests\n\n### Still-Active Blockers\n- None',
|
|
198
199
|
});
|
|
199
200
|
```
|
|
@@ -234,7 +234,7 @@ update_reminder({
|
|
|
234
234
|
change_mind({
|
|
235
235
|
selector: 'progress',
|
|
236
236
|
content:
|
|
237
|
-
'## Progress\n\n###
|
|
237
|
+
'## Progress\n\n### Current Effective State\n- The handbook boundary split is now agreed: role assets / personal long-lived experience / Taskdoc-progress / reminders\n\n### Decisions In Effect\n- `persona / knowhow / pitfalls` no longer absorb daily member experience\n- `personal_memory` is reserved for one member\\'s reusable long-lived experience\n\n### Next Step\n- Strengthen the bulletin-board semantics of Taskdoc `progress`\n\n### Still-Active Blockers\n- None',
|
|
238
238
|
});
|
|
239
239
|
```
|
|
240
240
|
|
|
@@ -275,5 +275,5 @@ message: <error message>
|
|
|
275
275
|
- Normal reminders should stay concise, fresh, and directly actionable; often 1-3 items total
|
|
276
276
|
- For a continuation package, use structured notes by default: next step, key pointers, run/verify, easy-to-lose volatile details
|
|
277
277
|
- If the current course is already under caution/critical remediation, rough multi-reminder bridge notes are acceptable; in the current course only preserve info + `clear_mind`, and reconcile them as the first step only after the system actually starts the new course
|
|
278
|
-
- Keep only details not already covered by Taskdoc; do not repeat team-shared status
|
|
278
|
+
- Keep only details not already covered by Taskdoc; do not repeat team-shared status. If the team needs “where we are now / which decisions are in effect / what is next / which blockers still hold”, write it back to Taskdoc `progress`
|
|
279
279
|
- Do not paste long logs, large tool outputs, or raw material into reminders
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
|
|
88
88
|
### Q: `dialog` 提醒、`personal` 提醒和 memory 有什么区别?
|
|
89
89
|
|
|
90
|
-
A: `dialog`
|
|
90
|
+
A: `dialog` 提醒只用于当前对话的工作集。`personal` 提醒会在所有由你主理的后续对话里继续可见,但仍属于工作集提示,不是长期知识库。`personal_memory` 用于保存持久稳定事实和可复用知识;如果信息需要向全队同步当前有效状态、关键决策、下一步或仍成立阻塞,应写入 Taskdoc `progress`,而不是提醒项。
|
|
91
91
|
|
|
92
92
|
### Q: `personal` 和 `dialog` 怎么选?
|
|
93
93
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
control 是 Dominds 的**对话控制工具集**,用于管理对话状态、提醒、差遣牒,以及跨对话回复收口语义:
|
|
28
28
|
|
|
29
29
|
- **提醒管理**:提醒分 `dialog` / `personal` 两个 scope;默认保持对话内工作集,只有职责相关且在所有由你主理的后续对话里也应继续看到的提醒才用 `personal`
|
|
30
|
-
- **差遣牒操作**:更新任务契约(goals/constraints/progress
|
|
30
|
+
- **差遣牒操作**:更新任务契约(goals/constraints/progress);其中 `progress` 是全队共享、准实时、可扫读的任务公告牌
|
|
31
31
|
- **上下文维护**:在不丢关键恢复线索的前提下降低认知负载
|
|
32
32
|
- **回复路由**:在支线/回问语境下,区分 `tellaskBack`、`replyTellask*` 与普通文本的职责边界
|
|
33
33
|
|
|
@@ -69,4 +69,4 @@ scope 规则:
|
|
|
69
69
|
|
|
70
70
|
- **goals**:任务目标
|
|
71
71
|
- **constraints**:约束条件
|
|
72
|
-
- **progress
|
|
72
|
+
- **progress**:面向全队同步的准实时任务公告牌 / 当前有效状态快照
|
|
@@ -63,19 +63,20 @@
|
|
|
63
63
|
|
|
64
64
|
### 2. 差遣牒
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
差遣牒是**任务契约**,也是任务执行期的**全队共享真相载体**;其中 `progress` 承担的是**准实时全队任务公告牌 / 当前有效状态快照**职责。
|
|
67
67
|
|
|
68
68
|
**结构:**
|
|
69
69
|
|
|
70
70
|
- **goals.md**:任务目标
|
|
71
71
|
- **constraints.md**:约束条件
|
|
72
|
-
- **progress.md
|
|
72
|
+
- **progress.md**:面向全队同步的当前有效状态、关键决策、下一步与仍成立阻塞
|
|
73
73
|
|
|
74
74
|
**更新规则:**
|
|
75
75
|
|
|
76
76
|
- 每次调用 `change_mind` 会替换整个章节
|
|
77
77
|
- 不重置对话轮次
|
|
78
78
|
- 变更对所有队友可见
|
|
79
|
+
- 写入 `progress` 时,应默认假设全队成员会用它快速同步“当前任务真相”,而不是阅读你的个人过程记录
|
|
79
80
|
|
|
80
81
|
## 工具概览
|
|
81
82
|
|
|
@@ -118,15 +119,29 @@
|
|
|
118
119
|
|
|
119
120
|
- **目标变更**:当任务目标发生变化时
|
|
120
121
|
- **约束调整**:当约束条件需要调整时
|
|
121
|
-
-
|
|
122
|
+
- **进度更新**:当需要向全队同步当前有效状态、关键决策、下一步或仍成立阻塞时
|
|
122
123
|
|
|
123
124
|
### 3. 更新策略
|
|
124
125
|
|
|
125
126
|
- 保持简洁:默认提醒项常见 1–3 条,优先 `update_reminder` 压缩/合并
|
|
126
|
-
-
|
|
127
|
+
- 区分载体:需要向全队同步的当前有效状态、关键决策、下一步与仍成立阻塞,写入 `progress` 这一准实时任务公告牌;提醒项只留个人/当前对话恢复所需细节
|
|
128
|
+
- 面向全队:`progress` 应保持可扫读、以“当前仍有效”为准,不要退化成个人日志、流水账、临时便签或历史残影堆积
|
|
127
129
|
- 换程前收束:默认优先整理成结构化接续包提醒项;若系统已把当前程切到吃紧/告急处置态,则先保留多条粗略提醒项过桥也可以;当前程只做保信息 + `clear_mind`,系统真正开启新一程后第一步再收敛
|
|
128
130
|
- 拒绝原料堆积:不要把长日志/大段 tool output 直接塞进提醒项
|
|
129
131
|
|
|
132
|
+
### 4. `progress` 内容取舍
|
|
133
|
+
|
|
134
|
+
- 适合写进 `progress`:
|
|
135
|
+
- 当前已经生效的关键决策
|
|
136
|
+
- 当前已确认、仍成立的 blocker
|
|
137
|
+
- 当前全队应共识的下一步
|
|
138
|
+
- 当前阶段性闭环与尚未闭环的 gap
|
|
139
|
+
- 不适合写进 `progress`:
|
|
140
|
+
- “我刚刚看了什么文件”
|
|
141
|
+
- “我准备先试一个小想法”
|
|
142
|
+
- 只对当前说话者自己有用的临时便签
|
|
143
|
+
- 无法判断是否仍然有效的历史痕迹
|
|
144
|
+
|
|
130
145
|
## 限制与注意事项
|
|
131
146
|
|
|
132
147
|
1. `dialog` 提醒会随对话结束而结束;`personal` 提醒会在所有由你主理的后续对话里继续可见
|
|
@@ -11,18 +11,18 @@
|
|
|
11
11
|
- 失败分支处理
|
|
12
12
|
- 完成判据
|
|
13
13
|
|
|
14
|
-
## 场景 1
|
|
14
|
+
## 场景 1:提醒项工作集跟踪
|
|
15
15
|
|
|
16
16
|
### 场景描述
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
使用 reminders 承接当前对话的工作集:下一步、临时阻塞、易丢的 bridge 细节,而不是把它写成面向全队同步的 Taskdoc 公告牌。
|
|
19
19
|
|
|
20
20
|
### 示例
|
|
21
21
|
|
|
22
22
|
```typescript
|
|
23
|
-
//
|
|
23
|
+
// 添加一条 dialog 级工作集提醒
|
|
24
24
|
add_reminder({
|
|
25
|
-
content: '
|
|
25
|
+
content: '下一步:复核 control 手册是否已经完整表达 Taskdoc progress 的公告牌语义',
|
|
26
26
|
});
|
|
27
27
|
|
|
28
28
|
// 只有因为这是一条职责相关提示,且在所有由你主理的后续对话里也应继续看到,
|
|
@@ -32,10 +32,10 @@ add_reminder({
|
|
|
32
32
|
scope: 'personal',
|
|
33
33
|
});
|
|
34
34
|
|
|
35
|
-
//
|
|
35
|
+
// 当本地工作集细节变化后更新
|
|
36
36
|
update_reminder({
|
|
37
37
|
reminder_id: 'abc123de',
|
|
38
|
-
content: '
|
|
38
|
+
content: '阻塞已解除:control 手册文案已与 Taskdoc progress 语义对齐',
|
|
39
39
|
});
|
|
40
40
|
|
|
41
41
|
// 删除已完成的提醒
|
|
@@ -46,8 +46,9 @@ delete_reminder({
|
|
|
46
46
|
|
|
47
47
|
### 关键点
|
|
48
48
|
|
|
49
|
-
-
|
|
49
|
+
- 本地下一步、临时阻塞、一次性 bridge 细节默认都用 `dialog`
|
|
50
50
|
- 只有职责相关、且在所有由你主理的后续对话里也应继续看到的提醒才用 `personal`
|
|
51
|
+
- 如果信息需要向全队同步当前有效状态、关键决策、下一步或仍成立阻塞,应写入 Taskdoc `progress`
|
|
51
52
|
- 如果内容本质上是长期知识而不是当前工作集提示,应改存到 `personal_memory`
|
|
52
53
|
|
|
53
54
|
## 场景 2:支线已完成,按 assignment 头部要求调用 replyTellask
|
|
@@ -114,7 +115,7 @@ replyTellaskBack({
|
|
|
114
115
|
|
|
115
116
|
### 场景描述
|
|
116
117
|
|
|
117
|
-
|
|
118
|
+
把当前有效状态、关键决策、下一步与仍成立阻塞公告给全队,而不是写个人流水账。
|
|
118
119
|
|
|
119
120
|
### 示例
|
|
120
121
|
|
|
@@ -122,7 +123,7 @@ replyTellaskBack({
|
|
|
122
123
|
change_mind({
|
|
123
124
|
selector: 'progress',
|
|
124
125
|
content:
|
|
125
|
-
'## Progress\n\n###
|
|
126
|
+
'## Progress\n\n### 当前有效状态\n- 已完成三类记忆载体边界收口,准备补 Taskdoc 公告牌属性\n\n### 已生效决策\n- `personal_memory` 不再作为短期杂物柜\n- `team_memory` 只承接团队长期共识与不变量\n\n### 下一步\n- 在 control / team_mgmt 手册中补强 `progress` 的公告牌语义\n\n### 仍成立阻塞\n- 无',
|
|
126
127
|
});
|
|
127
128
|
```
|
|
128
129
|
|
|
@@ -184,15 +185,15 @@ recall_taskdoc({
|
|
|
184
185
|
|
|
185
186
|
### 场景描述
|
|
186
187
|
|
|
187
|
-
|
|
188
|
+
维护差遣牒的完整性和一致性,并确保 `progress` 始终是可供全队扫读的当前真相快照。
|
|
188
189
|
|
|
189
190
|
### 示例
|
|
190
191
|
|
|
191
192
|
```typescript
|
|
192
|
-
//
|
|
193
|
+
// 更新 progress(保持 goals / constraints / progress 一致)
|
|
193
194
|
change_mind({
|
|
194
195
|
selector: 'progress',
|
|
195
196
|
content:
|
|
196
|
-
'## Progress\n\n###
|
|
197
|
+
'## Progress\n\n### 当前有效状态\n- 边界口径已统一到手册源头与测试\n\n### 已生效决策\n- 角色级资产 / personal_memory / team_memory / Taskdoc-progress / reminders 的职责已经切开\n\n### 下一步\n- 复验 control 手册、Taskdoc 展示文案与边界测试\n\n### 仍成立阻塞\n- 无',
|
|
197
198
|
});
|
|
198
199
|
```
|
|
@@ -232,7 +232,7 @@ update_reminder({
|
|
|
232
232
|
change_mind({
|
|
233
233
|
selector: 'progress',
|
|
234
234
|
content:
|
|
235
|
-
'## Progress\n\n###
|
|
235
|
+
'## Progress\n\n### 当前有效状态\n- 手册边界方案已确定:角色级资产 / 个人长期经验 / Taskdoc-progress / reminders 分流\n\n### 已生效决策\n- `persona / knowhow / pitfalls` 不承接成员日常经验\n- `personal_memory` 只承接成员自己的长期可复用经验\n\n### 下一步\n- 补齐 Taskdoc `progress` 的公告牌属性说明\n\n### 仍成立阻塞\n- 无',
|
|
236
236
|
});
|
|
237
237
|
```
|
|
238
238
|
|
|
@@ -273,5 +273,5 @@ message: <错误消息>
|
|
|
273
273
|
- 默认提醒项应保持短、新、能直接指导下一步,常见 1–3 条
|
|
274
274
|
- 若用于接续包,默认优先结构化内容:下一步行动、关键定位、运行/验证、容易丢的临时细节
|
|
275
275
|
- 若已吃紧/告急,先保留多条粗略提醒项也可以;当前程只做保信息 + `clear_mind`,系统真正开启新一程后第一步再收敛整理
|
|
276
|
-
-
|
|
276
|
+
- 接续包只保留差遣牒未覆盖的细节;不要重复团队共享状态。要向全队同步“现在到哪了 / 哪些决策已生效 / 下一步是什么 / 哪些阻塞仍成立”,请写回 Taskdoc `progress`
|
|
277
277
|
- 不要把长日志、大段 tool output、原始材料直接塞进提醒项
|
|
@@ -29,12 +29,14 @@ personal_memory is Dominds' **personal memory toolset** for managing an agent's
|
|
|
29
29
|
- **Privacy**: Memory is only visible to the current agent, not shared with other members
|
|
30
30
|
- **Persistence**: Memory is persisted to disk and retained after conversation restarts
|
|
31
31
|
- **Structured**: Supports organizing memory by path for easy categorization and retrieval
|
|
32
|
+
- **Boundary**: Primarily for one member's own reusable long-lived experience and working index, not current task state
|
|
32
33
|
|
|
33
34
|
Key notes:
|
|
34
35
|
|
|
35
36
|
- Personal memory is automatically isolated on disk under `.minds/memory/individual/<member-id>/...`.
|
|
36
37
|
- Your `path` must NOT include your member id (do not write `<member-id>/...`).
|
|
37
38
|
- If you have zero memory files yet, just call `add_personal_memory` — the directory will be created automatically.
|
|
39
|
+
- If the content is a role's long-lived responsibilities/methods/examples, put it in `persona / knowhow / pitfalls` instead; if it should synchronize the team's current effective state, key decisions, next steps, or still-active blockers, use Taskdoc `progress`, the quasi-real-time task bulletin board; if it is only a personal/current-dialog short-term working set or continuation detail, use reminders instead.
|
|
38
40
|
|
|
39
41
|
Tool list:
|
|
40
42
|
|
|
@@ -69,17 +69,22 @@ The `personal_memory` toolset uses a **path key-value storage** model:
|
|
|
69
69
|
- Treat personal memory as a **carry-along stable-facts memo**: enable **0 ripgrep** startup within your scope.
|
|
70
70
|
- Store stable facts only: **anchor points (file/symbol) + 1-line meaning + key contracts/priorities (≤3)**.
|
|
71
71
|
- Fewer memory files is better: group facts that will be updated together into one file; avoid adding extra “directory-of-directory” layers.
|
|
72
|
+
- `personal_memory` should primarily hold knowledge that has **not** been promoted to team-defined role assets yet, but is still worth carrying forward for your own future work: your entry maps, search keywords, debugging methods, and long-lived working preferences.
|
|
72
73
|
- Do not store task progress or daily state here:
|
|
73
|
-
-
|
|
74
|
-
-
|
|
74
|
+
- Information that must synchronize the team's current effective state, key decisions, next step, or still-active blockers belongs in Taskdoc `progress`, the quasi-real-time task bulletin board
|
|
75
|
+
- Personal or current-dialog short-term working set details belong in reminders
|
|
75
76
|
|
|
76
|
-
### 3.
|
|
77
|
+
### 3. Recommended Boundaries
|
|
77
78
|
|
|
78
|
-
- **
|
|
79
|
-
- **
|
|
80
|
-
- **
|
|
79
|
+
- **Role-level long-lived definition assets**: `persona / knowhow / pitfalls`
|
|
80
|
+
- **A member’s own reusable long-lived experience and working index**: `personal_memory`
|
|
81
|
+
- **Taskdoc `progress`**: the team-shared quasi-real-time task bulletin board for current effective state, key decisions, next steps, and still-active blockers
|
|
82
|
+
- **reminders**: personal or current-dialog short-term working set, continuation package, and easy-to-lose volatile details
|
|
83
|
+
- **Team-shared long-lived conventions / invariants / consensus rules**: `team_memory`
|
|
81
84
|
|
|
82
|
-
> Note: If
|
|
85
|
+
> Note: If the main purpose of the information is to let the team quickly synchronize on where things stand now, which decisions are in effect, what is next, or which blockers still hold, it belongs in Taskdoc `progress`, not in `personal_memory`.
|
|
86
|
+
>
|
|
87
|
+
> Likewise, if what you want to write is a role’s long-lived responsibility boundary, working method, or durable positive/negative example, it should usually live in that role’s `persona / knowhow / pitfalls`, not in `personal_memory`.
|
|
83
88
|
|
|
84
89
|
## Relationship with Other Tools
|
|
85
90
|
|