124 lines
8.8 KiB
SQL
124 lines
8.8 KiB
SQL
-- 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
|
||
-- 工具注册表 seed:13 enabled + 9 disabled(scripts/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 表示零写权限(Critic,14.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 Schema(S8 契约校验)',
|
||
`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 '产生轨迹的 Agent:designer / 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 只 Propose,14.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 可调用。';
|