pbl_agent_runtime/sql/m4a_ddl.sql
2026-09-17 23:44:00 +08:00

124 lines
8.8 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- pbl_agent_runtime M4a DDL自动生成勿手改
-- 生成源pbl_agent_runtime/m4a_tables.py四段式表定义 → to_sql
-- 表pbl_agent_def / pbl_agent_tool / pbl_agent_trace(append-only) / pbl_agent_trace_stage(append-only) / pbl_agent_approval
-- 工具注册表 seed13 enabled + 9 disabledscripts/seed_m4a.py 幂等注入build.sh 调用)
CREATE TABLE IF NOT EXISTS `pbl_agent_def` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
`tenant_id` VARCHAR(64) NOT NULL COMMENT '租户ID强制打头',
`agent_code` VARCHAR(128) NOT NULL COMMENT 'Agent 编码designer / critic',
`agent_name` VARCHAR(128) COMMENT 'Agent 名称',
`agent_type` VARCHAR(64) COMMENT '类型authoring(设计) / review(评审)',
`loop_pattern` VARCHAR(128) COMMENT '循环模式observe_think_propose[_execute]',
`authority_boundary` TEXT COMMENT '权威边界说明Agent 非真相源14.1',
`write_allowed` TINYINT(1) NOT NULL DEFAULT 0 DEFAULT 0 COMMENT '是否允许写操作designer=1 / critic=0',
`allowed_tools` LONGTEXT COMMENT '该 Agent 可调用的 tool_code 白名单JSON 数组)',
`denied_tools` LONGTEXT COMMENT '显式黑名单JSON 数组,优先级高于 allowed',
`model_binding` LONGTEXT COMMENT '模型绑定:{model,capability,fallback}',
`offline_fallback` VARCHAR(64) COMMENT '模型不可达兜底策略template_fallback / none',
`status` VARCHAR(64) DEFAULT 'enabled' COMMENT '状态enabled / disabled',
`description` TEXT COMMENT '说明',
`created_by` VARCHAR(64) COMMENT '创建人',
`created_at` DATETIME COMMENT '创建时间',
`updated_at` DATETIME COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_agent_def` (`tenant_id`, `agent_code`),
KEY `idx_agent_def_status` (`tenant_id`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Agent 定义表:本迭代仅 designer / critic 两个(第 13.1 章。write_allowed=0 表示零写权限Critic14.1 不直接修改 Blueprint';
CREATE TABLE IF NOT EXISTS `pbl_agent_tool` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
`tenant_id` VARCHAR(64) NOT NULL COMMENT '租户ID强制打头',
`tool_code` VARCHAR(128) NOT NULL COMMENT '工具编码,如 blueprint.create',
`tool_name` VARCHAR(128) COMMENT '工具名称',
`tool_group` VARCHAR(64) COMMENT '分组blueprint/template/validation/critic/trace/approval/compile/kdb/publish/marketplace/experiments/agent/world',
`status` VARCHAR(64) NOT NULL DEFAULT 'disabled' COMMENT '状态enabled / disabled',
`required_permission` VARCHAR(128) COMMENT '所需权限域pbl_authoring / agent_tools / publishing / kdb / platform_admin',
`require_approval` TINYINT(1) NOT NULL DEFAULT 0 DEFAULT 0 COMMENT '是否强制人工审批14.2',
`approval_action_type` VARCHAR(64) COMMENT '强制审批类别publish / compile_execute / blueprint_approve / tool_registry_change',
`allowed_agents` LONGTEXT COMMENT '允许调用的 agent_code 列表JSON 数组)',
`write_operation` TINYINT(1) NOT NULL DEFAULT 0 DEFAULT 0 COMMENT '是否写操作Critic 零写权限据此拒绝)',
`input_schema` LONGTEXT COMMENT '入参 JSON SchemaS8 契约校验)',
`output_schema` LONGTEXT COMMENT '出参 JSON Schema',
`backend_mapping` VARCHAR(255) COMMENT '后端权威服务映射,如 pbl_blueprint.create_blueprint',
`disable_reason` TEXT COMMENT '禁用原因disabled 时必填out_of_scope 锚点)',
`scope_note` TEXT COMMENT '范围备注Phase / owner 决策锚点)',
`sort_no` INT COMMENT '排序号',
`created_by` VARCHAR(64) COMMENT '创建人',
`created_at` DATETIME COMMENT '创建时间',
`updated_at` DATETIME COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_agent_tool` (`tenant_id`, `tool_code`),
KEY `idx_tool_status` (`tenant_id`, `status`),
KEY `idx_tool_group` (`tenant_id`, `tool_group`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Agent 工具注册表:第 31 章裁剪子集13 enabled + 9 disabled。fail-closed default-deny仅本表 enabled 记录可被 invoke_tool 执行disabled 记录保留 disable_reason 供审计与拒绝回执。';
CREATE TABLE IF NOT EXISTS `pbl_agent_trace` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
`tenant_id` VARCHAR(64) NOT NULL COMMENT '租户ID强制打头',
`trace_no` VARCHAR(128) NOT NULL COMMENT '轨迹编号(业务主键)',
`agent_code` VARCHAR(64) COMMENT '产生轨迹的 Agentdesigner / critic',
`session_no` VARCHAR(128) COMMENT '会话号(多轮对话归并)',
`status` VARCHAR(64) DEFAULT 'open' COMMENT '轨迹状态open / done / deny',
`step_reached` VARCHAR(64) COMMENT '裁决链到达步S1~S8 / EXECUTED',
`deny_code` VARCHAR(64) COMMENT '拒绝错误码(被拒时填)',
`deny_reason` TEXT COMMENT '拒绝原因(含 disable_reason / 越权说明)',
`input_context` LONGTEXT COMMENT '① 输入上下文',
`retrieved_knowledge` LONGTEXT COMMENT '② 检索到的知识(含 KDB 桩降级路径)',
`tool_calls` LONGTEXT COMMENT '③ 工具调用(入参+出参,含被拒调用)',
`proposed_action` LONGTEXT COMMENT '④ 提案动作Agent 只 Propose14.1',
`result` LONGTEXT COMMENT '⑤ 执行结果allow/deny + 结果体)',
`approval` LONGTEXT COMMENT '⑥ 审批信息approval_no/status/approver',
`final_output` LONGTEXT COMMENT '⑦ 最终输出',
`created_by` VARCHAR(64) COMMENT '创建人',
`created_at` DATETIME COMMENT '创建时间',
`appended_at` DATETIME COMMENT '最后追加时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_trace_no` (`tenant_id`, `trace_no`),
KEY `idx_trace_agent` (`tenant_id`, `agent_code`, `created_at`),
KEY `idx_trace_session` (`tenant_id`, `session_no`),
KEY `idx_trace_status` (`tenant_id`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Agent 执行轨迹(第 28 章 7 要素US-20 可查不可篡改。append-only无 update/delete 对外接口DB 层 append_only 标记要素只能追加已完成done/deny轨迹再追加 → PBL_E_APPEND_ONLY。 [APPEND-ONLY: 禁止 UPDATE/DELETE]';
CREATE TABLE IF NOT EXISTS `pbl_agent_trace_stage` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
`tenant_id` VARCHAR(64) NOT NULL COMMENT '租户ID',
`trace_no` VARCHAR(128) NOT NULL COMMENT '轨迹编号',
`stage` VARCHAR(64) NOT NULL COMMENT '要素名7 要素之一)',
`payload` LONGTEXT COMMENT '要素内容',
`seq_no` INT COMMENT '追加序号(同轨迹内自增)',
`created_at` DATETIME COMMENT '追加时间',
PRIMARY KEY (`id`),
KEY `idx_stage_trace` (`tenant_id`, `trace_no`, `seq_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='轨迹要素追加流水:每次 append_trace 落一行,只增不改不删,用于举证 7 要素逐条可查与追加顺序US-20。 [APPEND-ONLY: 禁止 UPDATE/DELETE]';
CREATE TABLE IF NOT EXISTS `pbl_agent_approval` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
`tenant_id` VARCHAR(64) NOT NULL COMMENT '租户ID强制打头',
`approval_no` VARCHAR(128) NOT NULL COMMENT '审批单号(业务主键)',
`trace_id` INT COMMENT '关联轨迹ID',
`trace_no` VARCHAR(128) COMMENT '关联轨迹编号',
`agent_code` VARCHAR(64) COMMENT '提案 Agent',
`action_type` VARCHAR(64) NOT NULL COMMENT '审批类别(四类之一)',
`tool_code` VARCHAR(128) COMMENT '触发审批的工具编码',
`object_type` VARCHAR(64) COMMENT '对象类型blueprint / tool / compile_task',
`object_id` VARCHAR(128) COMMENT '对象ID',
`action_payload` LONGTEXT COMMENT '提案内容快照(审批人据此判断)',
`status` VARCHAR(64) NOT NULL DEFAULT 'pending' COMMENT '状态pending / approved / rejected / expired',
`requester_type` VARCHAR(64) COMMENT '提案方类型agent / user',
`requester_id` VARCHAR(64) COMMENT '提案方ID',
`approver_id` VARCHAR(64) COMMENT '指定审批人(可空=任一授权人)',
`approver_type` VARCHAR(64) COMMENT '实际审批人类型(必须 user',
`decided_by` VARCHAR(64) COMMENT '实际审批人ID',
`decided_at` DATETIME COMMENT '审批时间',
`comment` TEXT COMMENT '审批意见',
`expires_at` DATETIME COMMENT '过期时间(过期后 pending 视为无效)',
`created_at` DATETIME COMMENT '创建时间',
`updated_at` DATETIME COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_approval_no` (`tenant_id`, `approval_no`),
KEY `idx_approval_pending` (`tenant_id`, `status`, `approver_id`),
KEY `idx_approval_trace` (`tenant_id`, `trace_no`),
KEY `idx_approval_action` (`tenant_id`, `action_type`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人工审批单14.2):四类强制审批 publish / compile_execute / blueprint_approve / tool_registry_change。Agent 不可自批decide_approval 仅 actor_type=user 可调用。';