一开始的思路其实不对#

发布时间:2026/7/21 23:24:11
一开始的思路其实不对# 一开始我想做的学习链路是比较“技术视角”的。比如Java 积分系统对应 ERC20账户余额对应 Token balance管理员发积分对应 mint然后再用 OpenZeppelin 生成一个 ERC20 模板最后用 Foundry 跑测试。3ba82133988ace37878d067622b786d1从技术角度看这条链路没有问题。因为 ERC20 确实是 Web3 开发里非常常见的内容mint 也是 Token 合约里常见的操作OpenZeppelin 也是写标准合约时经常使用的安全组件库。问题在于这条路线默认学习者已经知道很多背景知识。对于一个完全小白来说他可能并不知道什么是 Token也不知道为什么需要 ERC20。如果一开始就把这些词丢给他其实很容易让人产生一种感觉这东西是不是离我太远了这和我们学习 Java 时是一样的。一个刚接触 Java 的人你不能上来就讲 JVM 调优、AQS、分布式事务、Netty、线程池参数调优。虽然这些东西很重要但它们不是入口。真正的入口应该是变量、方法、类、对象、集合、数据库、接口调用。只有这些基础概念建立起来以后再去看高级内容才不会那么痛苦。所以我后来把学习链路重新拆了一遍。第一步不是 ERC20而是公开账本。第二步不是 mint而是账号地址。第三步不是合约模板而是链上的小程序。再往后才是最小代码、本地实验、多人数据、权限控制等内容。也就是说我希望这个智能体先回答这样的问题Web3 的“账本”到底像 Java 系统里的什么Web3 里的“地址”是不是类似用户 ID智能合约是不是可以理解成链上的 Service这些问题看起来很基础但对于小白来说非常重要。因为只有这些概念先对齐了后面学习 Solidity、Foundry、OpenZeppelin 才有意义。先给智能体定身份#在真正添加 Skill 之前我先给智能体定了身份。这里不是简单改一个名字而是把它的角色、语言风格和用户偏好都写清楚。我给它设置的方向是 Java 转 Web3 学习助手目标用户是 Java 后端背景但 Web3 基础比较弱的人。它不能上来就讲一大堆陌生术语也不能把内容写成官方文档翻译。它需要用 Java 后端熟悉的东西解释 Web3例如数据库表、Service、Map、用户 ID、测试工具等。2a77404605543f51f24e4605d1409aad这一步非常关键。因为如果不先给智能体一个稳定身份它很容易变成一个泛泛而谈的问答机器人。你问它什么是区块链它可能回答一堆概念你问它什么是智能合约它可能直接搬一段百科式解释你问它怎么学习它可能给出一个很长的路线图看起来很完整但用户还是不知道下一步该干什么。我希望它保持一个简单原则每次只讲一个小概念先用 Java 类比再讲 Web3 里的含义。如果出现用户还没有学过的新词就放到“以后再学”不要展开。这个要求看起来很简单但实际很重要。因为模型最容易出现的问题就是它知道很多词但不知道哪些词当前不该讲。比如在讲账号地址时它可能顺手提到私钥、签名、助记词、钱包、交易、Gas。如果学习者已经有基础这些补充是好的但如果学习者完全小白这些补充反而会制造新的负担。所以身份文件的作用不是让智能体显得更聪明而是让它更稳定。它需要知道自己不是百科全书而是一个循序渐进的学习助手。为什么必须加 Skill#刚开始我也以为只要主提示词写得足够详细这个智能体就能按预期工作。后来发现并不是这样。提示词能约束回答风格但它很难保证智能体每次都按固定流程工作。尤其是模型能力一般时它往往会顺着当前问题直接回答而不是主动判断“现在应该查官方文档”“现在应该用 Java 类比”“现在应该更新学习笔记”。这也是我后来决定加 Skill 的原因。Skill 的价值不是让智能体多会一个概念而是把一类任务的处理方式固定下来。比如查官方资料就是一个 Skill用 Java 类比解释 Solidity 是一个 Skill运行 Foundry 实验是一个 Skill分析 Solidity 报错也是一个 Skill。如果没有 Skill智能体可能会这样回答Solidity 的 contract 类似 Java 中的 class可以保存状态变量也可以定义 function。这句话本身没错但太薄了。它没有要求查官方文档也没有要求给 Java 示例也没有要求给 Solidity 示例更没有要求给出小白容易误解的点。如果有了 Skill就可以强制它按固定格式输出先说明使用了哪个 Skill再给 Java 写法再给 Solidity 写法再列出对应关系最后补充容易误解的点。这样就算模型能力一般它也有一个固定轨道不容易跑偏。fb9ec9d9d1396f2c9ecb804bc94b2c45我第一个加的 Skill 是官方文档优先。原因很简单Web3 领域概念多、工具多、版本变化也比较快如果模型完全靠记忆回答很容易讲错。比如 Solidity 的版本、Foundry 的命令、OpenZeppelin 的合约继承方式这些都应该优先参考官方资料。所以我让这个 Skill 负责强制查阅官方资料。它的目标是避免模型凭印象乱讲。67875686d81834724d6207cdbaa7c04a第二个 Skill 是 Java 和 Solidity 的类比。这个 Skill 是整个学习助手的核心。因为目标用户是 Java 后端如果解释不能落到 Java 经验上那学习成本就会高很多。比如我们可以这样类比Java class 类似 Solidity contractJava field 类似 Solidity state variableJava method 类似 Solidity functionJava Map 类似 Solidity mappingJava 用户 ID 可以类比 Web3 地址JUnit 测试可以类比 Foundry test。当然这些类比不是完全等价。比如 Java 的对象一般运行在服务器内存里而 Solidity 合约部署到链上以后它的状态变化会被记录下来不能像普通数据库一样随便改。类比只是入口不是最终结论。这个 Skill 的作用就是先帮小白建立入口再补充差异。Skill 体系总览#最后我整理了一套完整 Skill 体系不是为了把数量堆多而是让学习过程能闭环。16cd1c982927e52fdd1aecbc9a19e0caweb3-official-docs-first#这个 Skill 的作用是优先查官方资料。它负责把学习内容限制在可靠来源里避免智能体凭印象讲。对于 Web3 来说这一点很重要。因为很多教程会混杂各种版本、各种工具链和各种实践习惯如果一开始就看太杂反而容易混乱。这个 Skill 主要处理的问题是当用户问 Solidity、Ethereum、Foundry、Hardhat、OpenZeppelin 相关内容时先基于官方资料整理再用中文解释。这样可以减少“模型说得很顺但其实不准确”的情况。java-solidity-bridge#这个 Skill 是学习助手最常用的 Skill。它负责把 Java 后端概念翻译成 Web3 概念。比如用户问区块链账本是什么它不会直接讲分布式账本、共识算法、节点验证而是先从转账系统讲起。Java 系统里可能有账户余额表和交易流水表。账户余额表可以被更新交易流水表一般用于审计。区块链的账本更像一套公开且不容易被随便修改的记录系统。这种解释方式对小白更友好。foundry-lab-runner#这个 Skill 用来做本地实验。学习 Web3 不能只停留在概念解释上后面一定要进入代码和测试。Foundry 是一个常用的智能合约开发工具链里面的 forge 可以用来构建和测试cast 可以做链上交互anvil 可以启动本地节点。不过在小白阶段我不会让它直接进入复杂项目而是先用最小实验。比如 Counter只包含加一和查询。这样学习者不会一开始就被项目结构、依赖、部署脚本等内容干扰。4bcaa5d5682c3f41117ff0fe572fd976openzeppelin-template-builder#这个 Skill 是为后续进阶准备的。因为当用户开始写标准化合约时不应该手搓危险代码。OpenZeppelin 提供了很多经过验证的合约组件比如权限控制、标准 Token、NFT 等。但这个 Skill 不会在第一课就使用。它的定位是“以后再学”。只有当用户已经理解了基本合约、状态、调用、测试之后再进入标准模板。这样不会让小白一上来就被继承关系、接口标准、权限模块吓到。217d759e5dca6b8e12a6ab69a5070573solidity-error-diagnoser#这个 Skill 用来处理报错。学习编程最容易卡住的地方不是看概念而是跑代码报错。尤其是 Solidity 和 Foundry 的错误信息对初学者来说并不直观。所以我专门加了一个报错诊断 Skill。它要求固定输出错误原文错误类型小白解释根因最小修复重新运行命令。这个固定流程可以避免模型乱改代码。这个 Skill 强调“最小修复”也就是只改必要的地方让学习者能看到问题和修复之间的关系。fb333f4ccb6c0094f5aff8c519938111web3-study-note-keeper#这个 Skill 负责学习笔记。是为了让学习者以后能复习。它会把本次学习内容整理成几个固定部分今天学了什么一句话结论Java 类比Web3 正确认知