전체 문서
이 페이지 목차
Agent·LLM·도구 PostgreSQL 객체
agent/profile/tool/MCP/skill visibility, conversation, trigger와 사용량 객체를 전수 참조한다.
기준 · core
db/schema.sql은 PostgreSQL 49개 table·최종 column 합집합 520개·명시 index 97개·function 4개·trigger 22개다. startup 보조 ledgerllm_records와llm_usage가 2개 table·31개 column·5개 index를 더해 선언 총계는 51개 table·551개 column·102개 index다.Ensure*Table실패는 로그 후 계속되므로 보조 ledger 존재는 core startup 보장이 아니다. Traffic은 별도 SQLite 3개 일반 table·FTS5 virtual table 1개·index 6개다. 아래 DDL은 고정 source revision의 선언이며 실제 운영 DB 적용 상태는 관찰하지 않았다.
객체 색인
| 객체 | 저장소 | 목적 |
|---|---|---|
llm_profiles |
PostgreSQL | provider/model/base URL/secret·retry/output 설정의 profile을 저장한다. |
llm_profile_health |
PostgreSQL | llm_profile_health 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
agents |
PostgreSQL | agent 역할 설정, 모델 binding, turn/runtime와 trigger 실행 방식을 저장한다. |
agent_prompts |
PostgreSQL | agent_prompts 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
agent_prompt_vars |
PostgreSQL | agent_prompt_vars 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
mcp_servers |
PostgreSQL | mcp_servers 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
mcp_tools_cache |
PostgreSQL | mcp_tools_cache 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
agent_visibility |
PostgreSQL | agent_visibility 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
agent_skill_visibility |
PostgreSQL | agent_skill_visibility 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
skill_usage |
PostgreSQL | skill_usage 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
tool_usage |
PostgreSQL | tool_usage 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
tools |
PostgreSQL | built-in/custom tool의 노출 schema, binding, 실행 설정을 저장한다. |
conversations |
PostgreSQL | conversations 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
conversation_activities |
PostgreSQL | conversation_activities 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
agent_triggers |
PostgreSQL | agent_triggers 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
scheduler_state |
PostgreSQL | scheduler_state 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
llm_records |
PostgreSQL | llm_records 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
llm_usage |
PostgreSQL | llm_usage 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다. |
llm_profiles
llm_profiles · 관계
이 대상을 사용하는 기능·모듈·계약 · 4개
- 계약 사용 · Provider routing과 failover · DB.ActiveProfile: read FROM; DB.ListProfiles: read FROM; DB.PoolProfiles: read FROM; DB.ProfileByID: read FROM; DB.SaveProfile: write INSERT/UPDATE; DB.SetActiveProfile: write UPDATE; DB.deleteProfile: read/write DELETE/FROM; lockLLMProfileForReference: read FROM · db-pg-access-llm-profiles-eaec5da39c · db-pg-access-llm-profiles-3fcac6dc00 · db-pg-access-llm-profiles-f4364ceaa1 · db-pg-access-llm-profiles-b958272071 · db-pg-access-llm-profiles-dfee149965 · db-pg-access-llm-profiles-5d1d592ee5 · db-pg-access-llm-profiles-880cbddcb0 · db-pg-access-llm-profiles-9d5f2d7cbf
- 계약 사용 · 삭제·archive·보존 경계 · rowExists: read FROM · db-pg-access-llm-profiles-2302429399
- 계약 사용 · set_updated_at() · write; columns updated_at; BEFORE UPDATE ROW trigger `trg_llm_upd`; provenance: trigger row/table declaration · db-ddl-trigger-trg-llm-upd
- 의존 / 실행 · trg_llm_upd · fire table `llm_profiles` · db-ddl-trigger-trg-llm-upd
provider/model/base URL/secret·retry/output 설정의 profile을 저장한다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS llm_profiles (
id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
format TEXT NOT NULL CHECK (format IN ('openai','anthropic','openai-responses')),
base_url TEXT,
proxy TEXT,
model TEXT NOT NULL,
api_key TEXT,
api_key_hint TEXT,
rate_per_second DOUBLE PRECISION NOT NULL DEFAULT 0,
rate_per_minute DOUBLE PRECISION NOT NULL DEFAULT 0,
context_window_k INTEGER NOT NULL DEFAULT 0,
-- 思考参数拆成两个独立字段:thinking_type=思考开关(''/disabled/enabled),
-- reasoning_effort=思考强度(''/low/medium/high/xhigh/max),互不牵连。
reasoning_effort TEXT NOT NULL DEFAULT '',
thinking_type TEXT NOT NULL DEFAULT '',
is_default BOOLEAN NOT NULL DEFAULT false,
-- 轮询(故障转移)参数,见 docs/LLM轮询设计.md:
-- priority 顺位,越大越先被选中;激活配置(is_default)永远排链首,与本值无关。
-- pool_exclude true=不作为故障转移目标(仍可被 agent/任务显式绑定使用)。
priority INTEGER NOT NULL DEFAULT 0,
pool_exclude BOOLEAN NOT NULL DEFAULT false,
-- streaming=true(默认)走流式 SSE;false 走真·非流式(stream:false,一次性 JSON)。
streaming BOOLEAN NOT NULL DEFAULT true,
-- 单次回复的输出上限(token)。0=不发送该字段,由服务端默认值决定——保持既有行为。
-- 与 context_window_k(模型总容量,仅本地用于压缩阈值)是两回事:本值会随请求发出。
max_tokens INTEGER NOT NULL DEFAULT 0,
-- 输出上限用哪个请求字段名,仅对 format='openai' 生效:
-- '' = max_tokens(默认,兼容绝大多数网关)
-- 'max_completion_tokens' = 新字段;OpenAI 推理模型(o 系列/GPT-5)只认它,
-- 发 max_tokens 会被 unsupported_parameter 拒绝。
-- anthropic(max_tokens 必填)与 openai-responses(max_output_tokens)自带字段名,不受此值影响。
max_tokens_field TEXT NOT NULL DEFAULT '',
-- 自定义会话头:非空时每次请求带一个该名字的 HTTP 头,头值=当前运行的 session id
-- (chat 会话/worker 意图)。用于某些按 session-id 头做提示缓存/粘性路由的网关。''=不发送。
session_header_key TEXT NOT NULL DEFAULT '',
-- 重试覆盖:次数 0=用全局默认/-1=关闭/>0=该值;间隔 0=用默认指数退避/>0=固定毫秒。
-- 三组分别对应建连重试、空响应重试、同 provider 安全窗口重试,详见下方 ALTER 处注释。
retry_connect_attempts INTEGER NOT NULL DEFAULT 0,
retry_connect_interval_ms INTEGER NOT NULL DEFAULT 0,
retry_empty_attempts INTEGER NOT NULL DEFAULT 0,
retry_empty_interval_ms INTEGER NOT NULL DEFAULT 0,
retry_stream_attempts INTEGER NOT NULL DEFAULT 0,
retry_stream_interval_ms INTEGER NOT NULL DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
후속 변경·제약
ALTER TABLE llm_profiles ADD COLUMN IF NOT EXISTS priority INTEGER NOT NULL DEFAULT 0;ALTER TABLE llm_profiles ADD COLUMN IF NOT EXISTS pool_exclude BOOLEAN NOT NULL DEFAULT false;ALTER TABLE llm_profiles ADD COLUMN IF NOT EXISTS streaming BOOLEAN NOT NULL DEFAULT true;ALTER TABLE llm_profiles DROP CONSTRAINT IF EXISTS llm_profiles_format_check;ALTER TABLE llm_profiles ADD CONSTRAINT llm_profiles_format_check CHECK (format IN ('openai','anthropic','openai-responses'));ALTER TABLE llm_profiles ADD COLUMN IF NOT EXISTS max_tokens INTEGER NOT NULL DEFAULT 0;ALTER TABLE llm_profiles ADD COLUMN IF NOT EXISTS max_tokens_field TEXT NOT NULL DEFAULT '';ALTER TABLE llm_profiles DROP CONSTRAINT IF EXISTS llm_profiles_max_tokens_field_check;ALTER TABLE llm_profiles ADD CONSTRAINT llm_profiles_max_tokens_field_check CHECK (max_tokens_field IN ('','max_completion_tokens'));ALTER TABLE llm_profiles DROP CONSTRAINT IF EXISTS llm_profiles_max_tokens_check;ALTER TABLE llm_profiles ADD CONSTRAINT llm_profiles_max_tokens_check CHECK (max_tokens >= 0);ALTER TABLE llm_profiles ADD COLUMN IF NOT EXISTS session_header_key TEXT NOT NULL DEFAULT '';ALTER TABLE llm_profiles ADD COLUMN IF NOT EXISTS retry_connect_attempts INTEGER NOT NULL DEFAULT 0;ALTER TABLE llm_profiles ADD COLUMN IF NOT EXISTS retry_connect_interval_ms INTEGER NOT NULL DEFAULT 0;ALTER TABLE llm_profiles ADD COLUMN IF NOT EXISTS retry_empty_attempts INTEGER NOT NULL DEFAULT 0;ALTER TABLE llm_profiles ADD COLUMN IF NOT EXISTS retry_empty_interval_ms INTEGER NOT NULL DEFAULT 0;ALTER TABLE llm_profiles ADD COLUMN IF NOT EXISTS retry_stream_attempts INTEGER NOT NULL DEFAULT 0;ALTER TABLE llm_profiles ADD COLUMN IF NOT EXISTS retry_stream_interval_ms INTEGER NOT NULL DEFAULT 0;ALTER TABLE llm_profiles DROP CONSTRAINT IF EXISTS llm_profiles_retry_check;ALTER TABLE llm_profiles ADD CONSTRAINT llm_profiles_retry_check CHECK ( retry_connect_attempts >= -1 AND retry_empty_attempts >= -1 AND retry_stream_attempts >= -1 AND retry_connect_interval_ms >= 0 AND retry_empty_interval_ms >= 0 AND retry_stream_interval_ms >= 0);
인덱스
CREATE UNIQUE INDEX IF NOT EXISTS uq_llm_one_default ON llm_profiles(is_default) WHERE is_default;
의미·소비·운영 경계
llm_profiles 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
llm_profile_health
llm_profile_health · 관계
이 대상을 사용하는 기능·모듈·계약 · 1개
- 계약 사용 · Provider routing과 failover · DB.ClearLLMHealth: write DELETE; DB.LoadLLMHealth: read FROM; DB.SaveLLMHealth: write INSERT · db-pg-access-llm-profile-health-ec65e5a507 · db-pg-access-llm-profile-health-ce50ed16a5 · db-pg-access-llm-profile-health-f52b5efe5f
llm_profile_health 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS llm_profile_health (
profile_id BIGINT PRIMARY KEY REFERENCES llm_profiles(id) ON DELETE CASCADE,
fails INTEGER NOT NULL DEFAULT 0, -- 当前连续失败次数(成功即清零)
trips INTEGER NOT NULL DEFAULT 0, -- 累计熔断次数,用于冷却时间指数退避
open_until TIMESTAMPTZ, -- 冷却截止;NULL/过期 = 未熔断
last_error TEXT NOT NULL DEFAULT '',
last_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
의미·소비·운영 경계
llm_profile_health 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
agents
agents · 관계
이 대상을 사용하는 기능·모듈·계약 · 8개
- 계약 사용 · Agent trigger orchestration · DB.SetAgentTriggerBehavior: write UPDATE · db-pg-access-agents-5dcb3a4fbf
- 계약 사용 · Reporter, retest, export · Server.seedFindingRetester: write INSERT/UPDATE · db-pg-access-agents-b57863a261
- 계약 사용 · Context와 장기 상태 · DB.CreateAgent: write INSERT; DB.CurrentPrompt: read FROM; DB.DeleteAgent: write DELETE; DB.GetAgentByKey: read FROM; DB.ListAgents: read FROM; DB.SavePrompt: write UPDATE; DB.SeedPromptIfEmpty: read FROM; DB.SetAgentInteractiveShell: write UPDATE; DB.SetAgentMaxTurns: write UPDATE; DB.SetAgentRunSeconds: write UPDATE; DB.SetAgentTaskTimeoutWrapup: write UPDATE; DB.SetAgentWebSearch: write UPDATE; DB.SetAgentWrapupMaxTurns: write UPDATE; DB.SetAgentWrapupPrompt: write UPDATE; DB.UpdateAgentMeta: write UPDATE; DB.seedBuiltins: write INSERT/UPDATE · db-pg-access-agents-2c284773a1 · db-pg-access-agents-c2bf78d332 · db-pg-access-agents-f9ae139553 · db-pg-access-agents-4b59fc5a5e · db-pg-access-agents-9fddeb0f2c · db-pg-access-agents-0a71e429d2 · db-pg-access-agents-77eea5cf6c · db-pg-access-agents-983020c62e · db-pg-access-agents-cc8b6daccc · db-pg-access-agents-e55b0b44a3 · db-pg-access-agents-219ad7a5cb · db-pg-access-agents-974caa7851 · db-pg-access-agents-a253d0b0c9 · db-pg-access-agents-16ef29d2ab · db-pg-access-agents-61e77a4c94 · db-pg-access-agents-3a3635b6f6
- 계약 사용 · Provider routing과 failover · DB.SetAgentLLMProfile: read/write FROM/UPDATE; DB.deleteProfile: read FROM · db-pg-access-agents-9fd4bd5238 · db-pg-access-agents-83239d7785
- 계약 사용 · 도구 catalog·조립·승인 모듈 · DB.seedBuiltinSkillVisibility: read FROM · db-pg-access-agents-dd10946574
- 계약 사용 · set_updated_at() · write; columns updated_at; BEFORE UPDATE ROW trigger `trg_agents_upd`; provenance: trigger row/table declaration · db-ddl-trigger-trg-agents-upd
- 의존 / 실행 · trg_agents_upd · fire table `agents` · db-ddl-trigger-trg-agents-upd
- 계약 사용 · PostgreSQL table-level constraint matrix · fresh table-level constraint contract for `agents` · db-table-constraints
agent 역할 설정, 모델 binding, turn/runtime와 trigger 실행 방식을 저장한다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS agents (
id BIGSERIAL PRIMARY KEY,
key TEXT NOT NULL UNIQUE CHECK (key ~ '^[a-z][a-z0-9_]*$'),
name TEXT NOT NULL,
description TEXT,
role TEXT NOT NULL,
builtin BOOLEAN NOT NULL DEFAULT true,
enabled BOOLEAN NOT NULL DEFAULT true,
llm_profile_id BIGINT REFERENCES llm_profiles(id) ON DELETE SET NULL,
current_prompt_id BIGINT,
max_turns INTEGER NOT NULL DEFAULT 0,
run_seconds INTEGER NOT NULL DEFAULT 1200,
web_search BOOLEAN NOT NULL DEFAULT false,
interactive_shell BOOLEAN NOT NULL DEFAULT false,
wrapup_prompt TEXT NOT NULL DEFAULT '',
wrapup_max_turns INTEGER NOT NULL DEFAULT 0,
task_timeout_wrapup_prompt TEXT NOT NULL DEFAULT '',
task_timeout_wrapup_max_turns INTEGER NOT NULL DEFAULT 0,
trigger_run_mode TEXT NOT NULL DEFAULT 'serial' CHECK (trigger_run_mode IN ('serial','parallel')),
trigger_merge_mode TEXT NOT NULL DEFAULT 'all' CHECK (trigger_merge_mode IN ('by_task','all','none')),
trigger_max_parallel INTEGER NOT NULL DEFAULT 5,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CONSTRAINT agents_role_ck CHECK (role IN ('goals','main','planner','worker','assistant'))
);
후속 변경·제약
ALTER TABLE agents ADD COLUMN IF NOT EXISTS trigger_run_mode TEXT NOT NULL DEFAULT 'serial';ALTER TABLE agents ADD COLUMN IF NOT EXISTS trigger_merge_mode TEXT NOT NULL DEFAULT 'all';ALTER TABLE agents ADD COLUMN IF NOT EXISTS trigger_max_parallel INTEGER NOT NULL DEFAULT 5;ALTER TABLE agents ADD COLUMN IF NOT EXISTS llm_profile_id BIGINT REFERENCES llm_profiles(id) ON DELETE SET NULL;ALTER TABLE agents ALTER COLUMN run_seconds SET DEFAULT 1200;
Fresh CREATE는 trigger_run_mode (serial/parallel)와 trigger_merge_mode (by_task/all/none) CHECK를 만들지만 legacy ADD COLUMN은 두 CHECK를 추가하지 않는다. 따라서 upgraded DB의 mode allowlist는 backend 쓰기 검증에 의존하며 DB 전역 불변식이 아니다. run_seconds ALTER는 기존 row를 1200으로 backfill하지 않고 이후 default INSERT에만 적용한다. current_prompt_id는 두 table을 만든 후 agent_prompts(id) ON DELETE SET NULL FK를 조건부로 더한다. migration 경계
인덱스
CREATE INDEX IF NOT EXISTS idx_agents_llm_profile ON agents(llm_profile_id) WHERE llm_profile_id IS NOT NULL;
의미·소비·운영 경계
agents 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
agent_prompts
agent_prompts · 관계
이 대상을 사용하는 기능·모듈·계약 · 3개
- 계약 사용 · Reporter, retest, export · Server.seedFindingRetester: write INSERT · db-pg-access-agent-prompts-5f54e84682
- 계약 사용 · Context와 장기 상태 · DB.CurrentPrompt: read JOIN; DB.ListPromptVersions: read FROM; DB.SavePrompt: read/write FROM/INSERT · db-pg-access-agent-prompts-a685c1232c · db-pg-access-agent-prompts-8df6bbcbcf · db-pg-access-agent-prompts-8c714086b3
- 계약 사용 · PostgreSQL table-level constraint matrix · fresh table-level constraint contract for `agent_prompts` · db-table-constraints
agent_prompts 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS agent_prompts (
id BIGSERIAL PRIMARY KEY,
agent_id BIGINT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
version INT NOT NULL,
template_text TEXT NOT NULL,
note TEXT,
updated_by TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (agent_id, version)
);
의미·소비·운영 경계
agent_prompts 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
agent_prompt_vars
agent_prompt_vars · 관계
이 대상을 사용하는 기능·모듈·계약 · 2개
- 계약 사용 · Context와 장기 상태 · DB.PromptVars: read FROM; DB.seedBuiltins: write DELETE/INSERT · db-pg-access-agent-prompt-vars-c7e87c2bdd · db-pg-access-agent-prompt-vars-af868cc140
- 계약 사용 · PostgreSQL table-level constraint matrix · fresh table-level constraint contract for `agent_prompt_vars` · db-table-constraints
agent_prompt_vars 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS agent_prompt_vars (
id BIGSERIAL PRIMARY KEY,
agent_id BIGINT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
var_name TEXT NOT NULL,
description TEXT,
example TEXT,
source TEXT NOT NULL CHECK (source IN ('exploration','runtime','distilled')),
UNIQUE (agent_id, var_name)
);
의미·소비·운영 경계
agent_prompt_vars 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
mcp_servers
mcp_servers · 관계
이 대상을 사용하는 기능·모듈·계약 · 3개
- 계약 사용 · 도구 catalog·조립·승인 모듈 · DB.DeleteMCP: write DELETE; DB.ListMCP: read FROM; DB.SaveMCP: write INSERT/UPDATE; DB.seedBuiltins: write INSERT · db-pg-access-mcp-servers-f15e8cec3a · db-pg-access-mcp-servers-84800c4c4d · db-pg-access-mcp-servers-61e6c5ce4a · db-pg-access-mcp-servers-35214faf02
- 계약 사용 · set_updated_at() · write; columns updated_at; BEFORE UPDATE ROW trigger `trg_mcp_upd`; provenance: trigger row/table declaration · db-ddl-trigger-trg-mcp-upd
- 의존 / 실행 · trg_mcp_upd · fire table `mcp_servers` · db-ddl-trigger-trg-mcp-upd
mcp_servers 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS mcp_servers (
id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
transport TEXT NOT NULL CHECK (transport IN ('stdio','http','sse')),
command TEXT,
args JSONB NOT NULL DEFAULT '[]',
env JSONB NOT NULL DEFAULT '{}',
url TEXT,
enabled BOOLEAN NOT NULL DEFAULT true,
insecure BOOLEAN NOT NULL DEFAULT false, -- http: 跳过 TLS 证书校验(自签证书场景, issue #108)
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
후속 변경·제약
ALTER TABLE mcp_servers DROP CONSTRAINT IF EXISTS mcp_servers_transport_check;ALTER TABLE mcp_servers ADD CONSTRAINT mcp_servers_transport_check CHECK (transport IN ('stdio','http','sse'));ALTER TABLE mcp_servers ADD COLUMN IF NOT EXISTS insecure BOOLEAN NOT NULL DEFAULT false;
Startup은 transport CHECK를 drop/recreate하므로 legacy row를 전수 재검증하고 table lock을 취할 수 있다. 또한 ScopeSentry라는 이름이 없을 때만 URL null, empty API-key env, disabled인 HTTP placeholder를 seed하며 기존 동명 row를 덮어쓰지 않는다. migration 경계
의미·소비·운영 경계
mcp_servers 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
mcp_tools_cache
mcp_tools_cache · 관계
이 대상을 사용하는 기능·모듈·계약 · 2개
- 계약 사용 · 도구 catalog·조립·승인 모듈 · DB.MCPToolNames: read FROM; DB.MCPToolsDetailed: read FROM; DB.SaveMCPTools: write DELETE/INSERT · db-pg-access-mcp-tools-cache-2aa10feb7d · db-pg-access-mcp-tools-cache-4c7e318619 · db-pg-access-mcp-tools-cache-9879c7473c
- 계약 사용 · PostgreSQL table-level constraint matrix · fresh table-level constraint contract for `mcp_tools_cache` · db-table-constraints
mcp_tools_cache 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS mcp_tools_cache (
id BIGSERIAL PRIMARY KEY,
server_id BIGINT NOT NULL REFERENCES mcp_servers(id) ON DELETE CASCADE,
tool_name TEXT NOT NULL,
description TEXT,
schema JSONB,
discovered_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (server_id, tool_name)
);
의미·소비·운영 경계
mcp_tools_cache 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
agent_visibility
agent_visibility · 관계
이 대상을 사용하는 기능·모듈·계약 · 2개
- 계약 사용 · 도구 catalog·조립·승인 모듈 · DB.AgentBindingCounts: read FROM; DB.AgentVisible: read FROM; DB.DeleteMCP: write DELETE; DB.ResourceAgents: read FROM; DB.SetAgentVisibilityKind: write DELETE/INSERT; DB.ToggleVisibility: write DELETE/INSERT · db-pg-access-agent-visibility-c6d44c1faf · db-pg-access-agent-visibility-e262281a79 · db-pg-access-agent-visibility-5804b15194 · db-pg-access-agent-visibility-96acd3b356 · db-pg-access-agent-visibility-183ce54e27 · db-pg-access-agent-visibility-3ff56d1a8f
- 계약 사용 · PostgreSQL table-level constraint matrix · fresh table-level constraint contract for `agent_visibility` · db-table-constraints
agent_visibility 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS agent_visibility (
agent_id BIGINT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
resource_kind TEXT NOT NULL CHECK (resource_kind IN ('mcp')),
resource_id BIGINT NOT NULL,
mcp_tool_name TEXT NOT NULL DEFAULT '',
enabled BOOLEAN NOT NULL DEFAULT true,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (agent_id, resource_kind, resource_id, mcp_tool_name)
);
인덱스
CREATE INDEX IF NOT EXISTS idx_vis_resource ON agent_visibility(resource_kind, resource_id);
의미·소비·운영 경계
agent_visibility 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
agent_skill_visibility
agent_skill_visibility · 관계
이 대상을 사용하는 기능·모듈·계약 · 2개
- 계약 사용 · 도구 catalog·조립·승인 모듈 · DB.AgentBindingCounts: read FROM; DB.AgentSkillNames: read FROM; DB.DeleteSkillVisibility: write DELETE; DB.SetAgentSkillVisibility: write DELETE/INSERT; DB.SkillAgents: read FROM; DB.ToggleSkillVisibility: write DELETE/INSERT; DB.seedBuiltinSkillVisibility: write INSERT · db-pg-access-agent-skill-visibility-fcdfad0799 · db-pg-access-agent-skill-visibility-e620ecb222 · db-pg-access-agent-skill-visibility-21ca693b0e · db-pg-access-agent-skill-visibility-6e53f992b0 · db-pg-access-agent-skill-visibility-a06c6fc981 · db-pg-access-agent-skill-visibility-c22cf0e580 · db-pg-access-agent-skill-visibility-5e4f7d22b0
- 계약 사용 · PostgreSQL table-level constraint matrix · fresh table-level constraint contract for `agent_skill_visibility` · db-table-constraints
agent_skill_visibility 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS agent_skill_visibility (
agent_id BIGINT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
skill_name TEXT NOT NULL,
enabled BOOLEAN NOT NULL DEFAULT true,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (agent_id, skill_name)
);
인덱스
CREATE INDEX IF NOT EXISTS idx_askv_skill ON agent_skill_visibility(skill_name);
의미·소비·운영 경계
agent_skill_visibility 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
skill_usage
skill_usage · 관계
이 대상을 사용하는 기능·모듈·계약 · 2개
- 계약 사용 · 삭제·archive·보존 경계 · DB.snapshotTaskArchive: read FROM; taskArchiveAggregates: read FROM; DB.RestoreTaskArchive: write DELETE; insertArchiveRows: write INSERT · db-pg-access-skill-usage-7142046787 · db-pg-access-skill-usage-1bf74722f9 · db-pg-access-skill-usage-ff4bfd830a · db-pg-access-skill-usage-7d2fb6f50a
- 계약 사용 · 도구 catalog·조립·승인 모듈 · DB.InsertSkillUsage: write INSERT; DB.MissingSkillStats: read FROM; DB.RecentSkillCalls: read FROM; DB.SkillCallsByTask: read FROM; DB.SkillStats: read FROM · db-pg-access-skill-usage-1fd6c292b8 · db-pg-access-skill-usage-9afe4d9466 · db-pg-access-skill-usage-4ad66db7ad · db-pg-access-skill-usage-d96e8cc76f · db-pg-access-skill-usage-cceb80949c
skill_usage 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS skill_usage (
id BIGSERIAL PRIMARY KEY,
ts TIMESTAMPTZ NOT NULL DEFAULT now(),
skill TEXT NOT NULL,
agent_key TEXT,
task_id BIGINT,
exploration_id BIGINT,
intent_id BIGINT,
session_id TEXT,
args_len INTEGER NOT NULL DEFAULT 0,
-- false = 模型点名了一个不存在的 skill(未命中)。这类行同样保留:它反映"想用但没有"
-- 的缺口,是补 skill 的依据。
found BOOLEAN NOT NULL DEFAULT true
);
인덱스
CREATE INDEX IF NOT EXISTS idx_skill_usage_skill ON skill_usage(skill, ts DESC);CREATE INDEX IF NOT EXISTS idx_skill_usage_task ON skill_usage(task_id);
의미·소비·운영 경계
skill_usage 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
tool_usage
tool_usage · 관계
이 대상을 사용하는 기능·모듈·계약 · 2개
- 계약 사용 · 삭제·archive·보존 경계 · DB.snapshotTaskArchive: read FROM; taskArchiveAggregates: read FROM; DB.RestoreTaskArchive: write DELETE; insertArchiveRows: write INSERT · db-pg-access-tool-usage-56d5c6b947 · db-pg-access-tool-usage-65a68b398c · db-pg-access-tool-usage-21bb9443cc · db-pg-access-tool-usage-899e58268b
- 계약 사용 · 도구 catalog·조립·승인 모듈 · DB.InsertToolUsage: write INSERT; DB.ToolUsageCounts: read FROM · db-pg-access-tool-usage-a5f65b1eef · db-pg-access-tool-usage-f1f6e995a1
tool_usage 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS tool_usage (
id BIGSERIAL PRIMARY KEY,
ts TIMESTAMPTZ NOT NULL DEFAULT now(),
tool_key TEXT NOT NULL,
agent_key TEXT,
task_id BIGINT,
exploration_id BIGINT,
intent_id BIGINT,
session_id TEXT
);
인덱스
CREATE INDEX IF NOT EXISTS idx_tool_usage_tool ON tool_usage(tool_key, ts DESC);CREATE INDEX IF NOT EXISTS idx_tool_usage_task ON tool_usage(task_id);
의미·소비·운영 경계
tool_usage 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
tools
tools · 관계
이 대상을 사용하는 기능·모듈·계약 · 7개
- 계약 사용 · Reporter, retest, export · Server.seedFindingWorkflowTools: write UPDATE · db-pg-access-tools-c7498246c6
- 계약 사용 · 트래픽에서 증거 snapshot까지 · Server.seedFindingTrafficTools: write UPDATE · db-pg-access-tools-ff749a71a4
- 계약 사용 · 도구 catalog·조립·승인 모듈 · DB.AgentBindingCounts: read FROM; DB.AddAgentToToolBinding: write UPDATE; DB.CreateCustomTool: write INSERT; DB.DeleteCustomTool: write DELETE; DB.GetTool: read FROM; DB.ListCustomTools: read FROM; DB.ListTools: read FROM; DB.RefreshToolDefaults: write UPDATE; DB.RemoveAgentFromTool: write UPDATE; DB.RemoveAgentFromToolBindings: write UPDATE; DB.SeedTool: write INSERT; DB.UpdateCustomTool: write UPDATE; DB.UpdateTool: write UPDATE; DB.UpsertToolForce: write INSERT · db-pg-access-tools-07d82f89d6 · db-pg-access-tools-838d1b0c28 · db-pg-access-tools-d2bad554a2 · db-pg-access-tools-7aaef9c286 · db-pg-access-tools-91bb934a0c · db-pg-access-tools-d23945e7cb · db-pg-access-tools-de24823dd2 · db-pg-access-tools-fc94031a33 · db-pg-access-tools-599432dfc9 · db-pg-access-tools-67c2c85faa · db-pg-access-tools-8272961e1a · db-pg-access-tools-51e3843ba7 · db-pg-access-tools-7922588986 · db-pg-access-tools-2cbf2d4e27
- 계약 사용 · set_updated_at() · write; columns updated_at; BEFORE UPDATE ROW trigger `trg_tools_upd`; provenance: trigger row/table declaration · db-ddl-trigger-trg-tools-upd
- 의존 / 실행 · trg_tools_upd · fire table `tools` · db-ddl-trigger-trg-tools-upd
- 계약 사용 · 역할별 조립 순서 · tool assembly가 persisted catalog를 소비 · core-edge-9
- 계약 사용 · Deferred schema와 Skill unlock · deferred unlock이 tool catalog schema를 소비 · core-edge-10
built-in/custom tool의 노출 schema, binding, 실행 설정을 저장한다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS tools (
key TEXT PRIMARY KEY,
system BOOLEAN NOT NULL DEFAULT true,
description TEXT NOT NULL DEFAULT '',
schema JSONB NOT NULL DEFAULT '{}',
agents JSONB NOT NULL DEFAULT '[]',
enabled BOOLEAN NOT NULL DEFAULT true,
kind TEXT NOT NULL DEFAULT 'builtin',
exec JSONB NOT NULL DEFAULT '{}',
deferred BOOLEAN NOT NULL DEFAULT false,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
의미·소비·운영 경계
tools 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
conversations
conversations · 관계
이 대상을 사용하는 기능·모듈·계약 · 8개
- 계약 사용 · Reporter, retest, export · DB.CreateFindingRetest: write INSERT · db-pg-access-conversations-81cb174e25
- 계약 사용 · Side Question(/btw) · lockSideParent: read FROM · db-pg-access-conversations-6d2a3c32c4
- 계약 사용 · Standalone conversation · DB.deleteProfile: read FROM; DB.ConversationTokenSummaries: read FROM; DB.CreateConversation: write INSERT/UPDATE; DB.DeleteConversation: write DELETE; DB.DeleteConversations: write DELETE; DB.GetConversation: read FROM; DB.ListConversations: read FROM; DB.TouchConversation: write UPDATE; DB.UpdateConversation: write UPDATE; DB.UpdateConversationProfile: read/write FROM/UPDATE · db-pg-access-conversations-b5c436d5a0 · db-pg-access-conversations-26c6f843da · db-pg-access-conversations-2e0d9a9cc1 · db-pg-access-conversations-d417c9cf5e · db-pg-access-conversations-f5704eb599 · db-pg-access-conversations-c1685f5ce7 · db-pg-access-conversations-214467f5b3 · db-pg-access-conversations-4ec73135dc · db-pg-access-conversations-6051c0ff45 · db-pg-access-conversations-59979d518a
- 계약 사용 · Tool intercept·승인·실행 trace · DB.ListAllIntercepts: read JOIN; DB.ListTaskIntercepts: read JOIN; DB.GetInterceptDetail: read JOIN · db-pg-access-conversations-b25362de8d · db-pg-access-conversations-1a92e109bd · db-pg-access-conversations-6abd6be28f
- 계약 사용 · set_updated_at() · write; columns updated_at; BEFORE UPDATE ROW trigger `trg_conversations_upd`; provenance: trigger row/table declaration · db-ddl-trigger-trg-conversations-upd
- 계약 사용 · stop_deleted_conversation_retest() · read trigger row; columns id; BEFORE DELETE의 OLD row; provenance: trigger row/table declaration · db-ddl-trigger-trg-conversation-retest-delete
- 의존 / 실행 · trg_conversations_upd · fire table `conversations` · db-ddl-trigger-trg-conversations-upd
- 의존 / 실행 · trg_conversation_retest_delete · fire table `conversations` · db-ddl-trigger-trg-conversation-retest-delete
conversations 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS conversations (
id BIGSERIAL PRIMARY KEY,
agent_key TEXT NOT NULL,
title TEXT NOT NULL DEFAULT '',
llm_profile_id BIGINT REFERENCES llm_profiles(id) ON DELETE SET NULL,
pinned_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
후속 변경·제약
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS pinned_at TIMESTAMPTZ;
인덱스
CREATE INDEX IF NOT EXISTS idx_conversations_llm_profile ON conversations(llm_profile_id) WHERE llm_profile_id IS NOT NULL;CREATE INDEX IF NOT EXISTS idx_conversations_pinned ON conversations(pinned_at DESC) WHERE pinned_at IS NOT NULL;
의미·소비·운영 경계
conversations 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
conversation_activities
conversation_activities · 관계
이 대상을 사용하는 기능·모듈·계약 · 3개
- 계약 사용 · Reporter, retest, export · DB.CreateFindingRetest: write INSERT · db-pg-access-conversation-activities-3edc66dd8f
- 계약 사용 · Standalone conversation · DB.AppendConvActivity: write INSERT; DB.ConvActivityDetail: read FROM; DB.ConvActivityList: read FROM; DB.ConvActivityPage: read FROM; DB.ConversationTokenSummaries: read JOIN · db-pg-access-conversation-activities-3f4eca7777 · db-pg-access-conversation-activities-45b2c82ce4 · db-pg-access-conversation-activities-9bb8fab700 · db-pg-access-conversation-activities-09c880565f · db-pg-access-conversation-activities-fcdd10043e
- 계약 사용 · Tool intercept·승인·실행 trace · DB.GetInterceptExecution: read FROM · db-pg-access-conversation-activities-92d657b267
conversation_activities 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS conversation_activities (
id BIGSERIAL PRIMARY KEY,
conversation_id BIGINT NOT NULL REFERENCES conversations(id) ON DELETE CASCADE,
worker TEXT,
kind TEXT,
tool TEXT,
tool_use_id TEXT,
is_error BOOLEAN NOT NULL DEFAULT false,
summary TEXT,
detail TEXT,
input_tokens INTEGER,
output_tokens INTEGER,
cache_read_tokens INTEGER,
cache_write_tokens INTEGER,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
인덱스
CREATE INDEX IF NOT EXISTS idx_conv_act ON conversation_activities(conversation_id, id);CREATE INDEX IF NOT EXISTS idx_conv_act_tool_call ON conversation_activities(conversation_id, tool_use_id, id) WHERE kind IN ('tool_use', 'tool_result');
의미·소비·운영 경계
conversation_activities 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
agent_triggers
agent_triggers · 관계
이 대상을 사용하는 기능·모듈·계약 · 3개
- 계약 사용 · Agent trigger orchestration · DB.CreateTrigger: write INSERT; DB.DeleteTrigger: write DELETE; DB.DeleteTriggersForAgent: write DELETE; DB.ListEnabledTriggers: read FROM; DB.ListTriggersFor: read FROM; DB.TouchTriggerFire: write UPDATE; DB.UpdateTrigger: write UPDATE · db-pg-access-agent-triggers-e7cffdb6af · db-pg-access-agent-triggers-4f1215e4e4 · db-pg-access-agent-triggers-08c83ee12f · db-pg-access-agent-triggers-f4f5758080 · db-pg-access-agent-triggers-2eac449fb3 · db-pg-access-agent-triggers-3d5026e056 · db-pg-access-agent-triggers-6011431a2f
- 계약 사용 · set_updated_at() · write; columns updated_at; BEFORE UPDATE ROW trigger `trg_agent_triggers_upd`; provenance: trigger row/table declaration · db-ddl-trigger-trg-agent-triggers-upd
- 의존 / 실행 · trg_agent_triggers_upd · fire table `agent_triggers` · db-ddl-trigger-trg-agent-triggers-upd
agent_triggers 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS agent_triggers (
id BIGSERIAL PRIMARY KEY,
agent_key TEXT NOT NULL,
enabled BOOLEAN NOT NULL DEFAULT true,
interval_sec INTEGER NOT NULL DEFAULT 0,
on_finding BOOLEAN NOT NULL DEFAULT false,
on_goal_met BOOLEAN NOT NULL DEFAULT false,
on_task_timeout BOOLEAN NOT NULL DEFAULT false,
on_tool_call BOOLEAN NOT NULL DEFAULT false,
on_task_create BOOLEAN NOT NULL DEFAULT false,
interval_message TEXT NOT NULL DEFAULT '',
finding_message TEXT NOT NULL DEFAULT '',
goal_message TEXT NOT NULL DEFAULT '',
task_timeout_message TEXT NOT NULL DEFAULT '',
tool_call_message TEXT NOT NULL DEFAULT '',
task_create_message TEXT NOT NULL DEFAULT '',
tool_names TEXT NOT NULL DEFAULT '',
last_fire TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
후속 변경·제약
ALTER TABLE agent_triggers ADD COLUMN IF NOT EXISTS on_tool_call BOOLEAN NOT NULL DEFAULT false;ALTER TABLE agent_triggers ADD COLUMN IF NOT EXISTS tool_call_message TEXT NOT NULL DEFAULT '';ALTER TABLE agent_triggers ADD COLUMN IF NOT EXISTS tool_names TEXT NOT NULL DEFAULT '';ALTER TABLE agent_triggers ADD COLUMN IF NOT EXISTS on_task_create BOOLEAN NOT NULL DEFAULT false;ALTER TABLE agent_triggers ADD COLUMN IF NOT EXISTS task_create_message TEXT NOT NULL DEFAULT '';
인덱스
CREATE INDEX IF NOT EXISTS idx_agent_triggers_agent ON agent_triggers(agent_key);
의미·소비·운영 경계
agent_triggers 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
scheduler_state
scheduler_state · 관계
이 대상을 사용하는 기능·모듈·계약 · 1개
- 계약 사용 · Agent trigger orchestration · DB.GetSchedState: read FROM; DB.SetSchedState: write INSERT · db-pg-access-scheduler-state-cdc14b3c66 · db-pg-access-scheduler-state-63e24e7f23
scheduler_state 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/schema.sql다. 등록 근거
CREATE TABLE IF NOT EXISTS scheduler_state (
key TEXT PRIMARY KEY,
value TEXT NOT NULL DEFAULT ''
);
의미·소비·운영 경계
scheduler_state 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
llm_records
llm_records · 관계
이 대상을 사용하는 기능·모듈·계약 · 2개
- 계약 사용 · Provider routing과 failover · DB.DeleteLLMRecords: write DELETE; DB.GetLLMRecord: read FROM; DB.InsertLLMRecord: write INSERT; DB.LLMTasks: read FROM; DB.ListLLMRecords: read FROM; DB.DeleteTaskCascadePrepared: write DELETE · db-pg-access-llm-records-9aca9bea84 · db-pg-access-llm-records-cab673cf7a · db-pg-access-llm-records-6d63fd4190 · db-pg-access-llm-records-30b3dfbfb4 · db-pg-access-llm-records-617fe0723a · db-pg-access-llm-records-27d38e6b28
- 계약 사용 · 삭제·archive·보존 경계 · DB.snapshotTaskArchive: read FROM; DB.CompleteTaskArchive: write DELETE; insertArchiveJSONSequenceRows: write INSERT; insertArchiveRows: write INSERT · db-pg-access-llm-records-f38b83f350 · db-pg-access-llm-records-c77d100838 · db-pg-access-llm-records-41341529c6 · db-pg-access-llm-records-b29e826f92
llm_records 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/commands.go다. 등록 근거
CREATE TABLE IF NOT EXISTS llm_records (
id BIGSERIAL PRIMARY KEY,
ts TIMESTAMPTZ DEFAULT now(),
model TEXT,
profile_name TEXT,
session_id TEXT,
task_id TEXT,
worker TEXT,
latency_ms INTEGER,
input_tokens INTEGER,
output_tokens INTEGER,
cache_read INTEGER,
cache_write INTEGER,
status TEXT,
error TEXT,
request_body TEXT,
response_body TEXT,
raw_request TEXT,
raw_response TEXT
);
후속 변경·제약
Legacy table에는 llmRecordsMigrate가 task_id, worker, profile_name, raw_request, raw_response를 각각 ADD COLUMN IF NOT EXISTS로 더한다. EnsureLLMRecordsTable은 schema initializer와 같은 advisory-lock protocol에 참여하는 transaction에서 base DDL·index·이 ALTER를 실행한다. 어느 statement든 실패하면 해당 transaction은 commit되지 않지만 manager startup은 오류를 로그하고 계속하므로 table/column/index 가용성은 best-effort다.
인덱스
CREATE INDEX IF NOT EXISTS idx_llm_records_ts ON llm_records(ts);CREATE INDEX IF NOT EXISTS idx_llm_records_session ON llm_records(session_id);
의미·소비·운영 경계
llm_records 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.
llm_usage
llm_usage · 관계
이 대상을 사용하는 기능·모듈·계약 · 2개
- 계약 사용 · Provider routing과 failover · DB.InsertLLMUsage: write INSERT; DB.JudgeUsageStats: read FROM; DB.TokenByModel: read FROM; DB.UsageByProfile: read FROM; DB.UsageDaily: read FROM · db-pg-access-llm-usage-c31f6c2e58 · db-pg-access-llm-usage-1e4f16e088 · db-pg-access-llm-usage-6b6d0f6e83 · db-pg-access-llm-usage-bcfba2f79c · db-pg-access-llm-usage-cde6f94cdb
- 계약 사용 · 삭제·archive·보존 경계 · DB.snapshotTaskArchive: read FROM; taskArchiveAggregates: read FROM; DB.CompleteTaskArchive: write DELETE; insertArchiveRows: write INSERT · db-pg-access-llm-usage-23ac482369 · db-pg-access-llm-usage-615cc46c49 · db-pg-access-llm-usage-13a8f69171 · db-pg-access-llm-usage-e5292afc9f
llm_usage 도메인의 영속 상태를 저장한다. 정확한 의미는 필드 정의와 사용 모듈을 함께 본다.
정의 원본은 db/llm_usage.go다. 등록 근거
CREATE TABLE IF NOT EXISTS llm_usage (
id BIGSERIAL PRIMARY KEY,
ts TIMESTAMPTZ NOT NULL DEFAULT now(),
task_id TEXT,
exploration_id BIGINT,
worker TEXT,
model TEXT,
profile_name TEXT,
latency_ms INTEGER,
input_tokens INTEGER NOT NULL DEFAULT 0,
output_tokens INTEGER NOT NULL DEFAULT 0,
cache_read INTEGER NOT NULL DEFAULT 0,
cache_write INTEGER NOT NULL DEFAULT 0,
status TEXT
);
인덱스
CREATE INDEX IF NOT EXISTS idx_llm_usage_task ON llm_usage(task_id);CREATE INDEX IF NOT EXISTS idx_llm_usage_model ON llm_usage(task_id, model);CREATE INDEX IF NOT EXISTS idx_llm_usage_exp ON llm_usage(exploration_id);
의미·소비·운영 경계
llm_usage 필드 의미, reader/writer, index 비용과 retention 판정에서 물리 DDL과 별도로 C/A/U를 확인한다. 운영 DB 적용·row 규모·query plan·role은 관찰하지 않았다.