当前位置: 首页 > news >正文

Coze源码分析-资源库-删除工作流-后端源码-IDL/API/应用/领域

前言

本文将深入分析Coze Studio项目中用户删除工作流功能的后端实现。当用户登录Coze平台后,点击"资源库" → 在表格中点击要删除的工作流行最右边的"…"号 → 最后点击弹出菜单中的"删除"菜单,触发的是一个完整的工作流资源删除流程。工作流作为AI应用开发的核心组件,其删除操作涉及权限验证、数据清理和多个后端服务层的协同工作。通过源码解读,我们将深入理解工作流删除功能在整个Coze Studio后端架构中的设计思路和技术实现细节。

项目架构概览

工作流删除功能架构设计

Coze Studio的工作流删除功能采用了经典的分层架构模式,专门针对工作流资源的安全删除进行了优化设计。整个架构围绕工作流的权限验证、删除操作、数据清理和事件通知展开:

┌─────────────────────────────────────────────────────────────┐
│                    IDL接口定义层                             │
│  ┌─────────────┐  ┌─────────────┐    ┌─────────────┐        │
│  │ base.thrift │  │ workflow.   │    │ workflow_   │        │
│  │             │  │thrift       │    │svc.thrift   │        │
│  │             │  │             │    │             │        │
│  └─────────────┘  └─────────────┘    └─────────────┘        │
└─────────────────────────────────────────────────────────────┘↓
┌─────────────────────────────────────────────────────────────┐
│                    API网关层                                 │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐          │
│  │   Handler   │  │   Router    │  │ Middleware  │          │
│  │   处理器     │  │   路由      │  │   中间件     │          │
│  └─────────────┘  └─────────────┘  └─────────────┘          │
└─────────────────────────────────────────────────────────────┘↓
┌─────────────────────────────────────────────────────────────┐
│                   应用服务层                                 │
│  ┌─────────────────────────────────────────────────────┐    │
│  │           WorkflowApplicationService                 │    │
│  │            DeleteWorkflow/BatchDeleteWorkflow        │    │
│  └─────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────┘↓
┌─────────────────────────────────────────────────────────────┐
│                   领域服务层                                 │
│  ┌─────────────────────────────────────────────────────┐    │
│  │              workflowServiceImpl                    │    │
│  │                ┌─────────────────┐                  │    │
│  │                │DeleteWorkflow   │                  │    │
│  │                │DeleteWorkflow   │                  │    │
│  │                │Resource         │                  │    │
│  │                └─────────────────┘                  │    │
│  └─────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────┘↓
┌─────────────────────────────────────────────────────────────┐
│                   数据访问层                                 │
│  ┌─────────────────────────────────────────────────────┐    │
│  │              WorkflowRepository                     │    │
│  │  ┌──── ─────── ──── ──┐  ┌─────────────────────────┐│    │
│  │  │WorkflowDAO         │  │workflow.gen.go          ││    │
│  │  │DeleteWorkflow      │  │workflow_draft.gen.go    ││    │
│  │  │WorkflowDraftDAO    │  │GORM Generated Code      ││    │
│  │  └──── ─────── ─── ───┘  └─────────────────────────┘│    │
│  └─────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────┘↓
┌─────────────────────────────────────────────────────────────┐
│                   基础设施层                                 │
│              ┌─ ─ ─── ─ ── ── ─ ─ ─┐                        │
│              │       gorm.DB       │                        │
│              │ es.Client redisImpl │                        │
│              └── ─ ── ── ─ ── ── ─ ┘                        │
└─────────────────────────────────────────────────────────────┘↓
┌─────────────────────────────────────────────────────────────┐
│                   存储服务层                                 │
│  ┌─────────────────────────────────────────────────────┐    │
│  │       MySQL数据库       Redis数据库                  │    │
│  │            ElasticSearch数据库                      │    │
│  └─────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────┘

工作流删除流程核心组件

API路由映射:

  • POST /api/workflow_api/delete - 删除工作流
  • POST /api/workflow_api/batch_delete - 批量删除工作流

核心数据模型:

