fix: skip echo relay for Discord-origin user messages

This commit is contained in:
2026-03-10 14:31:47 +09:00
parent c15b0f676f
commit 82b727a1e6
3 changed files with 22 additions and 3 deletions

View File

@@ -82,6 +82,8 @@ function ensureBridgeDir() {
// Module-level activeSessionId so writeChatSnapshot can register sessions lazily
let activeSessionId = '';
let activeTrajectoryId = '';
// Track recently sent Discord→AG texts to avoid echo relay
const recentDiscordSentTexts: Map<string, number> = new Map();
function writeChatSnapshot(text: string) {
try {
@@ -156,6 +158,7 @@ function processCommandFile(filePath: string) {
console.log(`Gravity Bridge: auto-approve → ${mode}`);
} else if (text) {
// Send message to Antigravity — use VS Code command (most reliable)
recentDiscordSentTexts.set(text.trim(), Date.now());
vscode.commands.executeCommand('antigravity.sendPromptToAgentPanel', text)
.then(() => console.log(`Gravity Bridge: ✅ sent "${text.substring(0, 50)}" via sendPromptToAgentPanel`),
(e: any) => console.log(`Gravity Bridge: sendPrompt failed: ${e.message}`));
@@ -1863,7 +1866,13 @@ function setupMonitor() {
logToFile(`[USER-MSG] step=${userInputIdx} type=${umStep?.type} client=${clientType} text=${umText.substring(0, 100)}`);
if (umText.length > 2) {
// Skip echo: if this text was recently sent from Discord, don't relay back
const trimmed = umText.trim();
const sentAt = recentDiscordSentTexts.get(trimmed);
if (sentAt && (Date.now() - sentAt) < 60_000) {
recentDiscordSentTexts.delete(trimmed);
logToFile(`[USER-MSG] skipped echo relay (Discord origin, ${Math.round((Date.now()-sentAt)/1000)}s ago)`);
} else if (umText.length > 2) {
const truncated = umText.length > 800
? umText.substring(0, 800) + '\n\n_(이하 생략)_'
: umText;