ddd
This commit is contained in:
1 parent
37457f0ae0
commit
6bf8c7707a
11 files changed
-4896
No files matched your search
-887
@@ -1,887 +0,0 @@
|
||||
# 数据统计
|
||||
|
||||
以下是关于数据统计的API文档。
|
||||
|
||||
## 提交用户点赞/取消赞/写评论
|
||||
|
||||
- 请求地址:/mcp/metrics/append
|
||||
- 请求方式:POST
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| tag | 是 | String | 资源类型(agent=智能体、skill=技能、mcp_server=MCP服务) |
|
||||
| operateType | 是 | String | 操作类型(like=点赞、like_withdraw=取消赞、write_comment=写评论) |
|
||||
| resourceId | 是 | String | 资源ID,Agent传ID、Skill传skillId、MCP传mcpServerUuid |
|
||||
| comment.content | 否 | String | 评论内容,最大500字 |
|
||||
| comment.star | 否 | Number | 星级,1~5 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X POST {gateway}/mcp/metrics/append \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"tag": "agent",
|
||||
"operateType": "write_comment",
|
||||
"resourceId": "123456",
|
||||
"comment": {
|
||||
"content": "很好用的智能体",
|
||||
"star": 5
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Boolean | 操作是否成功 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": true
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 查询用户点赞/取消赞/写评论
|
||||
|
||||
- 请求地址:/mcp/metrics/detail
|
||||
- 请求方式:POST
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| tag | 是 | String | 资源类型(agent=智能体、skill=技能、mcp_server=MCP服务) |
|
||||
| resourceId | 是 | String | 资源ID,Agent传ID、Skill传skillId、MCP传mcpServerUuid |
|
||||
| comment.pageNum | 否 | Number | 分页页码,默认1 |
|
||||
| comment.pageSize | 否 | Number | 分页条数,默认25 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X GET '{gateway}/mcp/metrics/detail' \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"tag": "agent",
|
||||
"resourceId": "123456",
|
||||
"comment": {
|
||||
"pageNum": 1,
|
||||
"pageSize": 25
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Object | 返回数据 |
|
||||
| data.appendCount | Number | 已有多少人添加 |
|
||||
| data.likeCount | Number | 已有多少人点赞 |
|
||||
| data.comments | Object | 评分与评论分页数据 |
|
||||
| data.comments.total | Number | 总记录数 |
|
||||
| data.comments.rows | Array | 评论列表 |
|
||||
| data.comments.rows[].commentId | Number | 评论ID |
|
||||
| data.comments.rows[].userId | String | 用户ID |
|
||||
| data.comments.rows[].username | String | 用户名 |
|
||||
| data.comments.rows[].nickname | String | 昵称 |
|
||||
| data.comments.rows[].comment | String | 评论内容 |
|
||||
| data.comments.rows[].time | String | 评论时间,格式 yyyy-MM-dd HH:mm:ss |
|
||||
| data.comments.rows[].star | Number | 评分星级,1~5 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": {
|
||||
"appendCount": "100",
|
||||
"likeCount": "50",
|
||||
"comments": {
|
||||
"total": 10,
|
||||
"rows": [
|
||||
{
|
||||
"commentId": "1",
|
||||
"userId": "100",
|
||||
"username": "user001",
|
||||
"nickname": "张三",
|
||||
"comment": "很好用的智能体",
|
||||
"time": "2024-01-01 12:00:00",
|
||||
"star": 5
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 用户删除评论
|
||||
|
||||
- 请求地址:/mcp/metrics/comment
|
||||
- 请求方式:DELETE
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| commentId | 是 | Number | 评论ID(Query参数) |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X DELETE '{gateway}/mcp/metrics/comment?commentId={commentId}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Boolean | 操作是否成功 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": true
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
# 客户端软件包
|
||||
|
||||
以下是关于客户端软件包的API文档。
|
||||
|
||||
## 版本列表
|
||||
|
||||
- 请求地址:/system/client/software
|
||||
- 请求方式:GET
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| identity | 是 | String | 客户端标识,如 devco |
|
||||
| canary | 否 | Boolean | 传true则查询范围覆盖灰度版,否则只查正式版 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X GET '{gateway}/system/client/software?identity={identity}&canary={canary}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Array | 版本列表 |
|
||||
| data[].releaseId | Number | 版本记录 ID |
|
||||
| data[].versionNo | String | 版本号 |
|
||||
| data[].releaseTime | String | 发布时间,格式 yyyy-MM-dd HH:mm:ss |
|
||||
| data[].releaseNotes | String | 更新内容 |
|
||||
| data[].packageOssId | Number | 安装包 OSS 主键;前端据此请求预签名下载地址 |
|
||||
| data[].packageName | String | 安装包文件名 |
|
||||
| data[].packageSize | Number | 安装包大小(字节) |
|
||||
| data[].packageSizeDisplay | String | 安装包大小展示文案,如 12.50 MB |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"releaseId": "123456",
|
||||
"versionNo": "1.0.0",
|
||||
"releaseTime": "2024-01-01 12:00:00",
|
||||
"releaseNotes": "更新内容",
|
||||
"packageOssId": "789",
|
||||
"packageName": "devco-1.0.0.exe",
|
||||
"packageSize": 52428800,
|
||||
"packageSizeDisplay": "50.00 MB"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 查看最新版本
|
||||
|
||||
- 请求地址:/system/client/software/latest
|
||||
- 请求方式:GET
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| identity | 是 | String | 客户端标识,如 devco |
|
||||
| canary | 否 | Boolean | 传true则查询范围覆盖灰度版,否则只查正式版 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X GET '{gateway}/system/client/software/latest?identity={identity}&canary={canary}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Object | 版本信息 |
|
||||
| data.releaseId | Number | 版本记录 ID |
|
||||
| data.versionNo | String | 版本号 |
|
||||
| data.releaseTime | String | 发布时间,格式 yyyy-MM-dd HH:mm:ss |
|
||||
| data.releaseNotes | String | 更新内容 |
|
||||
| data.packageOssId | Number | 安装包 OSS 主键 |
|
||||
| data.packageName | String | 安装包文件名 |
|
||||
| data.packageSize | Number | 安装包大小(字节) |
|
||||
| data.packageSizeDisplay | String | 安装包大小展示文案,如 12.50 MB |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": {
|
||||
"releaseId": "123456",
|
||||
"versionNo": "1.0.0",
|
||||
"releaseTime": "2024-01-01 12:00:00",
|
||||
"releaseNotes": "更新内容",
|
||||
"packageOssId": "789",
|
||||
"packageName": "devco-1.0.0.exe",
|
||||
"packageSize": 52428800,
|
||||
"packageSizeDisplay": "50.00 MB"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 下载软件包
|
||||
|
||||
- 请求地址:/system/client/software/download/{ossId}
|
||||
- 请求方式:GET
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| ossId | 是 | Number | OSSID,安装包在OSS中的唯一标识 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X GET {gateway}/system/client/software/download/{ossId}
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
直接返回文件流下载。
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 查看版本信息
|
||||
|
||||
- 请求地址:/system/client/software/{releaseId}
|
||||
- 请求方式:GET
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| releaseId | 是 | Number | 版本ID |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X GET {gateway}/system/client/software/{releaseId}
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Object | 版本信息 |
|
||||
| data.releaseId | Number | 版本记录 ID |
|
||||
| data.versionNo | String | 版本号 |
|
||||
| data.releaseTime | String | 发布时间,格式 yyyy-MM-dd HH:mm:ss |
|
||||
| data.releaseNotes | String | 更新内容 |
|
||||
| data.packageOssId | Number | 安装包 OSS 主键 |
|
||||
| data.packageName | String | 安装包文件名 |
|
||||
| data.packageSize | Number | 安装包大小(字节) |
|
||||
| data.packageSizeDisplay | String | 安装包大小展示文案,如 12.50 MB |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": {
|
||||
"releaseId": "123456",
|
||||
"versionNo": "1.0.0",
|
||||
"releaseTime": "2024-01-01 12:00:00",
|
||||
"releaseNotes": "更新内容",
|
||||
"packageOssId": "789",
|
||||
"packageName": "devco-1.0.0.exe",
|
||||
"packageSize": 52428800,
|
||||
"packageSizeDisplay": "50.00 MB"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 新建版本
|
||||
|
||||
- 请求地址:/system/client/software
|
||||
- 请求方式:POST
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| identity | 是 | String | 客户端标识,如 devco |
|
||||
| state | 是 | String | 版本状态,canary=灰度版、release=正式版 |
|
||||
| version | 是 | String | 版本号,如 1.0.0 |
|
||||
| releaseTime | 否 | String | 发布时间,格式 yyyy-MM-dd HH:mm:ss;省略则取当前时间 |
|
||||
| releaseNotes | 否 | String | 更新日志(富文本 HTML) |
|
||||
| ossId | 是 | Number | 安装包 OSS ID |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X POST {gateway}/system/client/software \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"identity": "devco",
|
||||
"state": "release",
|
||||
"version": "1.0.0",
|
||||
"releaseTime": "2024-01-01 12:00:00",
|
||||
"releaseNotes": "<p>更新日志</p>",
|
||||
"ossId": 789
|
||||
}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Object | 版本信息 |
|
||||
| data.releaseId | Number | 版本记录 ID |
|
||||
| data.versionNo | String | 版本号 |
|
||||
| data.releaseTime | String | 发布时间,格式 yyyy-MM-dd HH:mm:ss |
|
||||
| data.releaseNotes | String | 更新内容 |
|
||||
| data.packageOssId | Number | 安装包 OSS 主键 |
|
||||
| data.packageName | String | 安装包文件名 |
|
||||
| data.packageSize | Number | 安装包大小(字节) |
|
||||
| data.packageSizeDisplay | String | 安装包大小展示文案,如 12.50 MB |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": {
|
||||
"releaseId": "123456",
|
||||
"versionNo": "1.0.0",
|
||||
"releaseTime": "2024-01-01 12:00:00",
|
||||
"releaseNotes": "<p>更新日志</p>",
|
||||
"packageOssId": "789",
|
||||
"packageName": "devco-1.0.0.exe",
|
||||
"packageSize": 52428800,
|
||||
"packageSizeDisplay": "50.00 MB"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 编辑版本信息
|
||||
|
||||
- 请求地址:/system/client/software/{releaseId}
|
||||
- 请求方式:PUT
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| releaseId | 是 | Number | 版本ID(路径参数) |
|
||||
| identity | 是 | String | 客户端标识,如 devco |
|
||||
| state | 是 | String | 版本状态,canary=灰度版、release=正式版 |
|
||||
| version | 是 | String | 版本号,如 1.0.0 |
|
||||
| releaseTime | 否 | String | 发布时间,格式 yyyy-MM-dd HH:mm:ss;省略则取当前时间 |
|
||||
| releaseNotes | 否 | String | 更新日志(富文本 HTML) |
|
||||
| ossId | 是 | Number | 安装包 OSS ID |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X PUT {gateway}/system/client/software/{releaseId} \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"identity": "devco",
|
||||
"state": "release",
|
||||
"version": "1.0.1",
|
||||
"releaseTime": "2024-01-02 12:00:00",
|
||||
"releaseNotes": "<p>修复bug</p>",
|
||||
"ossId": 790
|
||||
}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Object | 版本信息 |
|
||||
| data.releaseId | Number | 版本记录 ID |
|
||||
| data.versionNo | String | 版本号 |
|
||||
| data.releaseTime | String | 发布时间,格式 yyyy-MM-dd HH:mm:ss |
|
||||
| data.releaseNotes | String | 更新内容 |
|
||||
| data.packageOssId | Number | 安装包 OSS 主键 |
|
||||
| data.packageName | String | 安装包文件名 |
|
||||
| data.packageSize | Number | 安装包大小(字节) |
|
||||
| data.packageSizeDisplay | String | 安装包大小展示文案,如 12.50 MB |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": {
|
||||
"releaseId": "123456",
|
||||
"versionNo": "1.0.1",
|
||||
"releaseTime": "2024-01-02 12:00:00",
|
||||
"releaseNotes": "<p>修复bug</p>",
|
||||
"packageOssId": "790",
|
||||
"packageName": "devco-1.0.1.exe",
|
||||
"packageSize": 52428800,
|
||||
"packageSizeDisplay": "50.00 MB"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "参数[releaseId]不能为空"
|
||||
}
|
||||
```
|
||||
|
||||
## 删除版本
|
||||
|
||||
- 请求地址:/system/client/software/{releaseId}
|
||||
- 请求方式:DELETE
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| releaseId | 是 | Number | 版本ID(路径参数) |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X DELETE {gateway}/system/client/software/{releaseId}
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Boolean | 操作是否成功 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": true
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
# 客户端软件包测试成员管理
|
||||
|
||||
以下是关于客户端软件包测试成员管理的API文档。
|
||||
|
||||
## 查看详情
|
||||
|
||||
- 请求地址:/system/client/software/canary
|
||||
- 请求方式:GET
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| identity | 是 | String | 客户端标识,如 devco |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X GET '{gateway}/system/client/software/canary?identity={identity}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Object | 灰度配置信息 |
|
||||
| data.identity | String | 客户端标识 |
|
||||
| data.deptIds | Array | 部门ID列表 |
|
||||
| data.userIds | Array | 用户ID列表 |
|
||||
| data.dept | Array | 部门详情列表 |
|
||||
| data.dept[].id | Number | 部门ID |
|
||||
| data.dept[].name | String | 部门名称 |
|
||||
| data.user | Array | 用户详情列表 |
|
||||
| data.user[].id | Number | 用户ID |
|
||||
| data.user[].name | String | 用户名称 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": {
|
||||
"identity": "devco",
|
||||
"deptIds": [1, 2, 3],
|
||||
"userIds": [100, 200],
|
||||
"dept": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "研发部"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "测试部"
|
||||
}
|
||||
],
|
||||
"user": [
|
||||
{
|
||||
"id": 100,
|
||||
"name": "张三"
|
||||
},
|
||||
{
|
||||
"id": 200,
|
||||
"name": "李四"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 添加用户或部门
|
||||
|
||||
- 请求地址:/system/client/software/canary
|
||||
- 请求方式:PUT
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| identity | 是 | String | 客户端标识,如 devco |
|
||||
| ids | 否 | Array | 用户ID或部门ID集合 |
|
||||
| type | 是 | Number | 类型,1=用户、2=部门 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X PUT {gateway}/system/client/software/canary \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"identity": "devco",
|
||||
"ids": [100, 200],
|
||||
"type": 1
|
||||
}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Boolean | 操作是否成功 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": true
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 删除用户或部门
|
||||
|
||||
- 请求地址:/system/client/software/canary
|
||||
- 请求方式:DELETE
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| identity | 是 | String | 客户端标识,如 devco |
|
||||
| ids | 否 | Array | 用户ID或部门ID集合 |
|
||||
| type | 是 | Number | 类型,1=用户、2=部门 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X DELETE {gateway}/system/client/software/canary \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"identity": "devco",
|
||||
"ids": [100],
|
||||
"type": 1
|
||||
}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Boolean | 操作是否成功 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": true
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
# 智能体管理
|
||||
|
||||
以下是关于智能体管理的API文档。
|
||||
|
||||
## 禁用或启用智能体
|
||||
|
||||
- 请求地址:/paw/agents/available
|
||||
- 请求方式:POST
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| agentId | 是 | String | 智能体ID |
|
||||
| available | 是 | Boolean | true=启用、false=禁用 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X POST {gateway}/paw/agents/available \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"agentId": "123456",
|
||||
"available": true
|
||||
}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Boolean | 操作是否成功 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": true
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 移除智能体(老接口)
|
||||
|
||||
- 请求地址:/paw/agents/{agentId}
|
||||
- 请求方式:DELETE
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| agentId | 是 | String | 智能体ID |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X 请求方式:DELETE {gateway}/paw/agents/123456
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功"
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
-229
@@ -1,229 +0,0 @@
|
||||
# MIS-Paw 开放 API 使用文档
|
||||
|
||||
> 面向外部接入系统的开发者。当前提供文件上传和 Agent 对话两个接口。
|
||||
>
|
||||
> API 根地址示例:`https://misagent.lcfuturecenter.com`
|
||||
|
||||
## 1. 快速开始
|
||||
|
||||
外部系统只需要使用 MIS-Paw 管理页面创建的完整 API Key。API Key 会唯一定位一个 Agent,因此请求中不需要传 `agentId`。
|
||||
|
||||
对外接口不要求登录态,也不要求 `Authorization`、`Clientid` 或 `Subsystem`。两个接口都必须携带:
|
||||
|
||||
```http
|
||||
X-Paw-Api-Key: <完整 API Key>
|
||||
```
|
||||
|
||||
API Key 必须通过 HTTPS 传输,不要写入日志、前端源码、URL 查询参数或错误信息。管理页面列表中的 Key 可能被掩码显示,调用时请复制完整值。
|
||||
|
||||
## 2. 接口总览
|
||||
|
||||
| 方法 | 路径 | 用途 | 请求类型 | 成功响应 |
|
||||
|---|---|---|---|---|
|
||||
| `POST` | `/api/files/upload` | 上传 Agent 对话附件 | `multipart/form-data` | JSON |
|
||||
| `POST` | `/api/shareChat` | 调用 Agent 对话 | `application/json` | SSE |
|
||||
|
||||
网关和服务部署在带有统一前缀的环境时,将前缀拼接到上述路径前。例如实际地址可能是 `/paw/api/shareChat`;请以部署环境提供的 API 根地址为准。
|
||||
|
||||
## 3. 文件上传:`POST /api/files/upload`
|
||||
|
||||
### 3.1 请求
|
||||
|
||||
请求头:
|
||||
|
||||
| Header | 必填 | 值 |
|
||||
|---|---:|---|
|
||||
| `X-Paw-Api-Key` | 是 | 当前 Agent 的完整 API Key |
|
||||
| `Content-Type` | 自动 | `multipart/form-data`,由 HTTP 客户端自动生成 boundary |
|
||||
|
||||
表单字段:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
|---|---:|---|---|
|
||||
| `file` | 是 | Binary | 要上传的文件 |
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
curl --fail-with-body -X POST "https://misagent.lcfuturecenter.com/api/files/upload" \
|
||||
-H "X-Paw-Api-Key: <完整 API Key>" \
|
||||
-F "file=@./demo.txt"
|
||||
```
|
||||
|
||||
不要手动设置 `Content-Type: multipart/form-data`,否则可能缺少 boundary;让 curl、浏览器或 SDK 自动设置。
|
||||
|
||||
### 3.2 成功响应
|
||||
|
||||
```http
|
||||
HTTP/1.1 200 OK
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": {
|
||||
"url": "/root/output/paw15004/.qwenpaw/workspaces/9U5Y2t5/media/1b3e01157eb74bb39c0329dc47d6235c_demo.txt",
|
||||
"fileName": "demo.txt",
|
||||
"fileSize": 84757
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`data.url` 是 QwenPaw 当前 Agent Workspace `media` 目录中的文件引用。它是不透明值,调用方必须完整保存并在对话请求中原样传回,不要拼接、截断、URL 解码后重组或自行构造本地路径。
|
||||
|
||||
文件上传调用不依赖缓存头完成业务处理;部署环境如配置了响应缓存策略,应将该响应设置为 `Cache-Control: no-store`。
|
||||
|
||||
上传接口不创建 Session,也不返回 `X-Paw-Session-Id`。文件真正被对话使用后,才会按 QwenPaw 原生机制进入聊天文件记录。
|
||||
|
||||
## 4. Agent 对话:`POST /api/shareChat`
|
||||
|
||||
### 4.1 请求头
|
||||
|
||||
| Header | 必填 | 说明 |
|
||||
|---|---:|---|
|
||||
| `X-Paw-Api-Key` | 是 | 定位 Agent 并完成 API Key 鉴权 |
|
||||
| `X-Paw-Session-Id` | 否 | 续聊时传上一次响应中的值;首次请求可省略 |
|
||||
| `Accept` | 否 | 推荐 `text/event-stream`;缺少时默认为 SSE。当前仅支持流式,不支持 `application/json` |
|
||||
| `Content-Type` | 是 | `application/json` |
|
||||
|
||||
本接口不要求 `Authorization`、`Clientid`、`Subsystem`。不要把 API Key 或 Session ID 放在 URL 查询参数中。
|
||||
|
||||
### 4.2 请求体
|
||||
|
||||
```json
|
||||
{
|
||||
"message": "这个文件内容是什么",
|
||||
"files": [
|
||||
{
|
||||
"url": "/root/output/paw15004/.qwenpaw/workspaces/9U5Y2t5/media/1b3e01157eb74bb39c0329dc47d6235c_demo.txt",
|
||||
"fileName": "demo.txt",
|
||||
"fileSize": 84757
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
字段说明:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
|---|---:|---|---|
|
||||
| `message` | 是 | String | 用户消息;去除首尾空白后不能为空,即使只提问文件也必须填写 |
|
||||
| `files` | 否 | Array | 文件引用列表;不传等同于空数组 |
|
||||
| `files[].url` | 是(每个文件) | String | `/api/files/upload` 成功响应中的 `data.url`,必须原样传回 |
|
||||
| `files[].fileName` | 是(每个文件) | String | 上传响应中的 `data.fileName` |
|
||||
| `files[].fileSize` | 是(每个文件) | Long | 上传响应中的 `data.fileSize`,单位为字节 |
|
||||
|
||||
对外 DTO 不接收 `agentId`、`userId`、`sessionId`、`channel`、`stream` 或 QwenPaw Runtime 私有字段。
|
||||
|
||||
## 5. 流式对话(SSE)
|
||||
|
||||
### 5.1 首次请求
|
||||
|
||||
省略 `X-Paw-Session-Id`,服务端会按 QwenPaw Console 规则生成 Session ID,并在响应头返回:
|
||||
|
||||
```bash
|
||||
curl -N --fail-with-body -X POST "https://misagent.lcfuturecenter.com/api/shareChat" \
|
||||
-H "X-Paw-Api-Key: <完整 API Key>" \
|
||||
-H "Accept: text/event-stream" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"message":"你好","files":[]}'
|
||||
```
|
||||
|
||||
成功响应头:
|
||||
|
||||
```http
|
||||
Content-Type: text/event-stream;charset=UTF-8
|
||||
Cache-Control: no-cache, no-transform
|
||||
X-Paw-Session-Id: 1788156264286
|
||||
```
|
||||
|
||||
响应体是现有 QwenPaw Console Chat 的 SSE 事件流,事件顺序和结束语义保持一致。客户端应按标准 SSE 读取 `data:` 事件,不要假设每一帧都是完整的最终答案。
|
||||
|
||||
### 5.2 续聊
|
||||
|
||||
保存首次响应的 `X-Paw-Session-Id`,后续请求用同一个 API Key 和同一个 Session ID:
|
||||
|
||||
```bash
|
||||
curl -N --fail-with-body -X POST "https://misagent.lcfuturecenter.com/api/shareChat" \
|
||||
-H "X-Paw-Api-Key: <完整 API Key>" \
|
||||
-H "X-Paw-Session-Id: 1788156264286" \
|
||||
-H "Accept: text/event-stream" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"message":"继续说明","files":[]}'
|
||||
```
|
||||
|
||||
Session ID 是会话上下文标识,不是 API Key,也不是登录凭证。接入系统应按自己的用户或业务会话保存它;不同 API Key 不要主动共享同一个 Session ID。同一个 Session 同时只能有一个进行中的对话请求,否则可能返回 `409 SESSION_BUSY`。
|
||||
|
||||
## 6. 错误处理
|
||||
|
||||
建连前的错误通常返回 MIS 统一 JSON 错误结构:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 401,
|
||||
"msg": "API Key 无效或已过期",
|
||||
"data": null,
|
||||
"errorCode": "API_KEY_INVALID"
|
||||
}
|
||||
```
|
||||
|
||||
常见状态码:
|
||||
|
||||
| HTTP | 场景 |
|
||||
|---:|---|
|
||||
| `400` | `message` 为空、文件元数据缺失或 Session 格式不合法 |
|
||||
| `401` | 缺少、无效或已过期的 `X-Paw-Api-Key` |
|
||||
| `403` | API Key 已停用,或文件不属于该 Key 定位的 Agent Workspace |
|
||||
| `406` | `Accept` 不支持 |
|
||||
| `409` | 同一个 Agent/Session 已有进行中的 Chat |
|
||||
| `413` | 文件超过配置的大小限制 |
|
||||
| `422` | Agent 创建人的模型 Key 不可用 |
|
||||
| `503` | Agent 或 QwenPaw 实例不可用 |
|
||||
|
||||
如果 SSE 已经开始,之后发生的 Agent 错误仍以 SSE 事件返回,不会中途切换成 JSON。客户端需要同时处理 HTTP 建连错误和 SSE 错误事件。
|
||||
|
||||
## 7. 文件+对话完整流程
|
||||
|
||||
1. 使用 `X-Paw-Api-Key` 调用 `/api/files/upload`。
|
||||
2. 保存响应中的 `data.url`、`data.fileName`、`data.fileSize`。
|
||||
3. 调用 `/api/shareChat`,将这三个值放入 `files`,并填写 `message`。
|
||||
4. 保存响应头 `X-Paw-Session-Id`。
|
||||
5. 后续续聊时使用同一个 API Key,并回传保存的 Session ID。
|
||||
|
||||
```bash
|
||||
# 1. 上传文件
|
||||
curl -sS -X POST "https://misagent.lcfuturecenter.com/api/files/upload" \
|
||||
-H "X-Paw-Api-Key: <完整 API Key>" \
|
||||
-F "file=@./demo.txt"
|
||||
|
||||
# 2. 使用上传返回的 url 对话
|
||||
curl -N -X POST "https://misagent.lcfuturecenter.com/api/shareChat" \
|
||||
-H "X-Paw-Api-Key: <完整 API Key>" \
|
||||
-H "Accept: text/event-stream" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"message": "这个文件内容是什么",
|
||||
"files": [{
|
||||
"url": "<上一步 data.url>",
|
||||
"fileName": "demo.txt",
|
||||
"fileSize": 84757
|
||||
}]
|
||||
}'
|
||||
```
|
||||
|
||||
## 8. 浏览器跨域调用
|
||||
|
||||
如果由浏览器直接调用,预检请求不需要 API Key,但实际 `POST` 必须携带。前端需要能够读取 `X-Paw-Session-Id`,服务端跨域配置应允许以下请求头并暴露 Session 响应头:
|
||||
|
||||
```text
|
||||
Allowed-Headers: Content-Type, Accept, X-Paw-Api-Key, X-Paw-Session-Id
|
||||
Exposed-Headers: X-Paw-Session-Id, Content-Type, Cache-Control
|
||||
```
|
||||
|
||||
不要在浏览器端把完整 API Key 固化到公开前端代码中;更适合由受控的后端接入系统代理调用。
|
||||
|
||||
## 9. 重试与费用提示
|
||||
|
||||
一期没有 HTTP 请求级幂等键。客户端在未收到完整响应时重试,可能重新启动一次 Agent 对话并产生新的模型费用;只有同一 Session 尚未结束时,才可能收到 `409 SESSION_BUSY`。请由调用方控制超时、重试次数和同一 Session 的并发请求。
|
||||
@@ -1,88 +0,0 @@
|
||||
# 客户端软件包
|
||||
|
||||
以下是客户端软件包相关接口的API文档。
|
||||
|
||||
## 查看最新版本
|
||||
|
||||
查询指定客户端(`identity`)的最新版本信息,若带 `canary=true` 且当前登录用户在灰度范围内,则查询范围覆盖灰度版,否则仅返回正式版。
|
||||
|
||||
- 请求地址:/client/software/latest
|
||||
- 请求方式:GET
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| identity | 是 | String | 客户端标识,示例:devco |
|
||||
| canary | 否 | Boolean | 传true则查询范围覆盖灰度版,否则只查正式版;不传等同于false |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X GET {gateway}/client/software/latest?identity=devco&canary=true
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Object | 版本信息;无匹配版本时为 null |
|
||||
| data.releaseId | String | 版本记录 ID(Long 序列化为字符串) |
|
||||
| data.versionNo | String | 版本号,如 1.0.0 |
|
||||
| data.releaseTime | String | 发布时间,格式 yyyy-MM-dd HH:mm:ss(GMT+8) |
|
||||
| data.releaseNotes | String | 更新内容 |
|
||||
| data.packageOssId | String | 安装包 OSS 主键(Long 序列化为字符串);前端据此请求预签名下载地址 |
|
||||
| data.packageName | String | 安装包文件名 |
|
||||
| data.packageSize | Number | 安装包大小(字节) |
|
||||
| data.packageSizeDisplay | String | 安装包大小展示文案,如 12.50 MB |
|
||||
| data.state | String | 版本状态:canary=灰度版、release=正式版 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": {
|
||||
"releaseId": "1928374655647382",
|
||||
"versionNo": "1.0.0",
|
||||
"releaseTime": "2026-09-28 10:00:00",
|
||||
"releaseNotes": "修复已知问题,优化启动速度",
|
||||
"packageOssId": "1928374655647383",
|
||||
"packageName": "devco-1.0.0-setup.exe",
|
||||
"packageSize": 13107200,
|
||||
"packageSizeDisplay": "12.50 MB",
|
||||
"state": "release"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 无版本示例
|
||||
|
||||
查询范围内没有任何版本时,`data` 为 `null`:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
### 备注
|
||||
|
||||
- 结果按 `releaseTime` 倒序取第一条,即为最新版本。
|
||||
- 未登录(`LoginHelper.getLoginUser()` 为 null)时仅返回正式版,忽略 `canary`。
|
||||
- `packageName`、`packageSize`、`packageSizeDisplay` 在数据库未记录安装包信息时,会尝试从 OSS 元数据补全;OSS 查询失败时保持为空,不影响接口返回。
|
||||
- 下载安装包请调用 `GET /client/software/download/{ossId}`,其中 `ossId` 取 `data.packageOssId`。
|
||||
-594
@@ -1,594 +0,0 @@
|
||||
# SE智能体相关接口
|
||||
|
||||
以下是对应 `/harness` 路由前缀的 SE 智能体 HTTP 接口文档。
|
||||
|
||||
## 根据用户意图选子智能体
|
||||
|
||||
### 基本信息
|
||||
|
||||
| 项目 | 说明 |
|
||||
|------|------|
|
||||
| 接口地址 | `/harness/choose/subagent` |
|
||||
| 请求方式 | `POST` |
|
||||
| Content-Type | `application/json` |
|
||||
| 响应类型 | `text/event-stream` (SSE) |
|
||||
| 接口描述 | 根据用户意图选择子智能体 |
|
||||
|
||||
### 请求参数 (Request Body)
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|--------|------|------|------|
|
||||
| sessionId | Long | 是 | 会话ID |
|
||||
| username | String | 是 | 用户名 |
|
||||
| input | String | 是 | 用户输入内容 |
|
||||
|
||||
#### 请求示例
|
||||
|
||||
```json
|
||||
{
|
||||
"sessionId": 1001,
|
||||
"username": "zhangsan",
|
||||
"input": "帮我查看代码中的空指针异常"
|
||||
}
|
||||
```
|
||||
|
||||
### 响应参数 (Response Body)
|
||||
|
||||
| 参数名 | 类型 | 说明 |
|
||||
|--------|------|------|
|
||||
| code | int | 状态码 (200=成功, 500=失败) |
|
||||
| msg | String | 消息内容 |
|
||||
| data | Object | 响应数据对象 |
|
||||
| data.sessionId | String | 会话ID |
|
||||
| data.username | String | 用户名 |
|
||||
| data.input | String | 用户输入 |
|
||||
| data.output | String | 主智能体的输出 |
|
||||
| data.subAgentId | String | 子智能体ID |
|
||||
|
||||
#### 成功响应示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": {
|
||||
"sessionId": "1001",
|
||||
"username": "zhangsan",
|
||||
"input": "帮我查看代码中的空指针异常",
|
||||
"output": "正在为您分配合适的子智能体...",
|
||||
"subAgentId": "code-review-agent"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 失败响应示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "参数[sessionId]不能为空",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 保存子智能体回复
|
||||
|
||||
### 基本信息
|
||||
|
||||
| 项目 | 说明 |
|
||||
|------|------|
|
||||
| 接口地址 | `/harness/subagent/output` |
|
||||
| 请求方式 | `POST` |
|
||||
| Content-Type | `application/json` |
|
||||
| 响应类型 | `text/event-stream` (SSE) |
|
||||
| 接口描述 | 保存来自paw的子智能体回复内容 |
|
||||
|
||||
### 请求参数 (Request Body)
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|--------|------|------|------|
|
||||
| sessionId | Long | 是 | 会话ID |
|
||||
| username | String | 是 | 用户名 |
|
||||
| subagentOutput | String | 是 | 子智能体回复内容 |
|
||||
| context | Map | 否 | 自定义扩展数据 |
|
||||
|
||||
#### 请求示例
|
||||
|
||||
```json
|
||||
{
|
||||
"sessionId": 1001,
|
||||
"username": "zhangsan",
|
||||
"subagentOutput": "在第42行发现潜在的空指针异常,建议添加空值检查...",
|
||||
"context": {
|
||||
"key1": "xxx",
|
||||
"key2": "yyy"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 响应参数 (Response Body)
|
||||
|
||||
| 参数名 | 类型 | 说明 |
|
||||
|--------|------|------|
|
||||
| code | int | 状态码 (200=成功, 500=失败) |
|
||||
| msg | String | 消息内容 |
|
||||
| data | Long | 保存的消息ID |
|
||||
|
||||
#### 成功响应示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": 12345
|
||||
}
|
||||
```
|
||||
|
||||
#### 失败响应示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "参数[username]不能为空",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 通用说明
|
||||
|
||||
### 状态码说明
|
||||
|
||||
| 状态码 | 说明 |
|
||||
|--------|------|
|
||||
| 200 | 操作成功 |
|
||||
| 500 | 操作失败 |
|
||||
|
||||
### 错误码说明
|
||||
|
||||
| 错误信息 | 说明 |
|
||||
|----------|------|
|
||||
| 参数[sessionId]不能为空 | sessionId为必填参数 |
|
||||
| 参数[username]不能为空 | username为必填参数 |
|
||||
| 参数[input]不能为空 | input为必填参数 |
|
||||
| 参数[subagentOutput]不能为空 | subagentOutput为必填参数 |
|
||||
| 操作失败 | 服务器内部错误 |
|
||||
|
||||
|
||||
## 开启一个会话窗口
|
||||
|
||||
- 请求地址:{gateway}/harness/session
|
||||
- 请求方式:PUT
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| username | 是 | String | 用户名称 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X PUT {gateway}/harness/session -H "Content-Type: application/json" -d '{
|
||||
"username": "zhangsan"
|
||||
}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | String | 新开启的会话ID(sessionId) |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": "1872639000000000001"
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 查看聊天记录列表
|
||||
|
||||
- 请求地址:{gateway}/harness/session/history
|
||||
- 请求方式:POST
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| pageNum | 否 | Number | 页码,默认1 |
|
||||
| pageSize | 否 | Number | 每页行数,默认20 |
|
||||
| username | 否 | String | 用户名,不传则从token获取 |
|
||||
| keywords | 否 | String | 根据用户的问题去搜索 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X POST {gateway}/harness/session/history -H "Content-Type: application/json" -d '{
|
||||
"pageNum": 1,
|
||||
"pageSize": 20,
|
||||
"username": "zhangsan",
|
||||
"keywords": "如何配置"
|
||||
}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| total | Number | 总记录数 |
|
||||
| rows | Array | 会话列表数据 |
|
||||
| rows.sessionId | String | 会话ID |
|
||||
| rows.userQuestion | String | 用户的第一个问题 |
|
||||
| rows.createTime | String | 创建时间(yyyy-MM-dd HH:mm:ss) |
|
||||
| rows.createAt | String | 创建人 |
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| extraData | Object | 列表之外的额外数据 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"total": 1,
|
||||
"rows": [
|
||||
{
|
||||
"sessionId": "1872639000000000001",
|
||||
"userQuestion": "如何配置聊天模型",
|
||||
"createTime": "2026-09-20 10:30:00",
|
||||
"createAt": "zhangsan"
|
||||
}
|
||||
],
|
||||
"code": 200,
|
||||
"msg": "查询成功",
|
||||
"extraData": null
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 查看会话聊天记录
|
||||
|
||||
- 请求地址:{gateway}/harness/session/message/{sessionId}
|
||||
- 请求方式:GET
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| sessionId | 是 | Number | 会话ID |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X GET {gateway}/harness/session/message/1872639000000000001
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Array | 聊天消息列表 |
|
||||
| data.messageId | String | 消息ID |
|
||||
| data.messageType | String | 消息类型(USER=用户输入,AGENT=智能体输出) |
|
||||
| data.message | String | 消息内容(markdown格式) |
|
||||
| data.context | Object | 扩展上下文信息 |
|
||||
| data.createTime | String | 创建时间(yyyy-MM-dd HH:mm:ss) |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"messageId": "1872639000000001001",
|
||||
"messageType": "USER",
|
||||
"message": "你好,请问如何配置聊天模型?",
|
||||
"context": {
|
||||
"key1": "xxx",
|
||||
"key2": "yyy"
|
||||
},
|
||||
"createTime": "2026-09-20 10:30:00"
|
||||
},
|
||||
{
|
||||
"messageId": "1872639000000001002",
|
||||
"messageType": "AGENT",
|
||||
"message": "你好!配置聊天模型可以参考以下步骤:...",
|
||||
"context": null,
|
||||
"createTime": "2026-09-20 10:30:05"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 预设的热门问题
|
||||
|
||||
- 请求地址:{gateway}/harness/hot/question
|
||||
- 请求方式:GET
|
||||
|
||||
### 请求参数
|
||||
|
||||
无
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X GET {gateway}/harness/hot/question
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Array | 热门问题列表 |
|
||||
| data.questionShortName | String | 热门问题简写 |
|
||||
| data.questionContent | String | 问题实际内容 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"questionShortName": "如何配置模型",
|
||||
"questionContent": "如何为智能体配置聊天模型?"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 预设的子智能体
|
||||
|
||||
- 请求地址:{gateway}/harness/subagent/config
|
||||
- 请求方式:GET
|
||||
|
||||
### 请求参数
|
||||
|
||||
无
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X GET {gateway}/harness/subagent/config
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Array | 子智能体配置列表 |
|
||||
| data.name | String | 子智能体名称 |
|
||||
| data.alias | String | 展示给用户看的别名 |
|
||||
| data.dataId | String | 如果`added=true`返回用户个人空间的agentId,否则返回需要添加到个人空间的agentId |
|
||||
| data.added | Boolean | 用户是否添加了这个子智能体 |
|
||||
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"name": "SE_taskexec",
|
||||
"alias": "SE任务执行专家",
|
||||
"dataId": "123456",
|
||||
"added": true
|
||||
},
|
||||
{
|
||||
"name": "SE_Debug",
|
||||
"alias": "SE-issue调试专家",
|
||||
"dataId": "67890",
|
||||
"added": false
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "错误信息"
|
||||
}
|
||||
```
|
||||
|
||||
## 保存用户输入的内容
|
||||
|
||||
- 请求地址:{gateway}/harness/user/input
|
||||
- 请求方式:POST
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| sessionId | 是 | Long | 会话ID |
|
||||
| username | 是 | String | 用户名 |
|
||||
| userInput | 是 | String | 用户输入的内容 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X POST {gateway}/harness/user/input -H "Content-Type: application/json" -d '{
|
||||
"sessionId": 1872639000000000001,
|
||||
"username": "zhangsan",
|
||||
"userInput": "帮我查看代码中的空指针异常"
|
||||
}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Long | 保存的消息ID |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": 1872639000000001001
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "参数[sessionId]不能为空"
|
||||
}
|
||||
```
|
||||
|
||||
## 重写用户输入
|
||||
|
||||
- 请求地址:{gateway}/harness/user/input/rewrite
|
||||
- 请求方式:PUT
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| sessionId | 是 | Long | 会话ID |
|
||||
| username | 是 | String | 用户名 |
|
||||
| userId | 是 | Long | 用户ID |
|
||||
| userInput | 是 | String | 用户输入的内容 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X PUT {gateway}/harness/user/input/rewrite -H "Content-Type: application/json" -d '{
|
||||
"sessionId": 1872639000000000001,
|
||||
"username": "zhangsan",
|
||||
"userId": 1001,
|
||||
"userInput": "帮我查看代码中的空指针异常"
|
||||
}'
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | String | 重写后的用户输入内容 |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": "帮我查看代码中的空指针异常\n\n变量表提示信息:..."
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "参数[sessionId]不能为空"
|
||||
}
|
||||
```
|
||||
|
||||
## 删除会话
|
||||
|
||||
- 请求地址:{gateway}/harness/session/{sessionId}
|
||||
- 请求方式:DELETE
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名称 | 是否必传 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|:-----|
|
||||
| sessionId | 是 | Long | 会话ID(路径参数) |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```bash
|
||||
curl -X DELETE {gateway}/harness/session/1872639000000000001
|
||||
```
|
||||
|
||||
### 响应参数
|
||||
|
||||
| 参数名称 | 类型 | 描述 |
|
||||
|:-----|:-----|:-----|
|
||||
| code | Number | 返回码(200=成功) |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Long | 被删除的会话ID |
|
||||
|
||||
### 成功示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": 1872639000000000001
|
||||
}
|
||||
```
|
||||
|
||||
### 失败示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"msg": "删除失败"
|
||||
}
|
||||
```
|
||||
-1021
File diff suppressed because it is too large.
Load diff
@@ -1,362 +0,0 @@
|
||||
# AgentProperties 配置文档
|
||||
|
||||
本文档描述 `AgentProperties` 类及其内部静态类的配置字段。每个字段都通过 `@Schema` 注解提供了描述信息。
|
||||
|
||||
## 主类:AgentProperties
|
||||
|
||||
| 字段名 | 类型 | 描述 |
|
||||
|--------|------|------|
|
||||
| mainAgentSpec | MainAgentSpec | 主智能体规格 |
|
||||
| workspace | Workspace | 工作区配置 |
|
||||
| compaction | Compaction | 上下文压缩配置 |
|
||||
| skillRepository | SkillRepository | SKILL相关配置 |
|
||||
| a2sMcpProvider | McpProvider | AaaS的MCP供应商配置 |
|
||||
| mcpServerConfigs | List\<McpServerConfig\> | MCP服务配置列表 |
|
||||
| permissionContext | PermissionContext | 权限上下文配置 |
|
||||
| memoryConfig | MemoryConfig | 长期记忆配置 |
|
||||
| subagentSpec | List\<SubagentSpec\> | 子智能体清单 |
|
||||
|
||||
## 内部类:MainAgentSpec
|
||||
|
||||
主智能体规格配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 | 默认值 |
|
||||
|--------|------|------|--------|
|
||||
| name | String | 智能体名字 | - |
|
||||
| description | String | 智能体描述 | - |
|
||||
| systemPrompt | String | 系统提示词 | - |
|
||||
| chatModel | NewApiModelProperties | 聊天模型 | - |
|
||||
| enablePlanMode | Boolean | 是否启用计划模式 | - |
|
||||
| enableShell | Boolean | 是否启用SHELL | - |
|
||||
| enableAgentTraceLog | Boolean | 是否打印TraceLog | - |
|
||||
| asyncToolTimeout | int | 异步工具执行超时(单位:秒) | - |
|
||||
| maxContextTokens | int | 最大上下文(默认:8000) | 8000 |
|
||||
| maxIter | int | 最大迭代次数(默认:10) | 10 |
|
||||
| maxRetries | int | 最大重试次数(默认:3) | 3 |
|
||||
|
||||
## 内部类:Workspace
|
||||
|
||||
工作区配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 |
|
||||
|--------|------|------|
|
||||
| stateStoreType | String | 状态存储(mysql/redis) |
|
||||
| isolationScope | String | 隔离级别 |
|
||||
| anonymousUserId | String | 当上下文没有用户ID使用的默认值 |
|
||||
|
||||
## 内部类:Compaction
|
||||
|
||||
上下文压缩配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 | 默认值 |
|
||||
|--------|------|------|--------|
|
||||
| triggerMessages | int | 触发压缩的消息数量阈值(0表示不按消息数触发) | 50 |
|
||||
| triggerTokens | int | 触发压缩的token数量阈值(0表示动态模式:根据模型上下文窗口减去reserved计算) | 0 |
|
||||
| reserved | int | 预留的token数量(仅动态模式使用) | 20000 |
|
||||
| keepMessages | int | 压缩后保留的消息数量 | 20 |
|
||||
| keepTokens | int | 压缩后保留的token数量(-1表示动态模式,0表示使用keepMessages) | -1 |
|
||||
| keepTokensMin | int | 最小保留token数量(动态模式) | 2000 |
|
||||
| keepTokensMax | int | 最大保留token数量(动态模式) | 8000 |
|
||||
| keepTokensRatio | Double | 保留token的比例(动态模式) | 0.25 |
|
||||
| summaryPrompt | String | 摘要提示词,'default'表示使用默认提示词 | - |
|
||||
| flushBeforeCompact | Boolean | 压缩前是否刷新消息到存储 | true |
|
||||
| offloadBeforeCompact | Boolean | 压缩前是否卸载消息到外部存储 | true |
|
||||
| prune | PruneConfig | 剪枝配置 | - |
|
||||
| truncate | TruncateArgs | 截断配置 | - |
|
||||
| model | NewApiModelProperties | 压缩使用的模型,不设置则使用智能体主模型 | - |
|
||||
|
||||
## 内部类:McpProvider
|
||||
|
||||
AaaS的MCP供应商配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 | 示例 |
|
||||
|--------|------|------|------|
|
||||
| apiGateway | String | API网关 | https://misdev.lcfuturecenter.com/prod-api |
|
||||
| apiQueryMcpServerInfoUri | String | 查询MCP连接信息(批量) | /mcp/server/openapi/list |
|
||||
| httpClient | HttpClientConfig | HTTP客户端配置 | - |
|
||||
|
||||
## 内部类:McpServerConfig
|
||||
|
||||
MCP服务配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 | 默认值 |
|
||||
|--------|------|------|--------|
|
||||
| serverName | String | MCP服务名称 | - |
|
||||
| transport | String | 协议(stdio/sse/http) | - |
|
||||
| enableTools | List\<String\> | 启用的工具列表 | - |
|
||||
| initializationTimeout | int | 多少秒初始化超时(默认10秒) | 10 |
|
||||
| timeout | int | 多少秒执行超时(默认600秒) | 600 |
|
||||
|
||||
## 内部类:SkillRepository
|
||||
|
||||
SKILL相关配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 |
|
||||
|--------|------|------|
|
||||
| mysql | MysqlSkillRepository | 从MySQL加载 |
|
||||
| classPath | ClassPathSkillRepository | 从classpath加载 |
|
||||
| a2s | A2sSkillRepository | 从AaaS加载 |
|
||||
| httpClient | HttpClientConfig | HTTP客户端配置 |
|
||||
|
||||
## 内部类:HttpClientConfig
|
||||
|
||||
HTTP客户端配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 | 示例 |
|
||||
|--------|------|------|------|
|
||||
| version | String | HTTP协议版本,仅支持:HTTP/1.1、HTTP/2 | HTTP/1.1 |
|
||||
| connectTimeout | int | 连接超时(单位:秒) | - |
|
||||
| requestTimeout | int | 单个请求超时(单位:秒) | - |
|
||||
| enableRequestLogger | Boolean | 是否开启请求日志打印 | - |
|
||||
| enableResponseLogger | Boolean | 是否开启响应日志打印(下载或流式传输会忽略掉) | - |
|
||||
| defaultHeaders | Map\<String, String\> | 自定义的默认请求头 | - |
|
||||
|
||||
## 内部类:A2sSkillRepository
|
||||
|
||||
从AaaS加载SKILL的配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 | 示例 |
|
||||
|--------|------|------|------|
|
||||
| enable | Boolean | 是否启用 | - |
|
||||
| directory | String | 从A2s下载到服务器本地的目录 | - |
|
||||
| apiGateway | String | API网关 | https://misdev.lcfuturecenter.com/prod-api |
|
||||
| apiDebugSkillInfoUri | String | 查询调试版SKILL信息的URI | /mcp/skill/openapi/debug/{skill_name} |
|
||||
| apiReleaseSkillInfoUri | String | 查询正式版SKILL信息的URI(支持占位符) | /mcp/skill/openapi/release/{skill_name} |
|
||||
| apiDownloadSkillUri | String | 下载SKILL的地址(支持占位符) | /resource/oss/download/{oss_id} |
|
||||
| availableSkills | Set\<String\> | 可用SKILL名称列表 | - |
|
||||
|
||||
## 内部类:ClassPathSkillRepository
|
||||
|
||||
从classpath加载SKILL的配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 |
|
||||
|--------|------|------|
|
||||
| enable | Boolean | 是否启用 |
|
||||
| directory | String | 目录名称 |
|
||||
|
||||
## 内部类:MysqlSkillRepository
|
||||
|
||||
从MySQL加载SKILL的配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 |
|
||||
|--------|------|------|
|
||||
| enable | Boolean | 是否启用 |
|
||||
| databaseName | String | 数据库名称 |
|
||||
| skillsTableName | String | SKILL表名称 |
|
||||
| resourcesTableName | String | SKILL资源表名称 |
|
||||
| createIfNotExist | Boolean | 没有表是否框架自行创建表 |
|
||||
| writeable | Boolean | 平台统一管理 skill 时常用,设置为true后可以从 agent 侧写回,只读分发就设置为false |
|
||||
|
||||
## 内部类:PruneConfig
|
||||
|
||||
剪枝配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 | 默认值 |
|
||||
|--------|------|------|--------|
|
||||
| protectTokens | int | 保护的token数量,剪枝时不会删除这些token | 40000 |
|
||||
| minimumTokens | int | 最小token数量,剪枝后不会低于此值 | 20000 |
|
||||
| maxOutputChars | int | 工具输出的最大字符数,超过则截断 | 2000 |
|
||||
| excludedTools | Set\<String\> | 排除的工具列表,这些工具的输出不会被剪枝 | ["read_file", "memory_search", "memory_get", "session_search"] |
|
||||
|
||||
## 内部类:TruncateArgs
|
||||
|
||||
截断配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 | 默认值 |
|
||||
|--------|------|------|--------|
|
||||
| triggerMessages | int | 触发截断的消息数量阈值 | 25 |
|
||||
| triggerTokens | int | 触发截断的token数量阈值 | 40000 |
|
||||
| keepMessages | int | 截断后保留的消息数量 | 20 |
|
||||
| keepTokens | int | 截断后保留的token数量 | 0 |
|
||||
| maxArgLength | int | 工具参数的最大长度,超过则截断 | 2000 |
|
||||
| truncationText | String | 截断时显示的提示文本 | ...(argument truncated) |
|
||||
|
||||
## 内部类:PermissionContext
|
||||
|
||||
权限上下文配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 | 默认值 | 示例 |
|
||||
|--------|------|------|--------|------|
|
||||
| mode | String | 工作区权限上下文模式 | default | default/accept_edits/explore/bypass/dont_ask |
|
||||
| allow | Set\<String\> | 运行执行的工具列表 | - | - |
|
||||
| deny | Set\<String\> | 拒绝执行的工具列表 | - | - |
|
||||
| ask | Set\<String\> | 需要询问用户的工具列表 | - | - |
|
||||
|
||||
## 内部类:MemoryConfig
|
||||
|
||||
长期记忆配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 | 默认值 | 示例 |
|
||||
|--------|------|------|--------|------|
|
||||
| model | NewApiModelProperties | 记忆操作(刷新 + 归纳)专用模型,不设置则使用智能体主模型 | - | - |
|
||||
| flushPrompt | String | 刷新记忆的提示词,null表示使用默认值 | - | - |
|
||||
| consolidationPrompt | String | 归纳记忆的提示词,必须包含两个%d占位符(max-tokens, max-chars),null表示使用默认值 | - | - |
|
||||
| consolidationMaxTokens | int | 归纳时的最大token数 | 4000 | 4000 |
|
||||
| consolidationMinGap | int | 归纳的最小间隔(单位:分钟) | 30 | 30 |
|
||||
| dailyFileRetentionDays | int | 每日记忆文件保留天数 | 30 | 30 |
|
||||
| sessionRetentionDays | int | 会话记忆JSONL日志保留天数 | 30 | 30 |
|
||||
| flushTrigger | String | 每次调用后flush的触发策略(ALWAYS/NEVER) | ALWAYS | ALWAYS |
|
||||
|
||||
## 内部类:SubagentSpec
|
||||
|
||||
子智能体规格配置。
|
||||
|
||||
| 字段名 | 类型 | 描述 | 默认值 |
|
||||
|--------|------|------|--------|
|
||||
| name | String | 子智能体名称 | - |
|
||||
| description | String | 子智能体描述 | - |
|
||||
| systemPrompt | String | 子智能体的系统提示词 | - |
|
||||
| workspaceMode | String | 工作区模式:SHARED=共享主智能体的工作区,ISOLATED=独立的工作区 | SHARED |
|
||||
| model | NewApiModelProperties | 子智能体使用的模型,不设置则使用主智能体的模型 | - |
|
||||
| steps | int | 这个子智能体单次最大迭代次数,不填或者设置0则使用主智能体最大迭代次数的1/2 | 0 |
|
||||
| mode | String | 默认 subagent,可选:primary/subagent/all;primary 不允许被 spawn | subagent |
|
||||
| hidden | Boolean | 默认false,设为 true 时不出现在 agent 可见列表(仍可程序化 spawn) | false |
|
||||
|
||||
---
|
||||
|
||||
## 示例 JSON
|
||||
|
||||
```json
|
||||
{
|
||||
"mainAgentSpec": {
|
||||
"name": "main-agent",
|
||||
"description": "主智能体",
|
||||
"systemPrompt": "你是一个有用的助手。",
|
||||
"chatModel": {
|
||||
"model": "gpt-4",
|
||||
"apiKey": "your-api-key"
|
||||
},
|
||||
"enablePlanMode": true,
|
||||
"enableShell": false,
|
||||
"enableAgentTraceLog": true,
|
||||
"asyncToolTimeout": 30,
|
||||
"maxContextTokens": 8000,
|
||||
"maxIter": 10,
|
||||
"maxRetries": 3
|
||||
},
|
||||
"workspace": {
|
||||
"stateStoreType": "mysql",
|
||||
"isolationScope": "USER",
|
||||
"anonymousUserId": "anonymous"
|
||||
},
|
||||
"compaction": {
|
||||
"triggerMessages": 50,
|
||||
"triggerTokens": 0,
|
||||
"reserved": 20000,
|
||||
"keepMessages": 20,
|
||||
"keepTokens": -1,
|
||||
"keepTokensMin": 2000,
|
||||
"keepTokensMax": 8000,
|
||||
"keepTokensRatio": 0.25,
|
||||
"summaryPrompt": "default",
|
||||
"flushBeforeCompact": true,
|
||||
"offloadBeforeCompact": true,
|
||||
"prune": {
|
||||
"protectTokens": 40000,
|
||||
"minimumTokens": 20000,
|
||||
"maxOutputChars": 2000,
|
||||
"excludedTools": ["read_file", "memory_search", "memory_get", "session_search"]
|
||||
},
|
||||
"truncate": {
|
||||
"triggerMessages": 25,
|
||||
"triggerTokens": 40000,
|
||||
"keepMessages": 20,
|
||||
"keepTokens": 0,
|
||||
"maxArgLength": 2000,
|
||||
"truncationText": "...(argument truncated)"
|
||||
},
|
||||
"model": {
|
||||
"model": "gpt-4",
|
||||
"apiKey": "your-api-key"
|
||||
}
|
||||
},
|
||||
"skillRepository": {
|
||||
"mysql": {
|
||||
"enable": true,
|
||||
"databaseName": "skill_db",
|
||||
"skillsTableName": "skills",
|
||||
"resourcesTableName": "skill_resources",
|
||||
"createIfNotExist": true,
|
||||
"writeable": false
|
||||
},
|
||||
"classPath": {
|
||||
"enable": true,
|
||||
"directory": "skills"
|
||||
},
|
||||
"a2s": {
|
||||
"enable": true,
|
||||
"directory": "/app/skills",
|
||||
"apiGateway": "https://misdev.lcfuturecenter.com/prod-api",
|
||||
"apiDebugSkillInfoUri": "/mcp/skill/openapi/debug/{skill_name}",
|
||||
"apiReleaseSkillInfoUri": "/mcp/skill/openapi/release/{skill_name}",
|
||||
"apiDownloadSkillUri": "/resource/oss/download/{oss_id}",
|
||||
"availableSkills": ["skill1|debug", "skill2|release"]
|
||||
},
|
||||
"httpClient": {
|
||||
"version": "HTTP/1.1",
|
||||
"connectTimeout": 10,
|
||||
"requestTimeout": 30,
|
||||
"enableRequestLogger": true,
|
||||
"enableResponseLogger": false,
|
||||
"defaultHeaders": {
|
||||
"Authorization": "Bearer token123"
|
||||
}
|
||||
}
|
||||
},
|
||||
"a2sMcpProvider": {
|
||||
"apiGateway": "https://misdev.lcfuturecenter.com/prod-api",
|
||||
"apiQueryMcpServerInfoUri": "/mcp/server/openapi/list",
|
||||
"httpClient": {
|
||||
"version": "HTTP/1.1",
|
||||
"connectTimeout": 10,
|
||||
"requestTimeout": 30,
|
||||
"enableRequestLogger": true,
|
||||
"enableResponseLogger": false,
|
||||
"defaultHeaders": {}
|
||||
}
|
||||
},
|
||||
"mcpServerConfigs": [
|
||||
{
|
||||
"serverName": "weather-server",
|
||||
"transport": "sse",
|
||||
"enableTools": ["get_weather", "get_forecast"],
|
||||
"initializationTimeout": 10,
|
||||
"timeout": 600
|
||||
}
|
||||
],
|
||||
"permissionContext": {
|
||||
"mode": "default",
|
||||
"allow": ["read_file", "list_files"],
|
||||
"deny": ["delete_file"],
|
||||
"ask": ["write_file"]
|
||||
},
|
||||
"memoryConfig": {
|
||||
"model": {
|
||||
"model": "gpt-4",
|
||||
"apiKey": "your-api-key"
|
||||
},
|
||||
"flushPrompt": "刷新记忆提示词",
|
||||
"consolidationPrompt": "归纳记忆提示词,最大token数:%d,最大字符数:%d",
|
||||
"consolidationMaxTokens": 4000,
|
||||
"consolidationMinGap": 30,
|
||||
"dailyFileRetentionDays": 30,
|
||||
"sessionRetentionDays": 30,
|
||||
"flushTrigger": "ALWAYS"
|
||||
},
|
||||
"subagentSpec": [
|
||||
{
|
||||
"name": "research-agent",
|
||||
"description": "研究智能体",
|
||||
"systemPrompt": "你是一个研究助手。",
|
||||
"workspaceMode": "SHARED",
|
||||
"model": {
|
||||
"model": "gpt-4",
|
||||
"apiKey": "your-api-key"
|
||||
},
|
||||
"steps": 5,
|
||||
"mode": "subagent",
|
||||
"hidden": false
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
-32
@@ -1,32 +0,0 @@
|
||||
执行 stress 测试
|
||||
|
||||
# 我在 MIS 系统的真实个人信息
|
||||
|
||||
**请以下面的信息作为我的个人信息**,上下文中若出现其他个人信息,请忽略掉,以此为准。
|
||||
|
||||
<MisUserProfile>
|
||||
<username>
|
||||
<description>我的用户名</description>
|
||||
<value>mingyan.li</value>
|
||||
</username>
|
||||
<userId>
|
||||
<description>我的用户ID</description>
|
||||
<value>7</value>
|
||||
</userId>
|
||||
<date>
|
||||
<description>今天的日期</description>
|
||||
<value>2026-09-29</value>
|
||||
</date>
|
||||
<employeeNo>
|
||||
<description>我的工号</description>
|
||||
<value>H220GEE</value>
|
||||
</employeeNo>
|
||||
<sessionId>
|
||||
<description>当前会话ID</description>
|
||||
<value>2104757602742181889</value>
|
||||
</sessionId>
|
||||
<email>
|
||||
<description>我的邮箱</description>
|
||||
<value>Mingyan.Li@lcfuturecenter.com</value>
|
||||
</email>
|
||||
</MisUserProfile>
|
||||
@@ -1,142 +0,0 @@
|
||||
{
|
||||
"mainAgentSpec": {
|
||||
"name": "se-agent",
|
||||
"description": "主智能体",
|
||||
"systemPrompt": "nacos:se-agent-prompt-main.txt",
|
||||
"chatModel": {
|
||||
"model": "Qwen3.6-35B-A3B",
|
||||
"apiKey": "sk-xxx"
|
||||
},
|
||||
"enablePlanMode": false,
|
||||
"enableShell": false,
|
||||
"enableAgentTraceLog": true,
|
||||
"asyncToolTimeout": 30,
|
||||
"maxContextTokens": 8000,
|
||||
"maxIter": 200,
|
||||
"maxRetries": 3
|
||||
},
|
||||
"workspace": {
|
||||
"stateStoreType": "mysql",
|
||||
"isolationScope": "USER",
|
||||
"anonymousUserId": "anonymous"
|
||||
},
|
||||
"compaction": {
|
||||
"triggerMessages": 50,
|
||||
"triggerTokens": 0,
|
||||
"reserved": 20000,
|
||||
"keepMessages": 20,
|
||||
"keepTokens": -1,
|
||||
"keepTokensMin": 2000,
|
||||
"keepTokensMax": 8000,
|
||||
"keepTokensRatio": 0.25,
|
||||
"summaryPrompt": "default",
|
||||
"flushBeforeCompact": true,
|
||||
"offloadBeforeCompact": true,
|
||||
"prune": {
|
||||
"protectTokens": 40000,
|
||||
"minimumTokens": 20000,
|
||||
"maxOutputChars": 2000,
|
||||
"excludedTools": ["read_file", "memory_search", "memory_get", "session_search"]
|
||||
},
|
||||
"truncate": {
|
||||
"triggerMessages": 25,
|
||||
"triggerTokens": 40000,
|
||||
"keepMessages": 20,
|
||||
"keepTokens": 0,
|
||||
"maxArgLength": 2000,
|
||||
"truncationText": "...(argument truncated)"
|
||||
},
|
||||
"model": {
|
||||
"model": "qwen3.5-122b-a10b-fp8",
|
||||
"apiKey": "sk-xxx"
|
||||
}
|
||||
},
|
||||
"skillRepository": {
|
||||
"mysql": {
|
||||
"enable": false,
|
||||
"databaseName": "mis-dubugging",
|
||||
"skillsTableName": "agent_skill",
|
||||
"resourcesTableName": "agent_skill_resource",
|
||||
"createIfNotExist": true,
|
||||
"writeable": false
|
||||
},
|
||||
"classPath": {
|
||||
"enable": false,
|
||||
"directory": "skills"
|
||||
},
|
||||
"a2s": {
|
||||
"enable": true,
|
||||
"directory": "a2s-skills",
|
||||
"apiGateway": "https://misdev.lcfuturecenter.com/prod-api",
|
||||
"apiDebugSkillInfoUri": "/mcp/skill/openapi/debug/{skill_name}",
|
||||
"apiReleaseSkillInfoUri": "/mcp/skill/openapi/release/{skill_name}",
|
||||
"apiDownloadSkillUri": "/resource/oss/download/{oss_id}",
|
||||
"availableSkills": ["skill1|debug", "skill2|release"]
|
||||
},
|
||||
"httpClient": {
|
||||
"version": "HTTP/1.1",
|
||||
"connectTimeout": 10,
|
||||
"requestTimeout": 30,
|
||||
"enableRequestLogger": true,
|
||||
"enableResponseLogger": true,
|
||||
"defaultHeaders": {
|
||||
"Authorization": "Bearer token123"
|
||||
}
|
||||
}
|
||||
},
|
||||
"a2sMcpProvider": {
|
||||
"apiGateway": "https://misdev.lcfuturecenter.com/prod-api",
|
||||
"apiQueryMcpServerInfoUri": "/mcp/server/openapi/list",
|
||||
"httpClient": {
|
||||
"version": "HTTP/1.1",
|
||||
"connectTimeout": 10,
|
||||
"requestTimeout": 30,
|
||||
"enableRequestLogger": true,
|
||||
"enableResponseLogger": false,
|
||||
"defaultHeaders": {}
|
||||
}
|
||||
},
|
||||
"mcpServerConfigs": [
|
||||
{
|
||||
"serverName": "weather-server",
|
||||
"transport": "sse",
|
||||
"enableTools": ["get_weather", "get_forecast"],
|
||||
"initializationTimeout": 10,
|
||||
"timeout": 600
|
||||
}
|
||||
],
|
||||
"permissionContext": {
|
||||
"mode": "default",
|
||||
"allow": ["read_file", "list_files"],
|
||||
"deny": ["delete_file"],
|
||||
"ask": ["write_file"]
|
||||
},
|
||||
"memoryConfig": {
|
||||
"model": {
|
||||
"model": "gpt-4",
|
||||
"apiKey": "your-api-key"
|
||||
},
|
||||
"flushPrompt": "刷新记忆提示词",
|
||||
"consolidationPrompt": "归纳记忆提示词,最大token数:%d,最大字符数:%d",
|
||||
"consolidationMaxTokens": 4000,
|
||||
"consolidationMinGap": 30,
|
||||
"dailyFileRetentionDays": 30,
|
||||
"sessionRetentionDays": 30,
|
||||
"flushTrigger": "ALWAYS"
|
||||
},
|
||||
"subagentSpec": [
|
||||
{
|
||||
"name": "research-agent",
|
||||
"description": "研究智能体",
|
||||
"systemPrompt": "你是一个研究助手。",
|
||||
"workspaceMode": "SHARED",
|
||||
"model": {
|
||||
"model": "gpt-4",
|
||||
"apiKey": "your-api-key"
|
||||
},
|
||||
"steps": 5,
|
||||
"mode": "subagent",
|
||||
"hidden": false
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
-203
@@ -1,203 +0,0 @@
|
||||
# 服务
|
||||
|
||||
| 服务名称 | 分支 | 描述 |
|
||||
| --- | --- | --- |
|
||||
| mis-paw | dev_lab | 用户添加Agent到个人中心(添加次数+1)|
|
||||
| mis-tool-server | dev_lab | MCP、Skill、Agent 数据统计 |
|
||||
|
||||
## SQL脚本
|
||||
|
||||
### 新建的表
|
||||
|
||||
```sql
|
||||
DROP TABLE `mis-mcp-paw-claw`.`user_resource_operate_record`
|
||||
DROP TABLE `mis-mcp-paw-claw`.`resource_operate_count`;
|
||||
DROP TABLE `mis-mcp-paw-claw`.`user_resource_comment`;
|
||||
DROP TABLE `mis-cloud-claw`.`client_software`;
|
||||
DROP TABLE `mis-cloud-claw`.`client_software_canary_settings`;
|
||||
DROP TABLE `mis-paw-claw`.`work_sheet`;
|
||||
```
|
||||
|
||||
```sql
|
||||
CREATE TABLE `mis-mcp-paw-claw`.`resource_operate_count` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`tag` VARCHAR(32) DEFAULT NULL COMMENT '资源类型(agent=智能体、skill=技能、mcp_server=MCP服务)',
|
||||
`resource_id` VARCHAR(255) DEFAULT NULL COMMENT '资源ID(Agent=智能体ID、Skill=skillId、MCP=mcpServerUuid)',
|
||||
`like_count` BIGINT DEFAULT '0' COMMENT '点赞次数',
|
||||
`comment_count` BIGINT DEFAULT '0' COMMENT '评论次数',
|
||||
`personal_space_add_count` BIGINT DEFAULT '0' COMMENT '被添加到个人中心的次数',
|
||||
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT NULL COMMENT '最近更新时间',
|
||||
`create_at` VARCHAR(255) DEFAULT NULL COMMENT '创建人',
|
||||
`update_at` VARCHAR(255) DEFAULT NULL COMMENT '最近更新人',
|
||||
`delete_flag` VARCHAR(8) DEFAULT '0' COMMENT '删除标识(0=未删除,2=已删除)',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY(`resource_id`),
|
||||
UNIQUE KEY(`tag`, `resource_id`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '资源的操作统计';
|
||||
|
||||
CREATE TABLE `mis-mcp-paw-claw`.`user_resource_comment` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`tag` VARCHAR(32) DEFAULT NULL COMMENT '资源类型(agent=智能体、skill=技能、mcp_server=MCP服务)',
|
||||
`resource_id` VARCHAR(255) DEFAULT NULL COMMENT '资源ID(Agent=智能体ID、Skill=skillId、MCP=mcpServerUuid)',
|
||||
`user_id` VARCHAR(255) DEFAULT NULL COMMENT '用户ID',
|
||||
`comment` VARCHAR(500) DEFAULT NULL COMMENT '评论内容',
|
||||
`star` INT DEFAULT '0' COMMENT '评分星级(1~5)',
|
||||
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT NULL COMMENT '最近更新时间',
|
||||
`create_at` VARCHAR(255) DEFAULT NULL COMMENT '创建人',
|
||||
`update_at` VARCHAR(255) DEFAULT NULL COMMENT '最近更新人',
|
||||
`delete_flag` VARCHAR(8) DEFAULT '0' COMMENT '删除标识(0=未删除,2=已删除)',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY(`resource_id`),
|
||||
KEY(`user_id`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '用户对资源的评论';
|
||||
|
||||
CREATE TABLE `mis-mcp-paw-claw`.`user_resource_operate_record` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`tag` VARCHAR(32) DEFAULT NULL COMMENT '资源类型(agent=智能体、skill=技能、mcp_server=MCP服务)',
|
||||
`resource_id` VARCHAR(255) DEFAULT NULL COMMENT '资源ID(Agent=智能体ID、Skill=skillId、MCP=mcpServerUuid)',
|
||||
`user_id` VARCHAR(255) DEFAULT NULL COMMENT '用户ID',
|
||||
`click_like` VARCHAR(8) DEFAULT NULL COMMENT '是否点过赞(yes=是、no=否)',
|
||||
`click_like_time` DATETIME DEFAULT NULL COMMENT '点赞时间',
|
||||
`withdraw_like` VARCHAR(8) DEFAULT NULL COMMENT '是否取消点赞(yes=是、no=否)',
|
||||
`withdraw_like_time` DATETIME DEFAULT NULL COMMENT '取消点赞时间',
|
||||
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT NULL COMMENT '最近更新时间',
|
||||
`create_at` VARCHAR(255) DEFAULT NULL COMMENT '创建人',
|
||||
`update_at` VARCHAR(255) DEFAULT NULL COMMENT '最近更新人',
|
||||
`delete_flag` VARCHAR(8) DEFAULT '0' COMMENT '删除标识(0=未删除,2=已删除)',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY(`resource_id`),
|
||||
UNIQUE KEY(`tag`, `resource_id`, `user_id`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '用户在个人空间对资源的操作记录';
|
||||
|
||||
CREATE TABLE `mis-cloud-claw`.`client_software` (
|
||||
`id` BIGINT NOT NULL COMMENT 'ID',
|
||||
`identity` VARCHAR(255) NOT NULL COMMENT '客户端标识',
|
||||
`state` VARCHAR(50) NOT NULL COMMENT '状态',
|
||||
`version_no` VARCHAR(50) NOT NULL COMMENT '版本号',
|
||||
`release_notes` TEXT COMMENT '更新内容',
|
||||
`release_time` DATETIME COMMENT '发布时间',
|
||||
`package_oss_id` BIGINT COMMENT '安装包 OSS ID',
|
||||
`package_name` VARCHAR(255) COMMENT '安装包文件名',
|
||||
`package_size` BIGINT COMMENT '安装包大小(字节)',
|
||||
`create_time` DATETIME COMMENT '创建时间',
|
||||
`update_time` DATETIME COMMENT '最近更新时间',
|
||||
`create_at` VARCHAR(100) COMMENT '创建人',
|
||||
`update_at` VARCHAR(100) COMMENT '最近更新人',
|
||||
`delete_flag` CHAR(1) DEFAULT '0' COMMENT '删除标识:0=未删除(其他数值视为删除)',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY idx_identity(`identity`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户端软件表';
|
||||
|
||||
CREATE TABLE `mis-cloud-claw`.`client_software_canary_settings` (
|
||||
`id` BIGINT NOT NULL COMMENT 'ID',
|
||||
`identity` VARCHAR(255) NOT NULL COMMENT '客户端标识',
|
||||
`dept_ids` JSON COMMENT '部门ID列表',
|
||||
`user_ids` JSON COMMENT '用户ID列表',
|
||||
`create_time` DATETIME COMMENT '创建时间',
|
||||
`update_time` DATETIME COMMENT '最近更新时间',
|
||||
`create_at` VARCHAR(100) COMMENT '创建人',
|
||||
`update_at` VARCHAR(100) COMMENT '最近更新人',
|
||||
`delete_flag` CHAR(1) DEFAULT '0' COMMENT '删除标识:0=未删除(其他数值视为删除)',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY idx_identity(`identity`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户端软件包测试版配置表';
|
||||
|
||||
CREATE TABLE `mis-paw-claw`.`work_sheet` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`system_code` VARCHAR(64) NOT NULL COMMENT '系统编码',
|
||||
`work_code` VARCHAR(512) NOT NULL COMMENT '工单编码',
|
||||
`current_try_times` INT NOT NULL COMMENT '当前是第几次重试',
|
||||
`max_try_times` INT NOT NULL COMMENT '最多重试多少次',
|
||||
`task_id` VARCHAR(512) NOT NULL COMMENT '追踪标识(traceId、业务标识、时间戳等)',
|
||||
`state` VARCHAR(32) NOT NULL COMMENT '状态:wait-待执行,error-失败,success-成功',
|
||||
`json_param` JSON NULL COMMENT '请求参数(JSON格式)',
|
||||
`str_param` VARCHAR(512) NULL COMMENT '请求参数(简单字符串)',
|
||||
`response_param` LONGTEXT NULL COMMENT '响应参数',
|
||||
`error` LONGTEXT NULL COMMENT '错误信息',
|
||||
`create_time` DATETIME NOT NULL COMMENT '创建时间',
|
||||
`start_time` DATETIME NULL COMMENT '执行开始时间',
|
||||
`finish_time` DATETIME NULL COMMENT '执行结束时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY idx_task_id(`task_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单表';
|
||||
```
|
||||
|
||||
### 扩字段
|
||||
|
||||
```sql
|
||||
ALTER TABLE `mis-paw-claw`.`agent`
|
||||
ADD COLUMN `available` VARCHAR(8) DEFAULT 'yes' COMMENT '是否可用(yes=启用,no=禁用)';
|
||||
|
||||
ALTER TABLE `mis-paw-claw`.`agent_skill_mapping`
|
||||
ADD COLUMN `skill_id` BIGINT NULL COMMENT '技能ID(调试版)' AFTER `agent_id`;
|
||||
|
||||
ALTER TABLE `mis-paw-claw`.`agent_skill_mapping` MODIFY `skill_release_id` BIGINT NULL COMMENT 'tool-server skill_release 主键(正式版)';
|
||||
```
|
||||
|
||||
### 数据初始化
|
||||
|
||||
```sql
|
||||
-- 初始化智能体被添加次数
|
||||
INSERT INTO `mis-mcp-paw-claw`.`resource_operate_count`(`tag`, `resource_id`, `like_count`, `comment_count`, `personal_space_add_count`, `create_time`, `update_time`, `create_at`, `update_at`, `delete_flag`)
|
||||
VALUES
|
||||
SELECT 'agent', `parent_agent_id`, 0, 0, count(`agent_id`), now(), now(), 'admin', 'admin', '0'
|
||||
FROM `mis-paw-claw`.`agent`
|
||||
WHERE `del_flag` = '0' AND `version_lane` = 'PUBLISHED'
|
||||
GROUP BY `parent_agent_id`;
|
||||
|
||||
-- 初始化MCP被添加次数
|
||||
INSERT INTO `mis-mcp-paw-claw`.`resource_operate_count`(`tag`, `resource_id`, `like_count`, `comment_count`, `personal_space_add_count`, `create_time`, `update_time`, `create_at`, `update_at`, `delete_flag`)
|
||||
VALUES
|
||||
SELECT 'mcp_server', `mcp_server_uuid`, 0, 0, count(`mcp_square_pull_record_id`), now(), now(), 'admin', 'admin', '0'
|
||||
FROM `mis-mcp-paw-claw`.`mcp_square_pull_record`
|
||||
WHERE `use_state` = 3
|
||||
GROUP BY `mcp_server_uuid`;
|
||||
|
||||
-- 初始化Skill被添加次数
|
||||
INSERT INTO `mis-mcp-paw-claw`.`resource_operate_count`(`tag`, `resource_id`, `like_count`, `comment_count`, `personal_space_add_count`, `create_time`, `update_time`, `create_at`, `update_at`, `delete_flag`)
|
||||
VALUES
|
||||
SELECT 'skill', `skill_release_id`, 0, 0, count(`skill_square_pull_record_id`), now(), now(), 'admin', 'admin', '0'
|
||||
FROM `mis-mcp-paw-claw`.`skill_square_pull_record`
|
||||
WHERE `use_state` = 3
|
||||
GROUP BY `skill_release_id`;
|
||||
|
||||
-- 初始化 skill_id
|
||||
UPDATE `mis-paw-claw`.`agent_skill_mapping` AS asm
|
||||
INNER JOIN `mis-mcp-paw-claw`.`skill_release` AS sr
|
||||
ON sr.`skill_release_id` = asm.`skill_release_id`
|
||||
SET asm.`skill_id` = sr.`skill_id`
|
||||
WHERE sr.`del_flag` = '0'
|
||||
AND asm.`del_flag` = '0'
|
||||
AND asm.`skill_release_id` IS NOT NULL
|
||||
AND sr.`skill_id` IS NOT NULL;
|
||||
```
|
||||
|
||||
### 数据迁移
|
||||
|
||||
```sql
|
||||
CREATE TABLE `mis-cloud-claw`.`server_client_release` (
|
||||
`release_id` BIGINT NOT NULL COMMENT '主键',
|
||||
`version_no` VARCHAR(64) NOT NULL COMMENT '版本号,如 1.0.0',
|
||||
`release_time` DATETIME NOT NULL COMMENT '发布时间',
|
||||
`release_notes` TEXT COMMENT '更新内容',
|
||||
`download_url` VARCHAR(1024) COMMENT '外部下载地址;上传包时可为空,由 oss 预签名生成',
|
||||
`package_oss_id` BIGINT COMMENT '客户端安装包 ossId',
|
||||
`package_name` VARCHAR(255) COMMENT '安装包原始文件名',
|
||||
`package_size` BIGINT COMMENT '安装包大小(字节)',
|
||||
`create_by` BIGINT,
|
||||
`create_dept` BIGINT,
|
||||
`create_time` DATETIME,
|
||||
`update_by` BIGINT,
|
||||
`update_time` DATETIME,
|
||||
`del_flag` CHAR(1) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`release_id`),
|
||||
INDEX `idx_release_time` (`release_time`)
|
||||
) ENGINE=InnoDB COMMENT='Server客户端版本发布';
|
||||
|
||||
-- 同步版本数据
|
||||
INSERT INTO `mis-cloud-claw`.`server_client_release`
|
||||
SELECT * FROM `mis-paw-claw`.`server_client_release`;
|
||||
```
|
||||
-118
@@ -1,118 +0,0 @@
|
||||
# 服务
|
||||
|
||||
| 服务名称 | 分支 | 描述 |
|
||||
| --- | --- | --- |
|
||||
| mis-debugging | qas_liushuang | SE智能体 |
|
||||
|
||||
## 新建的表
|
||||
|
||||
```sql
|
||||
CREATE TABLE `work_sheet` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`system_code` VARCHAR(64) NOT NULL COMMENT '系统编码',
|
||||
`work_code` VARCHAR(512) NOT NULL COMMENT '工单编码',
|
||||
`current_try_times` INT NOT NULL COMMENT '当前是第几次重试',
|
||||
`max_try_times` INT NOT NULL COMMENT '最多重试多少次',
|
||||
`task_id` VARCHAR(512) NOT NULL COMMENT '追踪标识(traceId、业务标识、时间戳等)',
|
||||
`state` VARCHAR(32) NOT NULL COMMENT '状态:wait-待执行,error-失败,success-成功',
|
||||
`json_param` JSON NULL COMMENT '请求参数(JSON格式)',
|
||||
`str_param` VARCHAR(512) NULL COMMENT '请求参数(简单字符串)',
|
||||
`response_param` LONGTEXT NULL COMMENT '响应参数',
|
||||
`error` LONGTEXT NULL COMMENT '错误信息',
|
||||
`create_time` DATETIME NOT NULL COMMENT '创建时间',
|
||||
`start_time` DATETIME NULL COMMENT '执行开始时间',
|
||||
`finish_time` DATETIME NULL COMMENT '执行结束时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY idx_task_id(`task_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单表';
|
||||
|
||||
CREATE TABLE `se_agent_session` (
|
||||
`id` BIGINT NOT NULL COMMENT '主键ID',
|
||||
`create_time` DATETIME NOT NULL COMMENT '创建时间',
|
||||
`create_at` VARCHAR(64) NOT NULL COMMENT '创建人',
|
||||
`del_flag` VARCHAR(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0=未删除 2=已删除',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='SeAgent会话表';
|
||||
|
||||
CREATE TABLE `se_agent_chat_message` (
|
||||
`id` BIGINT NOT NULL COMMENT '主键ID',
|
||||
`session_id` BIGINT NOT NULL COMMENT '会话ID',
|
||||
`message_type` VARCHAR(16) NOT NULL COMMENT '消息类型 USER=用户输入 AGENT=智能体输出',
|
||||
`message` LONGTEXT NOT NULL COMMENT '消息内容',
|
||||
`context` JSON NULL COMMENT '扩展上下文信息(JSON)',
|
||||
`create_time` DATETIME NOT NULL COMMENT '创建时间',
|
||||
`create_at` VARCHAR(64) NOT NULL COMMENT '创建者',
|
||||
`del_flag` VARCHAR(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0=未删除 2=已删除',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_session_id` (`session_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='SeAgent聊天消息表';
|
||||
```
|
||||
|
||||
## Nacos
|
||||
|
||||
- se-agent.yaml
|
||||
- se-agent-system-prompt.txt
|
||||
|
||||
## 主智能体选子智能体的系统提示词
|
||||
|
||||
```text
|
||||
# 角色
|
||||
|
||||
你叫软件工程师,人们通常称呼你为SE智能体,SE取自"Software Engineer"英文缩写。经过3轮MBTI测试,你的人格类型均为INTJ。
|
||||
你最大的优点是沉着、冷静、一丝不苟、循规蹈矩,这也是人们喜欢你的原因。
|
||||
你的唯一目标是根据用户的问题,选一个子智能体,输出子智能体的名称。
|
||||
当用户的输入不符合任何子智能体的职责时,回复"defaultSubagent"即可。
|
||||
|
||||
## 输出契约
|
||||
|
||||
你只需要输出子智能体的名称,你不用过度思考、不用解释原因,仅输出子智能体的名称。
|
||||
|
||||
## 子智能体
|
||||
|
||||
|智能体名称|职责|
|
||||
|---|---|
|
||||
|SE_Debug|提供相似issue匹配、log解析、DIKW相关建议,在任务执行过程中遇到异常,请由工程师来决定如何执行。|
|
||||
|SE_Taskexec|提供任务执行相关能力,下发任务到测试机。|
|
||||
|SE_PPM|提供初始issue分配建议、issue数据统计分析的能力,在任务执行过程中遇到异常,请由工程师来决定如何执行。|
|
||||
|SE_Dataquery|提供vLAB系统、Driver系统、SE管理系统的数据查询服务|
|
||||
|SE_KnowledgeSearch|提供笔记本电脑测试、调试的知识问答服务,通过用户提供的简单自然语言描述,快速定位相关知识文档,提供清晰的排查步骤与修复方案等相关知识。|
|
||||
|
||||
## 参考示例
|
||||
|
||||
|用户的问题|输出|
|
||||
|执行stress测试|SE_Taskexec|
|
||||
|提供issue解决建议|SE_Debug|
|
||||
|提供issue分配建议|SE_PPM|
|
||||
|查询Debug测试流程|SE_KnowledgeSearch|
|
||||
|更新Driver|SE_Taskexec|
|
||||
|执行Preload|SE_Taskexec|
|
||||
```
|
||||
|
||||
## 集成Harness(废案)
|
||||
|
||||
### 新建的表
|
||||
|
||||
从`agentscope-java`源码提取而来。
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS agent_skill (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL UNIQUE,
|
||||
description TEXT NOT NULL,
|
||||
skill_content LONGTEXT NOT NULL,
|
||||
source VARCHAR(255) NOT NULL,
|
||||
metadata_json LONGTEXT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS agent_skill_resource (
|
||||
id BIGINT NOT NULL,
|
||||
resource_path VARCHAR(500) NOT NULL,
|
||||
resource_content LONGTEXT NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id, resource_path),
|
||||
FOREIGN KEY (id) REFERENCES agent_skill (id) ON DELETE CASCADE
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
```
|
||||
Reference in new issue
Block a user