type WorkflowMeta struct {ID              int64     `gorm:"primaryKey;autoIncrement"`WorkflowID      string    `gorm:"size:255;not null;uniqueIndex"`SpaceID         int64     `gorm:"not null;index"`Name            string    `gorm:"size:255;not null"`Description     string    `gorm:"type:text"`OwnerID         int64     `gorm:"not null;index"`IsDraft         int32     `gorm:"default:0"`Status          int32     `gorm:"default:1"`CreatedAt       time.Time `gorm:"autoCreateTime"`UpdatedAt       time.Time `gorm:"autoUpdateTime"`
}type WorkflowDraft struct {ID              int64     `gorm:"primaryKey;autoIncrement"`WorkflowID      string    `gorm:"size:255;not null;index"`Content         string    `gorm:"type:text"`Version         int32     `gorm:"not null"`CreatedAt       time.Time `gorm:"autoCreateTime"`UpdatedAt       time.Time `gorm:"autoUpdateTime"`
}

1. IDL接口定义层

IDL基础类型定义(base.thrift)

文件位置:idl/base.thrift
核心代码:

namespace py base
namespace go base
namespace java com.bytedance.thrift.basestruct TrafficEnv {1: bool   Open = false,2: string Env  = ""   ,
}struct Base {1:          string             LogID      = "",2:          string             Caller     = "",3:          string             Addr       = "",4:          string             Client     = "",5: optional TrafficEnv         TrafficEnv     ,6: optional map<string,string> Extra          ,
}struct BaseResp {1:          string             StatusMessage = "",2:          i32                StatusCode    = 0 ,3: optional map<string,string> Extra             ,
}

文件作用:
定义了Coze Studio项目中所有接口的基础数据结构,作为其他IDL文件的依赖基础。

工作流接口定义(workflow.thrift)

文件位置:idl/workflow/workflow.thrift

当Coze用户登录平台后点击"资源库" → 在表格中点击要删除的工作流行最右边的"…"号 → 最后点击弹出菜单中的"删除"菜单时,前端会调用工作流删除相关的接口。该文件定义了工作流删除的核心数据结构和接口。

核心数据结构 - Workflow
struct Workflow {1: optional string WorkflowID (agw.js_conv="str",api.js_conv="true",api.body="workflow_id")2: optional i64 SpaceID (agw.js_conv="str",api.js_conv="true",api.body="space_id")3: optional string Name (api.body="name")4: optional string Description (api.body="description")5: optional i64 OwnerID (agw.js_conv="str",api.js_conv="true",api.body="owner_id")6: optional i32 Status (api.body="status")7: optional i32 IsDraft (api.body="is_draft")
}
删除工作流接口
struct DeleteWorkflowRequest {1: required string workflow_id (agw.js_conv="str",api.js_conv="true",api.body="workflow_id")255: base.Base Base (api.none="true")
}struct DeleteWorkflowResponse {253: required i64    code254: required string msg255: required base.BaseResp BaseResp
}

工作流服务接口(workflow.thrift)

文件位置:idl/workflow/workflow.thrift

该文件定义了WorkflowService服务的核心接口,包括工作流管理的服务接口定义。

WorkflowService服务定义
service WorkflowService {DeleteWorkflowResponse DeleteWorkflow(1:DeleteWorkflowRequest request)(api.post='/api/workflow_api/delete', api.category="workflow",agw.preserve_base="true")// 其他服务接口...
}

工作流接口路由映射说明:

  • DeleteWorkflow: POST /api/workflow_api/delete - 删除工作流

接口功能说明:

  • 数据结构设计: Workflow包含WorkflowID、空间ID、名称、描述、所有者ID、状态和是否草稿等核心字段
  • CRUD操作: 支持完整的创建、读取、更新、删除操作

IDL主API服务聚合文件(api.thrift)

文件位置:idl/api.thrift

该文件是整个Coze项目的API服务聚合入口点,负责将所有业务模块的IDL服务定义统一聚合,为代码生成工具提供完整的服务接口定义。

核心代码:


include "./workflow/workflow.thrift"namespace go coze// 工作流核心服务聚合
service WorkflowService extends workflow.WorkflowService {}
// 其他业务服务聚合

工作流接口聚合说明:
通过 service WorkflowService extends workflow.WorkflowService {} 聚合定义,api.thrift将workflow.thrift中定义的所有工作流相关接口统一暴露.

2. API网关层

接口定义-workflow.go文件详细分析

