# 灵隙协议组件实现规范:七大组件层 > 版本:1.0.0 | 层级:实现层 | 依赖:v1 各核心协议 根据 [v0/06-implementation-details.md](file:///e:/code/go/synapse/docs/v0/06-implementation-details.md) 的第1章内容,分别创建以下7个组件的规范(每组包含:定位说明、核心功能表、数据结构定义)。 --- ## 1. 灵脉 Meridian - 寻址与路由层 ### 定位说明 Agent 之间虽有空隙(灵隙),但暗中有能量流动的轨迹(脉)。此层负责维护全局路由表。 ### 核心功能 | 功能 | 方法 | 说明 | |-----|------|------| | Agent 注册 | `Register(endpoint)` | Agent "通脉"入网 | | Agent 注销 | `Unregister(agentID)` | Agent "断脉"离场 | | Agent 查询 | `GetAgent(agentID)` | 获取 Agent 端点信息 | | Agent 列表 | `ListAgents()` | 列出所有活跃 Agent | | 心跳保活 | `Heartbeat(agentID)` | 刷新 Agent TTL | | 按能力查找 | `FindByCapability(capability)` | 查找具备特定能力的 Agent | ### 数据结构定义 ```go // AgentEndpoint - Agent 端点信息 type AgentEndpoint struct { AgentID string // Agent 唯一标识 AgentName string // Agent 名称 SystemID string // 所属系统 ID Endpoint string // 回调端点 URL Version string // Agent 版本 Capabilities []string // 能力标签列表 Metadata map[string]interface{} // 扩展元数据 } // RegistryConfig - 注册表配置 type RegistryConfig struct { DefaultTTL time.Duration // 默认存活时间(5分钟) } ``` ### 拓扑管理 ```go // 拓扑类型 type TopologyType string const ( TopologyStar = "star" // 星型拓扑(中心协调) TopologyMesh = "mesh" // 网状拓扑(全互联) TopologyRing = "ring" // 环形拓扑(环形传递) TopologyTree = "tree" // 树形拓扑(层级管理) TopologyHybrid = "hybrid" // 混合拓扑 ) // 拓扑管理接口 type TopologyManager interface { CreateTopology(id, name string, topologyType TopologyType) *NetworkTopology AddNode(topologyID, nodeID string) error AddEdge(topologyID, from, to string) error GetNeighbors(topologyID, nodeID string) ([]string, error) } ``` --- ## 2. 灵玺 Sigil - 身份与凭证层 ### 定位说明 皇帝的玉玺是最高凭证。每个 Agent 的初始身份都需经过"铸玺"过程,每一次交互都要"验玺"。 ### 核心功能 | 功能 | 方法 | 说明 | |-----|------|------| | 创建身份 | `CreateIdentity(agentID, ...)` | "铸玺" - 创建身份凭证 | | 获取身份 | `GetIdentity(agentID)` | 获取 Agent 身份信息 | | 撤销身份 | `RevokeIdentity(agentID)` | "废玺" - 撤销身份 | | 检查撤销 | `IsRevoked(agentID)` | 检查身份是否已撤销 | | 签名消息 | `SignMessage(msg)` | 对消息签名 | | 验证签名 | `VerifySignature(msg)` | 验证消息签名 | | 颁发令牌 | `IssueToken(agentID, ...)` | 颁发认证令牌 | | 验证令牌 | `ValidateToken(signedToken)` | 验证令牌有效性 | ### 数据结构定义 ```go // AgentIdentity - Agent 身份凭证 type AgentIdentity struct { AgentID string // Agent 唯一标识 AgentName string // Agent 名称 SystemID string // 所属系统 ID PublicKey string // 公钥(可选) PrivateKey string // 私钥(本地保存) AuthSecret string // HMAC 密钥 Roles []string // 角色列表 Permissions []string // 权限列表 CreatedAt time.Time // 创建时间 ExpiresAt *time.Time // 过期时间 RevokedAt *time.Time // 撤销时间 } // AuthToken - 认证令牌 type AuthToken struct { TokenID string // 令牌 ID AgentID string // 所属 Agent SystemID string // 所属系统 Roles []string // 角色列表 IssuedAt time.Time // 颁发时间 ExpiresAt time.Time // 过期时间 } ``` ### 签名算法 ```go // 支持的签名算法 type SignatureAlgorithm string const ( AlgHMACSHA256 SignatureAlgorithm = "HMAC-SHA256" // 默认 AlgHMACSHA512 SignatureAlgorithm = "HMAC-SHA512" // 可选 ) // 签名内容格式 // signature_content = sender_id | receiver_id | timestamp | payload_json ``` --- ## 3. 灵鉴 Speculum - 共识与裁决层 ### 定位说明 古有"以史为鉴",今有"以智为鉴"。此层通过对比推理链的严密性来达成共识,如青天明镜。 ### 核心功能 | 功能 | 方法 | 说明 | |-----|------|------| | 发起投票 | `InitiateVote(...)` | 创建投票议题 | | 提交投票 | `SubmitVote(voteID, voterID, optionID, reasoning)` | 提交投票 | | 关闭投票 | `CloseVote(voteID)` | 关闭并统计结果 | | 获取投票 | `GetVote(voteID)` | 获取投票信息 | | 仲裁争议 | `Arbitrate(ctx, dispute)` | 仲裁争议 | | 提交推理链 | `SubmitReasoning(chain)` | 提交推理链到镜面 | | 比较推理链 | `CompareReasonings(chainIDs)` | 比较推理链严密性 | ### 共识类型 ```go type ConsensusType string const ( ConsensusMajority = "majority" // 多数投票(>50%) ConsensusSupermajority = "supermajority" // 绝对多数(>67%) ConsensusUnanimity = "unanimity" // 一致同意(100%) ConsensusWeighted = "weighted" // 加权投票 ConsensusRanked = "ranked" // 排序投票 ) ``` ### 数据结构定义 ```go // Vote - 投票 type Vote struct { VoteID string // 投票 ID Question string // 投票问题 Options []VoteOption // 投票选项 Type ConsensusType // 共识类型 Initiator string // 发起者 Participants []string // 参与者列表 Votes map[string]string // voter_id -> option_id Weights map[string]float64 // voter_id -> 权重 Status VoteStatus // 投票状态 Deadline time.Time // 截止时间 Result *VoteResult // 投票结果 Reasoning map[string]string // voter_id -> 推理理由 } // VoteResult - 投票结果 type VoteResult struct { Winner string // 获胜选项 WinOption VoteOption // 获胜选项详情 VoteCounts map[string]int // 选项 -> 票数 Passed bool // 是否通过 Margin float64 // 得票率 } ``` ### 推理镜面 ```go // ReasoningChain - 推理链 type ReasoningChain struct { ChainID string // 推理链 ID AgentID string // Agent ID Topic string // 推理主题 Steps []ReasoningStep // 推理步骤 Score float64 // 推理得分 SubmittedAt time.Time // 提交时间 } // ReasoningStep - 推理步骤 type ReasoningStep struct { StepID string // 步骤 ID Description string // 步骤描述 Evidence []string // 证据列表 Confidence float64 // 置信度(0-1) Next []string // 下一步 ID 列表 } ``` --- ## 4. 灵泊 Harbor - 异步队列与暂存层 ### 定位说明 "泊"为船舶停靠。数据包遇风浪(网络抖动)时暂泊于此,待风平浪静再启航。 ### 核心功能 | 功能 | 方法 | 说明 | |-----|------|------| | 消息入队 | `Enqueue(msg, target, priority)` | 消息入队(支持优先级) | | 消息出队 | `Dequeue()` | 消息出队 | | 标记送达 | `MarkDelivered(msgID)` | 标记消息已送达 | | 标记失败 | `MarkFailed(msgID, err)` | 标记消息失败(触发重试) | | 缓冲消息 | `BufferMessage(agentID, msg)` | 为离线 Agent 缓冲消息 | | 清空缓冲 | `FlushBuffer(agentID)` | Agent 上线后清空缓冲 | | 添加重试 | `AddRetry(msg, target)` | 添加重试条目 | ### 数据结构定义 ```go // QueueConfig - 队列配置 type QueueConfig struct { MaxSize int // 最大队列大小(10000) DefaultMaxRetries int // 默认最大重试次数(5) DefaultRetryDelay time.Duration // 默认重试延迟(30s) } // 队列消息状态 type QueuedStatus string const ( QueuedPending = "pending" // 待处理 QueuedProcessing = "processing" // 处理中 QueuedDelivered = "delivered" // 已送达 QueuedFailed = "failed" // 失败 QueuedDead = "dead" // 死信 ) ``` ### 重试机制 ```go // RetryConfig - 重试配置 type RetryConfig struct { MaxRetries int // 最大重试次数(5) BaseDelay time.Duration // 基础延迟(1s) MaxDelay time.Duration // 最大延迟(5min) JitterFactor float64 // 抖动因子(0.1) } // 重试延迟算法:指数退避 + 抖动 // delay = min(BaseDelay * 2^(retryCount-1), MaxDelay) * (1 ± JitterFactor) ``` ### 缓冲配置 ```go // BufferConfig - 缓冲配置 type BufferConfig struct { MaxPerAgent int // 每个 Agent 最大缓冲数(1000) MaxAge time.Duration // 消息最大存活时间(24h) CleanupInterval time.Duration // 清理间隔(1h) } ``` --- ## 5. 灵瞰 Panorama - 可观测与度量层 ### 定位说明 居高临下,俯瞰全局。如"天眼"般记录每一帧交互的耗时、置信度与资源消耗。 ### 核心功能 | 功能 | 方法 | 说明 | |-----|------|------| | 开始追踪 | `StartTrace(traceID, name, agentID)` | 创建追踪链路 | | 开始跨度 | `StartSpan(traceID, parentSpanID, name, agentID)` | 创建子跨度 | | 结束跨度 | `EndSpan(traceID, spanID, status, err)` | 结束跨度 | | 添加日志 | `AddSpanLog(traceID, spanID, message, fields)` | 添加跨度日志 | | 记录指标 | `RecordMetric(name, type, value, labels)` | 记录指标 | | 递增计数 | `IncrementCounter(name, labels, delta)` | 递增计数器 | | 设置计量 | `SetGauge(name, labels, value)` | 设置计量值 | | 健康检查 | `CheckAll(ctx)` | 检查所有组件健康状态 | ### 数据结构定义 ```go // Trace - 追踪链路 type Trace struct { TraceID string // 追踪 ID RootSpan *Span // 根跨度 Spans map[string]*Span // 跨度集合 StartTime time.Time // 开始时间 EndTime *time.Time // 结束时间 Metadata map[string]interface{} // 元数据 } // Span - 追踪跨度 type Span struct { SpanID string // 跨度 ID TraceID string // 所属追踪 ID ParentID string // 父跨度 ID Name string // 跨度名称 Service string // 服务名 AgentID string // Agent ID StartTime time.Time // 开始时间 EndTime *time.Time // 结束时间 Duration time.Duration // 持续时间 Status SpanStatus // 跨度状态 Tags map[string]string // 标签 Logs []SpanLog // 日志 Attributes map[string]interface{} // 属性 } // SpanStatus - 跨度状态 type SpanStatus string const ( SpanStatusPending = "pending" // 待定 SpanStatusRunning = "running" // 运行中 SpanStatusSuccess = "success" // 成功 SpanStatusFailed = "failed" // 失败 SpanStatusCancelled = "cancelled" // 已取消 ) ``` ### 指标类型 ```go type MetricType string const ( MetricCounter = "counter" // 计数器(累加) MetricGauge = "gauge" // 计量器(瞬时值) MetricHistogram = "histogram" // 直方图(分布) ) ``` ### 健康状态 ```go type HealthStatus string const ( HealthStatusHealthy = "healthy" // 健康 HealthStatusDegraded = "degraded" // 降级 HealthStatusUnhealthy = "unhealthy" // 不健康 HealthStatusUnknown = "unknown" // 未知 ) ``` --- ## 6. 灵衡 Libra - 价值结算与激励层 ### 定位说明 权衡利弊,计量公平。将 Agent 间的"智力贡献"与"资源消耗"通证化,动态定价。 ### 核心功能 | 功能 | 方法 | 说明 | |-----|------|------| | 创建账户 | `CreateAccount(agentID)` | 为 Agent 创建账户 | | 获取余额 | `GetBalance(agentID)` | 查询账户余额 | | 转账 | `Transfer(from, to, amount, ...)` | 执行转账 | | 设置价格 | `SetPrice(taskType, capability, price)` | 设置任务价格 | | 获取价格 | `GetPrice(taskType)` | 获取任务价格 | | 计算成本 | `CalculateCost(taskType, complexity, duration)` | 计算任务成本 | | 结算任务 | `SettleTask(taskID, ...)` | 结算单个任务 | | 结算群组任务 | `SettleGroupTask(taskID, ...)` | 结算群组任务(分摊费用) | | 奖励 | `Reward(agentID, amount, reason)` | 发放奖励 | ### 数据结构定义 ```go // Account - 账户 type Account struct { AgentID string // Agent ID Balance map[string]float64 // 余额(currency -> amount) CreatedAt time.Time // 创建时间 Metadata map[string]interface{} // 元数据 } // Transaction - 交易记录 type Transaction struct { TxID string // 交易 ID Type TransactionType // 交易类型 FromAgentID string // 发送方 ToAgentID string // 接收方 Amount float64 // 金额 Currency string // 货币("SYN") Description string // 描述 TaskID string // 关联任务 ID Timestamp time.Time // 时间戳 Status TransactionStatus // 交易状态 } // TransactionType - 交易类型 type TransactionType string const ( TxTaskExecution = "task_execution" // 任务执行 TxDataSharing = "data_sharing" // 数据共享 TxAPIInvocation = "api_invocation" // API 调用 TxGroupContribution = "group_contribution" // 群组贡献 TxDeposit = "deposit" // 充值 TxWithdraw = "withdraw" // 提现 TxReward = "reward" // 奖励 TxPenalty = "penalty" // 惩罚 ) ``` ### 定价规则 ```go // 基础价格(默认) var BasePrice = map[string]float64{ "text_generation": 1.0, "image_generation": 5.0, "video_generation": 20.0, "audio_generation": 3.0, "analysis": 2.0, "translation": 1.5, } // 成本计算公式 // cost = basePrice * complexityFactor + durationFactor // complexityFactor = complexity * 0.5 // durationFactor = duration_seconds * 0.01 ``` --- ## 7. 灵枢 Pivot - 紧急制动与治理层 ### 定位说明 取自《灵枢经》。这是整个协议的"总闸"与"方向盘",不轻易触发,但触发时能以最小代价重置网络状态。 ### 核心功能 | 功能 | 方法 | 说明 | |-----|------|------| | 允许请求 | `Allow()` | 检查熔断器是否允许请求 | | 记录成功 | `RecordSuccess()` | 记录成功(用于恢复) | | 记录失败 | `RecordFailure()` | 记录失败(触发熔断) | | 获取状态 | `State()` | 获取熔断器状态 | | 重置 | `Reset()` | 重置熔断器 | | 设置治理级别 | `SetLevel(level)` | 设置治理级别 | | 封禁 Agent | `BanAgent(agentID, reason)` | 封禁 Agent | | 解封 Agent | `UnbanAgent(agentID)` | 解封 Agent | | 紧急停止 | `EmergencyStop(reason)` | 一键熔断所有 | | 恢复正常 | `Resume()` | 恢复正常模式 | | 应用升级 | `ApplyUpgrade(version)` | 应用协议升级 | | 回滚升级 | `RollbackUpgrade(version)` | 回滚协议升级 | ### 数据结构定义 ```go // CircuitBreaker - 熔断器 type CircuitBreaker struct { name string // 熔断器名称 state CircuitState // 状态 failureCount int // 失败计数 successCount int // 成功计数(半开状态) threshold int // 失败阈值(5) timeout time.Duration // 熔断超时(30s) } // CircuitState - 熔断器状态 type CircuitState string const ( CircuitClosed = "closed" // 关闭:正常流通 CircuitOpen = "open" // 打开:熔断,拒绝请求 CircuitHalfOpen = "half_open" // 半开:尝试恢复 ) // 状态转换规则: // Closed -> Open :失败次数 >= threshold // Open -> HalfOpen :超过 timeout 时间 // HalfOpen -> Closed:连续成功 3 次 // HalfOpen -> Open :再次失败 ``` ### 治理级别 ```go type GovernanceLevel int const ( GovLevelNormal = iota // 正常运行 GovLevelWatch // 观察模式(记录但不限制) GovLevelRestricted // 受限模式(限流) GovLevelEmergency // 紧急模式(仅白名单) GovLevelShutdown // 停机模式(全部拒绝) ) ``` --- > 本文档对应 [v0/06-implementation-details.md](file:///e:/code/go/synapse/docs/v0/06-implementation-details.md) 第1章"七大组件层详细规范",是 v1 协议栈组件实现的参考依据。