# 目录 - [查智能体用户数](#查智能体用户数) - [查客户端是否登录](#查客户端是否登录) - [查智能体对话日志](#查智能体对话日志) - [查智能体信息](#查智能体信息) - [查智能体使用数据](查智能体使用数据) - [查项目统计数据](#查项目统计数据) - [新增devco账号](#新增devco账号) - [查paw-agent信息](#查paw-agent信息) - [查工作流工单状态](#查工作流工单状态) ## 查智能体用户数 ```sql 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'; ``` ## 查客户端是否登录 ```sql 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] ```sql select part from log_agent_chat where del_flag = '0'; ``` 2. 根据切片号查询并合并各个切片表的数据 ```sql 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. 查询单智能体信息 ```sql 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 ``` 2. 查询多智能体信息 ```sql 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**。 ```sql select * from mis-agent.agent_usage_stats_daily where agent_id = <智能体ID> order by daily desc ``` ## 查项目统计数据 必须提供**项目名称**。 1. 查询项目注册表,判断是否包含该项目。用户提供的项目名称大概率是模糊的,比如"认证"、"ebiz",要根据语义判断究竟是哪一个,如果猜不准就询问一下用户是哪个。 ```sql select * from mis-agent.project_stats_registry ``` **重要:`project_stats_registry`里的`id`字段,称为项目ID,或者叫project_id,后面的步骤需要用到。** 2. 查询项目统计数据 ```sql select * from mis-agent.project_data_stats_daily where project_id = ``` ## 新增devco账号 用户的输入格式如下。 ```text devco username1 username2 username3 ``` - 在用户的输入中,`devco`是触发d当前技能的关键词。 - **从第二行开始,去掉空白行以后,每一个都是用户名。**如果用户提供的用户名存在重复,请忽略大小写保留1个即可。 - `client_id`和`state`字段是固定值,用户名对应的是`account`字段。 **在`mis-dev`资源下的`mis-cloud-paw`库中执行**批量插入sql,示例: ```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行数据,示例: ```sql select user_id from `mis-cloud-claw`.`sys_user` where user_name = '{username}'; ``` 2. 根据`user_id`查询agent信息,可能返回多行数据,使用markdown表格的形式展示每一行的数据,示例: ```sql 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 >; ``` ## 查工作流工单状态 ```sql 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 ```