refactor(automod): remove regex classifier — LLM is the sole judge
Build & Deploy (Nix) / build-and-deploy (backend) (push) Successful in 3m2s
Build & Deploy (Nix) / build-and-deploy (discord-gateway) (push) Successful in 2m20s
Build & Deploy (Nix) / build-and-deploy (proxy) (push) Successful in 2m26s
Build & Deploy (Nix) / build-and-deploy (backend) (push) Successful in 3m2s
Build & Deploy (Nix) / build-and-deploy (discord-gateway) (push) Successful in 2m20s
Build & Deploy (Nix) / build-and-deploy (proxy) (push) Successful in 2m26s
Delete fastClassifier.ts (manual regex patterns for phone/email/IP/crypto/ spam/toxicity) and simpleFallback.ts. These hardcoded patterns were the source of false positives (Discord emoji snowflakes matched phone_number, URL digits matched phone, etc.) and produced heuristic verdicts whenever the LLM failed. New flow: Message → LLM (with conversation context, media evidence, user reputation) → verdict. On LLM failure the message is marked 'error' and retried by the recovery worker — no heuristic verdicts, ever. Discord markdown tokens (custom emoji/mentions/timestamps) are normalized to readable placeholders ([emoji:name], @user, @role, #channel, [time]) before reaching the LLM via discordTokens.ts.
This commit is contained in:
@@ -2,6 +2,7 @@ import { createChildLogger } from "@/shared/logger/index";
|
||||
import { encoding_for_model as encodingForModel } from "tiktoken";
|
||||
import { formatMediaEvidenceForPrompt } from "../message-capture/messageMetadata.js";
|
||||
import type { MessageRecord } from "../message-capture/types.js";
|
||||
import { sanitizeDiscordTokens } from "./discordTokens.js";
|
||||
|
||||
const logger = createChildLogger("conversationContext");
|
||||
|
||||
@@ -67,7 +68,9 @@ export function formatMessageForPrompt(
|
||||
msg: MessageRecord,
|
||||
label: "context" | "target",
|
||||
): string {
|
||||
const content = msg.edited_content ?? msg.content;
|
||||
const content = sanitizeDiscordTokens(
|
||||
msg.edited_content ?? msg.content,
|
||||
);
|
||||
const timestamp = formatTimestamp(msg.created_at);
|
||||
const mediaEvidence = formatMediaEvidenceForPrompt(msg.metadata);
|
||||
const mediaSuffix = mediaEvidence ? ` ${mediaEvidence}` : "";
|
||||
|
||||
Reference in New Issue
Block a user