2026-06-07 10:00:00
从 2022 年底 ChatGPT 开放给公众那天起,我就一头扎了进去。三年多过去,主流模型轮番上阵,从最早那个「会写诗的玩具」,到如今能陪我把一个 Idea 跑成产品、再跑出第一笔商业化收入。如今 AI 已经成了我使用最高频、投入最多、ROI 最高的工具。
也因为这层关系,身边越来越多的朋友总会问我同一个问题:AI 到底该怎么用?
市面上 AI 教程已经过剩,多数在贩卖一种幻觉:仿佛复制一个神奇的提示词,就能点石成金。但现实是,多数人试过两次觉得不靠谱,从此再也没碰过。
这篇文章不教提示词。我把这三年踩过的坑、和验证过的几条习惯整理出来,希望能给同样在摸索的朋友一点参考。
重要的从来不是技巧,是手感。

我对 AI 预期是这样的:一个看遍了所有书、考遍了所有试,但从没在你公司工作过一天的天才。
它知识满分,反应也快。但对你的业务一无所知:没开过你的会,没见过你的客户,不知道你的资源边界,更不知道你老板上周拍了什么板。
更要命的是,它不知道的时候,不会说「我不知道」,而是会一本正经地编一个看起来很对的答案给你看。
所以两件事很关键:
这三年我越来越确信一句话:AI 时代真正值钱的,不是技术深度,而是业务判断力 × 工具使用能力。AI 帮你干活,但你得知道该干什么活。
AI 犯错的方式很有欺骗性:它说得越自信,你越容易信,但它的自信和准确率之间,并没有必然关系。
几条底线得守住:
也有些事,最好别交给 AI:
信任,但验证。 这是我和 AI 协作的基本态度,三年没变过。
过去,要一个人高效完成跨职能的事,并不容易。产品经理想自己写代码,得脱产学几个月;设计师想独立做产品做运营,得补很多功底;内容创作者想做数据分析,得啃一遍统计基础。
每多跨一个领域,就要补一大堆基础,所以最经济的做法是分工。公司也因此越做越大、团队越做越臃肿。
AI 在改变这个等式。
未来的竞争力,已经不在于你是什么「岗位」,而在于你懂多少业务 × 会用多少工具 × 能用的多好。
下面这几件事,不是设想而是身边正在发生的:
AI 不会取代团队,但它确实大幅压低了「独立完成一件复杂事情」的门槛,它在延长每个人的能力半径。你不需要成为每个领域的专家,只需要把任务描述清楚、交给 AI、再把关质量。

