
























@@ -27,7 +27,7 @@ import {
2727writeBackfillDiaryEntries,
2828} from "./doctor.memory-core-runtime.js";
2929import { normalizeTrimmedString } from "./record-shared.js";
30-import type { GatewayRequestHandlers } from "./types.js";
30+import type { GatewayRequestContext, GatewayRequestHandlers } from "./types.js";
31313232const MANAGED_DEEP_SLEEP_CRON_NAME = "Memory Dreaming Promotion";
3333const MANAGED_DEEP_SLEEP_CRON_TAG = "[managed-by=memory-core.short-term-promotion]";
@@ -677,6 +677,26 @@ function shouldProbeMemoryEmbeddings(params: unknown): boolean {
677677return record.probe === true || record.deep === true;
678678}
679679680+function resolveDoctorMemoryTarget(
681+context: GatewayRequestContext,
682+params: unknown,
683+): {
684+cfg: OpenClawConfig;
685+agentId: string;
686+workspaceDir: string;
687+} {
688+const cfg = context.getRuntimeConfig();
689+const record = asOptionalRecord(params);
690+const requestedAgentId =
691+typeof record?.agentId === "string" ? normalizeAgentId(record.agentId) : null;
692+const agentId = requestedAgentId || resolveDefaultAgentId(cfg);
693+return {
694+ cfg,
695+ agentId,
696+workspaceDir: resolveAgentWorkspaceDir(cfg, agentId),
697+};
698+}
699+680700const SKIPPED_MEMORY_EMBEDDING_PROBE = {
681701ok: false,
682702checked: false,
@@ -788,11 +808,7 @@ export const doctorHandlers: GatewayRequestHandlers = {
788808}
789809},
790810"doctor.memory.dreamDiary": async ({ respond, context, params }) => {
791-const cfg = context.getRuntimeConfig();
792-const requestedAgentId =
793-typeof params?.agentId === "string" ? normalizeAgentId(params.agentId) : null;
794-const agentId = requestedAgentId || resolveDefaultAgentId(cfg);
795-const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId);
811+const { agentId, workspaceDir } = resolveDoctorMemoryTarget(context, params);
796812const dreamDiary = await readDreamDiary(workspaceDir);
797813const payload: DoctorMemoryDreamDiaryPayload = {
798814 agentId,
@@ -801,11 +817,7 @@ export const doctorHandlers: GatewayRequestHandlers = {
801817respond(true, payload, undefined);
802818},
803819"doctor.memory.backfillDreamDiary": async ({ respond, context, params }) => {
804-const cfg = context.getRuntimeConfig();
805-const requestedAgentId =
806-typeof params?.agentId === "string" ? normalizeAgentId(params.agentId) : null;
807-const agentId = requestedAgentId || resolveDefaultAgentId(cfg);
808-const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId);
820+const { cfg, agentId, workspaceDir } = resolveDoctorMemoryTarget(context, params);
809821const memoryDir = path.join(workspaceDir, "memory");
810822const sourceFiles = await listWorkspaceDailyFiles(memoryDir);
811823if (sourceFiles.length === 0) {
@@ -861,11 +873,7 @@ export const doctorHandlers: GatewayRequestHandlers = {
861873respond(true, payload, undefined);
862874},
863875"doctor.memory.resetDreamDiary": async ({ respond, context, params }) => {
864-const cfg = context.getRuntimeConfig();
865-const requestedAgentId =
866-typeof params?.agentId === "string" ? normalizeAgentId(params.agentId) : null;
867-const agentId = requestedAgentId || resolveDefaultAgentId(cfg);
868-const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId);
876+const { agentId, workspaceDir } = resolveDoctorMemoryTarget(context, params);
869877const removed = await removeBackfillDiaryEntries({ workspaceDir });
870878const dreamDiary = await readDreamDiary(workspaceDir);
871879const payload: DoctorMemoryDreamActionPayload = {
@@ -878,11 +886,7 @@ export const doctorHandlers: GatewayRequestHandlers = {
878886respond(true, payload, undefined);
879887},
880888"doctor.memory.resetGroundedShortTerm": async ({ respond, context, params }) => {
881-const cfg = context.getRuntimeConfig();
882-const requestedAgentId =
883-typeof params?.agentId === "string" ? normalizeAgentId(params.agentId) : null;
884-const agentId = requestedAgentId || resolveDefaultAgentId(cfg);
885-const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId);
889+const { agentId, workspaceDir } = resolveDoctorMemoryTarget(context, params);
886890const removed = await removeGroundedShortTermCandidates({ workspaceDir });
887891const payload: DoctorMemoryDreamActionPayload = {
888892 agentId,
@@ -892,11 +896,7 @@ export const doctorHandlers: GatewayRequestHandlers = {
892896respond(true, payload, undefined);
893897},
894898"doctor.memory.repairDreamingArtifacts": async ({ respond, context, params }) => {
895-const cfg = context.getRuntimeConfig();
896-const requestedAgentId =
897-typeof params?.agentId === "string" ? normalizeAgentId(params.agentId) : null;
898-const agentId = requestedAgentId || resolveDefaultAgentId(cfg);
899-const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId);
899+const { agentId, workspaceDir } = resolveDoctorMemoryTarget(context, params);
900900const repair = await repairDreamingArtifacts({ workspaceDir });
901901const payload: DoctorMemoryDreamActionPayload = {
902902 agentId,
@@ -911,11 +911,7 @@ export const doctorHandlers: GatewayRequestHandlers = {
911911respond(true, payload, undefined);
912912},
913913"doctor.memory.dedupeDreamDiary": async ({ respond, context, params }) => {
914-const cfg = context.getRuntimeConfig();
915-const requestedAgentId =
916-typeof params?.agentId === "string" ? normalizeAgentId(params.agentId) : null;
917-const agentId = requestedAgentId || resolveDefaultAgentId(cfg);
918-const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId);
914+const { agentId, workspaceDir } = resolveDoctorMemoryTarget(context, params);
919915const dedupe = await dedupeDreamDiaryEntries({ workspaceDir });
920916const dreamDiary = await readDreamDiary(workspaceDir);
921917const payload: DoctorMemoryDreamActionPayload = {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。