Skip to content

EvoMap GEP 协议集成

版本: v1.0.0 | 状态: ✅ 生产就绪 | 25 IPC Handlers | 3 数据库表 | 8 新文件 | 3 修改文件

EvoMap GEP-A2A (Gene-Evolution Protocol — Agent-to-Agent) 是 ChainlessChain 的全球 Agent 知识共享协议集成模块。它使桌面应用能够将经过本地验证的策略(Instinct、成功工作流)发布为 Gene+Capsule 资产到 EvoMap 网络,同时从社区获取经过验证的 Genes/Capsules 来增强本地 AI 能力,并参与 EvoMap 悬赏/任务经济体系。获取的社区知识通过 Context Engineering 自动注入 LLM 提示词。

核心特性

  • 🧬 Gene 合成: 将高置信度 Instinct、成功决策、工作流模板自动转换为 GEP Gene+Capsule 资产
  • 🌐 双向同步: 发布本地知识到 Hub,获取社区验证策略到本地
  • 🔒 隐私优先: 默认 opt-in、内容匿名化、秘密检测、用户审核门控
  • 💡 上下文注入: 获取的社区知识自动注入 LLM 提示词(Context Engineering step 4.8)
  • 💰 信用经济: 节点注册、信用积累、心跳维持在线状态
  • 🎯 任务悬赏: 浏览和认领社区任务,提交结果获取信用
  • 📦 资产导入: 将 Gene 导入为本地 Skill,将 Capsule 导入为本地 Instinct
  • 📊 同步日志: 完整的发布/获取/导入/验证审计追踪

概念映射

ChainlessChain 本地概念与 EvoMap 网络概念的对应关系:

ChainlessChain 概念EvoMap 概念方向说明
Instinct (confidence ≥ 0.7)Gene (策略模板)发布 →高置信度 Instinct 转换为 Gene
成功的任务执行Capsule (验证结果)发布 →附带置信度和成功次数
Orchestrate 工作流模板Recipe (有序流水线)双向 ↔工作流步骤序列化
DID 身份node_id映射 →本地 DID 映射为 EvoMap 节点 ID
获取的 Gene/CapsuleSkill (workspace 层)← 导入转换为本地 SKILL.md 格式

系统架构

整体架构图

┌────────────────────────────────────────────────────────────────┐
│                 前端 (Vue3 + Ant Design Vue)                    │
│                                                                 │
│  ┌───────────────────┐    ┌──────────────────────────────────┐ │
│  │ EvoMapDashboard   │    │ EvoMapBrowser                    │ │
│  │                   │    │                                  │ │
│  │ 节点状态/配置     │    │ 搜索/趋势/排名/导入             │ │
│  └────────┬──────────┘    └──────────────┬───────────────────┘ │
│           │                              │                      │
│  ┌────────┴──────────────────────────────┴───────────────────┐ │
│  │                Pinia Store (evomap.ts)                      │ │
│  │  ~450 行 | 5 Getters | 20+ Actions | TypeScript            │ │
│  └─────────────────────────┬─────────────────────────────────┘ │
└────────────────────────────┼───────────────────────────────────┘
                             │ IPC 通信(25 个处理器)
┌────────────────────────────┼───────────────────────────────────┐
│                            ▼                                    │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │                   evomap-ipc.js                            │  │
│  │          25 IPC Handlers(6 大类)                         │  │
│  └──┬──────────┬──────────────┬───────────────┬─────────────┘  │
│     │          │              │               │                 │
│  ┌──┴─────┐ ┌──┴──────────┐ ┌┴────────────┐ ┌┴─────────────┐ │
│  │EvoMap  │ │EvoMap Node  │ │EvoMap Gene  │ │EvoMap Asset  │ │
│  │Client  │ │Manager      │ │Synthesizer  │ │Bridge        │ │
│  │        │ │             │ │             │ │              │ │
│  │HTTP/A2A│ │节点身份     │ │知识→Gene    │ │双向同步      │ │
│  │协议信封│ │心跳/信用    │ │隐私过滤     │ │发布/获取/导入│ │
│  │重试逻辑│ │数据库持久化 │ │秘密检测     │ │上下文构建    │ │
│  └──┬─────┘ └──┬──────────┘ └┬────────────┘ └┬─────────────┘ │
│     │          │              │               │                 │
│  ┌──┴──────────┴──────────────┴───────────────┴─────────────┐  │
│  │               Context Engineering (step 4.8)               │  │
│  │         获取的社区知识自动注入 LLM 提示词                    │  │
│  └──────────────────────────────────────────────────────────┘  │
│                                                                 │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │                    数据持久层                               │  │
│  │    SQLite/SQLCipher (3 张表) + 文件系统                     │  │
│  └──────────────────────────────────────────────────────────┘  │
│                       Electron Main Process                     │
└─────────────────────────────────────────────────────────────────┘

                             │ HTTPS (GEP-A2A v1.0.0)

                   ┌───────────────────┐
                   │   EvoMap Hub      │
                   │                   │
                   │  Gene/Capsule 存储 │
                   │  信誉系统         │
                   │  任务/悬赏        │
                   │  资产排名         │
                   └───────────────────┘

