Files
tmp/sql.md
T
2026-09-22 17:39:02 +08:00

8.2 KiB

目录

查智能体用户数

select
  '单智能体' AS agent_type,
  agent.agent_id,
  agent.agent_name,
  IFNULL (aus.user_num, 0) AS user_num
from
  `agent` AS agent
  left join agent_usage_stats AS aus ON agent.agent_id = aus.agent_id
where
  agent.del_flag = '0'
UNION ALL
select
  '多智能体' AS agent_type,
  ma.agent_id,
  ma.agent_name,
  IFNULL (maus.user_num, 0) AS user_num
from
  `multi_agent_main` AS ma
  left join agent_usage_stats AS maus ON ma.agent_id = maus.agent_id
where
  ma.del_flag = '0';

查客户端是否登录

select
  *
from
  `mis-cloud-claw`.`sys_logininfor`
where
  client_key = (
    select
      client_key
    from
      `mis-cloud-claw`.`sys_client`
    where
      `client_id` = '客户端ID'
  );

查智能体对话日志

  1. 查询所有切片号,假设查询出来的part是[1,2]
select part from log_agent_chat where del_flag = '0';
  1. 根据切片号查询并合并各个切片表的数据
select * from log_agent_chat_1 where chat_window_id = 会话ID
UNION ALL
select * from log_agent_chat_2 where chat_window_id = 会话ID

查智能体信息

必须提供智能体ID,在不明确用户查询的是单智能体还是多智能体时,友好的询问要查询哪种智能体。

  1. 查询单智能体信息
with agent_info AS (
    select 
        agent_id, 
        agent_name,
        system_prompt,
        `description`, 
        max_messages,
        max_tokens,
        kb_uuids,
        kb_configs,
        kb_similarity_threshold,
        kb_top_k,
        kb_max_recall_toekn,
        llm_name, 
        long_term_memory,
        case kb_mode when '1' then '直接检索' when '2' then 'tool检索' else '' end AS kb_mode,
        case kb_search_type when '0' then '向量检索' when '1' then '混合检索' when '2' then '智能检索' else '' end AS kb_search_type
    from mis-agent.agent 
    where agent_id = <智能体ID>
),
agent_skill AS (
    select 
        <智能体ID> AS agent_id,
        GROUP_CONCAT(skill_name) AS skill_names
    from mis-mcp.skill 
    where skill_id in (
        select skill_id from mis-agent.agent_skill_mapping 
        where agent_id = <智能体ID>
    )
),
agent_mcp_tool AS (
    select 
        <智能体ID> AS agent_id,
        GROUP_CONCAT(tool_name) AS tool_names
    from mis-mcp.map_tools 
    where mcp_server_uuid in (
        select mcp_server_uuid from mis-agent.agent_tool_mapping 
        where relate_agent_id = <智能体ID>
    )
)

select * from agent_info AS a 
left join agent_skill AS b on a.agent_id = b.agent_id
left join agent_mcp_tool AS c on a.agent_id = c.agent_id
  1. 查询多智能体信息
select * from mis-agent.agent_release_info where release_id in (
    select 
        release_id 
    from mis-agent.multi_agent_sub 
    where main_agent_id = <智能体ID>
)

查智能体使用数据

必须提供智能体ID。

select * from mis-agent.agent_usage_stats_daily where agent_id = <智能体ID> order by daily desc

查项目统计数据

必须提供项目名称。

  1. 查询项目注册表,判断是否包含该项目。用户提供的项目名称大概率是模糊的,比如"认证"、"ebiz",要根据语义判断究竟是哪一个,如果猜不准就询问一下用户是哪个。
select * from mis-agent.project_stats_registry

重要:project_stats_registry里的id字段,称为项目ID,或者叫project_id,后面的步骤需要用到。

  1. 查询项目统计数据
select * from mis-agent.project_data_stats_daily where project_id = <project_id>

新增devco账号

用户的输入格式如下。

devco
username1
username2
username3
  • 在用户的输入中,devco是触发d当前技能的关键词。
  • **从第二行开始,去掉空白行以后,每一个都是用户名。**如果用户提供的用户名存在重复,请忽略大小写保留1个即可。
  • client_id和state字段是固定值,用户名对应的是account字段。

在mis-dev资源下的mis-cloud-paw库中执行批量插入sql,示例:

