docs(studio): 补全扩展能力与观测设计
This commit is contained in:
@@ -241,6 +241,14 @@ CREATE INDEX IF NOT EXISTS idx_agent_message_session_id ON agent_message (sessio
|
|||||||
CREATE INDEX IF NOT EXISTS idx_agent_message_role ON agent_message (role);
|
CREATE INDEX IF NOT EXISTS idx_agent_message_role ON agent_message (role);
|
||||||
CREATE INDEX IF NOT EXISTS idx_agent_capability_owner ON agent_capability_binding (owner_type, owner_id);
|
CREATE INDEX IF NOT EXISTS idx_agent_capability_owner ON agent_capability_binding (owner_type, owner_id);
|
||||||
CREATE INDEX IF NOT EXISTS idx_agent_capability_type ON agent_capability_binding (capability_type, capability_id);
|
CREATE INDEX IF NOT EXISTS idx_agent_capability_type ON agent_capability_binding (capability_type, capability_id);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_mcp_server_import_type ON mcp_server (import_type);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_mcp_server_health_status ON mcp_server (health_status);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_mcp_capability_server_id ON mcp_capability (server_id);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_mcp_capability_type ON mcp_capability (capability_type);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_skill_definition_status ON skill_definition (status);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_skill_definition_type ON skill_definition (skill_type);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_skill_version_skill_id ON skill_version (skill_id);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_skill_version_publish_status ON skill_version (publish_status);
|
||||||
|
|
||||||
COMMENT ON TABLE studio_project IS 'Studio项目空间表';
|
COMMENT ON TABLE studio_project IS 'Studio项目空间表';
|
||||||
COMMENT ON TABLE workflow_definition IS 'Workflow定义表';
|
COMMENT ON TABLE workflow_definition IS 'Workflow定义表';
|
||||||
|
|||||||
48
script/sql/mcp.sql
Normal file
48
script/sql/mcp.sql
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
-- MCP 服务与能力表。
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS mcp_server (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
server_code VARCHAR(100) NOT NULL,
|
||||||
|
server_name VARCHAR(200) NOT NULL,
|
||||||
|
import_type VARCHAR(50) NOT NULL,
|
||||||
|
endpoint_url VARCHAR(500),
|
||||||
|
package_name VARCHAR(200),
|
||||||
|
manifest_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||||
|
auth_type VARCHAR(50),
|
||||||
|
secret_ref VARCHAR(200),
|
||||||
|
health_status VARCHAR(50) NOT NULL DEFAULT 'UNKNOWN',
|
||||||
|
enabled BOOLEAN NOT NULL DEFAULT TRUE,
|
||||||
|
version INTEGER NOT NULL DEFAULT 1,
|
||||||
|
create_time TIMESTAMP,
|
||||||
|
update_time TIMESTAMP,
|
||||||
|
remark VARCHAR(500) DEFAULT '',
|
||||||
|
create_by VARCHAR(64),
|
||||||
|
update_by VARCHAR(64),
|
||||||
|
CONSTRAINT uk_mcp_server_code UNIQUE (server_code)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS mcp_capability (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
server_id BIGINT NOT NULL,
|
||||||
|
capability_code VARCHAR(150) NOT NULL,
|
||||||
|
capability_name VARCHAR(200) NOT NULL,
|
||||||
|
capability_type VARCHAR(50) NOT NULL,
|
||||||
|
schema_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||||
|
enabled BOOLEAN NOT NULL DEFAULT TRUE,
|
||||||
|
version INTEGER NOT NULL DEFAULT 1,
|
||||||
|
create_time TIMESTAMP,
|
||||||
|
update_time TIMESTAMP,
|
||||||
|
remark VARCHAR(500) DEFAULT '',
|
||||||
|
create_by VARCHAR(64),
|
||||||
|
update_by VARCHAR(64),
|
||||||
|
CONSTRAINT uk_mcp_capability_code UNIQUE (server_id, capability_code),
|
||||||
|
CONSTRAINT fk_mcp_capability_server_id FOREIGN KEY (server_id) REFERENCES mcp_server (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_mcp_server_import_type ON mcp_server (import_type);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_mcp_server_health_status ON mcp_server (health_status);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_mcp_capability_server_id ON mcp_capability (server_id);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_mcp_capability_type ON mcp_capability (capability_type);
|
||||||
|
|
||||||
|
COMMENT ON TABLE mcp_server IS 'MCP服务表';
|
||||||
|
COMMENT ON TABLE mcp_capability IS 'MCP能力表';
|
||||||
46
script/sql/skill.sql
Normal file
46
script/sql/skill.sql
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
-- Skill 定义与版本表。
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS skill_definition (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
skill_code VARCHAR(100) NOT NULL,
|
||||||
|
skill_name VARCHAR(200) NOT NULL,
|
||||||
|
skill_type VARCHAR(50) NOT NULL,
|
||||||
|
description VARCHAR(1000),
|
||||||
|
status VARCHAR(50) NOT NULL DEFAULT 'DRAFT',
|
||||||
|
version INTEGER NOT NULL DEFAULT 1,
|
||||||
|
create_time TIMESTAMP,
|
||||||
|
update_time TIMESTAMP,
|
||||||
|
remark VARCHAR(500) DEFAULT '',
|
||||||
|
create_by VARCHAR(64),
|
||||||
|
update_by VARCHAR(64),
|
||||||
|
CONSTRAINT uk_skill_definition_code UNIQUE (skill_code)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS skill_version (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
skill_id BIGINT NOT NULL,
|
||||||
|
version_no INTEGER NOT NULL,
|
||||||
|
prompt_text TEXT,
|
||||||
|
code_text TEXT,
|
||||||
|
config_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||||
|
variable_schema_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||||
|
test_result_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||||
|
publish_status VARCHAR(50) NOT NULL DEFAULT 'DRAFT',
|
||||||
|
published_time TIMESTAMP,
|
||||||
|
version INTEGER NOT NULL DEFAULT 1,
|
||||||
|
create_time TIMESTAMP,
|
||||||
|
update_time TIMESTAMP,
|
||||||
|
remark VARCHAR(500) DEFAULT '',
|
||||||
|
create_by VARCHAR(64),
|
||||||
|
update_by VARCHAR(64),
|
||||||
|
CONSTRAINT uk_skill_version_no UNIQUE (skill_id, version_no),
|
||||||
|
CONSTRAINT fk_skill_version_skill_id FOREIGN KEY (skill_id) REFERENCES skill_definition (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_skill_definition_status ON skill_definition (status);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_skill_definition_type ON skill_definition (skill_type);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_skill_version_skill_id ON skill_version (skill_id);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_skill_version_publish_status ON skill_version (publish_status);
|
||||||
|
|
||||||
|
COMMENT ON TABLE skill_definition IS 'Skill定义表';
|
||||||
|
COMMENT ON TABLE skill_version IS 'Skill版本表';
|
||||||
60
script/sql/studio_enum.sql
Normal file
60
script/sql/studio_enum.sql
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
-- Studio 相关枚举初始化。
|
||||||
|
-- 保持 sys_enum 现有 catalog/type/name/value/strvalue/sort/remark 格式不变。
|
||||||
|
|
||||||
|
INSERT INTO sys_enum (catalog, type, name, value, strvalue, sort, version, remark)
|
||||||
|
VALUES
|
||||||
|
('studio', 'environment', '开发环境', 1, 'DEV', 1, 1, 'Studio环境'),
|
||||||
|
('studio', 'environment', '测试环境', 2, 'TEST', 2, 1, 'Studio环境'),
|
||||||
|
('studio', 'environment', '生产环境', 3, 'PROD', 3, 1, 'Studio环境'),
|
||||||
|
('studio', 'publish_status', '草稿', 1, 'DRAFT', 1, 1, '发布状态'),
|
||||||
|
('studio', 'publish_status', '已发布', 2, 'PUBLISHED', 2, 1, '发布状态'),
|
||||||
|
('studio', 'publish_status', '已归档', 3, 'ARCHIVED', 3, 1, '发布状态'),
|
||||||
|
('workflow', 'status', '草稿', 1, 'DRAFT', 1, 1, 'Workflow状态'),
|
||||||
|
('workflow', 'status', '启用', 2, 'ENABLED', 2, 1, 'Workflow状态'),
|
||||||
|
('workflow', 'status', '停用', 3, 'DISABLED', 3, 1, 'Workflow状态'),
|
||||||
|
('workflow', 'run_status', '排队中', 1, 'QUEUED', 1, 1, 'Workflow运行状态'),
|
||||||
|
('workflow', 'run_status', '运行中', 2, 'RUNNING', 2, 1, 'Workflow运行状态'),
|
||||||
|
('workflow', 'run_status', '成功', 3, 'SUCCESS', 3, 1, 'Workflow运行状态'),
|
||||||
|
('workflow', 'run_status', '失败', 4, 'FAILED', 4, 1, 'Workflow运行状态'),
|
||||||
|
('workflow', 'run_status', '取消', 5, 'CANCELED', 5, 1, 'Workflow运行状态'),
|
||||||
|
('workflow', 'node_type', '开始', 1, 'START', 1, 1, 'Workflow节点类型'),
|
||||||
|
('workflow', 'node_type', '大模型', 2, 'LLM', 2, 1, 'Workflow节点类型'),
|
||||||
|
('workflow', 'node_type', '知识检索', 3, 'KNOWLEDGE_RETRIEVAL', 3, 1, 'Workflow节点类型'),
|
||||||
|
('workflow', 'node_type', 'MCP工具', 4, 'MCP_TOOL', 4, 1, 'Workflow节点类型'),
|
||||||
|
('workflow', 'node_type', 'Skill', 5, 'SKILL', 5, 1, 'Workflow节点类型'),
|
||||||
|
('workflow', 'node_type', '条件', 6, 'CONDITION', 6, 1, 'Workflow节点类型'),
|
||||||
|
('workflow', 'node_type', '回答', 7, 'ANSWER', 7, 1, 'Workflow节点类型'),
|
||||||
|
('agent', 'session_status', '活跃', 1, 'ACTIVE', 1, 1, 'Agent会话状态'),
|
||||||
|
('agent', 'session_status', '已关闭', 2, 'CLOSED', 2, 1, 'Agent会话状态'),
|
||||||
|
('agent', 'session_status', '异常终止', 3, 'FAILED', 3, 1, 'Agent会话状态'),
|
||||||
|
('agent', 'message_role', '用户', 1, 'USER', 1, 1, 'Agent消息角色'),
|
||||||
|
('agent', 'message_role', '助手', 2, 'ASSISTANT', 2, 1, 'Agent消息角色'),
|
||||||
|
('agent', 'message_role', '系统', 3, 'SYSTEM', 3, 1, 'Agent消息角色'),
|
||||||
|
('agent', 'message_role', '工具', 4, 'TOOL', 4, 1, 'Agent消息角色'),
|
||||||
|
('mcp', 'import_type', 'URL导入', 1, 'URL', 1, 1, 'MCP导入方式'),
|
||||||
|
('mcp', 'import_type', 'npm包导入', 2, 'NPM_PACKAGE', 2, 1, 'MCP导入方式'),
|
||||||
|
('mcp', 'import_type', 'JSON声明导入', 3, 'JSON_MANIFEST', 3, 1, 'MCP导入方式'),
|
||||||
|
('mcp', 'capability_type', '工具', 1, 'TOOL', 1, 1, 'MCP能力类型'),
|
||||||
|
('mcp', 'capability_type', '资源', 2, 'RESOURCE', 2, 1, 'MCP能力类型'),
|
||||||
|
('mcp', 'capability_type', '提示词', 3, 'PROMPT', 3, 1, 'MCP能力类型'),
|
||||||
|
('mcp', 'health_status', '未知', 1, 'UNKNOWN', 1, 1, 'MCP健康状态'),
|
||||||
|
('mcp', 'health_status', '健康', 2, 'HEALTHY', 2, 1, 'MCP健康状态'),
|
||||||
|
('mcp', 'health_status', '异常', 3, 'UNHEALTHY', 3, 1, 'MCP健康状态'),
|
||||||
|
('skill', 'skill_type', '提示词', 1, 'PROMPT', 1, 1, 'Skill类型'),
|
||||||
|
('skill', 'skill_type', '代码', 2, 'CODE', 2, 1, 'Skill类型'),
|
||||||
|
('skill', 'skill_type', '混合', 3, 'MIXED', 3, 1, 'Skill类型'),
|
||||||
|
('skill', 'status', '草稿', 1, 'DRAFT', 1, 1, 'Skill状态'),
|
||||||
|
('skill', 'status', '已发布', 2, 'PUBLISHED', 2, 1, 'Skill状态'),
|
||||||
|
('skill', 'status', '已归档', 3, 'ARCHIVED', 3, 1, 'Skill状态'),
|
||||||
|
('agent', 'capability_owner_type', 'Agent', 1, 'AGENT', 1, 1, '能力绑定主体类型'),
|
||||||
|
('agent', 'capability_owner_type', 'Workflow', 2, 'WORKFLOW', 2, 1, '能力绑定主体类型'),
|
||||||
|
('agent', 'capability_type', '知识库', 1, 'RAG_STORE', 1, 1, '能力绑定能力类型'),
|
||||||
|
('agent', 'capability_type', 'MCP能力', 2, 'MCP_CAPABILITY', 2, 1, '能力绑定能力类型'),
|
||||||
|
('agent', 'capability_type', 'Skill', 3, 'SKILL', 3, 1, '能力绑定能力类型')
|
||||||
|
ON CONFLICT (catalog, type, name)
|
||||||
|
DO UPDATE SET
|
||||||
|
value = EXCLUDED.value,
|
||||||
|
strvalue = EXCLUDED.strvalue,
|
||||||
|
sort = EXCLUDED.sort,
|
||||||
|
remark = EXCLUDED.remark,
|
||||||
|
update_time = CURRENT_TIMESTAMP;
|
||||||
19
前端实现文档/6.MCP能力接入模块前端实现.md
Normal file
19
前端实现文档/6.MCP能力接入模块前端实现.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# MCP 能力接入模块前端实现
|
||||||
|
|
||||||
|
## 1. 页面
|
||||||
|
|
||||||
|
`McpImportPage.vue` 展示导入方式、Manifest 预览和能力预览。
|
||||||
|
|
||||||
|
## 2. 接口草案
|
||||||
|
|
||||||
|
- `POST /api/mcp/import`
|
||||||
|
- `GET /api/mcp/servers/{serverCode}/capabilities`
|
||||||
|
- `POST /api/mcp/servers/query`
|
||||||
|
- `POST /api/mcp/capabilities/save`
|
||||||
|
|
||||||
|
## 3. 交互规则
|
||||||
|
|
||||||
|
- 导入前校验地址或 Manifest 格式。
|
||||||
|
- 能力预览成功后才允许保存。
|
||||||
|
- 未授权能力显示待授权状态。
|
||||||
|
- 已停用 Server 的能力不可被 Workflow 新增选择。
|
||||||
19
前端实现文档/7.Skill编辑模块前端实现.md
Normal file
19
前端实现文档/7.Skill编辑模块前端实现.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Skill 编辑模块前端实现
|
||||||
|
|
||||||
|
## 1. 页面
|
||||||
|
|
||||||
|
`SkillWorkspacePage.vue` 提供 Prompt、Code、Config 编辑区,测试面板和版本列表。
|
||||||
|
|
||||||
|
## 2. 接口草案
|
||||||
|
|
||||||
|
- `GET /api/skills/{skillCode}`
|
||||||
|
- `PUT /api/skills/{skillCode}/draft`
|
||||||
|
- `POST /api/skills/{skillCode}/test`
|
||||||
|
- `POST /api/skills/{skillCode}/publish`
|
||||||
|
|
||||||
|
## 3. 交互规则
|
||||||
|
|
||||||
|
- 发布版本只读。
|
||||||
|
- 草稿变更后提示未发布。
|
||||||
|
- 测试结果保存到版本草稿。
|
||||||
|
- Workflow 只能选择发布版本或明确选择草稿测试。
|
||||||
28
前端实现文档/8.运行观测模块前端实现.md
Normal file
28
前端实现文档/8.运行观测模块前端实现.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# 运行观测模块前端实现
|
||||||
|
|
||||||
|
## 1. 页面
|
||||||
|
|
||||||
|
`ObservabilityPage.vue` 展示运行记录和步骤日志。
|
||||||
|
|
||||||
|
## 2. ViewModel
|
||||||
|
|
||||||
|
`ObservabilityView` 建议包含:
|
||||||
|
|
||||||
|
- 运行列表。
|
||||||
|
- 当前运行详情。
|
||||||
|
- 步骤日志。
|
||||||
|
- 模型调用摘要。
|
||||||
|
- 成本和延迟统计。
|
||||||
|
|
||||||
|
## 3. 接口草案
|
||||||
|
|
||||||
|
- `GET /api/observability/runs`
|
||||||
|
- `GET /api/observability/runs/{requestId}`
|
||||||
|
- `GET /api/observability/model-calls`
|
||||||
|
- `GET /api/observability/runs/{requestId}/export`
|
||||||
|
|
||||||
|
## 4. 交互规则
|
||||||
|
|
||||||
|
- 异常运行高亮展示。
|
||||||
|
- 步骤日志按执行时间排序。
|
||||||
|
- 导出日志不包含密钥或完整敏感请求体。
|
||||||
20
后端实现文档/6.MCP能力接入模块后端实现.md
Normal file
20
后端实现文档/6.MCP能力接入模块后端实现.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# MCP 能力接入模块后端实现
|
||||||
|
|
||||||
|
## 1. 包建议
|
||||||
|
|
||||||
|
后续实现建议新增 `com.bruce.mcp`,包含 Controller、DTO、Entity、Mapper、Service 和 MCP Client 适配。
|
||||||
|
|
||||||
|
## 2. Service 草案
|
||||||
|
|
||||||
|
| Service | 职责 |
|
||||||
|
|---------|------|
|
||||||
|
| `IMcpServerService` | Server 导入、启停用、健康检查 |
|
||||||
|
| `IMcpCapabilityService` | 能力发现、保存、启停用 |
|
||||||
|
| `IMcpImportService` | 处理 URL、package、Manifest 导入 |
|
||||||
|
|
||||||
|
## 3. 校验规则
|
||||||
|
|
||||||
|
- Server 编码唯一。
|
||||||
|
- 能力编码在 Server 下唯一。
|
||||||
|
- 导入方式必须来自枚举。
|
||||||
|
- 能力 schema 必须为合法 JSON。
|
||||||
20
后端实现文档/7.Skill编辑模块后端实现.md
Normal file
20
后端实现文档/7.Skill编辑模块后端实现.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Skill 编辑模块后端实现
|
||||||
|
|
||||||
|
## 1. 包建议
|
||||||
|
|
||||||
|
后续实现建议新增 `com.bruce.skill`。
|
||||||
|
|
||||||
|
## 2. Service 草案
|
||||||
|
|
||||||
|
| Service | 职责 |
|
||||||
|
|---------|------|
|
||||||
|
| `ISkillDefinitionService` | Skill 定义管理 |
|
||||||
|
| `ISkillVersionService` | 草稿保存、测试、发布、归档 |
|
||||||
|
| `ISkillRunner` | 运行 Skill 并生成测试结果 |
|
||||||
|
|
||||||
|
## 3. 校验规则
|
||||||
|
|
||||||
|
- Skill 编码唯一。
|
||||||
|
- 版本号在 Skill 内唯一。
|
||||||
|
- Prompt、Code、Config 至少一种非空。
|
||||||
|
- 变量 schema 必须为合法 JSON。
|
||||||
24
后端实现文档/8.运行观测模块后端实现.md
Normal file
24
后端实现文档/8.运行观测模块后端实现.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# 运行观测模块后端实现
|
||||||
|
|
||||||
|
## 1. 包建议
|
||||||
|
|
||||||
|
后续实现可新增 `com.bruce.observability`,也可以先由 Workflow、Agent 和模型模块分别提供查询接口。
|
||||||
|
|
||||||
|
## 2. Controller 草案
|
||||||
|
|
||||||
|
- `ObservabilityRunController`
|
||||||
|
- `ObservabilityModelCallController`
|
||||||
|
|
||||||
|
## 3. Service 草案
|
||||||
|
|
||||||
|
| Service | 职责 |
|
||||||
|
|---------|------|
|
||||||
|
| `IObservabilityRunService` | 聚合运行记录 |
|
||||||
|
| `IObservabilityTraceService` | 聚合步骤、会话和模型调用 |
|
||||||
|
| `IObservabilityExportService` | 导出脱敏日志 |
|
||||||
|
|
||||||
|
## 4. 校验规则
|
||||||
|
|
||||||
|
- 只允许查询脱敏后的运行摘要。
|
||||||
|
- 导出接口必须过滤密钥和完整请求内容。
|
||||||
|
- requestId 不存在时返回空结果而不是内部异常。
|
||||||
20
数据库设计/6.MCP数据库设计.md
Normal file
20
数据库设计/6.MCP数据库设计.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# MCP 数据库设计
|
||||||
|
|
||||||
|
## 1. 表结构
|
||||||
|
|
||||||
|
| 表 | 说明 |
|
||||||
|
|----|------|
|
||||||
|
| `mcp_server` | MCP 服务配置 |
|
||||||
|
| `mcp_capability` | MCP 能力清单 |
|
||||||
|
|
||||||
|
## 2. 约束
|
||||||
|
|
||||||
|
- `mcp_server.server_code` 唯一。
|
||||||
|
- `mcp_capability` 使用 `(server_id, capability_code)` 唯一。
|
||||||
|
- `mcp_capability.server_id` 引用 `mcp_server`。
|
||||||
|
|
||||||
|
## 3. 脚本
|
||||||
|
|
||||||
|
- `script/sql/mcp.sql`
|
||||||
|
- `docs/STUDIO_PROTOTYPE_SCHEMA.sql`
|
||||||
|
- `script/sql/studio_enum.sql`
|
||||||
20
数据库设计/7.Skill数据库设计.md
Normal file
20
数据库设计/7.Skill数据库设计.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Skill 数据库设计
|
||||||
|
|
||||||
|
## 1. 表结构
|
||||||
|
|
||||||
|
| 表 | 说明 |
|
||||||
|
|----|------|
|
||||||
|
| `skill_definition` | Skill 定义 |
|
||||||
|
| `skill_version` | Skill 版本 |
|
||||||
|
|
||||||
|
## 2. 约束
|
||||||
|
|
||||||
|
- `skill_definition.skill_code` 唯一。
|
||||||
|
- `skill_version` 使用 `(skill_id, version_no)` 唯一。
|
||||||
|
- `skill_version.skill_id` 引用 `skill_definition`。
|
||||||
|
|
||||||
|
## 3. 脚本
|
||||||
|
|
||||||
|
- `script/sql/skill.sql`
|
||||||
|
- `docs/STUDIO_PROTOTYPE_SCHEMA.sql`
|
||||||
|
- `script/sql/studio_enum.sql`
|
||||||
29
数据库设计/8.运行观测数据库设计.md
Normal file
29
数据库设计/8.运行观测数据库设计.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# 运行观测数据库设计
|
||||||
|
|
||||||
|
## 1. 表范围
|
||||||
|
|
||||||
|
运行观测复用已有运行表,不单独新增观测主表:
|
||||||
|
|
||||||
|
- `workflow_run`
|
||||||
|
- `workflow_run_step`
|
||||||
|
- `model_call_log`
|
||||||
|
- `agent_session`
|
||||||
|
- `agent_message`
|
||||||
|
|
||||||
|
## 2. 索引建议
|
||||||
|
|
||||||
|
- `workflow_run.request_id`
|
||||||
|
- `workflow_run.status`
|
||||||
|
- `workflow_run_step.run_id`
|
||||||
|
- `model_call_log.request_id`
|
||||||
|
- `model_call_log.task_type`
|
||||||
|
- `agent_session.agent_id`
|
||||||
|
|
||||||
|
## 3. 脚本
|
||||||
|
|
||||||
|
索引分散在:
|
||||||
|
|
||||||
|
- `script/sql/workflow.sql`
|
||||||
|
- `script/sql/model_provider.sql`
|
||||||
|
- `script/sql/agent_session.sql`
|
||||||
|
- `docs/STUDIO_PROTOTYPE_SCHEMA.sql`
|
||||||
26
设计文档/6.MCP能力接入模块设计.md
Normal file
26
设计文档/6.MCP能力接入模块设计.md
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# MCP 能力接入模块设计
|
||||||
|
|
||||||
|
## 1. 核心模型
|
||||||
|
|
||||||
|
| 对象 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| MCP Server | 外部能力服务 |
|
||||||
|
| MCP Capability | Server 暴露的工具或资源 |
|
||||||
|
| Manifest | Server 能力声明 |
|
||||||
|
|
||||||
|
## 2. 导入流程
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
Input["输入 URL/package/Manifest"] --> Validate["校验连接与声明"]
|
||||||
|
Validate --> Server["写入 mcp_server"]
|
||||||
|
Server --> Capability["写入 mcp_capability"]
|
||||||
|
Capability --> Binding["绑定给 Workflow/Agent"]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. 设计约束
|
||||||
|
|
||||||
|
- `secret_ref` 只保存密钥引用,不保存明文密钥。
|
||||||
|
- `manifest_json` 保存原始能力声明摘要。
|
||||||
|
- `schema_json` 保存单个能力输入输出 schema。
|
||||||
|
- Server 停用时,其能力不应被新运行选择。
|
||||||
23
设计文档/7.Skill编辑模块设计.md
Normal file
23
设计文档/7.Skill编辑模块设计.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Skill 编辑模块设计
|
||||||
|
|
||||||
|
## 1. 核心模型
|
||||||
|
|
||||||
|
| 对象 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| Skill 定义 | Skill 主数据 |
|
||||||
|
| Skill 版本 | Prompt、Code、Config 与测试结果快照 |
|
||||||
|
|
||||||
|
## 2. 版本规则
|
||||||
|
|
||||||
|
- 草稿版本可编辑。
|
||||||
|
- 发布版本不可直接修改。
|
||||||
|
- 归档版本仅可查看。
|
||||||
|
- Workflow 运行必须引用确定版本。
|
||||||
|
|
||||||
|
## 3. 数据设计
|
||||||
|
|
||||||
|
- `prompt_text` 保存提示词。
|
||||||
|
- `code_text` 保存脚本或函数片段。
|
||||||
|
- `config_json` 保存运行配置。
|
||||||
|
- `variable_schema_json` 保存输入输出变量定义。
|
||||||
|
- `test_result_json` 保存最近测试结果摘要。
|
||||||
35
设计文档/8.运行观测模块设计.md
Normal file
35
设计文档/8.运行观测模块设计.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# 运行观测模块设计
|
||||||
|
|
||||||
|
## 1. 观测主键
|
||||||
|
|
||||||
|
运行观测以 `request_id` 为主线串联:
|
||||||
|
|
||||||
|
- Workflow 运行。
|
||||||
|
- Workflow 步骤。
|
||||||
|
- Agent 会话。
|
||||||
|
- 模型调用日志。
|
||||||
|
|
||||||
|
## 2. 展示维度
|
||||||
|
|
||||||
|
- 名称。
|
||||||
|
- 类型。
|
||||||
|
- 状态。
|
||||||
|
- 延迟。
|
||||||
|
- 成本。
|
||||||
|
- 步骤输出。
|
||||||
|
- 错误摘要。
|
||||||
|
|
||||||
|
## 3. 数据来源
|
||||||
|
|
||||||
|
| 来源 | 表 |
|
||||||
|
|------|----|
|
||||||
|
| 流程运行 | `workflow_run` |
|
||||||
|
| 步骤日志 | `workflow_run_step` |
|
||||||
|
| 模型调用 | `model_call_log` |
|
||||||
|
| Agent 会话 | `agent_session`、`agent_message` |
|
||||||
|
|
||||||
|
## 4. 设计约束
|
||||||
|
|
||||||
|
- 观测模块只读业务运行数据。
|
||||||
|
- 不保存完整 Prompt 或敏感密钥。
|
||||||
|
- 错误信息只保存摘要,详细日志由运行环境负责。
|
||||||
20
需求分析/6.MCP能力接入模块需求.md
Normal file
20
需求分析/6.MCP能力接入模块需求.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# MCP 能力接入模块需求
|
||||||
|
|
||||||
|
## 1. 模块目标
|
||||||
|
|
||||||
|
MCP 能力接入模块负责导入外部 MCP Server,读取能力清单,并把工具或资源能力绑定给 Workflow 和 Agent 使用。
|
||||||
|
|
||||||
|
## 2. 功能需求
|
||||||
|
|
||||||
|
- 支持 URL、npm package、JSON Manifest 三种导入方式。
|
||||||
|
- 支持保存 Server 连接信息、鉴权方式、密钥引用和 Manifest。
|
||||||
|
- 支持发现工具、资源等能力。
|
||||||
|
- 支持能力启停用。
|
||||||
|
- 支持健康状态展示。
|
||||||
|
|
||||||
|
## 3. 关联资料
|
||||||
|
|
||||||
|
- 表:`mcp_server`、`mcp_capability`
|
||||||
|
- 枚举:`mcp/import_type`、`mcp/capability_type`、`mcp/health_status`
|
||||||
|
- 脚本:`script/sql/mcp.sql`、`script/sql/studio_enum.sql`
|
||||||
|
- 前端原型:`McpImportPage.vue`
|
||||||
20
需求分析/7.Skill编辑模块需求.md
Normal file
20
需求分析/7.Skill编辑模块需求.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Skill 编辑模块需求
|
||||||
|
|
||||||
|
## 1. 模块目标
|
||||||
|
|
||||||
|
Skill 编辑模块负责维护可复用的提示词、代码片段、配置和测试结果,使 Workflow 或 Agent 可以复用稳定的能力单元。
|
||||||
|
|
||||||
|
## 2. 功能需求
|
||||||
|
|
||||||
|
- 支持 Skill 定义管理。
|
||||||
|
- 支持版本草稿、发布和归档。
|
||||||
|
- 支持 Prompt、Code、Config 三类编辑区域。
|
||||||
|
- 支持变量 schema 和测试结果保存。
|
||||||
|
- 支持发布版本供 Workflow 或 Agent 绑定。
|
||||||
|
|
||||||
|
## 3. 关联资料
|
||||||
|
|
||||||
|
- 表:`skill_definition`、`skill_version`
|
||||||
|
- 枚举:`skill/skill_type`、`skill/status`、`studio/publish_status`
|
||||||
|
- 脚本:`script/sql/skill.sql`、`script/sql/studio_enum.sql`
|
||||||
|
- 前端原型:`SkillWorkspacePage.vue`
|
||||||
19
需求分析/8.运行观测模块需求.md
Normal file
19
需求分析/8.运行观测模块需求.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# 运行观测模块需求
|
||||||
|
|
||||||
|
## 1. 模块目标
|
||||||
|
|
||||||
|
运行观测模块负责展示 Workflow、Agent、MCP、Skill 和模型调用的运行记录,支撑排障、成本分析和发布质量评估。
|
||||||
|
|
||||||
|
## 2. 功能需求
|
||||||
|
|
||||||
|
- 展示最近运行记录。
|
||||||
|
- 展示步骤日志和节点输出摘要。
|
||||||
|
- 展示模型调用耗时、Token 和成本。
|
||||||
|
- 支持按 requestId 追踪一次完整运行。
|
||||||
|
- 支持导出日志。
|
||||||
|
|
||||||
|
## 3. 关联资料
|
||||||
|
|
||||||
|
- 表:`workflow_run`、`workflow_run_step`、`model_call_log`、`agent_session`、`agent_message`
|
||||||
|
- 脚本:`script/sql/workflow.sql`、`script/sql/model_provider.sql`、`script/sql/agent_session.sql`
|
||||||
|
- 前端原型:`ObservabilityPage.vue`
|
||||||
Reference in New Issue
Block a user