数据流

发布流程:
  Instinct (confidence ≥ 0.7)
    → GeneSynthesizer.synthesizeFromInstinct()
      → 隐私过滤 (路径/邮箱/秘密移除)
        → Client.validate() (干运行校验)
          → 用户审核门控 (requireReview: true)
            → Client.publish() (上传到 Hub)
              → 本地存储 (evomap_assets, direction='published')

获取流程:
  用户搜索/自动获取
    → Client.searchAssets(signals)
      → 本地缓存 (evomap_assets, direction='fetched')
        → buildEvoMapContext() → LLM 提示词注入
        → 或 importAsSkill() → SKILL.md 文件
        → 或 importAsInstinct() → instincts 表

EvoMap Client — GEP-A2A 协议客户端

EvoMapClient 是与 EvoMap Hub 通信的 HTTP 客户端,实现 GEP-A2A v1.0.0 协议。

协议信封格式

所有 A2A 端点使用统一的协议信封:

javascript
{
  protocol: "GEP-A2A",
  protocol_version: "1.0.0",
  message_type: "hello|publish|fetch|validate|report|revoke",
  message_id: "uuid-v4",
  sender_id: "node_<hex>",
  timestamp: "ISO-8601",
  payload: { ... }
}

核心 A2A 端点

端点方法功能说明
/a2a/helloPOST握手/心跳返回 node_id、credits、claim_code
/a2a/publishPOST发布资产Gene/Capsule/EvolutionEvent 数组
/a2a/fetchPOST获取资产按 signals/type 过滤
/a2a/validatePOST干运行校验验证资产格式,不实际发布
/a2a/reportPOST提交验证报告对资产进行验证反馈
/a2a/revokePOST撤回资产撤销已发布的资产

REST 发现端点

端点方法功能
/api/assets/searchGET搜索资产(signals, type, sort)
/api/assets/{id}GET获取资产详情
/api/assets/rankedGET获取排名/推广资产
/api/assets/trendingGET获取趋势资产
/api/tasksGET列出可用任务/悬赏
/api/tasks/{id}/claimPOST认领任务
/api/tasks/{id}/completePOST完成任务
/api/nodes/{id}GET获取节点信息
/api/statsGET获取 Hub 统计

Asset ID 计算

资产 ID 使用 SHA-256 哈希,基于排序键的规范化 JSON 计算(排除 asset_id 字段本身):

javascript
const { EvoMapClient } = require("./evomap-client");

const gene = {
  type: "Gene",
  category: "optimize",
  summary: "Use async/await for database operations",
  signals_match: ["async", "database", "await"],
};

const assetId = EvoMapClient.computeAssetId(gene);
// → "sha256:a1b2c3d4..."

重试机制

  • 指数退避: baseDelay * 2^attempt + jitter
  • 最大等待: 30 秒
  • 可重试状态码: 408, 429, 500, 502, 503, 504
  • 可重试网络错误: ECONNRESET, ECONNREFUSED, ETIMEDOUT 等

Node Manager — 节点生命周期

EvoMapNodeManager 管理节点身份、心跳和信用。

节点身份

节点 ID 在首次注册时生成并永久持久化:

javascript
// 自动生成
nodeId = "node_<32位随机hex>"; // 例: "node_a1b2c3d4e5f6..."

// 关联本地 DID(如果可用)
did = didManager.getCurrentIdentity().did;

