refactor: subagent usage and related tools

This commit is contained in:
Acbox
2026-02-22 16:35:50 +08:00
parent 6a6600a440
commit 928b0c0ee5
18 changed files with 403 additions and 68 deletions
+1
View File
@@ -346,6 +346,7 @@ CREATE TABLE IF NOT EXISTS subagents (
messages JSONB NOT NULL DEFAULT '[]'::jsonb,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
skills JSONB NOT NULL DEFAULT '[]'::jsonb,
usage JSONB NOT NULL DEFAULT '{}'::jsonb,
CONSTRAINT subagents_name_unique UNIQUE (bot_id, name)
);
@@ -0,0 +1,5 @@
-- 0012_subagent_usage (rollback)
-- Remove usage column from subagents table.
ALTER TABLE subagents DROP COLUMN IF EXISTS usage;
+5
View File
@@ -0,0 +1,5 @@
-- 0012_subagent_usage
-- Add usage JSONB column to subagents table for tracking cumulative token usage.
ALTER TABLE subagents ADD COLUMN IF NOT EXISTS usage JSONB NOT NULL DEFAULT '{}'::jsonb;
+19 -7
View File
@@ -1,15 +1,20 @@
-- name: CreateSubagent :one
INSERT INTO subagents (name, description, bot_id, messages, metadata, skills)
VALUES ($1, $2, $3, $4, $5, $6)
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills;
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills, usage;
-- name: GetSubagentByID :one
SELECT id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills
SELECT id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills, usage
FROM subagents
WHERE id = $1 AND deleted = false;
-- name: GetSubagentByBotAndName :one
SELECT id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills, usage
FROM subagents
WHERE bot_id = $1 AND name = $2 AND deleted = false;
-- name: ListSubagentsByBot :many
SELECT id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills
SELECT id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills, usage
FROM subagents
WHERE bot_id = $1 AND deleted = false
ORDER BY created_at DESC;
@@ -21,21 +26,29 @@ SET name = $2,
metadata = $4,
updated_at = now()
WHERE id = $1 AND deleted = false
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills;
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills, usage;
-- name: UpdateSubagentMessages :one
UPDATE subagents
SET messages = $2,
updated_at = now()
WHERE id = $1 AND deleted = false
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills;
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills, usage;
-- name: UpdateSubagentMessagesAndUsage :one
UPDATE subagents
SET messages = $2,
usage = $3,
updated_at = now()
WHERE id = $1 AND deleted = false
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills, usage;
-- name: UpdateSubagentSkills :one
UPDATE subagents
SET skills = $2,
updated_at = now()
WHERE id = $1 AND deleted = false
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills;
RETURNING id, name, description, created_at, updated_at, deleted, deleted_at, bot_id, messages, metadata, skills, usage;
-- name: SoftDeleteSubagent :exec
UPDATE subagents
@@ -43,4 +56,3 @@ SET deleted = true,
deleted_at = now(),
updated_at = now()
WHERE id = $1 AND deleted = false;