Remove XGBoost ML and spam scorer; add AI image/text classification #81

Manually merged
marvin8 merged 10 commits from feat/issue-80-remove-ml-add-vision-ai into feat/issue-80-collect 2026-08-13 08:54:52 +00:00
Collaborator

Removes Fenliu's XGBoost ML integration and rule-based spam scorer, and replaces them with a two-stage AI classifier:

  • Text stage (inline, at fetch): flags posts whose status/alt text uses a cat as an excuse to promote something.
  • Vision stage (overnight batch via the Moonshot Batch API, 60% price): classifies the first image as a real-cat photograph vs comic/art/mural/meme/etc.

The result is an ai_would_reject recommendation surfaced as a badge + filters in the review UI. No auto-reject at launch (behind the ai_auto_reject setting, default off). Model is configurable via env vars (AI_API_BASE_URL, AI_API_KEY, AI_TEXT_MODEL, AI_VISION_MODEL, AI_BATCH_HOUR).

Also:

  • Removes the dead score field from Zhongli's QueuedPost (it was fed by Fenliu's removed spam_score).
  • Fixes leftover migration source references (zaojun pre-commit hook + wuming CI action → forge.marvin8.zone).

Closes #80

Removes Fenliu's XGBoost ML integration and rule-based spam scorer, and replaces them with a two-stage AI classifier: - **Text stage** (inline, at fetch): flags posts whose status/alt text uses a cat as an excuse to promote something. - **Vision stage** (overnight batch via the Moonshot Batch API, 60% price): classifies the first image as a real-cat photograph vs comic/art/mural/meme/etc. The result is an `ai_would_reject` recommendation surfaced as a badge + filters in the review UI. No auto-reject at launch (behind the `ai_auto_reject` setting, default off). Model is configurable via env vars (`AI_API_BASE_URL`, `AI_API_KEY`, `AI_TEXT_MODEL`, `AI_VISION_MODEL`, `AI_BATCH_HOUR`). Also: - Removes the dead `score` field from Zhongli's `QueuedPost` (it was fed by Fenliu's removed `spam_score`). - Fixes leftover migration source references (zaojun pre-commit hook + wuming CI action → forge.marvin8.zone). Closes #80
📝 document AI classification and update release notes
All checks were successful
/ pr-review (pull_request) Successful in 7s
/ publish (pull_request) Has been skipped
/ publish-container (pull_request) Has been skipped
/ checks (pull_request) Successful in 3m11s
/ gitleaks (pull_request) Successful in 17s
/ deploy-docs (pull_request) Has been skipped
c7cb138ef4

This PR is too large to review automatically (11947 lines; limit is 3000). Please consider splitting it into smaller PRs.

This PR is too large to review automatically (11947 lines; limit is 3000). Please consider splitting it into smaller PRs.

This PR is too large to review automatically (11947 lines; limit is 3000). Please consider splitting it into smaller PRs.

This PR is too large to review automatically (11947 lines; limit is 3000). Please consider splitting it into smaller PRs.
📝 track stale review.html cleanup in TODO
Some checks failed
/ publish (pull_request) Has been skipped
/ publish-container (pull_request) Has been skipped
/ checks (pull_request) Failing after 2m50s
/ pr-review (pull_request) Successful in 8s
/ gitleaks (pull_request) Successful in 21s
/ deploy-docs (pull_request) Has been skipped
fd7669a0eb

This PR is too large to review automatically (11948 lines; limit is 3000). Please consider splitting it into smaller PRs.

This PR is too large to review automatically (11948 lines; limit is 3000). Please consider splitting it into smaller PRs.

This PR is too large to review automatically (11948 lines; limit is 3000). Please consider splitting it into smaller PRs.

This PR is too large to review automatically (11948 lines; limit is 3000). Please consider splitting it into smaller PRs.
marvin8 changed target branch from main to feat/issue-80-collect 2026-08-13 08:24:54 +00:00
marvin8 approved these changes 2026-08-13 08:52:07 +00:00
marvin8 manually merged commit 17bc44c5a7 into feat/issue-80-collect 2026-08-13 08:54:52 +00:00
marvin8 deleted branch feat/issue-80-remove-ml-add-vision-ai 2026-08-13 20:30:54 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marvin8/dujiangyan!81
No description provided.