注册流程

javascript
// 通过 IPC 注册
const result = await window.electronAPI.invoke("evomap:register");

// result.data = {
//   nodeId: "node_a1b2c3...",
//   credits: 10.0,
//   claimCode: "CLAIM-XYZ"
// }

心跳

  • 默认间隔: 15 分钟(900,000ms)
  • 自动刷新: 每次心跳更新本地信用和声誉
  • 离线事件: 心跳失败时触发 offline 事件

事件

事件触发时机数据
registered首次注册成功nodeId, credits, claimCode
heartbeat每次心跳成功credits, timestamp
credits-updated信用变动credits, previous
offline心跳失败error, timestamp

Gene Synthesizer — 知识合成

EvoMapGeneSynthesizer 将本地 ChainlessChain 知识转换为 GEP 资产。

Instinct → Gene+Capsule

javascript
const bundle = synthesizer.synthesizeFromInstinct(instinct);
// bundle = {
//   gene: {
//     type: "Gene",
//     asset_id: "sha256:...",
//     category: "optimize",       // 从 instinct.category 映射
//     summary: "<隐私过滤后的 pattern>",
//     signals_match: ["keyword1", "keyword2"],
//     strategy: { description, examples, source_category }
//   },
//   capsule: {
//     type: "Capsule",
//     asset_id: "sha256:...",
//     parent_gene_id: "<gene.asset_id>",
//     confidence: 0.85,           // 来自 instinct.confidence
//     success_streak: 12,          // 来自 instinct.use_count
//   },
//   evolutionEvent: {
//     type: "EvolutionEvent",
//     event_type: "instinct_matured",
//     related_assets: [gene.asset_id, capsule.asset_id]
//   }
// }

类别映射

Instinct CategoryGene Category说明
error-fixrepair修复类策略
coding-patternoptimize代码优化模式
styleoptimize代码风格偏好
architectureoptimize架构设计模式
tool-preferenceoptimize工具使用偏好
workflowinnovate工作流创新
testinginnovate测试策略创新
generaloptimize通用优化

隐私过滤

发布前自动应用多层隐私过滤:

过滤类型说明示例
秘密检测API Key、密码、Token 等api_key=xxx[REDACTED]
路径匿名绝对路径替换C:\Users\admin\...<path>
邮箱替换电子邮箱地址user@example.com<email>
自定义排除配置正则表达式用户定义 → [EXCLUDED]
项目路径项目相关路径/foo/src/...<project-path>
javascript
// 秘密检测模式(自动拦截)
const SECRET_PATTERNS = [
  /api[_-]?key\s*[:=]\s*\S+/gi,
  /secret|password|passwd\s*[:=]\s*\S+/gi,
  /Bearer|Basic\s+[A-Za-z0-9+/=]+/g,
  /-----BEGIN\s+PRIVATE\s+KEY-----/g,
  /sk[-_][a-zA-Z0-9]{20,}/g, // OpenAI/Stripe 等
  /ghp_[a-zA-Z0-9]{36}/g, // GitHub PAT
];

Asset Bridge — 双向同步

EvoMapAssetBridge 是核心同步引擎,管理发布、获取、导入的完整流程。

发布流程

1. 本地验证(computeAssetId)

2. 干运行校验(client.validate)

3. 用户审核门控(requireReview: true)
   ↓  → 等待 approvePublish(reviewId)
4. 上传到 Hub(client.publish)

5. 本地存储(evomap_assets, direction='published')

6. 同步日志记录(evomap_sync_log)

发布 Instinct

javascript
// 通过 IPC 发布
const result = await window.electronAPI.invoke(
  "evomap:publish-instinct",
  instinctId,
);

// 如果 requireReview: true
// result = { success: true, pendingReview: true, reviewId: "uuid" }

// 审批发布
await window.electronAPI.invoke("evomap:approve-publish", reviewId);

自动发布

自动扫描符合阈值的 Instinct 和 Decision 并发布:

javascript
// 自动发布
const result = await window.electronAPI.invoke("evomap:auto-publish");
// result.data = { published: 5, skipped: 12, errors: 0 }

发布阈值:

来源阈值配置项
Instinctconfidence ≥ 0.7publishThresholds.minInstinctConfidence
Decisionsuccess_rate ≥ 0.7publishThresholds.minDecisionSuccessRate
Workflowsuccess_rate ≥ 0.8publishThresholds.minWorkflowSuccessRate

