Initial vLLM agent strategy

This commit is contained in:
2026-07-21 16:04:18 +08:00
commit d17bb21bbb
48 changed files with 3006 additions and 0 deletions

87
app/storage/schema.py Normal file
View File

@@ -0,0 +1,87 @@
SCHEMA_SQL = """
CREATE TABLE IF NOT EXISTS candidates (
model_id TEXT PRIMARY KEY,
source TEXT NOT NULL DEFAULT 'HUGGING_FACE',
origin TEXT NOT NULL,
priority INTEGER NOT NULL,
is_bounty INTEGER NOT NULL DEFAULT 0,
is_promote INTEGER NOT NULL DEFAULT 0,
known_downloaded_by_others INTEGER NOT NULL DEFAULT 0,
self_download_allowed INTEGER NOT NULL DEFAULT 0,
max_model_len INTEGER NOT NULL DEFAULT 1024,
target_gpu_aliases TEXT,
notes TEXT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS tasks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
model_id TEXT NOT NULL,
gpu_alias TEXT NOT NULL,
gpu_type TEXT NOT NULL,
engine TEXT NOT NULL DEFAULT 'vllm',
priority INTEGER NOT NULL,
status TEXT NOT NULL DEFAULT 'pending',
attempt_count INTEGER NOT NULL DEFAULT 0,
submit_count INTEGER NOT NULL DEFAULT 0,
last_error_code TEXT,
last_error_message TEXT,
next_attempt_at TEXT,
submitted_at TEXT,
completed_at TEXT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
UNIQUE(model_id, gpu_type, engine)
);
CREATE TABLE IF NOT EXISTS downloads (
model_id TEXT PRIMARY KEY,
source TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'unknown',
owner TEXT NOT NULL DEFAULT 'unknown',
active_self_slot INTEGER NOT NULL DEFAULT 0,
download_code TEXT,
download_message TEXT,
waiting_since TEXT,
last_polled_at TEXT,
next_poll_at TEXT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS submission_attempts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
task_id INTEGER NOT NULL,
model_id TEXT NOT NULL,
gpu_type TEXT NOT NULL,
strategy_id TEXT,
payload_strategy_field TEXT,
response_code TEXT,
response_message TEXT,
result TEXT NOT NULL,
created_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS seed_imports (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL,
file_hash TEXT,
imported_count INTEGER NOT NULL,
created_at TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_tasks_sched
ON tasks(status, priority, next_attempt_at, created_at);
CREATE INDEX IF NOT EXISTS idx_tasks_model
ON tasks(model_id);
CREATE INDEX IF NOT EXISTS idx_downloads_poll
ON downloads(status, next_poll_at);
"""
def init_schema(conn):
conn.executescript(SCHEMA_SQL)
conn.commit()