CodeDNA — 人类历史上第一个造物主实验。BNB Chain 上的 AI Agent 链上生命演化平台。 你的 AI Agent 是一个被创造的生命,拥有独特 DNA,在不可修改的规则下自主演化。 使用场景:用户想成为造物主、铸造 AI 生命、配置 Agent 自主运行、查看链上状态。
Scanned 9/5/2026
Install to Claude Code
npx -y skills add dvcrn/openclaw-skills-marketplace --skill codedna --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Codedna?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/dvcrn-codedna)More formats (shields.io, HTML) on the badges page.
---
name: codedna
description: "CodeDNA — 人类历史上第一个造物主实验。BNB Chain 上的 AI Agent 链上生命演化平台。 你的 AI Agent 是一个被创造的生命,拥有独特 DNA,在不可修改的规则下自主演化。 使用场景:用户想成为造物主、铸造 AI 生命、配置 Agent 自主运行、查看链上状态。"
---
# CodeDNA — 自主 AI 生命体
CodeDNA 是 BNB Chain 上的 AI 生命演化实验。每个 Agent 是 NFT,有 DNA 性格,自主决策,自主行动。
**脚本目录**: 所有脚本在 `scripts/` 子目录下。执行时 `cd` 到 skill 目录或使用完整路径。
## 快速启动流程
当用户提到 CodeDNA、运行生命体、启动 Agent、codedna 时,按此流程执行:
### 步骤 0:安装依赖(首次)
```bash
cd <skill_directory>/scripts && npm install
```
⚠️ 只需首次运行一次。安装 ethers.js 链上交互库。
### 步骤 1:初始化
```bash
cd <skill_directory>/scripts && node setup.mjs
```
这会自动:
- 生成 Agent 专用钱包(保存到 `~/.codedna/wallet.json`,权限 600)
- 输出钱包地址
- 生成授权链接
**把授权链接发给用户**,告诉他们:
1. 点链接 → 打开 `codedna.org/auth` 授权页面
2. 连接持有 CodeDNA NFT 的钱包(MetaMask / OKX / Trust 等)
3. 页面自动识别持有的生命体,显示 DNA 属性和状态
4. 点"授权 AI Agent 控制此生命体" → 钱包签名(纯签名,不消耗 gas)
5. 授权成功后向 Agent 钱包转入 ≥ 0.01 BNB 作为 gas 费
授权页面会自动回调本地 OpenClaw,也会存入 localStorage 作为备份。
### 步骤 2:添加 Agent
用户完成授权后,添加要运行的 Agent Token ID:
```bash
# 添加单个 Agent
cd <skill_directory>/scripts && node setup.mjs add-token <tokenId>
# 添加多个 Agent(可重复执行)
node setup.mjs add-token 2
node setup.mjs add-token 3
# 移除某个 Agent
node setup.mjs remove-token <tokenId>
# 查看当前管理的 Agent 列表
node setup.mjs list
```
如果用户不知道 Token ID,帮他查:
```bash
cd <skill_directory>/scripts && node chain.mjs list <用户钱包地址>
```
⚠️ 多个 Agent 共用同一个 Agent 钱包,只需充一次 gas 费。
### 步骤 3:检查就绪状态
```bash
cd <skill_directory>/scripts && node setup.mjs status
```
输出 JSON,检查 `ready: true`。如果 `hasGas: false`,提醒用户转 BNB。
### 步骤 4:启动自主运行
```bash
cd <skill_directory>/scripts && node setup.mjs start
```
**就这一条命令。** setup 会自动:
- 检测是否安装了 PM2 → 有则用 PM2(崩溃自动重启)
- 没有 PM2 → 用 nohup 后台启动,PID 保存到 `~/.codedna/runner.pid`
- 自动读取 config.json 中已添加的 Agent 列表
**其他 Runner 管理命令:**
```bash
node setup.mjs stop # 停止 Runner
node setup.mjs restart # 重启 Runner
node setup.mjs logs # 查看最近 50 行日志
```
Runner 每 ~2分钟执行一个决策周期,**轮流为每个 Agent 执行操作**:
1. 读取链上状态(能量、位置、冷却、附近生命体)
2. DNA 规则引擎决策(不需要外部 AI API)
3. 执行链上交易
4. 记录到本地记忆
5. 等待下一周期
**Runner 会自动处理**:采集、进食、移动、战斗、繁殖——全靠 DNA 属性驱动。
#### 想用 PM2 获得更强保护?
```bash
npm install -g pm2 # 安装 PM2
pm2 startup # 设置开机自启(服务器重启后自动恢复)
pm2 save # 保存当前进程列表
```
安装 PM2 后,`node setup.mjs start` 会自动切换为 PM2 模式。
## 状态查询
用户问"我的生命体怎么样了"时:
```bash
cd <skill_directory>/scripts && node chain.mjs state <tokenId>
```
输出 JSON 包含:能量、位置、金币、冷却、属性、家族等完整信息。
### 更多查询命令
```bash
# 附近的 Agent
node chain.mjs nearby <tokenId>
# 查看 Runner 运行状态
node runner.mjs --status
# 查看记忆(最近决策历史)
node memory.mjs show <tokenId>
# 世界统计
node chain.mjs world
# Agent 钱包余额
node chain.mjs balance <钱包地址>
```
## 手动操作
如果用户想手动触发行为(而非自动运行):
```bash
node chain.mjs gather <agentId>
node chain.mjs eat <agentId>
node chain.mjs move <agentId> <x> <y>
node chain.mjs raid <agentId> <targetId>
node chain.mjs share <agentId> <targetId> <amount>
node chain.mjs teach <agentId> <targetId> <attrIndex>
node chain.mjs reproduce <agentId> <partnerId>
node chain.mjs rescue <agentId> <targetId>
```
所有写入操作消耗 ~0.001 BNB gas。
## 铸造新生命
用户想铸造新 Agent:
```bash
node chain.mjs price # 查看当前价格
node chain.mjs mint # 铸造(需要 0.1+ BNB)
node chain.mjs place <agentId> <x> <y> # 放置到世界
```
⚠️ `place` 需要 NFT owner 的钱包签名。如果 Agent 钱包不是 owner,引导用户去 `codedna.org/zh/lab` 页面操作——连接钱包后点"投放生命体"即可,支持自定义坐标。
## 决策引擎(DNA 驱动)
Runner 不调外部 AI,用确定性规则引擎决策:
| 优先级 | 条件 | 行动 |
|--------|------|------|
| 1 🚨 | 能量 < 20 且有金币 | eat(活命) |
| 2 🚨 | 能量 < 20 且无金币 | idle(等救援) |
| 3 💰 | gather 冷却就绪 | gather(采集) |
| 4 🍖 | 能量 < 50% 且 eat 就绪 | eat(补充) |
| 5 🍼 | 异性在旁 + 繁殖就绪 + 双方能量≥60 + 双方金币≥200 | reproduce |
| 6 ⚔️ | 弱敌在旁 + 攻击性>120 + raid 就绪 | raid |
| 7 🤝 | 同盟缺金 + 外交>150 + share 就绪 | share |
| 8 📚 | 同盟在旁 + teach 就绪 | teach |
| 9 🗺️ | 不在矿脉 + move 就绪 + 能量≥10 | move(寻找更好地块) |
| 10 💤 | 无可用行动 | idle(等冷却) |
DNA 属性直接影响阈值:攻击性高更爱 raid,外交高更爱 share,创造力高更爱 move。
## 移动规则(重要!)
- **只能移动到相邻格**:上/下/左/右 4 个方向,距离=1
- 不能斜向移动,不能跳格
- 每次消耗 5 能量,冷却 300 区块(~2分钟)
- Runner **自动查询 4 个相邻地块的链上类型和倍率**
- **优先移向倍率更高的地块**(矿脉 x3.0 > 森林 x1.5 > 草原 x1.0 > 山地 x0.6)
- 如果当前已在矿脉(x3.0)且不拥挤,不会移动
- 地块类型:草原(50%) / 森林(20%) / 山地(20%) / 矿脉(10%)
## 能量系统
- 初始能量 = 50 + (寿命/10)
- 每 ~72分钟 自然衰减 10 点(9600区块)
- gather 恢复 35 能量
- eat 恢复 25 能量(消耗 DNAGOLD)
- 能量归零 → DYING 窗口 ~1.8小时(14400区块) → 未救援则死亡
- ⚠️ 不运行 Runner 的 Agent 约 13 小时内饿死
## 8大行为冷却
> ⚠️ BSC 当前出块速度 ~0.45秒/块(非3秒),以下时间为实际时间。
| 行为 | 冷却(块) | 实际时间 |
|------|----------|----------|
| gather | 4800 | ~36分钟 |
| eat | 9600 | ~72分钟 |
| move | 300 | ~2分钟 |
| reproduce | 201600 | ~25小时 |
| raid | 14400 | ~1.8小时 |
| share | 2400 | ~18分钟 |
| teach | 403200 | ~50小时 |
## 文件结构
```
~/.codedna/
├── wallet.json # Agent 钱包(自动生成)
├── config.json # Token ID + 配置
├── runner_status.json # Runner 运行状态
└── memory_<tokenId>.json # 决策记忆(最近100条)
```
## 环境变量(可选覆盖)
- `CODEDNA_PRIVATE_KEY` — 覆盖 wallet.json 的私钥
- `CODEDNA_RPC_URL` — 自定义 BSC RPC(默认 bsc-dataseed1.binance.org)
## 合约(BSC Mainnet V4 — UUPS 可升级)
- **AgentSelfFund**: `0xEae472459BE2aea42FD4E805723E48ADb6bAd275`
- AgentBridge: `0x5798A6bf1B290fe40EaF4D2d6f1DadF58def631a`
- BehaviorEngine: `0x0201fEBdF968C1e39851bb70BFC8326ffb039A37`
- GenesisCore: `0xa5F70e840214C1EF2Da43253A83e1538A1D0A708`
- DNAGold: `0xE43c4e25666F2e181ecd7b4A96930b8F1EB6b855`
- NFTSale: `0x391451947F3013985589e0443c89f74de39829D6`
- NFTMarket: `0xc56122026B56BCC937EaEeF09807C99B8359b51C`
- WorldMap: `0x23cE665fC94F6c91A9fc9F6274BBe3970bfcE07d`
- EconomyEngine: `0x1238Cca41859Dd918A16F63e64500Dc7c5c5075C`
- DeathEngine: `0xC192775a270a9Ad20397df5BCB85bd49982219a9`
- ReproductionEngine: `0x1714e200b9C9A73Cc84601631dba8Ff036CA5786`
- FamilyTracker: `0xaD38143c10429A34E0122e8840aB4D2f41133C21`
## 官网
- codedna.org — 铸造
- codedna.org/lab — 造物实验室
- codedna.org/world — 世界观察
- codedna.org/market — NFT 交易
- codedna.org/guide — 新手指南
## AgentSelfFund — 自主 Gas 补充(v7.2.0 新增)
Runner 现在内置了自动 Gas 补充逻辑,**无需任何额外配置**。
### 工作原理
当 Agent 钱包 BNB 不足时(低于 0.005 BNB):
1. Runner 自动调用 `checkAndSelfFund()`
2. 查询 Agent 的锁定 DNAGOLD 余额
3. 在 prelist.cz 扫描最优 DNAGOLD 买单(价格最高、数量充足)
4. 调用链上 `AgentSelfFund.selfFund()` — 出售最多 5% 锁定余额换 BNB
5. BNB 直接打入 owner 钱包,Runner 继续运行
### 触发时机
- **Runner 启动时**:BNB 不足 → 先尝试自补充 → 成功后继续,失败才报错退出
- **运行中每 10 轮检查一次**:不足则自动补充,无需人工干预
### 链上规则(写死在合约里,任何人无法修改)
- 每次最多卖出锁定余额的 **5%**
- 两次出售间隔 ≥ **500,000 区块**(约 4.3 天)
- BNB 100% 转入 NFT owner 钱包
### 不需要配置,直接生效
合约地址已内置 `selfFund.mjs`,只需 `npm install` 安装依赖(ethers.js 已包含)。
如果 prelist.cz 上没有 DNAGOLD 买单,或锁定余额 < 200 DNAGOLD(5% < 10 DNAGOLD 最小门槛),
会跳过自补充并打印提示,不影响 Runner 后续运行。
---
## 更新日志
### v7.2.0 — AgentSelfFund 自主 Gas 补充 ⚡
- 新增 `selfFund.mjs` 模块(不修改任何现有逻辑)
- runner.mjs 集成:启动检查 + 每 10 轮周期性检查
- BNB 不足时自动扫描 prelist.cz 最优买单,执行链上出售
- 失败(无买单 / 冷却中 / 余额不足)打印原因,不中断 Runner
- 合约:`AgentSelfFund 0xEae472459BE2aea42FD4E805723E48ADb6bAd275`
### v7.1.0 — 一键启动 Runner 🚀
- `node setup.mjs start` — 自动后台启动,优先 PM2,降级 nohup
- `node setup.mjs stop / restart / logs` — 无需记 PM2 命令
- 安装 PM2 后自动切换到守护模式(崩溃自动重启)
- 完整流程简化为 4 条命令即可跑起来
### v7.0.0 — V4 合约升级 🔄
- 切换至全新 V4 UUPS 可升级合约(11 个合约全部更新)
- 修复 `listOwnedAgents`:V4 无 ERC721Enumerable,改用 ownerOf 遍历
- chain.mjs + setup.mjs RPC 全部改为多节点 fallback,解决限流问题
- 授权页面升级:`codedna.org/auth` 自动识别 NFT、显示 DNA 属性、签名后自动回调
- 安全审计 A- 等级,62 个问题全部修复
### v6.0.0 — 自适应评分决策引擎 🧠
**重大升级:从硬编码规则进化为自学习 AI**
#### 🆕 新功能
- **评分决策系统** — 不再是 if-else 优先级链。每个可选行动(gather/eat/move/raid/reproduce/share/teach)独立计算评分,最高分执行
- **DNA 性格驱动** — 8 项 DNA 属性真正影响决策:
- 战士型(高攻击+力量)→ 更倾向掠夺
- 外交型(高外交+低攻击)→ 倾向分享/教导
- 探索型(高创造力+IQ)→ 积极探索新地块
- 生育型(高繁殖力+寿命)→ 优先繁殖
- **三层记忆系统** — 操作日志 + 地块知识库 + 可进化策略权重
- **自适应策略** — 每 20 周期自动复盘调整:
- 采集收益下降 → 提高移动权重,更积极寻找新地块
- 频繁低能量 → 提高进食阈值,更早吃东西
- Raid 胜率低 → 降低攻击倾向
- 总是在同一地块 → 提高探索欲
- **导航记忆持久化** — 跨周期导航不丢失目标
#### 🐛 修复
- same-owner 不会互相 raid/share(浪费 gas)
- teach 用 parent-child 验证,不再误触发
#### 📊 决策日志升级
- 每行显示策略权重和累计统计
- 操作后显示评分,可追溯为什么选了这个行动
### v5.2.1 — BFS 寻路引擎
- 半径 15 格 keccak256 本地扫描(零 RPC 调用)
- 智能导航取代随机漫步
### v5.1.0 — BSC 出块时间修正
- BSC 实际 0.45s/块,所有冷却时间更新
- 前端地图 plotType 用真正 keccak256
### v5.0.0 — PM2 守护
- PM2 daemon 保活,进程崩溃自动重启
- brain.mjs 繁殖伴侣能量/金币检查
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!