文件位置:backend\api\model\workflow\workflow.go
核心代码:

type WorkflowService interface {DeleteWorkflow(ctx context.Context, request *DeleteWorkflowRequest) (r *DeleteWorkflowResponse, err error)}
工作流相关接口模型定义

当Coze用户登录平台后点击"资源库" → 在表格中点击要删除的工作流行最右边的"…"号 → 最后点击弹出菜单中的"删除"菜单时,前端会调用工作流删除接口来删除指定的工作流资源。

DeleteWorkflowRequest 删除工作流请求结构体

type DeleteWorkflowRequest struct {// 要删除的工作流IDWorkflowId string    `thrift:"workflow_id,1,required" form:"workflow_id,required" json:"workflow_id,required" query:"workflow_id,required"`Base       *base.Base `thrift:"Base,255" form:"Base" json:"Base" query:"Base"`
}
接口功能说明

业务功能

  • 工作流删除:根据工作流ID删除指定的工作流资源
  • 权限验证:确保只有有权限的用户才能删除工作流
  • 数据清理:删除工作流时同时清理相关的草稿和依赖数据
  • 操作审计:记录删除操作的日志和审计信息

技术特性

  • 类型安全:使用强类型定义确保工作流数据的一致性
  • 多格式支持:支持thrift、form、json、query等多种序列化格式
  • 参数验证:通过required标记确保必要参数的完整性
  • 统一响应:遵循统一的响应格式规范
  • 事务处理:确保工作流及其关联数据的原子性删除

文件作用
由thriftgo自动生成的Go代码文件,基于workflow.thrift IDL定义生成对应的Go结构体和接口,提供类型安全的工作流API模型。该文件实现了完整的Thrift RPC通信机制,包括客户端调用、服务端处理、序列化/反序列化等功能,确保了工作流服务间的可靠通信。

工作流接口处理器实现

文件位置:backend/api/handler/coze/workflow_service.go

该文件包含了用户登录后点击"资源库" → 在表格中点击要删除的工作流行最右边的"…"号 → 最后点击弹出菜单中的"删除"菜单功能的核心API接口处理器,主要负责处理工作流资源的删除功能。

核心代码:

// DeleteWorkflow 删除工作流
// @router /api/workflow_api/delete [POST]
func DeleteWorkflow(ctx context.Context, c *app.RequestContext) {var err errorvar req workflow.DeleteWorkflowRequesterr = c.BindAndValidate(&req)if err != nil {invalidParamRequestResponse(c, err.Error())return}// 参数验证if req.WorkflowId == "" {invalidParamRequestResponse(c, "workflow_id is empty")return}// 调用应用服务层resp, err := appworkflow.SVC.DeleteWorkflow(ctx, &req)if err != nil {internalServerErrorResponse(ctx, c, err)return}successResponse(c, resp)
}

实现功能

  1. 参数验证:验证工作流ID的有效性,确保参数合法
  2. 业务调用:调用appworkflow.SVC应用服务层的DeleteWorkflow方法处理工作流删除业务逻辑
  3. 错误处理:统一的错误处理机制,包括参数错误和内部服务错误
  4. 响应返回:返回标准化的删除操作响应结果

参数校验逻辑

  • 工作流ID验证:确保工作流ID不为空,防止无效的删除操作
  • 请求格式验证:确保请求参数符合定义的数据结构要求
  • 业务逻辑委托:将具体的权限验证和存在性检查委托给应用服务层处理

路由注册实现-api.go文件详细分析

文件位置:backend/api/router/coze/api.go
核心代码:

