feat(agents): include full date with day of week in system prompt

Fixes #2108

The system prompt now displays the full current date and time when
userTime is available, including day of week (e.g., 'Monday, January 26th, 2026 — 15:30').
This eliminates day-of-week guessing errors where the agent would
confidently state the wrong day based on timestamp inference.

Changes:
- Modified buildTimeSection to accept and display userTime parameter
- Updated tests to verify userTime appears in system prompt
- Format: 'Current: <full date>' followed by 'Time zone: <timezone>'
This commit is contained in:
Episkey 2026-01-26 17:17:13 +08:00
parent a109b7f1a9
commit fb3d2bc86b
3 changed files with 13 additions and 2 deletions

View File

@ -12,6 +12,7 @@ Status: beta.
- macOS: finish Moltbot app rename for macOS sources, bundle identifiers, and shared kit paths. (#2844) Thanks @fal3.
- Branding: update launchd labels, mobile bundle IDs, and logging subsystems to bot.molt (legacy com.clawdbot migrations). Thanks @thewilloftheshadow.
- Tools: add per-sender group tool policies and fix precedence. (#1757) Thanks @adam91holt.
- Agents: include full date with day of week in system prompt. (#2108)
- Agents: summarize dropped messages during compaction safeguard pruning. (#2509) Thanks @jogi47.
- Skills: add multi-image input support to Nano Banana Pro skill. (#1958) Thanks @tyler6204.
- Agents: honor tools.exec.safeBins in exec allowlist checks. (#2281)

View File

@ -145,6 +145,7 @@ describe("buildAgentSystemPrompt", () => {
});
expect(prompt).toContain("## Current Date & Time");
expect(prompt).toContain("Current: Monday, January 5th, 2026 — 3:26 PM");
expect(prompt).toContain("Time zone: America/Chicago");
});
@ -157,6 +158,7 @@ describe("buildAgentSystemPrompt", () => {
});
expect(prompt).toContain("## Current Date & Time");
expect(prompt).toContain("Current: Monday, January 5th, 2026 — 15:26");
expect(prompt).toContain("Time zone: America/Chicago");
});

View File

@ -49,9 +49,15 @@ function buildUserIdentitySection(ownerLine: string | undefined, isMinimal: bool
return ["## User Identity", ownerLine, ""];
}
function buildTimeSection(params: { userTimezone?: string }) {
function buildTimeSection(params: { userTimezone?: string; userTime?: string }) {
if (!params.userTimezone) return [];
return ["## Current Date & Time", `Time zone: ${params.userTimezone}`, ""];
const lines = ["## Current Date & Time"];
if (params.userTime) {
lines.push(`Current: ${params.userTime}`);
}
lines.push(`Time zone: ${params.userTimezone}`);
lines.push("");
return lines;
}
function buildReplyTagsSection(isMinimal: boolean) {
@ -294,6 +300,7 @@ export function buildAgentSystemPrompt(params: {
: undefined;
const reasoningLevel = params.reasoningLevel ?? "off";
const userTimezone = params.userTimezone?.trim();
const userTime = params.userTime?.trim();
const skillsPrompt = params.skillsPrompt?.trim();
const heartbeatPrompt = params.heartbeatPrompt?.trim();
const heartbeatPromptLine = heartbeatPrompt
@ -445,6 +452,7 @@ export function buildAgentSystemPrompt(params: {
...buildUserIdentitySection(ownerLine, isMinimal),
...buildTimeSection({
userTimezone,
userTime,
}),
"## Workspace Files (injected)",
"These user-editable files are loaded by Moltbot and included below in Project Context.",