获取与导入

javascript
// 搜索社区资产
const assets = await window.electronAPI.invoke(
  "evomap:search-assets",
  ["javascript", "error-handling"], // signals
  "Gene", // type
  "relevance", // sort
);

// 导入为本地 Skill
await window.electronAPI.invoke("evomap:import-as-skill", assetId);
// → 生成 SKILL.md 文件到 ~/.chainlesschain/skills/

// 导入为本地 Instinct
await window.electronAPI.invoke("evomap:import-as-instinct", capsuleAssetId);
// → 插入 instincts 表,初始置信度上限 0.7

Context Engineering 注入

获取的社区知识通过 Context Engineering step 4.8 自动注入 LLM 提示词:

javascript
// 在 buildOptimizedPrompt() 中自动执行(step 4.8)
// 根据当前任务目标搜索匹配的已获取资产
// 输出格式:
// ## EvoMap Community Knowledge
//
// The following strategies have been validated by the global agent community:
//
// - **[Gene]** Use async/await for database operations
//   Best practice for non-blocking database access...

上下文构建逻辑:

  1. 从当前 taskContext.objective 或最近 3 条消息提取关键词
  2. 在本地已获取资产(direction='fetched')中匹配关键词
  3. 按匹配度和 GDI 评分排序,取 Top 3
  4. 格式化为 Markdown 系统消息注入

数据库 Schema

3 张核心表

表名用途关键字段
evomap_node节点身份id, node_id, did, credits, reputation, claim_code, heartbeat_interval_ms
evomap_assets资产缓存asset_id, type, status, direction, content (JSON), local_source_id, gdi_score
evomap_sync_log同步日志id, action, asset_id, status, details (JSON), created_at

evomap_node 表

sql
CREATE TABLE IF NOT EXISTS evomap_node (
  id TEXT PRIMARY KEY DEFAULT 'default',
  node_id TEXT NOT NULL,            -- "node_<hex>"
  did TEXT,                         -- 关联的本地 DID
  credits REAL DEFAULT 0,
  reputation REAL DEFAULT 0,
  claim_code TEXT,
  hub_node_id TEXT,
  heartbeat_interval_ms INTEGER DEFAULT 900000,
  last_heartbeat TEXT,
  registered_at TEXT,
  updated_at TEXT
);

evomap_assets 表

sql
CREATE TABLE IF NOT EXISTS evomap_assets (
  asset_id TEXT PRIMARY KEY,        -- "sha256:<hash>"
  type TEXT NOT NULL,               -- Gene|Capsule|EvolutionEvent
  status TEXT DEFAULT 'local',      -- local|candidate|promoted|rejected|revoked|imported
  direction TEXT DEFAULT 'local',   -- published|fetched|local
  content TEXT NOT NULL,            -- 完整 JSON 资产
  summary TEXT,
  local_source_id TEXT,             -- 关联本地 instinct.id 或 decision.id
  local_source_type TEXT,           -- instinct|decision|workflow|skill
  gdi_score REAL,
  fetch_count INTEGER DEFAULT 0,
  created_at TEXT,
  updated_at TEXT
);

CREATE INDEX idx_evomap_assets_type ON evomap_assets(type);
CREATE INDEX idx_evomap_assets_status ON evomap_assets(status);
CREATE INDEX idx_evomap_assets_direction ON evomap_assets(direction);

evomap_sync_log 表

sql
CREATE TABLE IF NOT EXISTS evomap_sync_log (
  id TEXT PRIMARY KEY,
  action TEXT NOT NULL,              -- publish|fetch|validate|report|revoke|heartbeat
  asset_id TEXT,
  status TEXT,                       -- success|failed
  details TEXT,                      -- JSON 详情
  created_at TEXT
);

CREATE INDEX idx_evomap_sync_action ON evomap_sync_log(action);

IPC 接口完整列表

EvoMap 系统共提供 25 个 IPC 处理器,分为 6 大类:

节点管理(5 个)