INSERT INTO external_login_client_account (client_id, account, state) VALUES
('226c18408b5705449f37b621a432a6d3', 'username1', 1),
('226c18408b5705449f37b621a432a6d3', 'username2', 1),
('226c18408b5705449f37b621a432a6d3', 'username3', 1);

查paw-agent信息

在mis-dev资源下,根据用户名(username)查询paw-agent信息,如果用户没有提供username,友好的提问要查哪个用户的,一个可用的username示例:Agnes2.wang。

  1. 根据用户提供的username查询user_id,只会查出来1行数据,示例:
select user_id from `mis-cloud-claw`.`sys_user` where user_name = '{username}';
  1. 根据user_id查询agent信息,可能返回多行数据,使用markdown表格的形式展示每一行的数据,示例:
select
  agent_id,
  agent_mode,
  publish_status,
  publish_scope,
  published_at,
  version_lane,
  key_scope_default
from
  `mis-paw-claw`.`agent`
where
  create_by = < user_id >;

查工作流工单状态

CREATE DEFINER=`root`@`%` PROCEDURE `sp_flow_status_by_business_key`(IN p_business_key VARCHAR(64))
BEGIN
    -- 1) 流程实例摘要
    SELECT
        h.BUSINESS_KEY_                         AS business_key,
        h.PROC_INST_ID_                         AS process_instance_id,
        SUBSTRING_INDEX(h.PROC_DEF_ID_, ':', 1) AS process_key,
        h.BUSINESS_STATUS_                      AS business_status,
        CASE h.BUSINESS_STATUS_
            WHEN 'waiting' THEN '待审核'
            WHEN 'finish'  THEN '已完成'
            WHEN 'back'    THEN '已退回'
            WHEN 'cancel'  THEN '已撤销'
            WHEN 'draft'   THEN '草稿'
            ELSE IFNULL(h.BUSINESS_STATUS_, '未知')
        END                                     AS business_status_name,
        h.START_USER_ID_                        AS start_user_id,
        h.START_TIME_                           AS start_time,
        h.END_TIME_                             AS end_time,
        CASE WHEN h.END_TIME_ IS NULL THEN 'RUNNING' ELSE 'FINISHED' END AS flow_state,
        (SELECT COUNT(1)
           FROM ACT_RU_TASK t
          INNER JOIN ACT_RU_EXECUTION e ON e.ID_ = t.PROC_INST_ID_
          WHERE e.BUSINESS_KEY_ = h.BUSINESS_KEY_
            AND e.PROC_INST_ID_ = h.PROC_INST_ID_) AS pending_task_count
    FROM ACT_HI_PROCINST h
    WHERE h.BUSINESS_KEY_ = p_business_key
    ORDER BY h.START_TIME_ DESC;

    -- 2) 当前待办
    SELECT
        t.ID_            AS task_id,
        t.NAME_          AS task_name,
        t.TASK_DEF_KEY_  AS task_definition_key,
        t.ASSIGNEE_      AS assignee,
        t.CREATE_TIME_   AS create_time,
        t.PROC_INST_ID_  AS process_instance_id,
        e.BUSINESS_KEY_  AS business_key
    FROM ACT_RU_TASK t
    INNER JOIN ACT_RU_EXECUTION e ON e.ID_ = t.PROC_INST_ID_
    WHERE e.BUSINESS_KEY_ = p_business_key
    ORDER BY t.CREATE_TIME_ ASC;

    -- 3) 历史任务 + 意见
    SELECT
        ht.ID_           AS task_id,
        ht.NAME_         AS task_name,
        ht.TASK_DEF_KEY_ AS task_definition_key,
        ht.ASSIGNEE_     AS assignee,
        ht.START_TIME_   AS start_time,
        ht.END_TIME_     AS end_time,
        c.TYPE_          AS comment_type,
        c.MESSAGE_       AS comment_msg,
        h.PROC_INST_ID_  AS process_instance_id,
        h.BUSINESS_KEY_  AS business_key
    FROM ACT_HI_TASKINST ht
    INNER JOIN ACT_HI_PROCINST h ON h.PROC_INST_ID_ = ht.PROC_INST_ID_
    LEFT JOIN ACT_HI_COMMENT c
           ON c.TASK_ID_ = ht.ID_
          AND c.TYPE_ IN ('pass', 'back')
    WHERE h.BUSINESS_KEY_ = p_business_key
      AND (ht.PARENT_TASK_ID_ IS NULL OR ht.PARENT_TASK_ID_ = '')
    ORDER BY ht.START_TIME_ ASC, ht.ID_ ASC;
END