很多人用 AI,其实是在「许愿」:
「帮我写一篇好文章」
「给我出个方案」
「解释写个视频脚本」
这就像你对一个刚入职的实习生说「把这事儿办好」,他不知道你要什么标准、给谁看、什么风格、哪些不能碰。
AI 不是阿拉丁神灯。它是一个极其勤快、但不了解你脑子里潜台词的同事。你给的指令越像一份「作业要求」,它交回来的东西,就越像样。
用了这么多年,我自己稳定下来的还是最朴素的一套:
[角色] 你是 ___([背景] 现在的情况是 ___[任务] 请帮我 ___[要求] 输出需要 ___(长度 / 语气 / 禁区 / 格式)
举个例子。不要说「帮我写个会议通知」,而是:
就这四句话的差别,输出质量能从 40 分直接跳到 75 分。
(朴素,但有效。AI 不需要花活,需要的是清楚。)

这一条特别送给有专业能力的朋友。
AI 出了一个 60 分的稿子,你手痒改两下变成 80 分,改着改着变成全部重写,最后说「还是我自己来吧」,从此再也不用 AI。
我见过太多人这么弃坑。
正确的做法是:当输出不满意时,不要去改它的结果,去改你的指令。
你的目标不是让 AI 一次输出 100 分,而是让这套工作流能稳定输出 75-80 分;剩下的 20 分,由你来做最终判断和润色。
迭代流程,而不是迭代结果。
我对刚开始上手 AI 的朋友的第一条建议是:前期同一个问题,至少抛给三个 AI。
每个模型都有自己的「性格」:
你不需要选出「最强模型」,你要的是长出手感:知道什么任务适合交给谁、谁出「第一稿」、谁做「审稿人」。这事和管理一个小团队没什么两样,得了解每个人的长板和短板。
(顺带一提:这条和上一条不冲突。前期多模型横评是为了「选人」,进入稳定工作流后该锁定主力就锁定主力;横评不是用来代替「改流程」的。)
过程可能要一两周。但一旦手感出来,效率提升是质变的。

AI 最大的优势不是「一步到位给你正确答案」,而是它能在你设计的流程里,稳定地完成很多小步骤。
你越是要它一口气搞定一个复杂任务,它就越容易「看似完整、实则偷工减料」。
比如要 AI 帮你写一份产品需求文档,不要说「帮我写个 PRD」。而是拆:
每一步都是一个明确的小任务,AI 在小任务上的完成度,远高于「一步登天」。
这套思路的本质,不是教 AI 一句万能咒语,而是教你自己一套工作流。
只让 AI 给你一个答案,你拿到的通常是最中庸、最保险、最「AI 味」的那一个,就是那种四平八稳、没有人味、什么都对又什么都不痛不痒的腔调。
我自己的习惯是:
用数量对抗平庸。 当你把平均分和产量都提上来,分布里自然会冒出几个让你眼前一亮的好东西。
这套思路,其实和互联网做增长是同一套底层:A/B Test 的本质,就是用数量和概率去取代「拍脑袋」。

很多人用 AI 时有个反直觉的误区:用 100 字的提示词,要求它写出 3000 字的文章。这就像让一个手头什么资料都没有的人凭空写论文,出来的东西注定是泛泛而谈的水货。
正确的做法反过来:
给它海量材料,让它帮你压缩、提炼、组织。
把会议录音转录稿、行业报告、竞品分析、客户反馈都喂进去,让它从中提取关键信息、整理结构、输出摘要。压缩比扩张容易:把 10 万字压到 1 万字,AI 做得很好;把 100 字扩到 1 万字,十有八九是灌水。
但喂材料也有讲究:AI 会走最省力的路径。给它一个 PDF,它可能只扫了个目录就开始编;给它一个网页链接,它可能根本没真正读完。
所以你要替它做一点「体力活」:
你愿意做一点点准备,AI 的智力输出就会锋利很多。就像你给实习生准备好整理过的资料包,他干活效率自然高。

不要上来就想着「让 AI 帮我重构整个业务」。从身边的「小问题」入手,是更靠谱的开场。
通用场景:
针对不同朋友的「第一个任务」:
每一个小任务都能帮你省 15-30 分钟。一天做三四个,加起来就是一两个小时。用得越多,手感越好,你也会越清楚什么时候该用、什么时候不该用。
这三年看过无数 AI 产品的起起落落,有一个规律非常明确:
真正从 AI 中获益的人,都是在它「还不够好」的时候就开始用的人。
不要等完美的模型出来,不要等最佳实践固化。AI 每隔几个月就有一次大升级,但你和它协作的「手感」,是要靠时间慢慢积累的:
这些经验没有捷径,只能靠用。
模型会迭代,工具会更新;但你对 AI 的理解和驾驭能力,是真正属于你的资产。就像二十年前学电脑、十年前学智能手机一样,早用早受益,越用越顺手。
AI 不是魔法,也不是骗局。它是一个正在快速变强的工具。
和所有工具一样,它放大的是使用者本身的能力。你有好的判断力、好的品味、好的业务理解,AI 就能帮你把这些十倍放大;反过来,你什么都没有,只是对着它许愿,它也只能还你一堆看似正确的废话。
材料 × 品味 × 工具使用能力
——这才是 AI 时代一个人的真正产出公式。

希望这篇对你有用。有问题,随时找我聊。
2024-08-23 14:44:00
最近 SEO 又火起来了特别是在出海圈,很多朋友私底下在频繁咨询我。故放出 17 年在微脉内部做的一次 SEO 分享 PPT 和相关文档。内容比较古早,但基本涵盖 SEO 的核心,在如今用于实战依旧有效,希望能帮助到有需要的朋友。
(地榆是我的花名,别笑…)
SEO 基础规范文档:https://shimo.im/doc/aLMG4FtoLZ8JRoKC
SEO 相关的尬聊:https://shimo.im/doc/7GVFl8rwU2snuY6X·
2024-05-15 05:00:00
Bento.me 是一个零代码创建个人主页的平台,以优雅美观的界面和使用简单而闻名。
但它唯一的缺点是:不支持自定义域名
但别担心,本文将用最简单、零成本的方式,帮助你为 Bento.me 绑定自定义域名。
在终端中输入以下命令,创建一个基础的 Cloudflare Worker:
npm create cloudflare@latest

然后按照终端内说明进行操作:
In which directory do you want to create your application? 你现在哪个目录创建应用
What type of application do you want to create? 你想创建什么类型的应用?
Do you want to use TypeScript? 你想使用 TypeScript 吗?
Do you want to use git for version control? 你想使用 Git 进行版本控制吗?
Do you want to deploy your application? 你想部署应用么?
完成后对应目录会出现一个文件夹,使用 Visual Studio Code 等代码编辑工具打开这个文件夹。
wrangler.toml 文件,在末尾添加下列内容:[vars]BENTO_USERNAME = "len" # 替换为你的 Bento 页面 ID,我的是 bento.me/lenBASE_URL = "https://bento.imzl.com" # 替换为你的自定义域名
.dev.vars 文件,黏贴下列内容:BENTO_USERNAME="len" # 替换为你的 Bento 页面 IDBASE_URL="http://127.0.0.1:8787"
/src/index.js 文件,替换为下列内容:/* * 为 Bento.me 设置自定义域名 * 作者:len * 详情:https://imzl.com/bento-add-domain * 源代码来源:https://jayfranco.hashnode.dev/ */// 事件监听addEventListener('fetch', event => { // 发生 fetch 事件时,用 handleRequest 函数结果做出响应 event.respondWith(handleRequest(event.request));});// 根据内容类型解析响应async function parseResponseByContentType(response, contentType) { // 如果没有内容类型,响应以文本形式返回 if (!contentType) return await response.text(); // 根据内容类型不同,采取不同的操作 switch (true) { case contentType.includes('application/json'): // 如果是 JSON,以 JSON 字符串形式返回 return JSON.stringify(await response.json()); case contentType.includes('text/html'): // 如果是 HTML,则使用 HTMLRewriter 对 response 进行转换 const transformedResponse = new HTMLRewriter() .on('body', { element(element) { // 自定义 CSS 和 JS 可添加到 HTML 页面中 element.append( ` <style> // 在这里输入你需要的自定义 CSS </style> `, { html: true }, ); element.append( ` <script> // 在这里输入你需要的自定义 JS </script> `, { html: true }, ); }, }) .transform(response); // 转换后的 response 以文本形式返回 return await transformedResponse.text(); case contentType.includes('font'): // 如果内容类型是字体,响应将以 ArrayBuffer 形式返回 return await response.arrayBuffer(); case contentType.includes('image'): // 如果内容类型是图片,响应将以 ArrayBuffer 形式返回 return await response.arrayBuffer() default: // 如果内容类型是其他类型,响应将以文本形式返回 return await response.text(); }}// 处理所有请求的函数async function handleRequest(request) { // 从请求 URL 中提取路径 const path = new URL(request.url).pathname; // 默认情况下,URL 设置为 "https://bento.me" + 路径 let url = 'https://bento.me' + path; // 如果路径包含'v1',URL 将更改为 'https://api.bento.me' + 路径 if (path.includes('v1')) { url = 'https://api.bento.me' + path; } // 如果 URL 为 "https://bento.me/",URL 将更改为 https://bento.me/' 后加上 BENTO User ID if (url === 'https://bento.me/') { url = 'https://bento.me/' + BENTO_USERNAME; } // 为 fetch 请求定义基本的 headers let headers = { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET,HEAD,POST,OPTIONS', }; // 使用定义的 headers 获取 URL const response = await fetch(url, { headers }); // 从响应 headers 中提取内容类型 const contentType = response.headers.get('content-type'); // 根据内容类型解析响应 let results = await parseResponseByContentType(response, contentType); // 如果结果不是 ArrayBuffer // 将所有对 bento API 的调用替换为我们的 BASE_URL // 这是解决 CORS 错误的临时方案 if (!(results instanceof ArrayBuffer)) { results = results.replaceAll('https://api.bento.me', BASE_URL); } // 将内容类型添加到 headers headers['content-type'] = contentType; // 返回带有结果和 headers 的新响应 return new Response(results, { headers });}
npm run dev
npm run deploy
2024-02-07 07:00:00
以下是一部分推荐阅读的 Crypto 相关文章列表,从 Dan Romero Blog 复制过来的,以英文为主我已经把标题翻译为中文,建议按时间顺序阅读:
2023-12-27 01:13:00
git clone https://github.com/atomicals/atomicals-js.gitcd atomicals-JavaScriptnpm install -g typescriptnpm run buildnpm install -g yarnyarn installyarn cli wallet-init //这是创建钱包命令最后一步是创建钱包,命令运行后,会在文件夹内生成一个 wallet.json 文件,保存着助记词和私钥,请务必保存好该文件。
创建钱包后,会自动生成两个地址,Primary Address 及 Funding Address:
Primary:用于接收Atomicals生态资产
Funding:用于铸造(挖矿)过程的中转钱包,通常是往 Funding 地址中存入相应数量的 BTC,用于铸造相应资产。
yarn cli mint-dft dmint --satsbyte 30
yarn cli mint-dft quark --satsbyte=100
dmint 和 quark 是 token 名称,请修改成相对应 FT 资产名称。
satsbyte 是矿工费设置,设置 100 即为 100聪/KB 的费用 Mint 对应资产。
yarn cli mint-nft "\punk0000.png" --satsbyte 30 --satsoutput 1000 --bitworkc 233
npm run cli balances
2023-11-01 21:00:00
Starknet,这个在ETH L2 中迅速崛起的名字,如今正通过其新推出的早期社区成员计划(ECMP)为其社区成员提供前所未有的机遇。这个计划不仅仅是关于技术贡献,更是关于每一个助力 Starknet 生态系统前进的个人。
作为一个坚定的 Starknet 支持者,我认为这是一个独一无二的机会,可以让社区成员,无论是开发者、内容创作者、会议组织者还是技术讨论的积极参与者,都得到认可和奖励。
申请开始于 2023 年 10 月 30 日,截止到 11 月 23 日。评审委员会将在 12 月 29 日做出决定。感兴趣的个人和项目都应当在此期间提交申请。
ECMP 面向那些积极贡献于 Starknet 生态系统的个人。无论是通过技术讨论、组织活动、发布品牌内容,还是以其他方式,所有为生态系统增添活力和资源的个人都应当考虑申请。
评估标准包括影响力、重要性、努力程度和原创性。这意味着不仅仅是代码行数,还包括你对社区的影响、你的工作对项目的重要性、你付出的努力,以及你的工作的独创性。
项目和个人都需要通过提供的链接提交申请,包括 Telegram ID、电子邮件和 Starknet 钱包地址。每个项目和个人都将由委员会进行评估。
申请地址:https://ecmp.starknet.io/form-individual
Starknet 官方公告:https://community.starknet.io/t/announcing-the-early-community-member-program/102092
重要的是,受制裁的人员或居住在受制裁国家的人员,以及与美国相关的人士,都不符合参与条件。
这个计划是 Starknet 社区成长和发展的重要一步。它不仅奖励那些默默无闻的英雄们,也鼓励更多的人加入并为这个生态系统贡献力量。如果你是 Starknet 的忠实支持者,请不要错过这个机会。