// Code generated by hertz generator. DO NOT EDIT.
func Register(r *server.Hertz) {root := r.Group("/", rootMw()...){_api := root.Group("/api", _apiMw()...){_workflow_api := _api.Group("/workflow_api", _workflow_apiMw()...)_workflow_api.POST("/delete", append(_deleteworkflowMw(), coze.DeleteWorkflow)...)// ... 其他workflow相关路由}}
}

文件作用:
此文件是Coze Studio后端的核心路由注册文件,由hertz generator自动生成,负责将所有HTTP API接口路由与对应的处理函数进行绑定和注册。该文件构建了完整的RESTful API路由树结构。对于工作流模块,构建了层次化的路由结构:

/api/workflow_api/delete [POST]
├── rootMw() # 根级中间件
├── _apiMw() # API组中间件
├── _workflow_apiMw() # workflow API组中间件
├── _deleteworkflowMw() # 删除工作流接口中间件
└── coze.DeleteWorkflow # 处理函数

中间件系统-middleware.go文件详细分析

文件位置:backend/api/router/coze/middleware.go
核心代码:

func _workflow_apiMw() []app.HandlerFunc {// workflow API模块中间件return nil
}func _deleteworkflowMw() []app.HandlerFunc {// 删除工作流接口专用中间件return nil
}

文件作用:

  1. 中间件函数定义:为提示词模块的每个路由组和特定路由提供中间件挂载点
  2. 路由层级管理:按照路由的层级结构组织中间件函数,支持三层中间件架构
  3. 开发者扩展接口:提供统一的接口供开发者添加自定义中间件逻辑,如认证、鉴权、限流、日志记录等
  4. 粒度化控制:支持从模块级别到接口级别的细粒度中间件控制
  5. 功能扩展:可在此处添加提示词访问权限检查、请求日志记录、性能监控等功能

API网关层Restful接口路由-Coze+Hertz

Hertz为每个HTTP方法维护独立的路由树,通过分组路由的方式构建层次化的API结构。对于工作流删除接口的完整路由链路:

/api/workflow_api/delete [POST]
├── rootMw() # 根级中间件(全局认证、CORS等)
├── _apiMw() # API组中间件(API版本控制、通用验证)
├── _workflow_apiMw() # workflow API组中间件(workflow相关权限检查)
├── _deleteworkflowMw() # 接口级中间件(删除工作流特定逻辑)
└── coze.DeleteWorkflow # 处理函数

这种设计的优势:

  • 层次化管理:不同层级的中间件处理不同的关注点,职责清晰
  • 可扩展性:每个层级都可以独立添加中间件,不影响其他层级
  • 性能优化:中间件按需执行,避免不必要的开销
  • 多HTTP方法支持:支持POST和GET请求的JSON数据绑定和验证
  • 工作流管理:专门为工作流功能设计的路由结构,支持完整的CRUD操作
  • 统一错误处理:在中间件层面实现统一的错误处理和响应格式化
  • 安全控制:多层级的安全检查,确保工作流访问的安全性

3. 应用服务层

工作流应用服务初始化

文件位置:backend/application/workflow/workflow.go

WorkflowApplicationService是工作流应用服务层的核心组件,专门负责处理工作流资源的删除等业务逻辑,是连接API层和领域层的重要桥梁。在用户点击"资源库" → 在表格中点击要删除的工作流行最右边的"…"号 → 最后点击弹出菜单中的"删除"菜单的场景中,该服务承担着核心的删除业务处理职责。

服务结构定义

文件位置:backend/application/workflow/workflow.go

type WorkflowApplicationService struct {DomainSVC service.WorkflowServiceeventbus  search.ResourceEventBus
}var SVC = &WorkflowApplicationService{}
服务初始化实现

文件位置:backend/application/workflow/init.go

// InitService 初始化工作流应用服务,注入领域服务依赖
func InitService(workflowRepo repository.WorkflowRepository, eventbus ResourceEventBus) *WorkflowApplicationService {// 创建工作流领域服务workflowDomainSVC := service.NewService(workflowRepo)// 初始化应用服务service := &WorkflowApplicationService{DomainSVC: workflowDomainSVC,eventbus:  eventbus,}return service
}

服务初始化特点

  1. 依赖注入:通过Repository接口注入数据访问能力,实现依赖倒置
  2. 事件驱动架构:集成资源事件总线,支持异步事件处理和数据同步
  3. 领域服务协调:封装工作流领域服务,提供应用层的业务编排
  4. 单一仓储支持:注入工作流仓储,支持工作流的完整生命周期管理

删除工作流核心实现

DeleteWorkflow方法详解

文件位置:backend/application/workflow/workflow.go

当用户在资源库中点击要删除的工作流行最右边的"…"号,然后点击弹出菜单中的"删除"菜单时,前端会调用DeleteWorkflow方法来删除指定的工作流资源。

func (w *WorkflowApplicationService) DeleteWorkflow(ctx context.Context, req *workflowAPI.DeleteWorkflowRequest) (resp *workflowAPI.DeleteWorkflowResponse, err error) {_, err = w.validateDraftWorkflowAccess(ctx, req.WorkflowId)if err != nil {return nil, errorx.Wrapf(err, "validateDeleteWorkflowRequest failed")}err = w.DomainSVC.DeleteDraftWorkflow(ctx, req.WorkflowId)if err != nil {return nil, errorx.Wrapf(err, "DeleteDraftWorkflow failed, workflowId=%s", req.WorkflowId)}err = w.eventbus.PublishResources(ctx, &searchEntity.ResourceDomainEvent{OpType: searchEntity.Deleted,Resource: &searchEntity.ResourceDocument{ResType:      resCommon.ResType_Workflow,ResID:        req.WorkflowId,UpdateTimeMS: ptr.Of(time.Now().UnixMilli()),},})if err != nil {return nil, errorx.Wrapf(err, "publish resource '%s' failed", req.WorkflowId)}resp = &workflowAPI.DeleteWorkflowResponse{}return resp, nil
}

方法功能特点

  1. 权限验证:通过validateDraftWorkflowAccess验证用户对工作流的访问权限
  2. 领域服务调用:调用领域服务层的DeleteDraftWorkflow方法执行删除逻辑
  3. 事件发布:删除完成后发布删除事件,支持搜索索引更新等下游处理
  4. 错误处理:完善的错误处理机制,包装错误信息便于调试
  5. 时间戳记录:在事件中记录删除时间,便于审计和追踪
删除工作流业务流程

删除工作流的完整业务流程包括以下几个关键步骤:

  1. 权限验证:验证用户对要删除工作流的访问权限
  2. 执行删除操作:调用领域服务执行实际的删除操作
  3. 事件发布:发布删除事件,通知其他系统组件进行相应处理
  4. 返回响应:返回删除操作的结果

删除操作的安全性保障

  • 权限控制:严格的工作流访问权限验证,防止越权删除
  • 数据一致性:通过事务确保删除操作的原子性
  • 事件驱动:异步事件处理,确保相关数据的同步更新
  • 错误处理:完善的错误处理机制,确保系统稳定性

4. 领域服务层

工作流领域服务层架构

工作流领域服务层是Coze Studio中处理工作流业务逻辑的核心层,负责工作流资源的删除、管理和业务规则实现。该层采用领域驱动设计(DDD)模式,将业务逻辑与数据访问分离,确保代码的可维护性和可扩展性。

工作流领域服务接口定义

文件位置:backend/domain/workflow/service/service.go

工作流领域服务接口定义了工作流管理的核心业务能力,包括工作流资源的完整生命周期管理。

type WorkflowService interface {// 删除草稿工作流DeleteDraftWorkflow(ctx context.Context, workflowId string) error// 其他工作流管理方法CreateDraftWorkflow(ctx context.Context, req *CreateDraftWorkflowRequest) (*CreateDraftWorkflowResponse, error)GetDraftWorkflow(ctx context.Context, workflowId string) (*entity.WorkflowInfo, bool, error)UpdateDraftWorkflow(ctx context.Context, req *UpdateDraftWorkflowRequest) error
}

核心接口功能

  1. 工作流资源管理:创建、获取、更新、删除用户自定义的工作流资源
  2. 删除操作核心:DeleteDraftWorkflow方法是删除工作流的核心业务接口
  3. 草稿管理:专门处理草稿状态的工作流,支持开发过程中的迭代
  4. 业务规则封装:封装工作流相关的业务逻辑和验证规则
  5. 数据一致性:确保工作流数据的完整性和一致性
工作流领域服务实现

文件位置:backend/domain/workflow/service/workflow_draft.go

工作流服务实现类包含了所有工作流相关业务逻辑的具体实现,依赖于仓储层进行数据持久化。

type workflowServiceImpl struct {workflowRepo repository.WorkflowRepository
}func NewService(workflowRepo repository.WorkflowRepository) WorkflowService {return &workflowServiceImpl{workflowRepo: workflowRepo,}
}// DeleteDraftWorkflow 删除草稿工作流
func (w *workflowServiceImpl) DeleteDraftWorkflow(ctx context.Context, workflowId string) (err error) {return w.workflowRepo.DeleteDraftWorkflow(ctx, workflowId)
}

删除操作实现特点

  1. 依赖注入:通过Repository接口注入数据访问能力,实现松耦合
  2. 仓储模式:使用Repository模式进行数据访问抽象,隔离业务逻辑与数据层
  3. 简洁删除:DeleteDraftWorkflow方法实现简洁,直接调用仓储层删除操作
  4. 错误传播:统一的错误处理和传播机制,确保删除异常的正确处理
  5. 业务隔离:领域服务层专注于业务逻辑,数据操作委托给仓储层
  6. 单一仓储管理:专注于工作流仓储管理,支持工作流的删除操作

DeleteDraftWorkflow方法详解

  • 参数简洁:只需要workflowId参数,通过ID精确定位要删除的工作流
  • 错误处理:直接传播仓储层的错误,保持错误信息的完整性
  • 返回值:删除成功返回nil,失败返回具体错误信息
  • 业务纯净:不包含权限验证等应用层逻辑,专注于领域层的删除操作
工作流实体定义

文件位置:backend/domain/workflow/entity/workflow.go

工作流实体定义了工作流资源的核心数据结构,包含了工作流的所有关键属性。

type WorkflowInfo struct {ID            string                 // 工作流唯一标识WorkflowType  common.WorkflowType    // 工作流类型SpaceID       int64                  // 所属空间ID,支持多租户隔离OwnerID       int64                  // 所有者IDStatus        common.WorkflowStatus  // 工作流状态IsDraft       bool                   // 是否为草稿状态Name          string                 // 工作流名称Description   string                 // 工作流描述FlowConfig    *model.FlowConfig      // 工作流配置CreatedAt     int64                  // 创建时间戳UpdatedAt     int64                  // 更新时间戳
}

实体设计特点

  1. 基础信息:包含ID、类型、空间等基本属性,满足工作流的基本信息需求
  2. 类型支持:WorkflowType字段支持不同类型的工作流,灵活适配不同场景
  3. 多租户支持:SpaceID字段支持多租户和空间隔离,确保数据安全
  4. 所有者管理:OwnerID字段支持工作流所有权管理和权限控制
  5. 状态管理:Status和IsDraft字段支持工作流的生命周期管理
  6. 配置管理:FlowConfig字段存储工作流的流程配置信息
  7. 时间追踪:CreatedAt和UpdatedAt支持创建和更新时间追踪,便于审计和版本管理
http://www.dtcms.com/a/392283.html

相关文章:

  • MySQL库和表的操作语句
  • python、类
  • NumPy高级技巧:向量化、广播与einsum的高效使用
  • GD32VW553-IOT 基于 vscode 的 msdk 移植(基于Cmake)
  • Filter 过滤器详解与使用指南
  • 养成合成小游戏抖音快手微信小程序看广告流量主开源
  • 在 Ubuntu 系统下安装 Conda
  • ac8257 android 9 SYSTEM_LAST_KMSG
  • ARM 架构与嵌入式系统
  • ARM(14) - LCD(1)清屏和画图形
  • Linux第十九讲:传输层协议UDP
  • 计算机网络学习(四、网络层)
  • 开启科学计算之旅:《MATLAB程序设计》课程导览
  • MATLAB | 数学模型 | 传染病 SIR 模型的参数确定
  • MATLAB基本运算(2)
  • 小红书数据分析面试题及参考答案
  • SpringCloudStream:消息驱动组件
  • ret2text-CTFHub技能树
  • VirtualBox 7 虚拟机的硬盘如何扩大?
  • React新闻发布系统 权限列表开发
  • 23种设计模式之【策略模式】-核心原理与 Java 实践
  • 前端实战从零构建响应式井字棋游戏
  • Java中的equals()与hashCode()
  • 【绕过open_basedir】
  • 如何用户细分
  • 福彩双色球第2025109期篮球号码分析
  • 思考:客户端负载均衡和服务器负载均衡有什么区别?
  • 网络编程day04/05原始套接字
  • Yarn命令与npm命令的区别与联系(npm:Node.js的官方包管理工具;Yarn:Facebook开发的JavaScript包管理工具)
  • 【大语言模型 67】梯度压缩与稀疏通信