dd
This commit is contained in:
1 parent
b46d7ee6ad
commit
3d79b9b7d0
2 files changed
+162
-122
No files matched your search
@@ -1,3 +1,93 @@
|
|||||||
# 任务目标
|
# 任务目标
|
||||||
|
|
||||||
修改E:\gitlab\mis-paw\mis-modules\mis-paw\src\main\java\com\lcfc\mispaw\service\Impl\AgentApprovalServiceImpl.java里面的"assertNoUnpublishedSkillMapping"方法,目前判断agentId关联的skill包含未发布的逻辑有误,应该参考"E:\gitlab\mis-paw\mis-modules\mis-paw\src\main\java\com\lcfc\mispaw\service\Impl\AgentPublishServiceImpl.java"的"submitPublish"方法生成的"AgentConfigSnapshot.java"。
|
agent发布时,`agent_skill_mapping`表中`skill_id`关联的SKILL信息没有存储到`agent_published_version_snapshot`表中的`skills_json`字段,尝试了2次都不行。
|
||||||
|
|
||||||
|
## 代码路径
|
||||||
|
|
||||||
|
|#|源文件名称|方法名称|补充说明|
|
||||||
|
|---|---|---|---|
|
||||||
|
|提交发布|AgentPublishServiceImpl.java|submitPublishInLock|无|
|
||||||
|
|在哪里保存的快照|AgentPublishedVersionSnapshotServiceImpl.java|sealBindingsOnSubmit|在"submitPublishInLock"方法内部嵌套调用,然后调用"insertSealedRow"方法,最终存储到`agent_published_version_snapshot`表中|
|
||||||
|
|
||||||
|
## 通过SQL查到提交发布时的SKILL信息
|
||||||
|
|
||||||
|
查询结果中`skill_release`的表中是没有关联到数据的,只有`skill`表关联上了2条数据。
|
||||||
|
|
||||||
|
```sql
|
||||||
|
with mapping AS (
|
||||||
|
select
|
||||||
|
asm.agent_id,asm.mapping_id,asm.skill_id,asm.skill_release_id,asm.create_time
|
||||||
|
from `mis-paw-claw`.`agent_skill_mapping` asm
|
||||||
|
where asm.agent_id = '1977925311412596737FcNLSZ'
|
||||||
|
and asm.del_flag = '0'
|
||||||
|
)
|
||||||
|
select mapping.mapping_id, mapping.skill_id, mapping.skill_release_id, sk.skill_name,sk.skill_file
|
||||||
|
from mapping join `mis-mcp-paw-claw`.`skill` sk
|
||||||
|
on mapping.skill_id = sk.skill_id and sk.del_flag = '0'
|
||||||
|
union all
|
||||||
|
select mapping.mapping_id, mapping.skill_id, mapping.skill_release_id, sr.skill_name, sr.skill_file
|
||||||
|
from mapping join `mis-mcp-paw-claw`.`skill_release` sr
|
||||||
|
on mapping.skill_release_id = sr.skill_release_id and sr.del_flag = '0';
|
||||||
|
```
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"mapping_id": "2102629713947136001",
|
||||||
|
"skill_id": "2102629462528081922",
|
||||||
|
"skill_release_id": null,
|
||||||
|
"skill_name": "mis-spec-eclaw",
|
||||||
|
"skill_file": "{\"ossId\": \"1790140893732205682\", \"fileName\": \"mis-spec-eclaw.zip\"}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mapping_id": "2105125581220810754",
|
||||||
|
"skill_id": "2105124095074033665",
|
||||||
|
"skill_release_id": null,
|
||||||
|
"skill_name": "java-spec",
|
||||||
|
"skill_file": "{\"ossId\": \"1790735602461436068\", \"fileName\": \"java-spec.zip\"}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 通过SQL查到agent的快照信息
|
||||||
|
|
||||||
|
```sql
|
||||||
|
select * from `mis-paw-claw`.`agent_published_version_snapshot` apvs
|
||||||
|
where apvs.agent_id = '1977925311412596737FcNLSZ'
|
||||||
|
and apvs.del_flag = '0'
|
||||||
|
```
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"config_id": "2105128598548582402",
|
||||||
|
"snapshot_id": "2105128595469963266",
|
||||||
|
"agent_id": "1977925311412596737FcNLSZ",
|
||||||
|
"skills_json": "[]",
|
||||||
|
"mcps_json": "[]",
|
||||||
|
"persona_docs_json": "",
|
||||||
|
"kbs_json": "[]",
|
||||||
|
"create_by": "1977925311412596737",
|
||||||
|
"create_dept": "5",
|
||||||
|
"create_time": "2026-09-30 10:52:24",
|
||||||
|
"update_by": "1977925311412596737",
|
||||||
|
"update_time": "2026-09-30 10:52:24",
|
||||||
|
"del_flag": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"config_id": "2105179820223688705",
|
||||||
|
"snapshot_id": "2105179819527434242",
|
||||||
|
"agent_id": "1977925311412596737FcNLSZ",
|
||||||
|
"skills_json": "[]",
|
||||||
|
"mcps_json": "[]",
|
||||||
|
"persona_docs_json": "",
|
||||||
|
"kbs_json": "[]",
|
||||||
|
"create_by": "1977925311412596737",
|
||||||
|
"create_dept": "5",
|
||||||
|
"create_time": "2026-09-30 14:15:56",
|
||||||
|
"update_by": "1977925311412596737",
|
||||||
|
"update_time": "2026-09-30 14:15:56",
|
||||||
|
"del_flag": "0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
@@ -7,8 +7,10 @@
|
|||||||
- [查智能体使用数据](查智能体使用数据)
|
- [查智能体使用数据](查智能体使用数据)
|
||||||
- [查项目统计数据](#查项目统计数据)
|
- [查项目统计数据](#查项目统计数据)
|
||||||
- [新增devco账号](#新增devco账号)
|
- [新增devco账号](#新增devco账号)
|
||||||
- [查paw-agent信息](#查paw-agent信息)
|
- [查某个用户的智能体](#查某个用户的智能体)
|
||||||
- [查工作流工单状态](#查工作流工单状态)
|
- [查工作流工单状态](#查工作流工单状态)
|
||||||
|
- [查智能体绑定的技能](#查智能体绑定的技能)
|
||||||
|
- [查智能体的发布快照](#查智能体的发布快照)
|
||||||
|
|
||||||
## 查智能体用户数
|
## 查智能体用户数
|
||||||
|
|
||||||
@@ -18,39 +20,24 @@ select
|
|||||||
agent.agent_id,
|
agent.agent_id,
|
||||||
agent.agent_name,
|
agent.agent_name,
|
||||||
IFNULL (aus.user_num, 0) AS user_num
|
IFNULL (aus.user_num, 0) AS user_num
|
||||||
from
|
from `mis-agent`.`agent` AS agent left join agent_usage_stats AS aus ON agent.agent_id = aus.agent_id
|
||||||
`agent` AS agent
|
where agent.del_flag = '0'
|
||||||
left join agent_usage_stats AS aus ON agent.agent_id = aus.agent_id
|
|
||||||
where
|
|
||||||
agent.del_flag = '0'
|
|
||||||
UNION ALL
|
UNION ALL
|
||||||
select
|
select
|
||||||
'多智能体' AS agent_type,
|
'多智能体' AS agent_type,
|
||||||
ma.agent_id,
|
ma.agent_id,
|
||||||
ma.agent_name,
|
ma.agent_name,
|
||||||
IFNULL (maus.user_num, 0) AS user_num
|
IFNULL (maus.user_num, 0) AS user_num
|
||||||
from
|
from `mis-agent`.`multi_agent_main` AS ma left join agent_usage_stats AS maus ON ma.agent_id = maus.agent_id
|
||||||
`multi_agent_main` AS ma
|
where ma.del_flag = '0';
|
||||||
left join agent_usage_stats AS maus ON ma.agent_id = maus.agent_id
|
|
||||||
where
|
|
||||||
ma.del_flag = '0';
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 查客户端是否登录
|
## 查客户端是否登录
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select
|
select * from `mis-cloud-claw`.`sys_logininfor`
|
||||||
*
|
where client_key = (
|
||||||
from
|
select client_key from `mis-cloud-claw`.`sys_client` where `client_id` = '客户端ID'
|
||||||
`mis-cloud-claw`.`sys_logininfor`
|
|
||||||
where
|
|
||||||
client_key = (
|
|
||||||
select
|
|
||||||
client_key
|
|
||||||
from
|
|
||||||
`mis-cloud-claw`.`sys_client`
|
|
||||||
where
|
|
||||||
`client_id` = '客户端ID'
|
|
||||||
);
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -59,15 +46,15 @@ where
|
|||||||
1. 查询所有切片号,假设查询出来的`part`是[1,2]
|
1. 查询所有切片号,假设查询出来的`part`是[1,2]
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select part from log_agent_chat where del_flag = '0';
|
select part from `mis-agent`.`log_agent_chat` where del_flag = '0';
|
||||||
```
|
```
|
||||||
|
|
||||||
2. 根据切片号查询并合并各个切片表的数据
|
2. 根据切片号查询并合并各个切片表的数据
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select * from log_agent_chat_1 where chat_window_id = 会话ID
|
select * from `mis-agent`.`log_agent_chat_1` where chat_window_id = 会话ID
|
||||||
UNION ALL
|
UNION ALL
|
||||||
select * from log_agent_chat_2 where chat_window_id = 会话ID
|
select * from `mis-agent`.`log_agent_chat_2` where chat_window_id = 会话ID
|
||||||
```
|
```
|
||||||
|
|
||||||
## 查智能体信息
|
## 查智能体信息
|
||||||
@@ -94,14 +81,14 @@ with agent_info AS (
|
|||||||
long_term_memory,
|
long_term_memory,
|
||||||
case kb_mode when '1' then '直接检索' when '2' then 'tool检索' else '' end AS kb_mode,
|
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
|
case kb_search_type when '0' then '向量检索' when '1' then '混合检索' when '2' then '智能检索' else '' end AS kb_search_type
|
||||||
from mis-agent.agent
|
from `mis-agent`.`agent`
|
||||||
where agent_id = <智能体ID>
|
where agent_id = <智能体ID>
|
||||||
),
|
),
|
||||||
agent_skill AS (
|
agent_skill AS (
|
||||||
select
|
select
|
||||||
<智能体ID> AS agent_id,
|
<智能体ID> AS agent_id,
|
||||||
GROUP_CONCAT(skill_name) AS skill_names
|
GROUP_CONCAT(skill_name) AS skill_names
|
||||||
from mis-mcp.skill
|
from `mis-mcp`.`skill`
|
||||||
where skill_id in (
|
where skill_id in (
|
||||||
select skill_id from mis-agent.agent_skill_mapping
|
select skill_id from mis-agent.agent_skill_mapping
|
||||||
where agent_id = <智能体ID>
|
where agent_id = <智能体ID>
|
||||||
@@ -111,7 +98,7 @@ agent_mcp_tool AS (
|
|||||||
select
|
select
|
||||||
<智能体ID> AS agent_id,
|
<智能体ID> AS agent_id,
|
||||||
GROUP_CONCAT(tool_name) AS tool_names
|
GROUP_CONCAT(tool_name) AS tool_names
|
||||||
from mis-mcp.map_tools
|
from `mis-mcp`.`map_tools`
|
||||||
where mcp_server_uuid in (
|
where mcp_server_uuid in (
|
||||||
select mcp_server_uuid from mis-agent.agent_tool_mapping
|
select mcp_server_uuid from mis-agent.agent_tool_mapping
|
||||||
where relate_agent_id = <智能体ID>
|
where relate_agent_id = <智能体ID>
|
||||||
@@ -125,12 +112,18 @@ left join agent_mcp_tool AS c on a.agent_id = c.agent_id
|
|||||||
|
|
||||||
2. 查询多智能体信息
|
2. 查询多智能体信息
|
||||||
|
|
||||||
|
查询主智能体:
|
||||||
```sql
|
```sql
|
||||||
select * from mis-agent.agent_release_info where release_id in (
|
select * from `mis-agent`.`multi_agent_main` where agent_id = <主智能体ID>
|
||||||
|
```
|
||||||
|
|
||||||
|
查询子智能体:
|
||||||
|
```sql
|
||||||
|
select * from `mis-agent`.`agent_release_info` where release_id in (
|
||||||
select
|
select
|
||||||
release_id
|
release_id
|
||||||
from mis-agent.multi_agent_sub
|
from `mis-agent`.`multi_agent_sub`
|
||||||
where main_agent_id = <智能体ID>
|
where main_agent_id = <主智能体ID>
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -139,7 +132,7 @@ select * from mis-agent.agent_release_info where release_id in (
|
|||||||
必须提供**智能体ID**。
|
必须提供**智能体ID**。
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select * from mis-agent.agent_usage_stats_daily where agent_id = <智能体ID> order by daily desc
|
select * from `mis-agent`.`agent_usage_stats_daily` where agent_id = <智能体ID> order by daily desc
|
||||||
```
|
```
|
||||||
|
|
||||||
## 查项目统计数据
|
## 查项目统计数据
|
||||||
@@ -149,7 +142,7 @@ select * from mis-agent.agent_usage_stats_daily where agent_id = <智能体ID> o
|
|||||||
1. 查询项目注册表,判断是否包含该项目。用户提供的项目名称大概率是模糊的,比如"认证"、"ebiz",要根据语义判断究竟是哪一个,如果猜不准就询问一下用户是哪个。
|
1. 查询项目注册表,判断是否包含该项目。用户提供的项目名称大概率是模糊的,比如"认证"、"ebiz",要根据语义判断究竟是哪一个,如果猜不准就询问一下用户是哪个。
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select * from mis-agent.project_stats_registry
|
select * from `mis-agent`.`project_stats_registry`
|
||||||
```
|
```
|
||||||
|
|
||||||
**重要:`project_stats_registry`里的`id`字段,称为项目ID,或者叫project_id,后面的步骤需要用到。**
|
**重要:`project_stats_registry`里的`id`字段,称为项目ID,或者叫project_id,后面的步骤需要用到。**
|
||||||
@@ -157,7 +150,7 @@ select * from mis-agent.project_stats_registry
|
|||||||
2. 查询项目统计数据
|
2. 查询项目统计数据
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select * from mis-agent.project_data_stats_daily where project_id = <project_id>
|
select * from `mis-agent`.`project_data_stats_daily` where project_id = <project_id>
|
||||||
```
|
```
|
||||||
|
|
||||||
## 新增devco账号
|
## 新增devco账号
|
||||||
@@ -178,104 +171,61 @@ username3
|
|||||||
**在`mis-dev`资源下的`mis-cloud-paw`库中执行**批量插入sql,示例:
|
**在`mis-dev`资源下的`mis-cloud-paw`库中执行**批量插入sql,示例:
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
INSERT INTO external_login_client_account (client_id, account, state) VALUES
|
INSERT INTO `mis-cloud-paw`.`external_login_client_account`(client_id, account, state) VALUES
|
||||||
('226c18408b5705449f37b621a432a6d3', 'username1', 1),
|
('226c18408b5705449f37b621a432a6d3', 'username1', 1),
|
||||||
('226c18408b5705449f37b621a432a6d3', 'username2', 1),
|
('226c18408b5705449f37b621a432a6d3', 'username2', 1),
|
||||||
('226c18408b5705449f37b621a432a6d3', 'username3', 1);
|
('226c18408b5705449f37b621a432a6d3', 'username3', 1);
|
||||||
```
|
```
|
||||||
|
|
||||||
## 查paw-agent信息
|
## 查某个用户的智能体
|
||||||
|
|
||||||
在`mis-dev`资源下,根据用户名(username)查询paw-agent信息,如果用户没有提供username,友好的提问要查哪个用户的,一个可用的username示例:`Agnes2.wang`。
|
把`{username}`替换成真实的用户名。
|
||||||
|
|
||||||
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
|
```sql
|
||||||
select
|
select
|
||||||
agent_id,
|
agent_id, agent_mode,
|
||||||
agent_mode,
|
publish_status, publish_scope, published_at,
|
||||||
publish_status,
|
version_lane, key_scope_default
|
||||||
publish_scope,
|
from `mis-paw-claw`.`agent`
|
||||||
published_at,
|
where del_flag = '0'
|
||||||
version_lane,
|
and create_by = (select user_id from `mis-cloud-claw`.`sys_user` where user_name = '{username}')
|
||||||
key_scope_default
|
|
||||||
from
|
|
||||||
`mis-paw-claw`.`agent`
|
|
||||||
where
|
|
||||||
create_by = < user_id >;
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 查工作流工单状态
|
## 查工作流工单状态
|
||||||
|
|
||||||
|
把`{business_key}`替换成申请单ID。
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
CREATE DEFINER=`root`@`%` PROCEDURE `sp_flow_status_by_business_key`(IN p_business_key VARCHAR(64))
|
call `mis-workflow-claw`.sp_flow_status_by_business_key('{business_key}')
|
||||||
BEGIN
|
```
|
||||||
-- 1) 流程实例摘要
|
|
||||||
SELECT
|
## 查智能体绑定的技能
|
||||||
h.BUSINESS_KEY_ AS business_key,
|
|
||||||
h.PROC_INST_ID_ AS process_instance_id,
|
把`{agentId}`替换成真实的智能体ID。
|
||||||
SUBSTRING_INDEX(h.PROC_DEF_ID_, ':', 1) AS process_key,
|
|
||||||
h.BUSINESS_STATUS_ AS business_status,
|
```sql
|
||||||
CASE h.BUSINESS_STATUS_
|
with mapping AS (
|
||||||
WHEN 'waiting' THEN '待审核'
|
select
|
||||||
WHEN 'finish' THEN '已完成'
|
asm.agent_id,asm.mapping_id,asm.skill_id,asm.skill_release_id,asm.create_time
|
||||||
WHEN 'back' THEN '已退回'
|
from `mis-paw-claw`.`agent_skill_mapping` asm
|
||||||
WHEN 'cancel' THEN '已撤销'
|
where asm.agent_id = '{agentId}'
|
||||||
WHEN 'draft' THEN '草稿'
|
and asm.del_flag = '0'
|
||||||
ELSE IFNULL(h.BUSINESS_STATUS_, '未知')
|
)
|
||||||
END AS business_status_name,
|
select mapping.mapping_id, mapping.skill_id, mapping.skill_release_id, sk.skill_name,sk.skill_file
|
||||||
h.START_USER_ID_ AS start_user_id,
|
from mapping join `mis-mcp-paw-claw`.`skill` sk
|
||||||
h.START_TIME_ AS start_time,
|
on mapping.skill_id = sk.skill_id and sk.del_flag = '0'
|
||||||
h.END_TIME_ AS end_time,
|
union all
|
||||||
CASE WHEN h.END_TIME_ IS NULL THEN 'RUNNING' ELSE 'FINISHED' END AS flow_state,
|
select mapping.mapping_id, mapping.skill_id, mapping.skill_release_id, sr.skill_name, sr.skill_file
|
||||||
(SELECT COUNT(1)
|
from mapping join `mis-mcp-paw-claw`.`skill_release` sr
|
||||||
FROM ACT_RU_TASK t
|
on mapping.skill_release_id = sr.skill_release_id and sr.del_flag = '0'
|
||||||
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
|
把`{agentId}`替换成真实的智能体ID。
|
||||||
ORDER BY h.START_TIME_ DESC;
|
|
||||||
|
```sql
|
||||||
-- 2) 当前待办
|
select * from `mis-paw-claw`.`agent_published_version_snapshot` apvs
|
||||||
SELECT
|
where apvs.agent_id = '{agentId}'
|
||||||
t.ID_ AS task_id,
|
and apvs.del_flag = '0'
|
||||||
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
|
|
||||||
```
|
```
|
||||||
Reference in new issue
Block a user