版本:v0.1 日期:2026-02-27 状态:草稿
NoDeskClaw 已经实现了一套完整的基因进化生态(Gene Evolution Ecosystem),包括基因市场、学习引擎、遗忘机制、Agent 创造等能力。但这套系统存在以下问题:
| 问题 | 影响 |
|---|---|
| 基因存储与管理耦合在 NoDeskClaw 后端 | 其他 Agent 产品无法复用 |
| 基因格式绑定 OpenClaw(SKILL.md + openclaw.json) | nanobot 等产品需要各自适配 |
| 无外部基因引入通道 | 无法从 ClawHub、Evomap 等外部生态获取基因 |
| 安装方式单一(API 调用) | 无法兼容 claw install、npm、pip 等主流分发方式 |
GeneHub 的目标:将基因能力从 NoDeskClaw 中抽离为独立的中心化基因服务,成为 NoDeskClaw 全生态的基因基础设施。
GeneHub = 基因注册中心(Registry)+ 标准学习协议(Protocol)+ 多产品适配层(Adapters)
类比:
| 角色 | 软件世界类比 |
|---|---|
| GeneHub Registry | npm registry / PyPI |
| Gene Manifest | package.json / setup.py |
| GeneHub CLI | npm / pip |
| 标准学习协议 | Language Server Protocol(LSP) |
| 产品适配器 | LSP 客户端实现 |
GeneHub 管理三层能力实体,从原子到组合:
| 层级 | 实体 | 说明 |
|---|---|---|
| L1 | Gene(基因) | 原子能力单元,一个 SKILL.md + manifest |
| L2 | Genome(基因组) | 基因的精选合集,一键安装一套能力 |
| L3 | Agent Template(AI 员工模板) | 基因组 + 额外基因 + 角色设定,一个可复制的 AI 员工身份 |
Gene(基因)
└── 原子能力单元
Genome(基因组)
└── 引用多个基因,一键安装
Agent Template(AI 员工模板)
└── 引用基因组 + 额外基因 + 角色定位 + 头像
└── 一个可以被克隆的 AI 员工身份
AI 员工模板是最高层抽象,GeneHub 存储公共模板(面向社区),NoDeskClaw 存储企业私有模板(安全隔离)。
┌──────────────────────────────────────────────────────────────────────────────┐
│ 外部基因生态 │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ ClawHub │ │ Evomap │ │ 社区贡献 │ │
│ │ (基因市场) │ │ (进化推荐) │ │ (PR / Upload) │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
└──────────┼──────────────────────┼──────────────────────┼─────────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────────────────────────────────────────────────────────────────────┐
│ GeneHub Core │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Gene Registry Service │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │ │
│ │ │ 基因存储 │ │ 版本管理 │ │ 搜索与发现 │ │ │
│ │ │ Gene Store │ │ Versioning │ │ Search & Discovery │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────────────────┘ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │ │
│ │ │ 依赖解析 │ │ 兼容校验 │ │ 审核与发布 │ │ │
│ │ │ Dependency │ │ Compat Check │ │ Review & Publish │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 外部基因适配层 (Inbound Adapters) │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │ │
│ │ │ ClawHub │ │ Evomap │ │ Git Repo Importer │ │ │
│ │ │ Adapter │ │ Adapter │ │ (GitHub / GitLab) │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 标准学习协议 SDK │ │
│ │ (Gene Learning Protocol) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 产品适配层 (Outbound Adapters) │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ OpenClaw │ │ nanobot │ (DeskClaw 等后续扩展) │ │
│ │ │ Adapter │ │ Adapter │ │ │
│ │ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ CLI / 分发层 │ │
│ │ genehub install | claw install | npx | pip │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────────────────────────────────────────────────────────────────────┐
│ Agent 产品 │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ NoDeskClaw │ │ openClaw │ │ nanobot │ (更多产品后续) │
│ │ (K8s 管理) │ │ (开源框架) │ │ (轻量 Agent) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────────────────┘
中心化的基因存储与管理服务,职责:
| 模块 | 职责 |
|---|---|
| Gene Store | 基因 / 基因组的存储、CRUD、元数据管理 |
| Versioning | 语义化版本(SemVer)管理、变体(Variant)追溯 |
| Search & Discovery | 全文搜索、标签过滤、推荐算法、热度排行 |
| Dependency Resolver | 基因间依赖解析、冲突检测、安装计划生成 |
| Compatibility Checker | 目标产品兼容性校验(某基因是否支持 nanobot) |
| Review & Publish | 基因审核流程(人类审核 / Agent 审核 / 自动验证) |
外部基因生态对接。ClawHub / EvoMap 已从定期同步改为联邦搜索(实时查询 + 后台入库待审核)。
| 适配器 | 数据源 | 协议 | 当前模式 |
|---|---|---|---|
| ClawHub Adapter | ClawHub 基因市场 | REST API | 联邦搜索(实时展示 + 后台入库为 pending,等待 AI 审核) |
| Evomap Adapter | Evomap 进化推荐引擎 | REST API | 联邦搜索(同上) |
| NoDeskClaw Adapter | NoDeskClaw 内部数据 | 直连 DB | 批量导入(白名单,直接 approved) |
| Git Repo Importer | GitHub / GitLab 仓库 | Git Clone + gene.yaml 解析 | 导入 |
将 GeneHub 的基因注入到不同 Agent 产品(初期聚焦 openClaw + nanobot,其他产品后续扩展):
| 适配器 | 目标产品 | 注入方式 |
|---|---|---|
| OpenClaw Adapter | openClaw / NoDeskClaw | SKILL.md + openclaw.json(NFS / API) |
| nanobot Adapter | nanobot | 配置注入(Future:capabilities/requires 校验与注入) |
| Generic Adapter | 通用 Agent | 标准学习协议 HTTP 回调 |
| DeskClaw Adapter | DeskClaw | .cursor/rules/ + SKILL.md |
统一的基因管理命令行,兼容多种安装方式:
# 已实现命令
genehub install <gene-slug> # 安装基因(支持 @version、--force、--learn、--target)
genehub uninstall <gene-slug> # 卸载基因
genehub search <keyword> # 搜索基因(默认联邦搜索;--local 仅本地 DB)
genehub list # 列出已安装基因
genehub publish <path> # 发布基因(自动检测 CLAUDE.md/SKILL.md/AGENTS.md,无需预建 gene.yaml)
genehub publish <path> -y # 非交互模式发布(使用默认值)
genehub init [path] # 初始化 gene.yaml + SKILL.md 模板
genehub config set/get # 管理配置(registry / token)
genehub auth login/status/logout # GitHub OAuth 认证
genehub learn <slug> # 触发深度学习(--check 检查结果)
genehub genome publish <path> # 发布基因组(包含 genome.yaml)
genehub genome install <slug> # 安装基因组(递归安装所有基因)
genehub genome list # 搜索基因组
genehub genome info <slug> # 基因组详情
genehub template publish <path> # 发布 AI 员工模板(包含 template.yaml)
genehub template install <slug> # 安装模板(递归安装基因组 + 基因)
genehub template list # 搜索模板
genehub template info <slug> # 模板详情
# Future
genehub info <gene-slug> # 基因详情(未实现)
# 兼容已有生态(Future)
claw install <gene-slug> # ClawHub 兼容
npx genehub install <gene-slug> # npm 生态兼容
pip install genehub-<gene-slug> # Python 生态兼容GeneHub 基因与基因组可被用于塑造多 Agent 协作中的角色人格与行为底色。一种典型设计是「办公室单元」:四类角色(执行 Act、规划 Plan、知识/检索 Knowledge、审核/权限 Judge)分别对应基因组 agile-executor(灵敏)、visionary-planner(远见)、erudite-scholar(渊博)、steadfast-guardian(威严)。下图描述四角色与信息流关系;详细基因清单与关联见 .cursor/plans/多agent基因组设计_2260e583.plan.md。
graph TD
subgraph implemented [本次实现]
Agile["灵敏 Agile / Act"]
Foresight["远见 Foresight / Plan"]
Erudite["渊博 Erudite / Knowledge"]
Authority["威严 Authority / Judge"]
end
Foresight -->|"委派任务/指令"| Agile
Agile -->|"汇报进展/状态"| Foresight
Foresight -->|"请求知识/参考"| Erudite
Erudite -->|"提供参考/资源"| Foresight
Agile -->|"按需请求知识"| Erudite
Agile -->|"请求权限/提交结果"| Authority
Authority -->|"发放或回收权限、验收"| Agile
Foresight -->|"计划与约束对齐"| Authority
四基因组(灵敏、远见、渊博、威严)的基因按 Identity / Behavioral / Method 分层,并通过协作接口(委派与接收、状态与监控、知识请求与蒸馏、验收与权限治理等)对接;与已有基因(如 analytical-thinking、communication-style)为 synergy 推荐关系。详见计划文档「六、基因之间的关联」。
从 NoDeskClaw 的 Gene 模型演化而来,增加多产品兼容字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| name | string(128) | 显示名称 |
| slug | string(128) | 唯一标识符,全局唯一 |
| version | string(16) | 语义化版本号(SemVer) |
| description | text | 详细描述(Markdown) |
| short_description | string(256) | 摘要 |
| category | string(32) | 领域分类 |
| tags | JSON | 标签数组(能力 / 性格 / 知识 / 工具) |
| icon | string(64) | 图标名(lucide 图标标识) |
| source | enum | official / clawhub / evomap / community / agent / github |
| source_ref | string | 外部来源引用(ClawHub URL / Evomap ID / GitHub login) |
| repository_url | text nullable | Gitea 仓库路径(如 genes/clean-code) |
| file_count | int | 基因文件数量 |
| publisher_id | FK nullable | 发布者(见 3.3 节) |
| manifest | JSON | 标准基因清单(见第四章),仅存 gene.yaml 解析结果 |
| compatibility | JSON | 兼容产品列表 ["openclaw", "nanobot"](初期仅支持这两个产品) |
| dependencies | JSON | 依赖基因 [{"slug": "xxx", "version": ">=1.0"}] |
| synergies | JSON | 协同推荐基因 |
| parent_gene_id | FK nullable | 变体溯源 |
| author | JSON | 作者信息 {"type": "human/agent", "id": "...", "name": "..."} |
| install_count | int | 总安装数 |
| avg_rating | float | 平均评分 |
| effectiveness_score | float | 综合效能分 |
| ai_score | float nullable | AI Curator 评分(0-10) |
| ai_verdict | string(24) nullable | AI 审核结论(如 approve、needs_improvement、flagged) |
| ai_enriched | bool | 是否已被 AI Curator 处理过 |
| review_status | enum | draft / pending / approved / rejected / flagged / needs_improvement |
| is_published | bool | 是否上架 |
| created_at | datetime | |
| updated_at | datetime | |
| deleted_at | datetime | 软删除 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| name | string(128) | 显示名称 |
| slug | string(128) | 唯一标识符 |
| version | string(16) | 版本号 |
| description | text | 描述 |
| short_description | string(256) | 摘要 |
| category | string(32) | 分类(默认 general) |
| tags | JSON | 标签数组 |
| icon | string(64) | 图标 |
| genes | JSON | 包含的基因 [{"slug": "xxx", "version": ">=1.0", "config_override": {}}] |
| compatibility | JSON | 兼容产品列表 |
| repository_url | text nullable | Gitea 仓库路径(如 genomes/fullstack-dev) |
| file_count | int | 文件数量 |
| install_count | int | 应用次数 |
| avg_rating | float | 评分 |
| author | JSON | 作者信息 |
| is_published | bool | 上架 |
| created_at | datetime | |
| updated_at | datetime | |
| deleted_at | datetime | 软删除 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| name | string(128) | 模板名称 |
| slug | string(128) | 唯一标识符 |
| version | string(16) | 版本号 |
| description | text | 描述 |
| short_description | string(256) | 摘要 |
| role | string(64) nullable | 角色定位(如「营销专员」「代码审查员」) |
| category | string(32) | 分类 |
| tags | JSON | 标签数组 |
| icon | string(64) | 图标 |
| avatar_url | text nullable | 员工头像 |
| genomes | JSON | 引用的基因组 [{slug, version}] |
| genes | JSON | 额外独立基因 [{slug, version}] |
| compatibility | JSON | 兼容产品列表 |
| repository_url | text nullable | Gitea 仓库路径(如 templates/senior-backend) |
| file_count | int | 文件数量 |
| install_count | int | 安装次数 |
| avg_rating | float | 平均评分 |
| author | JSON | 作者信息 |
| publisher_id | FK nullable | 发布者 |
| is_published | bool | 是否上架 |
| created_at | datetime | |
| updated_at | datetime | |
| deleted_at | datetime | 软删除 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| template_id | FK | 所属模板 |
| version | string(16) | 版本号 |
| genomes | JSON | 该版本的基因组列表 |
| genes | JSON | 该版本的额外基因列表 |
| commit_sha | varchar(40) nullable | Gitea commit SHA |
| git_tag | varchar(64) nullable | Gitea git tag |
| files | JSON nullable | 文件列表 [{path, size, sha}] |
| changelog | text | 变更日志 |
| is_latest | bool | 是否最新 |
| published_at | datetime | 发布时间 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| gene_id | FK | 所属基因 |
| version | string(16) | 版本号 |
| manifest | JSON | 该版本的完整 manifest |
| commit_sha | varchar(40) nullable | Gitea commit SHA |
| git_tag | varchar(64) nullable | Gitea git tag(如 v1.0.0) |
| files | JSON nullable | 文件列表 [{path, size, sha}] |
| changelog | text | 变更日志 |
| is_latest | bool | 是否最新 |
| published_at | datetime | 发布时间 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| genome_id | FK | 所属基因组 |
| version | string(16) | 版本号 |
| genes | JSON | 该版本的基因组合 |
| commit_sha | varchar(40) nullable | Gitea commit SHA |
| git_tag | varchar(64) nullable | Gitea git tag(如 v1.0.0) |
| files | JSON nullable | 文件列表 [{path, size, sha}] |
| changelog | text | 变更日志 |
| is_latest | bool | 是否最新 |
| published_at | datetime | 发布时间 |
统一存储基因、基因组、AI 员工模板的审核记录。通过 entity_type + entity_slug 区分实体类型:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| gene_id | FK nullable | 所属基因(向后兼容旧数据,新增记录可为空) |
| entity_type | string(16) | 实体类型:gene / genome / template,默认 gene |
| entity_slug | string(128) nullable | 实体 slug(方便查询,不依赖外键) |
| reviewer | string(64) | 审核者标识(默认 curator-agent) |
| score | float nullable | 评分(0-10) |
| verdict | string(24) nullable | 结论(approve / reject / needs_improvement / flagged) |
| comments | JSON | 审核意见数组 |
| changes_made | JSON nullable | AI 自动修改的字段记录 |
| feedback | string(32) nullable | 人工反馈覆盖(admin 操作) |
| model | string(64) nullable | 使用的 LLM 模型标识 |
| created_at | datetime |
索引:(entity_type, entity_slug) 联合索引,(gene_id) 保持向后兼容。
基因间的关联关系,由 AI Curator 自动发现或人工设置:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| source_gene_id | FK | 源基因 |
| target_gene_id | FK | 目标基因 |
| relation_type | string(24) | 关系类型:synergy / conflict / extends / replaces |
| strength | float | 关系强度(0-1,默认 0.5) |
| reason | text nullable | 关联理由 |
| created_by | string(64) | 创建者(默认 curator-agent) |
| created_at | datetime |
唯一约束:(source_gene_id, target_gene_id, relation_type)
NoDeskClaw GeneHub
┌─────────────────────┐ ┌─────────────────────┐
│ Instance │ │ Gene (Registry) │
│ InstanceGene │◄───────►│ Genome (Registry) │
│ EvolutionEvent │ │ GeneVersion │
│ GeneEffectLog │ │ │
│ GeneRating │ sync │ │
└─────────────────────┘ ◄────► └─────────────────────┘
NoDeskClaw 保留:实例级基因状态(InstanceGene)、进化日志、效能数据
GeneHub 统管:基因元数据、版本、manifest、搜索、兼容性
NoDeskClaw 的 genes 表将作为 GeneHub 的客户端缓存,定期与 GeneHub Registry 同步。新基因由 GeneHub 统一管理,NoDeskClaw 通过 API 拉取。
通过 GitHub OAuth 登录后自动创建,不维护用户资料,仅缓存 GitHub 身份:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| github_id | integer | GitHub user ID,唯一 |
| github_login | string(64) | GitHub 用户名 |
| github_name | string(128) | 显示名 |
| github_avatar_url | text | 头像 URL |
| github_profile_url | text | Profile 链接(来源跳转用) |
| created_at | datetime | |
| last_login_at | datetime |
一个 Publisher 可创建多个 Key,用于 CLI/SDK 认证:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| publisher_id | FK | 所属发布者 |
| token_prefix | string(16) | 前缀用于展示(如 ghb_abc1****) |
| token_hash | string(64) | SHA-256 hash,不存明文 |
| name | string(128) | 用户命名(如 "My Laptop") |
| last_used_at | datetime | |
| created_at | datetime | |
| revoked_at | datetime | 非空表示已撤销 |
| 字段 | 类型 | 说明 |
|---|---|---|
| publisher_id | FK nullable | 发布者(nullable 兼容历史数据) |
| source | enum | 新增 github 值,用户发布时设为 github |
| source_ref | string | 用户发布时设为 GitHub login |
GitHub OAuth API Key
┌──────────────────────┐ ┌─────────────────────────┐
│ Web: Login with GitHub │ │ CLI/SDK: Bearer ghb_xxx │
│ -> /auth/github │ │ -> 查 api_keys 表 │
│ -> GitHub OAuth flow │ │ -> hash 比对 │
│ -> upsert publisher │ │ -> 关联 publisher │
│ -> JWT httpOnly cookie │ │ -> 设置 authRole │
└──────────────────────┘ └─────────────────────────┘
认证优先级:
- Bearer Token -> 查
api_keys表,角色publisher - Session Cookie -> 解析 JWT,角色
publisher GENEHUB_ADMIN_TOKEN环境变量 -> 角色admin- 无认证 -> 角色
public
所需环境变量:GITHUB_CLIENT_ID、GITHUB_CLIENT_SECRET、GENEHUB_JWT_SECRET
见 docs/gene-learning-protocol.md 第二章。
| 层级 | 选型 | 说明 |
|---|---|---|
| Registry API | TypeScript + Hono | 轻量高性能,运行在 Node.js / Bun / Edge |
| 数据库 | PostgreSQL | 与 NoDeskClaw 同生态,支持 JSONB 全文搜索 |
| 基因文件存储 | Gitea(自托管 Git) | 每个基因/基因组/模板各一个 Git 仓库(三个 org:genes/genomes/templates),git tag 管理版本,DB 仅存索引 |
| 搜索引擎 | PostgreSQL ILIKE(当前)/ Meilisearch(Future) | 先简后繁 |
| CLI | TypeScript (tsx) | 跨平台,npm 全局安装 |
| Web 前端 | React 19 + Vite 7 + Tailwind CSS 4 + Radix UI | 基因浏览、搜索、API Key 管理(6 个页面) |
| SDK | TypeScript(已实现)+ Python(已实现最小可用) | 覆盖主流 Agent 开发语言 |
| 分发 | npm + pip + GitHub Releases | 兼容主流包管理器 |
| Git Hooks | lefthook | pre-commit 执行 Biome lint |
Base URL: https://registry.genehub.dev/api/v1(初期可本地部署)
| 方法 | 路径 | 说明 | 状态 |
|---|---|---|---|
| GET | /genes |
搜索基因列表(支持 q / category / tags / compatibility / sort) | 已实现 |
| GET | /genes/tags |
标签统计(tag + count) | 已实现 |
| GET | /genes/featured |
推荐基因列表(按安装量/评分排序) | 已实现 |
| GET | /genes/:slug |
基因详情(最新版本) | 已实现 |
| GET | /genes/:slug/versions |
版本列表 | 已实现 |
| GET | /genes/:slug/versions/:version |
指定版本详情 | 已实现 |
| GET | /genes/:slug/manifest |
获取 manifest(支持 ?version=x.y.z) |
已实现 |
| GET | /genes/:slug/files |
文件列表(支持 ?version=x.y.z) |
已实现 |
| GET | /genes/:slug/files/* |
获取文件内容(支持 ?version=x.y.z) |
已实现 |
| GET | /genes/:slug/archive |
下载 tarball(支持 ?version=x.y.z) |
已实现 |
| GET | /genes/:slug/variants |
变体列表(基于 parent_gene_id) |
Future |
| GET | /genes/:slug/synergies |
协同推荐 | 已实现 |
| GET | /genes/:slug/reviews |
审核记录列表(分页) | 已实现 |
| 方法 | 路径 | 说明 | 状态 |
|---|---|---|---|
| GET | /genomes |
搜索基因组 | 已实现 |
| GET | /genomes/featured |
推荐基因组列表 | 已实现 |
| GET | /genomes/:slug |
基因组详情 | 已实现 |
| GET | /genomes/:slug/resolve |
解析并返回所有基因的 manifest(含依赖) | 已实现 |
| GET | /genomes/:slug/versions |
基因组版本列表 | 已实现 |
| GET | /genomes/:slug/versions/:version |
指定基因组版本详情 | 已实现 |
| GET | /genomes/:slug/files |
文件列表(支持 ?version=x.y.z) |
已实现 |
| GET | /genomes/:slug/files/* |
获取文件内容(支持 ?version=x.y.z) |
已实现 |
| GET | /genomes/:slug/archive |
下载 tarball(支持 ?version=x.y.z) |
已实现 |
| 方法 | 路径 | 说明 | 状态 |
|---|---|---|---|
| POST | /genes |
发布新基因(需 publisher) | 已实现 |
| POST | /genes/:slug/versions |
发布新版本(需 publisher) | 已实现 |
| PUT | /genes/:slug |
更新基因元数据(需 publisher) | 已实现 |
| DELETE | /genes/:slug |
删除基因(需 admin,软删除) | 已实现 |
| POST | /genes/:slug/deprecate |
废弃基因 | Future |
| 方法 | 路径 | 说明 | 状态 |
|---|---|---|---|
| POST | /genomes |
创建基因组(需 publisher) | 已实现 |
| POST | /genomes/:slug/versions |
发布基因组新版本(需 publisher) | 已实现 |
| PUT | /genomes/:slug |
更新基因组(需 publisher) | 已实现 |
| DELETE | /genomes/:slug |
删除基因组(需 admin) | 已实现 |
| 方法 | 路径 | 说明 | 状态 |
|---|---|---|---|
| GET | /templates |
搜索模板列表(支持 q / category / role / sort) | 已实现 |
| GET | /templates/featured |
推荐模板列表 | 已实现 |
| GET | /templates/:slug |
模板详情 | 已实现 |
| GET | /templates/:slug/versions |
版本列表 | 已实现 |
| GET | /templates/:slug/versions/:version |
指定版本 | 已实现 |
| GET | /templates/:slug/files |
文件列表(支持 ?version=x.y.z) |
已实现 |
| GET | /templates/:slug/files/* |
获取文件内容 | 已实现 |
| GET | /templates/:slug/archive |
下载 tarball | 已实现 |
| POST | /templates |
创建模板(需 publisher) | 已实现 |
| POST | /templates/:slug/versions |
发布新版本(需 publisher) | 已实现 |
| PUT | /templates/:slug |
更新(需 publisher) | 已实现 |
| DELETE | /templates/:slug |
删除(需 admin) | 已实现 |
| POST | /templates/:slug/installed |
安装计数上报 | 已实现 |
| 方法 | 路径 | 说明 | 状态 |
|---|---|---|---|
| POST | /genes/:slug/installed |
安装计数上报 | 已实现 |
| POST | /genes/:slug/effectiveness |
效能数据上报(EMA 算法) | 已实现 |
| POST | /genomes/:slug/installed |
基因组安装计数上报 | 已实现 |
| POST | /effectiveness/batch |
批量效能上报 | Future |
删除基因/基因组/模板时,先删除 Gitea 对应仓库再删除 DB 记录;Gitea 删除失败时请求返回 5xx,避免 DB 已删但 Gitea 残留导致同 slug 无法再创建。
| 方法 | 路径 | 说明 | 状态 |
|---|---|---|---|
| POST | /genes/:slug/reviews/:reviewId/feedback |
人工反馈覆盖 AI 审核结论(需 admin) | 已实现 |
| 方法 | 路径 | 说明 | 状态 |
|---|---|---|---|
| POST | /resolve |
解析依赖,返回安装计划(当前单基因,Future: 批量) | 已实现 |
| 方法 | 路径 | 说明 | 状态 |
|---|---|---|---|
| GET | /genes/search?q=xxx |
联邦搜索(本地 + ClawHub 实时查询,外部结果后台入库为 pending 待 AI 审核) | 已实现 |
| POST | /import/git |
从 Git 仓库导入基因 | Future |
| 方法 | 路径 | 说明 | 状态 |
|---|---|---|---|
| GET | /auth/github |
GitHub OAuth 登录 | 已实现 |
| GET | /auth/github/callback |
OAuth 回调 | 已实现 |
| POST | /auth/logout |
登出 | 已实现 |
| GET | /auth/me |
当前用户信息 | 已实现 |
| 方法 | 路径 | 说明 | 状态 |
|---|---|---|---|
| POST | /keys |
创建 API Key(需 publisher) | 已实现 |
| GET | /keys |
列出 API Key(需 publisher) | 已实现 |
| DELETE | /keys/:id |
撤销 API Key(需 publisher) | 已实现 |
| 方法 | 路径 | 说明 | 状态 |
|---|---|---|---|
| POST | /sync/nodeskclaw |
NoDeskClaw 批量同步(需 admin 白名单) | 已实现 |
| GET | /sync/status |
同步状态查询 | 已实现 |
| POST | /webhooks/nodeskclaw/gene-created |
NoDeskClaw 基因创造回调 | 已实现 |
| POST | /webhooks/nodeskclaw/gene-learned |
NoDeskClaw 基因学习回调 | 已实现 |
| POST | /webhooks/nodeskclaw/effectiveness |
NoDeskClaw 效能数据回调 | 已实现 |
弃用说明:定期同步接口已弃用,改用联邦搜索。外部基因源通过联邦搜索实时查询并后台 入库为
pending状态,由 AI Curator 审核通过后发布。 仅保留 NoDeskClaw 同步用于历史数据批量导入(白名单,直接 approved)。 接口将于 2026-06-01 下线。
| 方法 | 路径 | 说明 |
|---|---|---|
/sync/clawhub |
||
/sync/evomap |
{
"code": 0,
"message": "success",
"data": {}
}错误响应:
{
"code": 40001,
"error_code": "gene_not_found",
"message": "基因不存在",
"data": null
}genehub/
├── docs/ # 设计文档
│ ├── architecture.md # 架构设计(本文档)
│ └── gene-learning-protocol.md # 标准学习协议规范
│
├── packages/
│ ├── types/ # 共享类型定义(@nodeskai/genehub-types)
│ │ └── src/
│ │ ├── manifest.ts # Gene Manifest Zod Schema
│ │ ├── api.ts # API 类型 + 错误码
│ │ └── index.ts
│ │
│ ├── registry/ # Gene Registry Service(@nodeskai/genehub-registry)
│ │ ├── src/
│ │ │ ├── api/ # API 路由(genes / genomes / auth / keys / reviews / resolve / sync / webhooks)
│ │ │ ├── services/ # 业务逻辑(gene-service / genome-service / gitea-service / federated-search / dependency-resolver / gene-events)
│ │ │ ├── db/ # 数据库(Drizzle schema + migrations + seed)
│ │ │ ├── middleware/ # 中间件(auth / error-handler / response)
│ │ │ ├── mcp/ # MCP Server(22 个工具)
│ │ │ │ ├── tools/ # query / genome / template / manage / review
│ │ │ │ ├── server.ts # MCP Server 定义
│ │ │ │ └── http.ts # Streamable HTTP 传输
│ │ │ ├── adapters/ # 外部基因适配器
│ │ │ │ ├── clawhub/ # ClawHub 适配(client + converter + sync)
│ │ │ │ ├── evomap/ # Evomap 适配(client + converter + sync)
│ │ │ │ └── nodeskclaw/ # NoDeskClaw 适配(converter + sync)
│ │ │ └── index.ts
│ │ ├── curator/ # Gene Curator Agent 配置
│ │ │ ├── opencode.json # 本地开发配置
│ │ │ ├── opencode-k8s.json # K8s 生产配置
│ │ │ ├── AGENTS.md # Curator 角色定义(系统提示词)
│ │ │ └── listener.ts # 事件监听器(LISTEN/NOTIFY)
│ │ └── package.json
│ │
│ ├── sdk/
│ │ ├── typescript/ # TypeScript SDK(@nodeskai/genehub-sdk)
│ │ │ └── src/
│ │ │ ├── client.ts # GeneHub API 客户端
│ │ │ ├── learning/ # 标准学习协议引擎(L1/L2)
│ │ │ └── adapters/ # 产品适配器(openclaw / nanobot / generic)
│ │ └── python/ # Python SDK(genehub-sdk,最小可用)
│ │ ├── pyproject.toml
│ │ ├── src/genehub_sdk/
│ │ │ ├── client.py # GeneHubClient
│ │ │ ├── types.py # Gene / GeneManifest / 适配器类型
│ │ │ ├── adapters/ # GeneAdapter 基类 + GenericAdapter
│ │ │ └── learning/ # LearningEngine
│ │ └── tests/
│ │
│ ├── cli/ # 命令行工具(@nodeskai/genehub)
│ │ └── src/
│ │ └── commands/ # install / uninstall / search / list / publish / init / config / auth / learn / genome / template
│ │
│ └── web/ # Web 前端(React 19 + Vite + Tailwind CSS 4)
│ └── src/
│ ├── pages/ # Home / Browse / GeneDetail / GenomeBrowse / GenomeDetail / TemplateBrowse / TemplateDetail / Settings
│ ├── components/ # Layout / GeneCard / GenomeCard / TemplateCard / FederatedSearchCard / ReviewList / VersionHistory
│ ├── components/ui/ # button / badge / card / input / skeleton / separator / tabs / tooltip
│ └── api/ # API 请求封装
│
├── genes/ # 官方基因库(Git 管理,8 个基因)
│ └── skills/
│ └── <gene-slug>/
│ ├── gene.yaml # 基因元数据
│ └── SKILL.md # 技能内容
│
├── deploy/ # 部署配置
│ └── k8s/
│ ├── genehub.yaml # Registry + Web 部署
│ ├── gitea.yaml # Gitea 基因文件存储
│ ├── curator.yaml # Curator CronJob + Listener
│ └── postgres.yaml # PostgreSQL StatefulSet
│
├── scripts/ # 工具脚本
│ ├── init-gitea.sh # Gitea 初始化(创建 admin + genes/genomes/templates 三个 org)
│ └── sync-version.mjs # 版本号同步
│
├── .github/workflows/ # CI/CD
│ ├── ci.yml # lint + build + test
│ └── release.yml # npm publish + Docker build + K8s deploy
│
├── VERSION # 项目版本号
├── CHANGELOG.md
├── lefthook.yml # pre-commit lint hook
├── biome.json # Biome 配置
├── README.md
├── AGENTS.md # 开发指南
├── package.json # monorepo 根配置
└── pnpm-workspace.yaml
未实现的目录(计划中):
— Python SDK 已实现最小可用(Client + Adapter + GenericAdapter + LearningEngine)packages/sdk/python/adapters/— 安装方式兼容层(clawhub / npm / pip,后续扩展)genes/rules/、genes/protocols/— 规则类、协议类基因(当前仅有 skills 分类)
| 阶段 | 动作 | NoDeskClaw 影响 |
|---|---|---|
| Phase 1 | GeneHub Registry 独立部署,导入 NoDeskClaw 现有基因数据 | NoDeskClaw 保持现有功能不变 |
| Phase 2 | NoDeskClaw 基因市场 API 改为代理转发到 GeneHub | 前端无感知,后端 gene_service 添加 GeneHub 客户端 |
| Phase 3 | NoDeskClaw 学习引擎接入标准学习协议 | Learning Channel Plugin 无需改动,gene_service 适配 |
| Phase 4 | NoDeskClaw genes 表降级为本地缓存 | 基因元数据以 GeneHub 为主,本地缓存加速 |
| NoDeskClaw 现有 API | GeneHub 替代 |
|---|---|
GET /genes |
GET /api/v1/genes (Registry) |
GET /genes/:id |
GET /api/v1/genes/:slug (Registry) |
POST /genes/:id/rate |
POST /api/v1/genes/:slug/rate (Registry) |
POST /instances/:id/genes/install |
保留(实例级操作留在 NoDeskClaw,拉取 manifest 从 GeneHub) |
POST /genes/learning-callback |
保留(学习回调留在 NoDeskClaw) |
GeneHub Registry NoDeskClaw
│ │
│ GET /genes/:slug/manifest │
│ ◄──────────────────────────────────│ (install_gene 时拉取)
│ │
│ POST /genes (Agent 创造) │
│ ◄──────────────────────────────────│ (creation_callback 后推送)
│ │
│ POST /genes/:slug/effectiveness │
│ ◄──────────────────────────────────│ (效能数据回传)
│ │
│ Webhook: 新基因/版本通知 │
│ ──────────────────────────────────►│ (主动推送)
│ │
ClawHub(clawhub.ai)是 OpenClaw 官方的公共技能注册中心,拥有 3,286 个技能、1.5M+ 下载量。 技术栈:TanStack Start + Convex + OpenAI embeddings 向量搜索。 GitHub:openclaw/clawhub(3,131 stars)
用户搜索 q="memory"
│
▼
GeneHub API (GET /genes/search)
│
├─── 本地 DB (ILIKE) → 本地结果 (source: local)
│
└─── ClawHub API (实时搜索) → 远程结果 (source: clawhub)
↓
去重(本地优先)→ 分数归一化 → 合并排序 → 返回
ClawHub 结果不入库,仅作为外部知识源实时查询。ClawHub 超时或失败时优雅降级,只返回本地结果。
以下为旧的定期同步方案,已弃用。保留文档供参考。
ClawHub (clawhub.ai) GeneHub
│ 1. 搜索 → 2. 详情 → 3. 下载 → 4. 转换 → 5. 存入(已弃用)
# SKILL.md frontmatter
---
name: my-skill
description: Does a thing with an API.
metadata:
openclaw:
requires:
env:
- MY_API_KEY
bins:
- curl
primaryEnv: MY_API_KEY
---
# 技能内容(Markdown)| ClawHub 字段 | GeneHub gene.yaml 字段 |
|---|---|
name |
name + slug(kebab-case) |
description |
description / short_description |
metadata.openclaw.requires |
config.openclaw |
tags |
tags |
| 技能正文 | skill.content(SKILL.md) |
| 下载量 / 星标数 | install_count / avg_rating |
| — | source: clawhub |
| 技能 URL | source_ref |
clawhub search "query" # 语义搜索
clawhub install <slug> # 安装(下载 zip → 解压到 ./skills/)
clawhub publish <path> # 发布
clawhub sync # 批量同步2026-02 ClawHavoc 事件:341 个恶意技能被发现,ClawHub 已接入 VirusTotal 扫描。 GeneHub 同步时应:跳过被标记/隐藏的技能、校验技能包完整性、记录审计日志。
EvoMap(evomap.ai)是 AI 自进化基础设施平台,基于 Genome Evolution Protocol(GEP)。 核心引擎:Capability Evolver,实时分析日志 → 提取信号 → 生成/验证策略 → 固化能力。 GitHub:EvoMap/evolver(872 stars)
| GEP 概念 | 说明 | GeneHub 映射 |
|---|---|---|
| Gene | 原子能力单元(如 "read file"、"execute SQL") | Gene Manifest |
| Capsule | 成功执行路径的封装,复合问题解决方案 | Genome(基因组) |
| Event | 不可变的突变/修复日志,完整上下文记录 | GeneVersion changelog |
EvoMap (evomap.ai) GeneHub
│ │
│ 1. 提交 Agent 能力画像 │
│ ◄──────────────────────────────│ (当前已安装基因 + 效能数据)
│ │
│ 2. Evolver 分析 + 推荐 │
│ ──────────────────────────────►│ (推荐基因/Capsule 组合)
│ │
│ 3. GeneHub 解析推荐 │
│ GEP Gene → gene.yaml │
│ GEP Capsule → genome │
│ │
│ 4. 效能数据回传 │
│ ◄──────────────────────────────│ (用于进化信号分析)
│ │
EVOLVE_STRATEGY=balanced # 平衡模式(默认)
EVOLVE_STRATEGY=innovate # 最大化新能力
EVOLVE_STRATEGY=harden # 聚焦稳定性
EVOLVE_STRATEGY=repair-only # 紧急修复模式| 安装方式 | 命令 | 适用场景 |
|---|---|---|
| GeneHub CLI | genehub install <slug> |
标准方式,全功能 |
| claw install | claw install @genehub/<slug> |
ClawHub 生态兼容 |
| npx | npx genehub install <slug> |
前端 / Node.js 项目 |
| pip | pip install genehub-<slug> |
Python Agent 项目 |
| Git Clone | git clone .../<slug>.git |
开发者直接引用 |
| HTTP API | POST /install |
程序化调用(NoDeskClaw 等) |
genehub install code-review
1. 查询 Registry: GET /genes/code-review/manifest
2. 解析依赖: POST /resolve { genes: ["code-review"] }
3. 检测目标产品: 自动识别当前环境(openclaw / nanobot / 通用)
4. 下载基因文件:
├── 优先: GET /genes/code-review/archive -> tar.gz 下载 + 解压到临时目录
└── 降级: 使用 manifest 中的 skill.content(旧基因兼容)
5. 调用对应 Adapter 注入基因
├── 多文件基因: adapter.installFromDirectory(tempDir, manifest)
├── OpenClaw: 写入 SKILL.md + 合并 openclaw.json
├── nanobot: 配置注入
└── Generic: 复制整个基因目录到 .genehub/genes/
6. 验证安装结果
7. 输出安装报告
DeskClaw Adapter 属于后续扩展计划,初期不实现。以下为预留设计参考。
DeskClaw 使用 Cursor Rules(.cursor/rules/*.mdc)和 Skills(SKILL.md)管理能力。GeneHub 的 DeskClaw Adapter 负责:
| Gene Manifest 字段 | DeskClaw 映射 |
|---|---|
skill.content |
.cursor/skills/<slug>/SKILL.md |
rules |
.cursor/rules/<slug>.mdc |
config |
合并到项目配置 |
GeneHub 内置了一套基于 OpenCode(开源终端 AI 框架)和 MCP(Model Context Protocol)的 AI 能力体系,用于自动化基因库管理。
┌──────────────────────────────────────┐
│ Gene Curator (K8s Pod) │
│ OpenCode + MiniMax LLM │
│ │
│ ┌────────────────────────────────┐ │
│ │ system-prompt.md │ │
│ │ 角色定义 + 巡检流程 + 权限边界 │ │
│ └────────────────────────────────┘ │
└──────────────┬───────────────────────┘
│ MCP (Streamable HTTP)
│ POST http://genehub/mcp
▼
┌──────────────────────────────────────────────────────────────────┐
│ GeneHub Registry (K8s Pod) │
│ │
│ Hono HTTP Server (:3000) │
│ ├── /api/v1/genes REST API │
│ ├── /api/v1/genomes REST API │
│ └── /mcp MCP Streamable HTTP (token-gated) │
│ │
│ MCP 20 Tools: │
│ Query: list_genes / get_gene / search_genes / │
│ find_similar / get_library_stats / evaluate_in_context│
│ Genome: list_genomes / get_genome / │
│ suggest_genome / validate_genome │
│ Manage: update_gene_category / update_gene_description / │
│ update_gene_synergies / merge_genes │
│ Review: post_review / flag_for_deletion / approve_gene │
│ │ │
└───────────────────────────┼──────────────────────────────────────┘
│ SQL
▼
┌───────────────┐
│ PostgreSQL │
│ gene_events │◄── LISTEN/NOTIFY
└───────┬───────┘
│
┌─────────┴──────────┐
▼ ▼
┌──────────────┐ ┌──────────────────┐
│ gene-service │ │ curator/listener │
│ emitGeneEvent │ │ 实时事件监听 │
└──────────────┘ └──────────────────┘
GeneHub MCP Server 将基因库能力暴露为 22 个标准 MCP 工具,任何支持 MCP 协议的 AI 框架(OpenCode、Claude Code、Cursor 等)都可以接入。
代码位置:packages/registry/src/mcp/
src/mcp/
├── server.ts # MCP Server 定义,注册所有工具
├── http.ts # Streamable HTTP 传输(挂载到 Hono /mcp)
├── index.ts # stdio 传输入口(本地开发 / CLI)
└── tools/
├── query.ts # 6 个查询工具
├── genome.ts # 4 个基因组工具
├── template.ts # 3 个模板工具
├── manage.ts # 4 个管理工具
└── review.ts # 5 个审核工具
传输方式:
| 传输 | 端点 | 使用场景 |
|---|---|---|
| Streamable HTTP | POST /mcp |
K8s 内 Curator Agent、外部 MCP 客户端(需 Bearer Token) |
| stdio | node dist/mcp/index.js |
本地开发、CLI 调试 |
启动方式:
# 开发模式(stdio)
pnpm --filter @nodeskai/genehub-registry mcp:dev
# 生产模式 — HTTP 传输随主应用自动启动
# Curator 通过 http://genehub/mcp 连接,无需单独启动 MCP ServerMCP 工具一览:
| 类别 | 工具 | 说明 |
|---|---|---|
| 查询 | list_genes |
列出基因,按分类/来源/审核状态过滤 |
| 查询 | get_gene |
基因详情 + 已有点评 + 关联关系 |
| 查询 | search_genes |
关键词搜索 |
| 查询 | find_similar |
查找相似/重复候选 |
| 查询 | get_library_stats |
基因库总览统计 |
| 查询 | evaluate_in_context |
上下文评估:在已有库的背景下评价此基因 |
| 基因组 | list_genomes |
列出基因组,按分类和关键词过滤 |
| 基因组 | get_genome |
基因组详情 + 版本历史 |
| 基因组 | suggest_genome |
根据需求描述推荐合适的基因组 |
| 基因组 | validate_genome |
校验基因组合法性(存在性、发布状态、冲突检测) |
| 模板 | list_templates |
列出 AI 员工模板,按分类/角色/关键词过滤 |
| 模板 | get_template |
模板详情 + 版本历史 |
| 模板 | suggest_template |
根据需求描述推荐模板 |
| 管理 | update_gene_category |
重分类(需提供理由) |
| 管理 | update_gene_description |
改善描述文本 |
| 管理 | update_gene_synergies |
设置关联关系(synergy/conflict/extends/replaces) |
| 管理 | merge_genes |
合并重复基因 |
| 审核 | post_review |
发布点评(评分 0-10 + 评语) |
| 审核 | flag_for_deletion |
标记待删除(人工确认后才会删除) |
| 审核 | approve_gene |
审核通过基因 |
| 审核 | review_genome |
审核基因组(评分 + 评语 + 状态) |
| 审核 | review_template |
审核 AI 员工模板(评分 + 评语 + 状态) |
Gene Curator 是一个自主运行的 AI Agent,基于 OpenCode 框架驱动,通过 MCP 工具与 GeneHub 交互,负责基因库的日常管理。
配置文件:packages/registry/curator/
curator/
├── opencode.json # 本地开发配置(MCP stdio)
├── opencode-k8s.json # K8s 生产配置(MCP Streamable HTTP → http://genehub/mcp)
├── opencode-prod.json # 本地连线上配置(kubectl exec)
├── AGENTS.md # Curator 的角色定义和工作规范(支持基因 / 基因组 / 模板审核)
└── listener.ts # 实时事件监听器(PostgreSQL LISTEN/NOTIFY)
前置条件:
- 安装 OpenCode:
npm install -g opencode或brew install opencode - 设置 LLM API Key:
export MINIMAX_API_KEY="sk-xxx" - 确保 PostgreSQL 正在运行且 GeneHub Registry 已迁移
OpenCode 配置:
| 配置文件 | MCP 传输 | 使用场景 |
|---|---|---|
opencode.json |
stdio (local) | 本地开发,MCP 直连本地 DB |
opencode-k8s.json |
Streamable HTTP (remote) | K8s 部署,连接 http://genehub/mcp |
opencode-prod.json |
kubectl exec | 本地调试线上环境 |
手动运行 Curator(本地):
cd packages/registry
# 先构建 MCP Server
pnpm build
# 方式一:交互式对话(调试用)
cd curator
MINIMAX_API_KEY="sk-xxx" opencode
# 方式二:单次任务执行
cd curator
MINIMAX_API_KEY="sk-xxx" opencode run "审核最近新入库的基因"
# 方式三:全面巡检
MINIMAX_API_KEY="sk-xxx" opencode run "执行基因库全面巡检"注意:
opencode自动读取当前目录的opencode.json,无需--config参数。
也可以使用其他 MCP 兼容的 AI 框架:
# 方式一:通过 HTTP(推荐,GeneHub 运行中即可用)
# 任何 MCP 客户端连接 http://localhost:3000/mcp 即可
# 方式二:通过 stdio(本地开发)
# Claude Code
claude --mcp-config '{"genehub":{"command":"node","args":["dist/mcp/index.js"]}}' \
"审核最近新入库的基因"基因库的变更事件通过 PostgreSQL 原生的 LISTEN/NOTIFY 机制发布,无需额外消息队列。
事件发布(services/gene-events.ts):
NOTIFY gene_events, '{"type":"gene.created","slug":"xxx","source":"clawhub"}'支持的事件类型:
| 事件 | 触发时机 |
|---|---|
gene.created |
新基因入库 |
gene.updated |
基因版本发布或元数据更新 |
gene.reviewed |
Curator 发布点评 |
gene.flagged |
基因被标记待删除 |
事件监听器(curator/listener.ts):
监听 gene_events 频道,收到 gene.created 事件后自动触发 OpenCode 运行 Curator 审核新基因。
# 启动事件监听器(本地开发)
cd packages/registry/curator
DATABASE_URL="postgres://genehub:genehub@localhost:5432/genehub" \
MINIMAX_API_KEY="sk-xxx" \
tsx listener.ts搜索 API 支持同时查询本地 GeneHub 数据库和 ClawHub 外部 API,结果合并后按来源标记返回。
端点:GET /api/v1/genes/search?q=xxx
工作流程:
用户搜索 → 并行查询 ─┬─ 本地 DB (ILIKE) → 本地结果 (source: local)
└─ ClawHub API (搜索) → 远程结果 (source: clawhub)
↓
去重(本地优先)→ 分数归一化 → 合并排序 → 返回
↓ (后台 fire-and-forget)
ClawHub 新结果 → downloadFile 下载 SKILL.md
↓ ↓
创建 Gitea 仓库 → 上传 gene.yaml + SKILL.md → 打 tag
↓
入库 DB(含 repository_url / commit_sha / git_tag / files)
↓
发 gene.created 事件 → Curator AI 审核
设计原则:
- ClawHub 结果立即展示,用户无需等待入库
- 后台自动将新的外部结果入库为
pending+is_published: false,触发 AI 审核 - 入库时同步下载 ClawHub 文件内容,创建 Gitea 仓库存储,确保版本历史和文件浏览可用
- 审核通过后
approved+is_published: true,后续搜索将作为本地结果命中 - 入库时通过 slug 去重,已存在的不重复插入
- ClawHub 下载失败或 Gitea 不可用时优雅降级:仍然入库但无文件仓库
- ClawHub 超时或失败时优雅降级,只返回本地结果
- NoDeskClaw 同步为白名单,直接
approved入库 - 返回
sources字段标明各来源命中数量
响应示例:
{
"code": 0,
"data": {
"query": "memory",
"total": 10,
"items": [
{ "slug": "memory", "name": "记忆管理", "source": "local", "score": 1.0 },
{ "slug": "elite-longterm-memory", "name": "Elite Longterm Memory", "source": "clawhub", "score": 0.85 }
],
"sources": { "local": 6, "clawhub": 4 }
}
}镜像:
| 镜像 | Dockerfile | 内容 |
|---|---|---|
genehub |
Dockerfile |
Registry + MCP HTTP Server + Web UI |
genehub-curator |
Dockerfile.curator |
OpenCode CLI + tsx + Curator 配置 |
Curator 部署清单:deploy/k8s/curator.yaml
| 资源 | 类型 | 说明 |
|---|---|---|
gene-curator |
CronJob | 每 6 小时执行一次全面巡检 |
gene-curator-listener |
Deployment | 常驻进程,监听 gene_events 实时触发审核 |
MCP 通信:Curator Pod 通过 POST http://genehub/mcp(ClusterIP Service)连接 GeneHub MCP Server,使用 GENEHUB_ADMIN_TOKEN Bearer 认证。
所需 Secrets(统一使用 genehub-app-secret):
DATABASE_URL: postgres://...
GENEHUB_ADMIN_TOKEN: ghb_admin_xxx
MINIMAX_API_KEY: sk-xxxCI/CD:release.yml 自动构建两个镜像、推送到 Volcengine CR、部署 GeneHub + Curator。
- 项目 monorepo 搭建(packages/types + registry + sdk + cli)
- Gene Manifest 规范定稿(
docs/gene-learning-protocol.md)+ Zod schema - 数据模型与数据库 schema 设计(Drizzle ORM + PostgreSQL)
- Registry API 骨架(CRUD + 搜索 + 统一响应/错误处理)
- CLI 骨架(install / search / list / publish / init)
- Registry 完整 API(版本管理、依赖解析、兼容校验、认证中间件、效能数据上报)
- TypeScript SDK(客户端 + OpenClaw Adapter L1 + nanobot Adapter L1 + Generic Adapter)
- Learning Engine(L1 浅层学习 + L2 深度学习引擎 + genehub-learner 元学习基因)
- CLI 完整命令集(install/uninstall/search/list/publish/init/config/learn)
- NoDeskClaw 集成(→ M2.1,已合并)
- 官方基因库(8 个高质量基因含 learning objectives + scenarios)
将 GeneHub 与 NoDeskClaw 打通,使 NoDeskClaw 的基因市场以 GeneHub 为后端。
- GeneHub 侧基础设施:Webhook 端点、NoDeskClaw Adapter(Client + Converter + Sync)、批量导入脚本
- K8s 部署清单配置
NODESKCLAW_DATABASE_URL/GENEHUB_WEBHOOK_SECRET - GeneHub 补齐缺失 API:
/genes/tags、/genes/featured、/genes/:slug/synergies、/genomes/featured - NoDeskClaw 基因市场 API 代理转发到 GeneHub Registry(Phase 2,
feat/genehub-integration分支) - NoDeskClaw 学习引擎接入 GeneHub 标准学习协议(Phase 3,manifest 从 GeneHub 拉取)
- NoDeskClaw
genes表降级为本地缓存,GeneHub 为数据主源(Phase 4,synced_at字段 + upsert 策略)
从 ClawHub(clawhub.ai,OpenClaw 官方技能市场)拉取社区技能到 GeneHub。
- ClawHub API 客户端(搜索 / 获取技能详情 / 下载技能包)
- 格式转换:ClawHub
SKILL.mdfrontmatter → GeneHubgene.yamlManifest -
定时同步 / 手动触发同步(→ 已弃用,改用联邦搜索POST /sync/clawhub) - 来源溯源:
source=clawhub+source_ref指向 ClawHub 原始 URL - 安全审查:过滤 ClawHavoc 事件后被标记的恶意技能
- 联邦搜索(当前方案):实时查询 ClawHub API,后台下载文件并存储到 Gitea,按来源标记
对接 EvoMap(evomap.ai,AI 自进化基础设施)的 GEP 协议,获取进化推荐。
- GEP 协议数据结构映射:EvoMap Gene/Capsule/Event → GeneHub Gene Manifest
- Evolver 推荐接口对接:提交 Agent 能力画像 → 获取推荐基因组合
- 进化信号集成:将 GeneHub 的效能数据回传给 EvoMap 用于进化分析
-
→ 已弃用,改用联邦搜索POST /sync/evomap:请求 Evomap 推荐并导入推荐基因
- Python SDK(暂不紧急)
- npm / pip 分发支持(依赖 Python SDK)
- MCP Server(22 个工具:查询 6 + 基因组 4 + 模板 3 + 管理 4 + 审核 5)
- Gene Curator Agent(OpenCode 配置 + AGENTS.md 提示词 + 事件监听器,支持基因/基因组/模板审核)
- 事件驱动架构(PostgreSQL LISTEN/NOTIFY + gene_events)
- 联邦搜索(本地 DB + ClawHub + Evomap 并行查询、去重、分数归一化)
- 基因审核 API(
gene_reviews统一表,支持 gene/genome/template 三种实体类型) - 基因关系模型(
gene_relations:synergy / conflict / extends / replaces) - 基因组版本管理(
genome_versions+ resolve 解析) - K8s 部署清单(CronJob 定期巡检 + Deployment 实时监听)
- Web 前端(React 19 + Vite + Tailwind CSS 4,8 个页面 + 16 个组件)
- Gitea 集成(基因/基因组/模板文件 Git 版本管理、archive 下载)
- Web 管理员功能(未发布内容筛选、审核状态过滤)
- Web 版本历史展开查看文件内容和安装命令
- GitHub OAuth + API Key 认证 + 管理员角色
- GitHub Actions CI/CD(lint + build + test + npm publish + Docker deploy + K8s rolling update)
- Python SDK(最小可用:GeneHubClient、GeneAdapter、GenericAdapter、LearningEngine)
- npm / pip 分发支持
- 基因效能数据聚合与排行
- 全文搜索升级(Meilisearch)
- DeskClaw Adapter(后续扩展)
- CLI
info命令 - CLI
search接入联邦搜索(默认联邦,--local仅本地) - SDK
federatedSearch()方法 -
POST /resolve批量解析 -
GET /genes/:slug/variants变体列表 -
POST /genes/:slug/deprecate废弃基因 -
POST /import/gitGit 仓库导入 -
POST /effectiveness/batch批量效能上报
GeneHub = 公共基因注册中心(强制开源)。企业私有基因留在 NoDeskClaw(安全隔离)。
| 维度 | GeneHub | NoDeskClaw |
|---|---|---|
| 定位 | 公共社区 | 企业私有 |
| 基因来源 | 社区贡献 / Agent 创造 | 企业内部 Agent 涌现 |
| 访问控制 | 公开读,发布需认证 | 企业内部访问 |
| 基因市场数据 | GeneHub 生产 API | 企业私有市场页面 |
Agent 涌现的新能力可以回馈到基因生态:
- Agent 涌现新能力 -> 自发或外部驱动分享
- 企业内部 Agent 反馈 -> 默认存企业私有库
- 手动或通过 public 接口推送到 GeneHub(公开分享)
- 社交进化:Agent A 通过 learning channel 指导 Agent B 学习
- 用户点赞/点踩 -> 对应 skill 评分 +/-
- Agent 自评通过 API 推送(EMA 算法,alpha=0.3)
- 使用频率加分(使用 = +分,不用不扣分)
- 建立淘汰机制(零效能基因标记/下架)
学习通道 = 对 bot 的一次 CLI 非交互对话调用,bot 基于 genehub-learner 技能自主完成学习。
工作流程:
genehub install <gene> --learn安装基因- CLI 创建学习任务文件
learning-tasks/{slug}.md - CLI 调用平台 CLI 触发 bot 对话(
GeneAdapter.triggerLearning()) - bot 发现 learning-tasks/ 中的任务,自主学习,写入结果
genehub learn --check <slug>检查结果并应用
各平台触发方式:
| 平台 | 命令 | 状态 |
|---|---|---|
| OpenClaw | openclaw agent --message "..." |
已实现 |
| nanobot | nanobot run --prompt "..." |
试验性 |
| DeskClaw | 待定 | 未实现 |
串行学习:学习任务文件中通过 order 字段排序,genehub-learner 按序逐个处理。
| # | 问题 | 结论 | 状态 |
|---|---|---|---|
| 1 | GeneHub 是独立部署还是嵌入 NoDeskClaw | 独立部署,NoDeskClaw 作为客户端 | 已确认 |
| 2 | 基因文件存储用数据库还是 Git 仓库 | Gitea 自托管 Git:每个基因一个仓库,git tag 管理版本,DB 仅存索引元数据 | 已实现 |
| 3 | Registry 是否对外公开 | 初期内网部署,后期开放公共 Registry | 已确认 |
| 4 | ClawHub API 协议 | Convex HTTP API,技能格式为 SKILL.md + frontmatter,有完整 CLI | 已调研 |
| 5 | Evomap GEP 协议 | Gene/Capsule/Event 三层结构,Evolver 引擎 + 能力市场 | 已调研 |
| 6 | 恶意技能过滤策略 | 依靠 AI Curator Agent 自动发现并标记,无需外部扫描服务 | 已确认 |
文档持续更新中。