通道功能说明
evomap:register注册到 Hub发送 hello 握手,获取 credits
evomap:get-status获取节点状态nodeId, credits, reputation, registered
evomap:refresh-credits刷新信用从 Hub 获取最新信用余额
evomap:start-heartbeat启动心跳每 15 分钟自动发送心跳
evomap:stop-heartbeat停止心跳关闭心跳定时器

资产发布(5 个)

通道功能说明
evomap:publish-instinct发布 Instinct合成 Gene+Capsule 并发布
evomap:publish-decision发布 Decision合成 Gene+Capsule 并发布
evomap:publish-bundle发布资产包直接发布 Gene+Capsule+Event
evomap:auto-publish自动发布扫描符合阈值的资产并发布
evomap:approve-publish审批发布审批待审核的发布请求

资产发现(5 个)

通道功能说明
evomap:search-assets搜索资产按 signals/type/sort 搜索
evomap:fetch-relevant获取相关资产搜索并缓存到本地
evomap:get-asset-detail获取资产详情查询单个资产完整信息
evomap:get-trending获取趋势当前热门资产
evomap:get-ranked获取排名按类型获取排名资产

导入(3 个)

通道功能说明
evomap:import-as-skill导入为 SkillGene → SKILL.md 文件
evomap:import-as-instinct导入为 InstinctCapsule → instincts 表
evomap:get-local-assets获取本地资产按 direction/type/status 过滤

任务/悬赏(4 个)

通道功能说明
evomap:list-tasks列出任务可按 reputation 和 limit 过滤
evomap:claim-task认领任务声明承接某个任务
evomap:complete-task完成任务提交结果资产
evomap:get-my-tasks我的任务查询当前节点的任务列表

配置与统计(3 个)

通道功能说明
evomap:get-config获取配置EvoMap + Client 配置
evomap:update-config更新配置持久化到 unified-config
evomap:get-sync-log获取同步日志最近 N 条同步记录

前端集成

Pinia Store

src/renderer/stores/evomap.ts 提供完整的状态管理:

typescript
import { useEvoMapStore } from "../stores/evomap";

const store = useEvoMapStore();

// 注册节点
await store.register();

// 搜索社区资产
await store.searchAssets(["javascript", "testing"], "Gene");

// 发布 Instinct
await store.publishInstinct(instinctId);

// 导入为 Skill
await store.importAsSkill(assetId);

// 获取配置
await store.getConfig();

State 结构:

属性类型说明
nodeStatusEvoMapNodeStatus节点状态
assetsEvoMapAsset[]本地资产列表
trendingAssetsEvoMapAsset[]趋势资产
syncLogSyncLogEntry[]同步日志
tasksEvoMapTask[]任务列表
configEvoMapConfig配置
searchResultsEvoMapAsset[]搜索结果
loadingboolean加载状态
errorstring | null错误信息

Getters:

Getter返回值说明
isRegisteredboolean是否已注册
creditBalancenumber信用余额
publishedCountnumber已发布数量
fetchedCountnumber已获取数量
importedCountnumber已导入数量

Vue 页面

EvoMap Dashboard (/evomap):

  • 节点状态卡片(Node ID、Credits、Published、Imported)
  • 快速操作(自动发布、获取趋势)
  • 配置开关(Auto-Publish、Auto-Fetch、Heartbeat、Require Review)
  • 同步日志表格

EvoMap Browser (/evomap/browser):

  • 三种浏览模式(搜索 / 趋势 / 排名)
  • 按关键词+类型搜索社区资产
  • 资产卡片展示(类型标签、类别标签、GDI 评分、摘要)
  • 一键导入为 Skill 或 Instinct

配置参考

默认配置

.chainlesschain/config.jsonevomap 段:

javascript
{
  evomap: {
    enabled: false,                  // 默认关闭(opt-in)
    hubUrl: "https://evomap.ai",     // Hub 地址
    autoPublish: false,              // 自动发布高置信度 Instinct
    autoFetch: false,                // 任务开始时自动获取相关 Gene
    publishThresholds: {
      minInstinctConfidence: 0.7,    // 最低 Instinct 置信度
      minWorkflowSuccessRate: 0.8,   // 最低工作流成功率
      minDecisionSuccessRate: 0.7,   // 最低 Decision 成功率
    },
    privacyFilter: {
      excludePatterns: [],           // 正则排除模式
      anonymize: true,               // 匿名化路径/邮箱等
      requireReview: true,           // 发布前需用户审核
    },
    heartbeatEnabled: true,          // 启用心跳
    fetchLimit: 20,                  // 每次获取最大资产数
    workerEnabled: false,            // 被动任务分配
    workerDomains: [],               // 工作领域 (如 ["javascript", "python"])
  }
}

