


























@@ -1,6 +1,5 @@
11import { resolveUserTimezone } from "../agents/date-time.js";
22import type { OpenClawConfig } from "../config/config.js";
3-import type { CommitmentsConfig } from "../config/types.commitments.js";
4354export const DEFAULT_COMMITMENT_EXTRACTION_DEBOUNCE_MS = 15_000;
65export const DEFAULT_COMMITMENT_BATCH_MAX_ITEMS = 8;
@@ -9,29 +8,18 @@ export const DEFAULT_COMMITMENT_CARE_CONFIDENCE_THRESHOLD = 0.86;
98export const DEFAULT_COMMITMENT_EXTRACTION_TIMEOUT_SECONDS = 45;
109export const DEFAULT_COMMITMENT_MAX_PER_HEARTBEAT = 3;
1110export const DEFAULT_COMMITMENT_EXPIRE_AFTER_HOURS = 72;
11+export const DEFAULT_COMMITMENT_MAX_PER_DAY = 3;
12121313export type ResolvedCommitmentsConfig = {
1414enabled: boolean;
15-store?: string;
16-categories: {
17-eventCheckIns: boolean;
18-deadlineCheckIns: boolean;
19-openLoops: boolean;
20-careCheckIns: false | "gentle" | true;
21-};
15+maxPerDay: number;
2216extraction: {
23-enabled: boolean;
24-model?: string;
2517debounceMs: number;
2618batchMaxItems: number;
2719confidenceThreshold: number;
2820careConfidenceThreshold: number;
2921timeoutSeconds: number;
3022};
31-delivery: {
32-maxPerHeartbeat: number;
33-expireAfterHours: number;
34-};
3523};
36243725function positiveInt(value: unknown, fallback: number): number {
@@ -40,63 +28,17 @@ function positiveInt(value: unknown, fallback: number): number {
4028 : fallback;
4129}
423043-function nonnegativeNumber(value: unknown, fallback: number): number {
44-return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : fallback;
45-}
46-47-function resolveCareCheckIns(
48-value: CommitmentsConfig["categories"] | undefined,
49-): false | "gentle" | true {
50-const raw = value?.careCheckIns;
51-if (raw === false) {
52-return false;
53-}
54-if (raw === true) {
55-return true;
56-}
57-return "gentle";
58-}
59-6031export function resolveCommitmentsConfig(cfg?: OpenClawConfig): ResolvedCommitmentsConfig {
6132const raw = cfg?.commitments;
62-const extraction = raw?.extraction;
63-const delivery = raw?.delivery;
6433return {
65-enabled: raw?.enabled !== false,
66-store: raw?.store,
67-categories: {
68-eventCheckIns: raw?.categories?.eventCheckIns !== false,
69-deadlineCheckIns: raw?.categories?.deadlineCheckIns !== false,
70-openLoops: raw?.categories?.openLoops !== false,
71-careCheckIns: resolveCareCheckIns(raw?.categories),
72-},
34+enabled: raw?.enabled === true,
35+maxPerDay: positiveInt(raw?.maxPerDay, DEFAULT_COMMITMENT_MAX_PER_DAY),
7336extraction: {
74-enabled: extraction?.enabled !== false,
75-model: extraction?.model?.trim() || undefined,
76-debounceMs: nonnegativeNumber(
77-extraction?.debounceMs,
78-DEFAULT_COMMITMENT_EXTRACTION_DEBOUNCE_MS,
79-),
80-batchMaxItems: positiveInt(extraction?.batchMaxItems, DEFAULT_COMMITMENT_BATCH_MAX_ITEMS),
81-confidenceThreshold: nonnegativeNumber(
82-extraction?.confidenceThreshold,
83-DEFAULT_COMMITMENT_CONFIDENCE_THRESHOLD,
84-),
85-careConfidenceThreshold: nonnegativeNumber(
86-extraction?.careConfidenceThreshold,
87-DEFAULT_COMMITMENT_CARE_CONFIDENCE_THRESHOLD,
88-),
89-timeoutSeconds: positiveInt(
90-extraction?.timeoutSeconds,
91-DEFAULT_COMMITMENT_EXTRACTION_TIMEOUT_SECONDS,
92-),
93-},
94-delivery: {
95-maxPerHeartbeat: positiveInt(delivery?.maxPerHeartbeat, DEFAULT_COMMITMENT_MAX_PER_HEARTBEAT),
96-expireAfterHours: positiveInt(
97-delivery?.expireAfterHours,
98-DEFAULT_COMMITMENT_EXPIRE_AFTER_HOURS,
99-),
37+debounceMs: DEFAULT_COMMITMENT_EXTRACTION_DEBOUNCE_MS,
38+batchMaxItems: DEFAULT_COMMITMENT_BATCH_MAX_ITEMS,
39+confidenceThreshold: DEFAULT_COMMITMENT_CONFIDENCE_THRESHOLD,
40+careConfidenceThreshold: DEFAULT_COMMITMENT_CARE_CONFIDENCE_THRESHOLD,
41+timeoutSeconds: DEFAULT_COMMITMENT_EXTRACTION_TIMEOUT_SECONDS,
10042},
10143};
10244}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。