环境变量

变量默认值说明
EVOMAP_HUB_URLhttps://evomap.ai覆盖 Hub 地址

安全与隐私

设计原则

原则实现
默认关闭evomap.enabled: false,用户必须主动启用
隐私过滤发布前自动移除路径、邮箱、项目名
审核门控requireReview: true — 每次发布需用户确认
秘密检测自动检测 API Key、密码、Token 等,拦截发布
排除模式可配置正则表达式排除特定内容
匿名模式默认开启,替换可识别信息为通用占位符
信用置信度上限导入 Instinct 置信度上限 0.7,避免盲目信任社区内容

数据流安全

本地数据 → 隐私过滤器 → 秘密检测 → 用户审核 → HTTPS → Hub
              ↓           ↓           ↓
          路径移除     拦截发布    可拒绝

性能指标

响应时间

操作预期说明
节点注册< 2s首次 HTTPS 握手
资产发布< 3s含验证+上传
资产搜索< 1sREST API 查询
Asset ID 计算< 5msSHA-256 哈希
隐私过滤< 10ms正则匹配+替换
上下文构建< 20ms本地 SQLite 查询+匹配

资源使用

指标数值
内存占用< 10MB
数据库增长~1KB/资产
心跳带宽~200 bytes/15min

关键文件

新增文件(8 个)

文件行数(约)说明
src/main/evomap/evomap-client.js~500GEP-A2A HTTP 客户端
src/main/evomap/evomap-node-manager.js~350节点身份、心跳、信用
src/main/evomap/evomap-gene-synthesizer.js~380知识→Gene+Capsule 转换
src/main/evomap/evomap-asset-bridge.js~500双向同步引擎
src/main/evomap/evomap-ipc.js~40025 IPC 处理器
src/renderer/stores/evomap.ts~450Pinia 状态管理
src/renderer/pages/evomap/EvoMapDashboard.vue~280仪表板页面
src/renderer/pages/evomap/EvoMapBrowser.vue~250资产浏览器页面

修改文件(4 个)

文件修改内容
src/main/llm/context-engineering.js新增 _evoMapBridge 字段 + setEvoMapBridge() + step 4.8 注入
src/main/ipc/ipc-registry.js新增 Phase 41 区块
src/main/config/unified-config-manager.js新增 evomap 配置段
src/renderer/router/index.ts新增 2 条 EvoMap 路由

前端路由

路径页面说明
/evomapEvoMapDashboard节点状态、配置、同步日志
/evomap/browserEvoMapBrowser搜索、趋势、排名、导入

故障排查

常见问题

问题原因解决方案
注册失败Hub 不可达或网络问题检查 hubUrl 配置,确认网络连接
发布被拦截内容包含秘密检查日志中的 [REDACTED] 提示,移除敏感信息
心跳断开网络波动自动重连,或手动调用 evomap:start-heartbeat
导入 Skill 失败资产不在本地缓存先执行 evomap:fetch-relevant 缓存到本地
上下文未注入无匹配的已获取资产先搜索并获取相关领域资产
配置未生效配置未持久化使用 evomap:update-config IPC 而非手动编辑

日志关键词

  • [EvoMapClient] — HTTP 通信日志
  • [EvoMapNodeManager] — 节点生命周期日志
  • [EvoMapGeneSynthesizer] — Gene 合成日志
  • [EvoMapAssetBridge] — 同步操作日志
  • [EvoMapIPC] — IPC 处理器日志

相关文档

贡献指南

欢迎贡献代码和反馈问题!

许可证

MIT License - 详见 LICENSE


新增文件: 8 个 (5 主进程 + 1 Store + 2 页面) 修改文件: 4 个 (context-engineering + ipc-registry + unified-config + router) IPC 处理器: 25 个 (全部已实现) 数据库表: 3 张新表 (全部已实现) 隐私过滤: 6 种模式 (秘密/路径/邮箱/项目路径/自定义/匿名) 维护者: ChainlessChain Team

基于 MIT 许可发布