<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>无尘阁日记</title><link>https://jiangtian.top/</link><description>无尘阁，红尘炼心。君子性非异也，善假于物也。</description><item><title>现在企业遇到的对AI转型的迷茫问题</title><link>https://jiangtian.top/?id=16332</link><description>&lt;p&gt;她主要提出的不是一个单点问题，而是一组&lt;strong&gt;企业 AI 转型的真实痛点&lt;/strong&gt;。可以概括成 &lt;strong&gt;6 个核心问题&lt;/strong&gt;：&lt;/p&gt;&lt;h2&gt;一、不知道 AI 到底能用在哪里&lt;/h2&gt;&lt;p&gt;她说的第一个痛点是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;企业不知道 AI 能够在哪些环节使用。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;也就是说，老板和团队现在不是完全不想转，而是&lt;strong&gt;不知道从哪里切进去&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;具体包括：&lt;/p&gt;&lt;h3&gt;1. 哪些业务环节可以用 AI？&lt;/h3&gt;&lt;p&gt;比如销售、客服、研发、运营、交付、财务、人事、产品设计、项目管理，到底哪些环节最适合先做 AI 化？&lt;/p&gt;&lt;h3&gt;2. 哪些场景值得做？&lt;/h3&gt;&lt;p&gt;不是所有地方都值得上 AI。企业真正需要知道的是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;哪些场景用了 AI 之后，能降本、提效、增收、提升竞争力？&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;她关心的不是工具炫技，而是&lt;strong&gt;业务价值场景识别&lt;/strong&gt;。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;二、不知道先进企业是怎么做的&lt;/h2&gt;&lt;p&gt;她第二个问题是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;想知道别人先进企业已经怎么转型，有哪些经验可以直接借鉴。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这里她的潜台词是：&lt;/p&gt;&lt;p&gt;企业自己摸索成本太高，时间也来不及，希望看到已经验证过的路径。&lt;/p&gt;&lt;p&gt;她需要的是：&lt;/p&gt;&lt;h3&gt;1. 标杆案例&lt;/h3&gt;&lt;p&gt;比如字节、阿里、腾讯、华为，或者行业内领先公司，是怎么把 AI 用到组织、产品、研发、运营里的。&lt;/p&gt;&lt;h3&gt;2. 可复制经验&lt;/h3&gt;&lt;p&gt;不是听故事，而是要知道：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;人家为什么这么做？做了哪些步骤？用了什么组织机制？踩过什么坑？哪些东西我们可以直接借鉴？&lt;/p&gt;&lt;/blockquote&gt;&lt;h3&gt;3. 少走弯路&lt;/h3&gt;&lt;p&gt;她特别强调“少走弯路”，说明企业现在最大的焦虑之一是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;信息很多，但不知道哪些是真经验，哪些是噪音。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr/&gt;&lt;h2&gt;三、不知道 AI 转型应该怎么转&lt;/h2&gt;&lt;p&gt;这是她讲得最核心的问题。&lt;/p&gt;&lt;p&gt;她说：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;真正转，怎么转？从哪里开始？步骤是什么？一般规律是什么？会有哪些坑？&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这个问题可以拆成四层：&lt;/p&gt;&lt;h3&gt;1. 从哪里开始？&lt;/h3&gt;&lt;p&gt;企业 AI 转型不能一上来就全公司大改，需要找到第一批试点场景。&lt;/p&gt;&lt;p&gt;比如：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;先从内部提效开始？&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;先从产品 AI 化开始？&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;先从研发流程重构开始？&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;先从老板关心的经营分析开始？&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;她想知道第一步怎么走。&lt;/p&gt;&lt;h3&gt;2. 转型路径是什么？&lt;/h3&gt;&lt;p&gt;也就是企业 AI 转型有没有一套路线图：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;认知统一 → 场景盘点 → 试点验证 → 流程重构 → 工具沉淀 → 组织配套 → 产品升级 → 持续迭代&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;她现在缺的就是这个“路径感”。&lt;/p&gt;&lt;h3&gt;3. 转型规律是什么？&lt;/h3&gt;&lt;p&gt;不同企业虽然行业不同，但 AI 转型背后可能有共性规律。&lt;/p&gt;&lt;p&gt;比如：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;先提效，后增收&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;先局部试点，后组织推广&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;先流程标准化，再智能化&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;先解决高频、重复、明确边界的问题&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;先让团队会用，再谈系统重构&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;她希望有人把这些规律讲清楚。&lt;/p&gt;&lt;h3&gt;4. 会踩哪些坑？&lt;/h3&gt;&lt;p&gt;她担心企业盲目上 AI，比如：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;只买工具，不改流程&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;只培训员工，不改考核&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;只做演示，不进业务系统&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;老板很焦虑，但团队不知道怎么执行&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;AI 项目看起来热闹，最后没有业务结果&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr/&gt;&lt;h2&gt;四、软件行业自身会被 AI 重构&lt;/h2&gt;&lt;p&gt;她所在企业应该和软件行业相关，所以她特别强调：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;软件行业可能是受冲击最大的。AI 来了之后，软件生产流程已经被重构了。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这个问题非常关键。&lt;/p&gt;&lt;p&gt;她不是泛泛谈 AI，而是在问：&lt;/p&gt;&lt;h2&gt;AI 时代的软件工程到底怎么变？&lt;/h2&gt;&lt;p&gt;过去软件公司的生产流程可能是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;需求分析 → 产品设计 → UI设计 → 前端开发 → 后端开发 → 测试 → 部署 → 运维&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;但 AI 介入后，整个流程都可能变化：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;需求文档可以 AI 辅助生成&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;原型可以 AI 辅助设计&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;代码可以 AI 辅助编写&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;测试用例可以 AI 自动生成&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;文档可以 AI 自动整理&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;项目管理可以 AI 辅助跟踪&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;客户支持可以 AI 辅助响应&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;所以她真正的问题是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;AI 时代，软件公司原来的研发体系、项目管理体系、交付体系，还适不适用？&lt;/p&gt;&lt;/blockquote&gt;&lt;hr/&gt;&lt;h2&gt;五、团队能力模型要重新定义&lt;/h2&gt;&lt;p&gt;她接着说：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;软件工程路径变化了，对人的要求就会变化，对能力的要求也会变化。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这句话非常重要。&lt;/p&gt;&lt;p&gt;她提出的是组织层面的第二个核心问题：&lt;/p&gt;&lt;h2&gt;AI 转型之后，人应该怎么变？&lt;/h2&gt;&lt;p&gt;具体包括：&lt;/p&gt;&lt;h3&gt;1. 岗位会不会变化？&lt;/h3&gt;&lt;p&gt;比如：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;程序员是不是要变成 AI 协作型工程师？&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;产品经理是不是要更懂 AI 场景设计？&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;测试是不是要会用 AI 生成测试用例？&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;项目经理是不是要掌握 AI 驱动的交付管理？&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;售前是不是要会做 AI 解决方案？&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;2. 能力要求会不会变化？&lt;/h3&gt;&lt;p&gt;过去看重的是单点技能，比如写代码、做需求、测系统。&lt;/p&gt;&lt;p&gt;以后可能更看重：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;提问题能力&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;拆解任务能力&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;设计流程能力&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;调用 AI 工具能力&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;验收 AI 结果能力&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;跨职能协同能力&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;3. 团队怎么升级？&lt;/h3&gt;&lt;p&gt;她关心的是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;原来的团队怎么往新能力体系迁移？&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这就涉及培训、考核、岗位重构、人才筛选、组织机制调整。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;六、产品和服务怎么加入 AI，提升竞争力&lt;/h2&gt;&lt;p&gt;她把问题分成两个方面：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;一个方面是我们本身提供的产品和服务；第二个方面是组织和企业本身如何 AI 转型。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这里其实是两个赛道：&lt;/p&gt;&lt;h2&gt;1. 对内：企业自身 AI 转型&lt;/h2&gt;&lt;p&gt;也就是内部怎么用 AI 提效、降本、优化管理。&lt;/p&gt;&lt;p&gt;比如：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;AI 辅助研发&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;AI 辅助运营&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;AI 辅助经营分析&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;AI 辅助人力资源&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;AI 辅助客户服务&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;AI 辅助知识管理&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;2. 对外：产品服务 AI 化&lt;/h2&gt;&lt;p&gt;也就是她们自己的产品如何加入 AI 能力，变得更有竞争力。&lt;/p&gt;&lt;p&gt;比如软件企业原来卖系统，现在客户可能会问：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;你这个系统有没有 AI？能不能自动分析？能不能自动生成？能不能智能推荐？能不能减少人工操作？&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;她担心的是：&lt;/p&gt;&lt;p&gt;如果自己的产品不 AI 化，可能会被同行或者跨界企业超越。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;最后，她还有一个隐藏但很重要的问题：老板的战略焦虑&lt;/h1&gt;&lt;p&gt;她最后提到：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;信息特别多，老板天天收到很多信息，大家担心突然被其他行业超了。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这不是技术问题，而是战略焦虑。&lt;/p&gt;&lt;p&gt;可以总结为：&lt;/p&gt;&lt;h2&gt;企业不知道自己现在走的方向对不对&lt;/h2&gt;&lt;p&gt;她关心的是：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;我们现在的 AI 方向是不是正确？&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;我们是不是在做真正有价值的事？&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;我们会不会被别的行业、别的公司突然超过？&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;我们该如何判断趋势？&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;我们的战略定义是否需要调整？&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;所以她不仅需要工具培训，更需要一套：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;AI 时代企业战略判断框架。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr/&gt;&lt;h1&gt;一句话总结&lt;/h1&gt;&lt;p&gt;她提出的核心问题是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;企业不是不想做 AI，而是不知道 AI 用在哪、怎么转、先做什么、别人怎么做、团队怎么变、产品怎么升级，以及自己的战略方向到底对不对。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;更精炼地说，就是这 6 个问题：&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;序号&lt;/th&gt;&lt;th&gt;问题&lt;/th&gt;&lt;th&gt;本质&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;AI 可以用在哪些环节？&lt;/td&gt;&lt;td&gt;场景识别问题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;先进企业怎么做？&lt;/td&gt;&lt;td&gt;标杆借鉴问题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;企业 AI 转型怎么转？&lt;/td&gt;&lt;td&gt;路径方法问题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;软件生产流程怎么被重构？&lt;/td&gt;&lt;td&gt;业务流程重构问题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;团队能力怎么升级？&lt;/td&gt;&lt;td&gt;组织人才问题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;产品和服务怎么 AI 化？&lt;/td&gt;&lt;td&gt;产品竞争力问题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;方向到底对不对？&lt;/td&gt;&lt;td&gt;战略判断问题&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;如果用于你们后面设计产品，可以把她的需求提炼成一句话：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;企业需要的不是一堂泛泛的 AI 课，而是一套“从战略判断、场景识别、路径设计、组织配套到产品 AI 化”的企业 AI 转型落地方案。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sat, 09 May 2026 14:57:40 +0800</pubDate></item><item><title>双方服务器时间戳不一致，导致凭证大概率过期</title><link>https://jiangtian.top/?id=16331</link><description>&lt;p&gt;我问：&lt;/p&gt;&lt;p&gt;现在遇到一个问题，我这里颁发的一个凭证，时间戳可能比对方超前，然后加上60，到他那里就出现了有效期不正确的提示，我该怎么弄？把过期时间改小？&lt;/p&gt;&lt;p&gt;AI答：&lt;/p&gt;&lt;p&gt;不要优先把过期时间“改小”。真正问题不是 60 秒太长，而是 &lt;strong&gt;双方服务器时间不一致&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;你现在的问题本质是：&lt;/p&gt;&lt;pre&gt;你的服务器时间：12:00:30
对方服务器时间：12:00:00

你生成&amp;nbsp;expireTime&amp;nbsp;=&amp;nbsp;12:01:30
对方拿到后判断：这个凭证有效期还有&amp;nbsp;90&amp;nbsp;秒，超过允许的&amp;nbsp;60&amp;nbsp;秒
于是提示：有效期不正确&lt;/pre&gt;&lt;p&gt;也就是说，对方不是觉得它“过期了”，而是觉得它“有效期太长”或“签发时间在未来”。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;一、正确处理顺序&lt;/h1&gt;&lt;h2&gt;1. 第一优先级：校准服务器时间&lt;/h2&gt;&lt;p&gt;这是根治方案。&lt;/p&gt;&lt;p&gt;在你的服务器上先看时间：&lt;/p&gt;&lt;pre&gt;date
timedatectl&amp;nbsp;status&lt;/pre&gt;&lt;p&gt;开启 NTP 自动校时：&lt;/p&gt;&lt;pre&gt;sudo&amp;nbsp;timedatectl&amp;nbsp;set-ntp&amp;nbsp;true&lt;/pre&gt;&lt;p&gt;如果是 CentOS / Rocky / AlmaLinux，可以看：&lt;/p&gt;&lt;pre&gt;chronyc&amp;nbsp;tracking
systemctl&amp;nbsp;status&amp;nbsp;chronyd&lt;/pre&gt;&lt;p&gt;如果你的程序跑在 Docker 里，注意：&lt;br/&gt;&lt;strong&gt;容器时间一般跟宿主机走，所以要校准宿主机时间，不是只看容器。&lt;/strong&gt;&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;二、如果短期无法让双方时间完全一致，怎么兼容？&lt;/h1&gt;&lt;p&gt;你可以做一个“时间回拨补偿”。&lt;/p&gt;&lt;p&gt;比如你发现你们服务器普遍比对方快 30 秒，那就不要用本机当前时间直接签发，而是：&lt;/p&gt;&lt;pre&gt;签发基准时间&amp;nbsp;=&amp;nbsp;当前时间&amp;nbsp;-&amp;nbsp;30&amp;nbsp;秒
过期时间&amp;nbsp;=&amp;nbsp;签发基准时间&amp;nbsp;+&amp;nbsp;60&amp;nbsp;秒&lt;/pre&gt;&lt;p&gt;也就是：&lt;/p&gt;&lt;pre&gt;$ttl&amp;nbsp;=&amp;nbsp;60;
$clockOffset&amp;nbsp;=&amp;nbsp;30;&amp;nbsp;//&amp;nbsp;你方时间比对方快约&amp;nbsp;30&amp;nbsp;秒，就回拨&amp;nbsp;30&amp;nbsp;秒

$baseTime&amp;nbsp;=&amp;nbsp;time()&amp;nbsp;-&amp;nbsp;$clockOffset;
$expireTime&amp;nbsp;=&amp;nbsp;$baseTime&amp;nbsp;+&amp;nbsp;$ttl;

$payload&amp;nbsp;=&amp;nbsp;[
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;sub&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;json_encode([
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;thirdparty&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;#39;norming&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;module&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;#39;SELFBUILT&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;tenantId&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;$tenantId,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;creditCode&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;$creditCode,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;expireTime&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;$expireTime,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;nonce&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;bin2hex(random_bytes(8)),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],&amp;nbsp;JSON_UNESCAPED_UNICODE),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;iat&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;$baseTime,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;exp&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;$expireTime,
];&lt;/pre&gt;&lt;p&gt;这样对方看到的是：&lt;/p&gt;&lt;pre&gt;iat：更接近对方当前时间
expireTime：距离对方当前时间约&amp;nbsp;60&amp;nbsp;秒&lt;/pre&gt;&lt;p&gt;比单纯把过期时间改小更稳。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;三、为什么不建议直接把过期时间改小？&lt;/h1&gt;&lt;p&gt;比如你直接从：&lt;/p&gt;&lt;pre&gt;expireTime&amp;nbsp;=&amp;nbsp;当前时间&amp;nbsp;+&amp;nbsp;60&lt;/pre&gt;&lt;p&gt;改成：&lt;/p&gt;&lt;pre&gt;expireTime&amp;nbsp;=&amp;nbsp;当前时间&amp;nbsp;+&amp;nbsp;30&lt;/pre&gt;&lt;p&gt;短期可能能过，但会带来两个问题：&lt;/p&gt;&lt;p&gt;第一，&lt;strong&gt;真实可用时间变短&lt;/strong&gt;。网络慢一点、接口排队一下、重试一次，凭证可能就过期了。&lt;/p&gt;&lt;p&gt;第二，&lt;strong&gt;时间偏差一变又会失败&lt;/strong&gt;。今天你们快 30 秒，明天快 45 秒，后天 NTP 恢复正常，它又不稳定了。&lt;/p&gt;&lt;p&gt;所以更好的做法是：&lt;/p&gt;&lt;pre&gt;不是单纯缩短有效期，而是修正签发基准时间。&lt;/pre&gt;&lt;hr/&gt;&lt;h1&gt;四、最好让对方加“时间容忍窗口”&lt;/h1&gt;&lt;p&gt;如果能跟对方沟通，建议他们校验时允许一定时间误差，比如 ±60 秒或 ±120 秒。&lt;/p&gt;&lt;p&gt;正确校验逻辑应该类似：&lt;/p&gt;&lt;pre&gt;iat&amp;nbsp;不能明显晚于对方当前时间，比如不能超过&amp;nbsp;now&amp;nbsp;+&amp;nbsp;60
expireTime&amp;nbsp;不能早于对方当前时间，比如不能小于&amp;nbsp;now&amp;nbsp;-&amp;nbsp;60
expireTime&amp;nbsp;-&amp;nbsp;iat&amp;nbsp;应等于或不超过&amp;nbsp;60&amp;nbsp;秒&lt;/pre&gt;&lt;p&gt;不要死板地判断：&lt;/p&gt;&lt;pre&gt;expireTime&amp;nbsp;-&amp;nbsp;当前时间&amp;nbsp;必须小于等于&amp;nbsp;60&amp;nbsp;秒&lt;/pre&gt;&lt;p&gt;因为这个判断天然怕服务器时间误差。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;五、你们这个“诺明凭证”建议统一成这样&lt;/h1&gt;&lt;p&gt;你之前那个 token 里有两个过期时间：&lt;/p&gt;&lt;pre&gt;sub.expireTime：60&amp;nbsp;秒后
JWT&amp;nbsp;外层&amp;nbsp;exp：7&amp;nbsp;天后&lt;/pre&gt;&lt;p&gt;这个不太好，容易导致对方系统校验逻辑分裂。&lt;/p&gt;&lt;p&gt;建议统一：&lt;/p&gt;&lt;pre&gt;iat&amp;nbsp;=&amp;nbsp;签发基准时间
exp&amp;nbsp;=&amp;nbsp;签发基准时间&amp;nbsp;+&amp;nbsp;60
sub.expireTime&amp;nbsp;=&amp;nbsp;签发基准时间&amp;nbsp;+&amp;nbsp;60&lt;/pre&gt;&lt;p&gt;也就是外层 &lt;code inline=&quot;&quot;&gt;exp&lt;/code&gt; 和内层 &lt;code inline=&quot;&quot;&gt;expireTime&lt;/code&gt; 保持一致。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;六、最终建议&lt;/h1&gt;&lt;p&gt;你现在不要简单理解成“把过期时间改小”。&lt;/p&gt;&lt;p&gt;更准确的处理是：&lt;/p&gt;&lt;pre&gt;1.&amp;nbsp;先校准你方服务器时间；
2.&amp;nbsp;如果短期仍有偏差，就做签发时间回拨补偿；
3.&amp;nbsp;iat、exp、sub.expireTime&amp;nbsp;使用同一个基准时间；
4.&amp;nbsp;最好让对方加&amp;nbsp;60～120&amp;nbsp;秒&amp;nbsp;clock&amp;nbsp;skew&amp;nbsp;容忍；
5.&amp;nbsp;如果偏差超过&amp;nbsp;60&amp;nbsp;秒，靠凭证参数硬调不可靠，必须校时。&lt;/pre&gt;&lt;p&gt;你可以临时先这样改：&lt;/p&gt;&lt;pre&gt;baseTime&amp;nbsp;=&amp;nbsp;time()&amp;nbsp;-&amp;nbsp;30
expireTime&amp;nbsp;=&amp;nbsp;baseTime&amp;nbsp;+&amp;nbsp;60&lt;/pre&gt;&lt;p&gt;如果对方仍提示有效期不正确，再把 &lt;code inline=&quot;&quot;&gt;30&lt;/code&gt; 调成 &lt;code inline=&quot;&quot;&gt;45&lt;/code&gt; 或 &lt;code inline=&quot;&quot;&gt;60&lt;/code&gt;。但这只能算临时兜底，最终还是要把服务器时间同步好。&lt;/p&gt;</description><pubDate>Fri, 08 May 2026 18:04:41 +0800</pubDate></item><item><title>git幽灵模式是啥？</title><link>https://jiangtian.top/?id=16330</link><description>&lt;p&gt;你这个朋友说的“Git 幽灵模式”，大概率不是 Git 官方概念，而是一种圈内说法。它说白了是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;仓库、分支、版本虽然被删了，但 Git 的某些对象、历史记录、缓存、镜像、构建产物，可能还在。只要知道关键版本标识，就有机会把曾经存在过的内容找回来。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;但这里要分清楚：&lt;br/&gt;&lt;strong&gt;这不是魔法，也不是 Git 自带的“隐身入口”。更不是说任何删除的仓库都能随便拿到。&lt;/strong&gt;&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;一、为什么删除了还能找回来？&lt;/h1&gt;&lt;p&gt;因为 Git 的核心不是“文件夹”，而是一套对象数据库。&lt;/p&gt;&lt;p&gt;Git 里面主要有几类对象：&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;对象&lt;/th&gt;&lt;th&gt;通俗解释&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;blob&lt;/td&gt;&lt;td&gt;一个文件的内容&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;tree&lt;/td&gt;&lt;td&gt;一个目录结构&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;commit&lt;/td&gt;&lt;td&gt;一次提交快照&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;tag&lt;/td&gt;&lt;td&gt;给某个版本打的标签&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;你平时看到的分支，比如：&lt;/p&gt;&lt;pre&gt;main
dev
release-v1.0&lt;/pre&gt;&lt;p&gt;本质上只是一个“指针”。&lt;/p&gt;&lt;p&gt;它指向某个 commit。&lt;/p&gt;&lt;p&gt;所以删除分支，并不一定立刻删除 commit 本身。&lt;/p&gt;&lt;p&gt;举个简单例子：&lt;/p&gt;&lt;pre&gt;main&amp;nbsp;&amp;nbsp;→&amp;nbsp;&amp;nbsp;A&amp;nbsp;→&amp;nbsp;B&amp;nbsp;→&amp;nbsp;C&lt;/pre&gt;&lt;p&gt;如果把 &lt;code inline=&quot;&quot;&gt;main&lt;/code&gt; 这个分支删掉，可能只是把 &lt;code inline=&quot;&quot;&gt;main&lt;/code&gt; 这个指针删了。&lt;/p&gt;&lt;p&gt;但是 &lt;code inline=&quot;&quot;&gt;A、B、C&lt;/code&gt; 这些提交对象，可能还暂时躺在 Git 的对象库里。&lt;/p&gt;&lt;p&gt;这就像一本书的目录被撕掉了，但书页还没被烧掉。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;二、他说的“曾经删除过的版本”是什么意思？&lt;/h1&gt;&lt;p&gt;一般有几种情况。&lt;/p&gt;&lt;h2&gt;1. 删除的是分支，不是提交内容&lt;/h2&gt;&lt;p&gt;比如一个仓库曾经有一个分支：&lt;/p&gt;&lt;pre&gt;feature/secret-demo&lt;/pre&gt;&lt;p&gt;后来这个分支被删了。&lt;/p&gt;&lt;p&gt;但是只要有人知道当时最后一次提交的 commit hash，比如：&lt;/p&gt;&lt;pre&gt;a1b2c3d4e5f6...&lt;/pre&gt;&lt;p&gt;并且这个对象还没被清理，就可能重新找回。&lt;/p&gt;&lt;p&gt;这就是所谓“幽灵版本”。&lt;/p&gt;&lt;p&gt;它看起来消失了，实际上对象还残留着。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;2. 删除的是 tag，但版本归档还在缓存里&lt;/h2&gt;&lt;p&gt;有些项目发布过版本：&lt;/p&gt;&lt;pre&gt;v1.0.0
v1.0.1
v2.0.0&lt;/pre&gt;&lt;p&gt;后来作者删了 tag，或者删了 release。&lt;/p&gt;&lt;p&gt;但如果这个版本曾经被：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;下载过；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;被别人 fork；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;被 CI 构建过；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;被镜像站同步过；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;被包管理平台收录过；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;被搜索引擎或归档服务缓存过；&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;那么它就可能不在原仓库里，却还存在于别的地方。&lt;/p&gt;&lt;p&gt;这也是很多“删除后还能被找到”的原因。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;3. 删除的是仓库，但别人 fork 或 clone 过&lt;/h2&gt;&lt;p&gt;Git 是分布式版本控制。&lt;/p&gt;&lt;p&gt;这点很关键。&lt;/p&gt;&lt;p&gt;SVN 那类系统更像“中央仓库”；&lt;br/&gt;Git 则是每个人本地都可以有一份完整历史。&lt;/p&gt;&lt;p&gt;所以一个仓库即使原作者删除了：&lt;/p&gt;&lt;pre&gt;原始仓库：删除
别人&amp;nbsp;fork：还在
别人本地&amp;nbsp;clone：还在
CI/CD&amp;nbsp;缓存：可能还在
镜像站：可能还在
包管理平台：可能还在&lt;/pre&gt;&lt;p&gt;所以删除原仓库，不等于全网蒸发。&lt;/p&gt;&lt;p&gt;这也是很多开源项目“删库跑路”后，代码还能被恢复的原因。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;三、“版本号”和“加密字符串”可能指什么？&lt;/h1&gt;&lt;p&gt;你截图里说：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;只要能找到版本号和加密字符串&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这个说法不太标准。这里面可能混了几个概念。&lt;/p&gt;&lt;h2&gt;1. 版本号&lt;/h2&gt;&lt;p&gt;版本号可能是：&lt;/p&gt;&lt;pre&gt;v1.0.0
v1.2.3
2024.10.15
release-2025-01&lt;/pre&gt;&lt;p&gt;它通常对应一个 tag、release、构建包或者历史快照。&lt;/p&gt;&lt;h2&gt;2. 所谓“加密字符串”&lt;/h2&gt;&lt;p&gt;这个词大概率不准确。&lt;/p&gt;&lt;p&gt;很多人会把下面这些东西都叫“加密字符串”：&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;他说的“加密字符串”&lt;/th&gt;&lt;th&gt;实际可能是&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;一串很长的字符&lt;/td&gt;&lt;td&gt;commit hash&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SHA 字符串&lt;/td&gt;&lt;td&gt;Git 对象 ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;下载链接里的 token&lt;/td&gt;&lt;td&gt;临时签名 URL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;release 包地址参数&lt;/td&gt;&lt;td&gt;CDN 缓存 key&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CI 构建编号&lt;/td&gt;&lt;td&gt;artifact 标识&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;压缩包校验值&lt;/td&gt;&lt;td&gt;checksum&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;访问凭证&lt;/td&gt;&lt;td&gt;access token，敏感信息&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Git 里的 commit hash 不是加密字符串，而是&lt;strong&gt;哈希值&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;比如：&lt;/p&gt;&lt;pre&gt;9fceb02c4e21...&lt;/pre&gt;&lt;p&gt;它的作用类似“身份证号”。&lt;/p&gt;&lt;p&gt;知道这个 commit hash，就可能定位到某个历史版本。&lt;/p&gt;&lt;p&gt;但前提是：&lt;/p&gt;&lt;ol class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;这个对象还存在；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;你有访问权限；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;平台没有清理；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;没有被彻底垃圾回收；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;不是私有仓库或受限资源。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr/&gt;&lt;h1&gt;四、所谓“幽灵模式”的技术本质&lt;/h1&gt;&lt;p&gt;我给你拆成一句话：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Git 幽灵模式，本质上是利用 Git 的历史对象、残留引用、缓存归档、fork、镜像、CI 产物、包管理平台记录等路径，寻找曾经存在过但现在不在主视野里的代码版本。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;它不是单一技术，而是一类现象。&lt;/p&gt;&lt;p&gt;常见来源有这些：&lt;/p&gt;&lt;h2&gt;1. 本地残留&lt;/h2&gt;&lt;p&gt;开发者电脑里可能还有：&lt;/p&gt;&lt;pre&gt;.git&amp;nbsp;目录
reflog
旧分支
stash
未清理的&amp;nbsp;commit&lt;/pre&gt;&lt;p&gt;比如自己误删分支，通常可以从本地恢复。&lt;/p&gt;&lt;h2&gt;2. 远程残留&lt;/h2&gt;&lt;p&gt;远程 Git 平台可能短期保留一些对象。&lt;/p&gt;&lt;p&gt;但这取决于平台策略，不是稳定能力。&lt;/p&gt;&lt;h2&gt;3. Fork 残留&lt;/h2&gt;&lt;p&gt;别人 fork 过以后，原仓库删除，fork 可能还在。&lt;/p&gt;&lt;h2&gt;4. Clone 残留&lt;/h2&gt;&lt;p&gt;别人本地 clone 过，哪怕原仓库没了，本地副本还在。&lt;/p&gt;&lt;h2&gt;5. Release / Tag 残留&lt;/h2&gt;&lt;p&gt;项目发布过版本包，后来仓库删了，但包可能在其他地方还存在。&lt;/p&gt;&lt;h2&gt;6. CI/CD 产物残留&lt;/h2&gt;&lt;p&gt;比如 GitHub Actions、GitLab CI、Jenkins、Docker Registry 里可能还有：&lt;/p&gt;&lt;pre&gt;构建包
镜像
日志
压缩包
测试报告
部署包&lt;/pre&gt;&lt;h2&gt;7. 包管理平台残留&lt;/h2&gt;&lt;p&gt;比如：&lt;/p&gt;&lt;pre&gt;npm
PyPI
Composer&amp;nbsp;Packagist
Docker&amp;nbsp;Hub
Maven
Go&amp;nbsp;proxy&lt;/pre&gt;&lt;p&gt;这些平台可能缓存过某个版本。&lt;/p&gt;&lt;p&gt;所以代码虽然 Git 仓库删了，但发布包还可能存在。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;五、它是不是黑客技术？&lt;/h1&gt;&lt;p&gt;看用途。&lt;/p&gt;&lt;h2&gt;合法场景&lt;/h2&gt;&lt;p&gt;比如你自己的项目误删了：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;仓库删了；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;分支删了；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;tag 删了；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;release 删了；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;某个版本找不到了；&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;这时候通过 Git 历史、reflog、备份、fork、CI 产物恢复，是正常的工程恢复手段。&lt;/p&gt;&lt;h2&gt;高风险场景&lt;/h2&gt;&lt;p&gt;如果是：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;获取别人删除的私有仓库；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;找泄漏源码；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;利用 token 或签名链接绕过访问控制；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;恢复别人已经撤回的敏感代码；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;搜索密钥、账号、配置文件；&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;那就不只是技术问题了，可能涉及越权访问、数据泄露、商业秘密和法律风险。&lt;/p&gt;&lt;p&gt;所以这个东西可以科普原理，但不能把它当成“捡别人源码”的方法。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;六、它和普通 Git 恢复有什么区别？&lt;/h1&gt;&lt;p&gt;普通 Git 恢复一般是自己仓库里操作。&lt;/p&gt;&lt;p&gt;比如：&lt;/p&gt;&lt;pre&gt;我删了分支&amp;nbsp;→&amp;nbsp;从&amp;nbsp;reflog&amp;nbsp;找回来
我删了&amp;nbsp;commit&amp;nbsp;→&amp;nbsp;从&amp;nbsp;fsck&amp;nbsp;找回来
我删了文件&amp;nbsp;→&amp;nbsp;从历史版本恢复&lt;/pre&gt;&lt;p&gt;而所谓“幽灵模式”更像外部视角：&lt;/p&gt;&lt;pre&gt;原仓库删了
但是历史版本、缓存、fork、镜像、构建包还在
于是从这些地方拼回曾经存在过的版本&lt;/pre&gt;&lt;p&gt;所以它听起来更神秘，但本质还是 Git 的分布式特性和互联网缓存特性。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;七、为什么“删除”不等于“彻底删除”？&lt;/h1&gt;&lt;p&gt;因为数字世界里的删除，经常只是“入口删除”。&lt;/p&gt;&lt;p&gt;比如：&lt;/p&gt;&lt;pre&gt;删除仓库页面&amp;nbsp;≠&amp;nbsp;删除所有&amp;nbsp;fork
删除分支名&amp;nbsp;≠&amp;nbsp;删除&amp;nbsp;commit&amp;nbsp;对象
删除&amp;nbsp;release&amp;nbsp;≠&amp;nbsp;删除别人下载过的压缩包
删除&amp;nbsp;GitHub&amp;nbsp;仓库&amp;nbsp;≠&amp;nbsp;删除&amp;nbsp;Docker&amp;nbsp;镜像
删除源码&amp;nbsp;≠&amp;nbsp;删除&amp;nbsp;npm&amp;nbsp;/&amp;nbsp;PyPI&amp;nbsp;/&amp;nbsp;Composer&amp;nbsp;包
删除&amp;nbsp;tag&amp;nbsp;≠&amp;nbsp;删除&amp;nbsp;CI&amp;nbsp;构建产物&lt;/pre&gt;&lt;p&gt;真正彻底删除，需要同时处理：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;Git 历史；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;分支；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;tag；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;release；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;fork；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;镜像；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;本地 clone；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;CI/CD artifact；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Docker 镜像；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;包管理平台；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;CDN 缓存；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;搜索引擎缓存；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;第三方归档。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;这也是为什么很多公司一旦把密钥提交到 Git，哪怕马上删掉，也要立刻更换密钥，而不是只删代码。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;八、如果是自己的仓库误删，应该怎么恢复？&lt;/h1&gt;&lt;p&gt;可以按这个顺序找。&lt;/p&gt;&lt;h2&gt;第一优先级：本地电脑&lt;/h2&gt;&lt;p&gt;如果你本地曾经 clone 过，成功率最高。&lt;/p&gt;&lt;p&gt;重点找：&lt;/p&gt;&lt;pre&gt;.git&amp;nbsp;目录
本地分支
reflog
stash
未推送&amp;nbsp;commit&lt;/pre&gt;&lt;h2&gt;第二优先级：同事电脑&lt;/h2&gt;&lt;p&gt;如果团队其他人 clone 过，让他们检查本地仓库。&lt;/p&gt;&lt;p&gt;Git 是分布式的，只要有人有完整 clone，就可能恢复。&lt;/p&gt;&lt;h2&gt;第三优先级：远程平台&lt;/h2&gt;&lt;p&gt;看 GitHub、GitLab、Gitee 是否支持恢复删除仓库。&lt;/p&gt;&lt;p&gt;不同平台策略不同，有的有短期恢复窗口，有的需要联系管理员或平台支持。&lt;/p&gt;&lt;h2&gt;第四优先级：Fork 和镜像&lt;/h2&gt;&lt;p&gt;看看有没有：&lt;/p&gt;&lt;pre&gt;fork&amp;nbsp;仓库
mirror&amp;nbsp;仓库
备份仓库
只读同步仓库&lt;/pre&gt;&lt;h2&gt;第五优先级：CI/CD 和部署服务器&lt;/h2&gt;&lt;p&gt;服务器上可能有：&lt;/p&gt;&lt;pre&gt;部署目录
构建包
vendor&amp;nbsp;目录
dist&amp;nbsp;目录
Docker&amp;nbsp;镜像
CI&amp;nbsp;artifact&lt;/pre&gt;&lt;h2&gt;第六优先级：包管理平台&lt;/h2&gt;&lt;p&gt;如果项目发布过包，可以找：&lt;/p&gt;&lt;pre&gt;npm
PyPI
Packagist
Docker&amp;nbsp;Registry
Maven
Go&amp;nbsp;proxy&lt;/pre&gt;&lt;hr/&gt;&lt;h1&gt;九、如果是企业系统，怎么防止“幽灵版本”泄密？&lt;/h1&gt;&lt;p&gt;这点很重要。&lt;/p&gt;&lt;h2&gt;1. 不要把密钥写进 Git&lt;/h2&gt;&lt;p&gt;比如这些东西绝对不要提交：&lt;/p&gt;&lt;pre&gt;数据库密码
JWT&amp;nbsp;密钥
SMTP&amp;nbsp;密码
OAuth&amp;nbsp;secret
Access&amp;nbsp;Token
.env&amp;nbsp;文件
私钥文件
API&amp;nbsp;Key&lt;/pre&gt;&lt;h2&gt;2. 一旦泄漏，立刻轮换&lt;/h2&gt;&lt;p&gt;不要只删 commit。&lt;/p&gt;&lt;p&gt;正确动作是：&lt;/p&gt;&lt;pre&gt;删除泄漏内容
重写历史
强制推送
清理&amp;nbsp;fork&amp;nbsp;/&amp;nbsp;mirror
废弃旧密钥
生成新密钥
检查访问日志
通知相关系统&lt;/pre&gt;&lt;p&gt;核心是：&lt;strong&gt;密钥泄漏以后，删除代码不够，必须换密钥。&lt;/strong&gt;&lt;/p&gt;&lt;h2&gt;3. Git 提交前做扫描&lt;/h2&gt;&lt;p&gt;可以接入：&lt;/p&gt;&lt;pre&gt;gitleaks
trufflehog
git-secrets
GitHub&amp;nbsp;Secret&amp;nbsp;Scanning
GitLab&amp;nbsp;Secret&amp;nbsp;Detection&lt;/pre&gt;&lt;h2&gt;4. CI/CD 里也要清理&lt;/h2&gt;&lt;p&gt;很多人只清理 Git 仓库，忘了 CI 产物。&lt;/p&gt;&lt;p&gt;但泄漏信息可能还在：&lt;/p&gt;&lt;pre&gt;构建日志
测试日志
Docker&amp;nbsp;镜像层
artifact&amp;nbsp;压缩包
部署包
缓存目录&lt;/pre&gt;&lt;hr/&gt;&lt;h1&gt;十、你可以这样理解这个朋友的话&lt;/h1&gt;&lt;p&gt;他那句话翻译成正常技术语言，大概是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;我不是从当前公开仓库入口拿到的，而是通过历史残留版本、缓存、归档、fork 或 Git 对象定位到的。这个版本曾经存在过，后来被删除了。但只要能找到对应版本号、commit 标识、归档链接或访问凭证，就可能重新定位到那个历史版本。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;但是要注意，他说的“加密字符串”这个词不严谨。&lt;/p&gt;&lt;p&gt;更准确可能是：&lt;/p&gt;&lt;pre&gt;commit&amp;nbsp;hash
tag
release&amp;nbsp;编号
构建编号
签名&amp;nbsp;URL
对象&amp;nbsp;ID
访问&amp;nbsp;token
校验&amp;nbsp;hash&lt;/pre&gt;&lt;p&gt;其中如果涉及 &lt;code inline=&quot;&quot;&gt;token&lt;/code&gt; 或签名 URL，那就是敏感凭证，不应该传播和使用。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;十一、最简洁总结&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;Git 幽灵模式不是官方功能，而是一个民间说法。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;它说的是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;一个 Git 仓库或版本虽然被删除了，但因为 Git 的分布式历史、对象残留、fork、clone、缓存、release、CI 产物、包管理平台等原因，曾经存在过的版本仍可能被找回。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;但它有边界：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;恢复自己的误删项目，是正常工程能力；&lt;br/&gt;获取别人删除的私有仓库或泄漏源码，就是高风险甚至违法行为。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;真正的重点不是“怎么捞别人删掉的代码”，而是要明白：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;在 Git 世界里，提交过的东西很难真正消失。&lt;br/&gt;所以敏感信息一旦进 Git，第一动作永远不是删除，而是轮换、作废、追踪和审计。&lt;/p&gt;&lt;/blockquote&gt;</description><pubDate>Fri, 08 May 2026 16:04:07 +0800</pubDate></item><item><title>请详细解释下：git幽灵模式</title><link>https://jiangtian.top/?id=16329</link><description>&lt;h2&gt;一句话解释&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Git 幽灵模式&lt;/strong&gt;不是 Git 官方功能，而是一种口语化说法：&lt;br/&gt;它通常指 &lt;strong&gt;AI 或开发者在不污染主分支、不直接影响当前工作区的情况下，悄悄在旁路环境里改代码、跑测试、生成差异，最后再由人确认是否合并&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;更通俗点说：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;正常模式：你直接在当前项目里改代码。&lt;br/&gt;幽灵模式：AI 先在“影子分支 / 影子目录 / 临时工作区”里改，改完给你看差异，你点头后再进正式代码库。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Git 官方没有“ghost mode”这个命令；比较接近的底层能力是 &lt;strong&gt;branch、worktree、stash、diff、commit、PR&lt;/strong&gt; 这一套组合。Git worktree 可以让同一个仓库在多个目录里同时检出不同分支，每个 worktree 有自己的 &lt;code inline=&quot;&quot;&gt;HEAD&lt;/code&gt;、索引等工作区状态；stash 则可以临时保存当前修改并把工作区恢复干净。(&lt;a href=&quot;https://git-scm.com/docs/git-worktree?utm_source=chatgpt.com&quot; title=&quot;Git - git-worktree Documentation&quot;&gt;Git&lt;/a&gt;)&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;一、它到底“幽灵”在哪里？&lt;/h2&gt;&lt;p&gt;所谓“幽灵”，主要体现在三点。&lt;/p&gt;&lt;h3&gt;1. 不直接动主分支&lt;/h3&gt;&lt;p&gt;比如你当前在：&lt;/p&gt;&lt;pre&gt;main&lt;/pre&gt;&lt;p&gt;AI 不直接在 &lt;code inline=&quot;&quot;&gt;main&lt;/code&gt; 上改，而是新建一个临时分支：&lt;/p&gt;&lt;pre&gt;ai/fix-login-error&lt;/pre&gt;&lt;p&gt;这样哪怕 AI 改坏了，也不会污染正式代码。&lt;/p&gt;&lt;h3&gt;2. 不打断你当前工作&lt;/h3&gt;&lt;p&gt;你现在正在改 A 功能，突然让 AI 修 B 问题。&lt;br/&gt;正常情况下，你得保存、切分支、切回来，很烦。&lt;/p&gt;&lt;p&gt;用 worktree 可以单独开一个目录：&lt;/p&gt;&lt;pre&gt;git&amp;nbsp;worktree&amp;nbsp;add&amp;nbsp;../auto-workflow-ai&amp;nbsp;-b&amp;nbsp;ai/fix-login-error&lt;/pre&gt;&lt;p&gt;这样你的原目录继续干 A，AI 在另一个目录修 B，互不影响。这个特别适合你现在这种 &lt;strong&gt;PHPStorm + AI 编码 + Git + 服务器部署&lt;/strong&gt; 的流程。VS Code 文档里也把 worktree 作为多分支并行开发的一种方式，JetBrains 文档也明确提到它可用于 AI 驱动开发，避免 AI 覆盖本地未保存修改。(&lt;a href=&quot;https://code.visualstudio.com/docs/sourcecontrol/overview?utm_source=chatgpt.com&quot; title=&quot;Source Control in VS Code&quot;&gt;Visual Studio Code&lt;/a&gt;)&lt;/p&gt;&lt;h3&gt;3. 先产生差异，不直接合并&lt;/h3&gt;&lt;p&gt;AI 改完以后，你先看：&lt;/p&gt;&lt;pre&gt;git&amp;nbsp;diff
git&amp;nbsp;status&lt;/pre&gt;&lt;p&gt;确认没问题，再：&lt;/p&gt;&lt;pre&gt;git&amp;nbsp;add&amp;nbsp;.
git&amp;nbsp;commit&amp;nbsp;-m&amp;nbsp;&amp;quot;fix:&amp;nbsp;修复登录数据库配置读取问题&amp;quot;
git&amp;nbsp;push&amp;nbsp;origin&amp;nbsp;ai/fix-login-error&lt;/pre&gt;&lt;p&gt;最后通过 Pull Request 或手动 merge 合进主分支。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;二、放到你的系统里，应该怎么理解？&lt;/h2&gt;&lt;p&gt;你现在的目标大概是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;本地代码由 AI 辅助修改，Git 记录版本，测试流程先跑一遍，通过后再提交仓库，服务器再自动拉取或自动部署。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;那“Git 幽灵模式”在你的场景里，可以理解成：&lt;/p&gt;&lt;h2&gt;AI 影子开发区&lt;/h2&gt;&lt;p&gt;也就是给 AI 一个单独的分支和目录，让它在里面改 Yii / Laravel / PHP 项目代码。&lt;/p&gt;&lt;p&gt;例如你的项目叫：&lt;/p&gt;&lt;pre&gt;auto-workflow&lt;/pre&gt;&lt;p&gt;可以这样做：&lt;/p&gt;&lt;pre&gt;cd&amp;nbsp;/www/wwwroot/workflow.jiangtian.top/auto-workflow

git&amp;nbsp;worktree&amp;nbsp;add&amp;nbsp;../auto-workflow-ai&amp;nbsp;-b&amp;nbsp;ai/fix-auth-login&lt;/pre&gt;&lt;p&gt;这时候会出现两个目录：&lt;/p&gt;&lt;pre&gt;auto-workflow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;你的正式开发目录
auto-workflow-ai&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;AI&amp;nbsp;幽灵工作区&lt;/pre&gt;&lt;p&gt;AI 只在 &lt;code inline=&quot;&quot;&gt;auto-workflow-ai&lt;/code&gt; 里面改。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;三、标准流程应该是这样&lt;/h2&gt;&lt;h3&gt;第一步：给 AI 开一个幽灵分支&lt;/h3&gt;&lt;pre&gt;git&amp;nbsp;worktree&amp;nbsp;add&amp;nbsp;../auto-workflow-ai&amp;nbsp;-b&amp;nbsp;ai/fix-env-config&lt;/pre&gt;&lt;p&gt;含义是：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;新建一个目录：&lt;code inline=&quot;&quot;&gt;../auto-workflow-ai&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;新建一个分支：&lt;code inline=&quot;&quot;&gt;ai/fix-env-config&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;AI 的所有修改都在这个分支里完成&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;第二步：让 AI 在这个目录里改代码&lt;/h3&gt;&lt;p&gt;比如你让 AI 修：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code inline=&quot;&quot;&gt;.env&lt;/code&gt; 不生效；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Yii3 数据库配置读取失败；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code inline=&quot;&quot;&gt;api/auth/login&lt;/code&gt; 登录异常；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;debug 面板启动问题；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;单元测试缺失问题。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;AI 改完后，不要马上合并。&lt;/p&gt;&lt;p&gt;先看：&lt;/p&gt;&lt;pre&gt;git&amp;nbsp;status
git&amp;nbsp;diff&lt;/pre&gt;&lt;h3&gt;第三步：跑测试&lt;/h3&gt;&lt;p&gt;PHP 项目可以先跑：&lt;/p&gt;&lt;pre&gt;composer&amp;nbsp;test&lt;/pre&gt;&lt;p&gt;或者：&lt;/p&gt;&lt;pre&gt;vendor/bin/phpunit&lt;/pre&gt;&lt;p&gt;如果还没配置完整测试，至少先跑：&lt;/p&gt;&lt;pre&gt;php&amp;nbsp;-l&amp;nbsp;path/to/file.php&lt;/pre&gt;&lt;p&gt;检查 PHP 语法。&lt;/p&gt;&lt;h3&gt;第四步：提交 AI 分支&lt;/h3&gt;&lt;pre&gt;git&amp;nbsp;add&amp;nbsp;.
git&amp;nbsp;commit&amp;nbsp;-m&amp;nbsp;&amp;quot;fix:&amp;nbsp;修复环境变量加载与数据库连接配置&amp;quot;
git&amp;nbsp;push&amp;nbsp;origin&amp;nbsp;ai/fix-env-config&lt;/pre&gt;&lt;h3&gt;第五步：人工确认后合并&lt;/h3&gt;&lt;pre&gt;cd&amp;nbsp;../auto-workflow

git&amp;nbsp;fetch&amp;nbsp;origin
git&amp;nbsp;merge&amp;nbsp;--no-ff&amp;nbsp;ai/fix-env-config&lt;/pre&gt;&lt;p&gt;或者走 GitHub / GitLab 的 Pull Request。&lt;/p&gt;&lt;h3&gt;第六步：清理幽灵工作区&lt;/h3&gt;&lt;pre&gt;git&amp;nbsp;worktree&amp;nbsp;remove&amp;nbsp;../auto-workflow-ai&lt;/pre&gt;&lt;hr/&gt;&lt;h2&gt;四、它和普通 Git 分支有什么区别？&lt;/h2&gt;&lt;p&gt;本质上，它还是 Git 分支。&lt;/p&gt;&lt;p&gt;区别在于：&lt;strong&gt;普通分支通常在同一个目录里来回切；幽灵模式通常用 worktree 开一个独立目录。&lt;/strong&gt;&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;对比项&lt;/th&gt;&lt;th&gt;普通分支切换&lt;/th&gt;&lt;th&gt;Git 幽灵模式&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;工作目录&lt;/td&gt;&lt;td&gt;一个目录&lt;/td&gt;&lt;td&gt;多个目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;是否打断当前开发&lt;/td&gt;&lt;td&gt;容易打断&lt;/td&gt;&lt;td&gt;不打断&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;是否适合 AI 自动改代码&lt;/td&gt;&lt;td&gt;一般&lt;/td&gt;&lt;td&gt;很适合&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;风险&lt;/td&gt;&lt;td&gt;AI 可能污染当前工作区&lt;/td&gt;&lt;td&gt;风险隔离&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;适用场景&lt;/td&gt;&lt;td&gt;人自己开发&lt;/td&gt;&lt;td&gt;AI 并行开发、临时修 bug、实验性改造&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr/&gt;&lt;h2&gt;五、它和 stash 有什么关系？&lt;/h2&gt;&lt;p&gt;&lt;code inline=&quot;&quot;&gt;stash&lt;/code&gt; 也有点“幽灵”的味道。&lt;/p&gt;&lt;p&gt;比如你正在改代码，但暂时不想提交，可以：&lt;/p&gt;&lt;pre&gt;git&amp;nbsp;stash&amp;nbsp;push&amp;nbsp;-m&amp;nbsp;&amp;quot;临时保存当前修改&amp;quot;&lt;/pre&gt;&lt;p&gt;Git 会把当前修改存起来，并把工作区恢复到干净状态。Git 官方文档对 &lt;code inline=&quot;&quot;&gt;stash&lt;/code&gt; 的描述就是：记录当前工作目录和索引状态，然后让工作目录回到干净状态。(&lt;a href=&quot;https://git-scm.com/docs/git-stash?utm_source=chatgpt.com&quot; title=&quot;Git - git-stash Documentation&quot;&gt;Git&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;但我不建议你把 &lt;code inline=&quot;&quot;&gt;stash&lt;/code&gt; 当主流程。&lt;br/&gt;因为 stash 更像“临时抽屉”，适合短期保存，不适合 AI 长时间开发。&lt;/p&gt;&lt;p&gt;你的场景更适合：&lt;/p&gt;&lt;pre&gt;git&amp;nbsp;worktree&amp;nbsp;+&amp;nbsp;独立分支&amp;nbsp;+&amp;nbsp;测试&amp;nbsp;+&amp;nbsp;PR&lt;/pre&gt;&lt;hr/&gt;&lt;h2&gt;六、它和 CI/CD 怎么接起来？&lt;/h2&gt;&lt;p&gt;你的完整链路应该是：&lt;/p&gt;&lt;pre&gt;AI&amp;nbsp;幽灵分支改代码
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;↓
本地跑测试
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;↓
提交到&amp;nbsp;Git&amp;nbsp;仓库
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;↓
触发&amp;nbsp;CI&amp;nbsp;流水线
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;↓
自动跑单元测试&amp;nbsp;/&amp;nbsp;语法检查&amp;nbsp;/&amp;nbsp;代码规范检查
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;↓
通过后允许合并
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;↓
服务器自动拉取或自动部署&lt;/pre&gt;&lt;p&gt;也就是说，幽灵模式解决的是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;AI 在哪里安全地改代码？&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;CI/CD 解决的是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;改完以后，怎么自动验证、自动部署？&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;二者不是一回事，但可以完美配合。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;七、千万不要把“幽灵模式”理解错&lt;/h2&gt;&lt;p&gt;它不是让你“偷偷改代码、无痕提交、绕过审计”。&lt;/p&gt;&lt;p&gt;Git 里提交本来就有作者和提交者信息，而且作者名、邮箱等信息可以通过配置或环境变量影响提交身份；正因为如此，团队协作里更应该要求真实身份、签名提交、PR 审查，而不是搞“无痕提交”。(&lt;a href=&quot;https://www.kernel.org/pub/software/scm/git/docs/git.html?utm_source=chatgpt.com&quot; title=&quot;git(1) Manual Page&quot;&gt;内核网站&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;正确理解是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;幽灵模式 = 安全隔离的影子开发区。&lt;br/&gt;不是无痕模式，也不是绕过审计。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr/&gt;&lt;h2&gt;八、我建议你以后就按这个口径讲&lt;/h2&gt;&lt;p&gt;你可以这样对别人解释：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Git 幽灵模式不是 Git 的官方按钮，而是一种 AI 编码场景下的安全工作流。它通过独立分支、独立 worktree、diff 审查、测试验证和 PR 合并，让 AI 可以在旁路环境里先完成代码修改，不直接污染主分支。这样既能让 AI 自动写代码，又能保留 Git 版本记录、测试流程和人工审核，适合企业项目里的 AI 辅助开发、Bug 修复和自动化流水线建设。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这个说法比较稳，既专业，又不会吹得玄乎。&lt;/p&gt;</description><pubDate>Fri, 08 May 2026 16:01:08 +0800</pubDate></item><item><title>openrouter是啥？介绍下。</title><link>https://jiangtian.top/?id=16328</link><description>&lt;h2&gt;一句话说明&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;OpenRouter 就是一个“AI 模型统一入口”。&lt;/strong&gt;&lt;br/&gt;你不用分别去接 OpenAI、Anthropic、Google、xAI、DeepSeek、Qwen 等不同厂商的 API，而是通过 OpenRouter 一个接口，调用很多家的模型。&lt;/p&gt;&lt;p&gt;可以把它理解成：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;OpenRouter = AI 模型版的“路由器 / 聚合网关 / 中转平台”。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;它自己通常不训练模型，核心价值是：&lt;strong&gt;帮你统一调用、统一计费、统一切换模型、统一做备用线路。&lt;/strong&gt;&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;1. 它解决什么问题？&lt;/h2&gt;&lt;p&gt;如果你自己开发 AI 应用，正常情况会遇到这些麻烦：&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;问题&lt;/th&gt;&lt;th&gt;没有 OpenRouter&lt;/th&gt;&lt;th&gt;用 OpenRouter&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;调 OpenAI&lt;/td&gt;&lt;td&gt;接 OpenAI API&lt;/td&gt;&lt;td&gt;一个接口&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;调 Claude&lt;/td&gt;&lt;td&gt;再接 Anthropic API&lt;/td&gt;&lt;td&gt;一个接口&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;调 Gemini&lt;/td&gt;&lt;td&gt;再接 Google API&lt;/td&gt;&lt;td&gt;一个接口&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;调 DeepSeek/Qwen 等&lt;/td&gt;&lt;td&gt;再分别接&lt;/td&gt;&lt;td&gt;一个接口&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;模型价格对比&lt;/td&gt;&lt;td&gt;自己查各家&lt;/td&gt;&lt;td&gt;平台统一看&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;模型挂了&lt;/td&gt;&lt;td&gt;自己写 fallback&lt;/td&gt;&lt;td&gt;可用路由/备用能力&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;切模型&lt;/td&gt;&lt;td&gt;改很多代码&lt;/td&gt;&lt;td&gt;改 model 名称即可&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;OpenRouter 官方说它提供 &lt;strong&gt;one API for any model&lt;/strong&gt;，并且 OpenAI SDK 可以直接兼容使用；它的 API schema 也和 OpenAI Chat API 很接近，用来统一不同模型和供应商的请求格式。(&lt;a href=&quot;https://openrouter.ai/?utm_source=chatgpt.com&quot; title=&quot;OpenRouter&quot;&gt;OpenRouter&lt;/a&gt;)&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;2. 它不是模型，而是“模型超市”&lt;/h2&gt;&lt;p&gt;你可以在 OpenRouter 上选择很多模型，比如：&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;厂商&lt;/th&gt;&lt;th&gt;典型模型类型&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;OpenAI&lt;/td&gt;&lt;td&gt;GPT 系列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Anthropic&lt;/td&gt;&lt;td&gt;Claude 系列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Google&lt;/td&gt;&lt;td&gt;Gemini 系列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Meta&lt;/td&gt;&lt;td&gt;Llama 系列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DeepSeek&lt;/td&gt;&lt;td&gt;DeepSeek 系列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;阿里 / 通义&lt;/td&gt;&lt;td&gt;Qwen 系列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;xAI&lt;/td&gt;&lt;td&gt;Grok 系列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mistral&lt;/td&gt;&lt;td&gt;Mistral 系列&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;OpenRouter 当前对外主打的是一个统一接口访问大量模型，官方 pricing 页面写的是可访问 &lt;strong&gt;400+ AI models&lt;/strong&gt;。(&lt;a href=&quot;https://openrouter.ai/pricing?utm_source=chatgpt.com&quot; title=&quot;Pricing&quot;&gt;OpenRouter&lt;/a&gt;)&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;3. 典型用法是什么？&lt;/h2&gt;&lt;p&gt;你在代码里原本可能这样接 OpenAI：&lt;/p&gt;&lt;pre&gt;const&amp;nbsp;client&amp;nbsp;=&amp;nbsp;new&amp;nbsp;OpenAI({
&amp;nbsp;&amp;nbsp;apiKey:&amp;nbsp;process.env.OPENAI_API_KEY
});&lt;/pre&gt;&lt;p&gt;使用 OpenRouter 时，大体思路变成：&lt;/p&gt;&lt;pre&gt;const&amp;nbsp;client&amp;nbsp;=&amp;nbsp;new&amp;nbsp;OpenAI({
&amp;nbsp;&amp;nbsp;baseURL:&amp;nbsp;&amp;quot;https://openrouter.ai/api/v1&amp;quot;,
&amp;nbsp;&amp;nbsp;apiKey:&amp;nbsp;process.env.OPENROUTER_API_KEY
});&lt;/pre&gt;&lt;p&gt;然后模型名换成 OpenRouter 上的模型标识，比如：&lt;/p&gt;&lt;pre&gt;model:&amp;nbsp;&amp;quot;anthropic/claude-sonnet-4.5&amp;quot;&lt;/pre&gt;&lt;p&gt;或者：&lt;/p&gt;&lt;pre&gt;model:&amp;nbsp;&amp;quot;openai/gpt-4.1&amp;quot;&lt;/pre&gt;&lt;p&gt;它的好处是：&lt;strong&gt;你代码层面仍然像调 OpenAI 一样调，但背后可以换很多模型。&lt;/strong&gt; OpenRouter 官方也明确说明，它提供 OpenAI-compatible completion API，可以直接调用，也可以用 OpenAI SDK。(&lt;a href=&quot;https://openrouter.ai/openrouter/auto?utm_source=chatgpt.com&quot; title=&quot;Auto Router - API Pricing &amp;amp; Providers&quot;&gt;OpenRouter&lt;/a&gt;)&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;4. 对你这种做 AI 工作流的人，价值在哪里？&lt;/h2&gt;&lt;p&gt;我觉得 OpenRouter 对你最有价值的地方，不是“能白嫖模型”，而是这几个：&lt;/p&gt;&lt;h3&gt;4.1 做 AI 工具看板 / 智能体时，可以快速切模型&lt;/h3&gt;&lt;p&gt;比如你做一个经营分析智能体，里面可以测试：&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;任务&lt;/th&gt;&lt;th&gt;可测试模型&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;长文档分析&lt;/td&gt;&lt;td&gt;Claude / Gemini / GPT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;代码生成&lt;/td&gt;&lt;td&gt;Claude / GPT / Qwen Coder&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;中文报告&lt;/td&gt;&lt;td&gt;GPT / Qwen / DeepSeek&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;低成本批处理&lt;/td&gt;&lt;td&gt;小模型 / 免费模型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;高质量推理&lt;/td&gt;&lt;td&gt;强推理模型&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;你不用每次改一套厂商 API，只要改 model 名称。&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;4.2 做成本控制&lt;/h3&gt;&lt;p&gt;不同模型价格差异很大。&lt;br/&gt;同一个任务，用顶级模型可能很贵，用中等模型可能已经够用。&lt;/p&gt;&lt;p&gt;OpenRouter 的 pricing 页面支持查看模型价格，按 token 计费；它还支持 pay-as-you-go，不是必须月付订阅。(&lt;a href=&quot;https://openrouter.ai/pricing?utm_source=chatgpt.com&quot; title=&quot;Pricing&quot;&gt;OpenRouter&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;对你来说，课程演示、客户陪跑、自动化报告生成，都可以按任务分层：&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;任务等级&lt;/th&gt;&lt;th&gt;模型策略&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;粗筛资料&lt;/td&gt;&lt;td&gt;便宜模型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;提取结构&lt;/td&gt;&lt;td&gt;中等模型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;写最终报告&lt;/td&gt;&lt;td&gt;强模型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;代码调试&lt;/td&gt;&lt;td&gt;编程强模型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;管理层汇报稿&lt;/td&gt;&lt;td&gt;表达强模型&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;这才是 OpenRouter 的真正商业价值。&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;4.3 做 fallback 备用线路&lt;/h3&gt;&lt;p&gt;比如你原来只接一个模型：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;模型挂了 = 整个系统不可用。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;OpenRouter 支持 provider routing / fallback 思路，默认会把请求路由到可用供应商，也可以在请求体里设置 provider 规则。(&lt;a href=&quot;https://openrouter.ai/docs/guides/routing/provider-selection?utm_source=chatgpt.com&quot; title=&quot;Intelligent Multi-Provider Request Routing&quot;&gt;OpenRouter&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;这对企业项目很重要。&lt;br/&gt;不是为了炫技，而是为了避免客户演示时突然翻车。这个场景你肯定懂，现场翻车比代码 bug 更让人心梗。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;5. OpenRouter 和 API Key 是什么关系？&lt;/h2&gt;&lt;p&gt;你注册 OpenRouter 后，会拿到一个 &lt;strong&gt;OpenRouter API Key&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;你也可以使用 &lt;strong&gt;BYOK：Bring Your Own Key&lt;/strong&gt;，意思是：&lt;br/&gt;你把自己在 OpenAI、Anthropic、Google 等平台的 API Key 接进 OpenRouter，然后仍然通过 OpenRouter 的统一接口调用。OpenRouter 官方公告里说，BYOK 可以使用你自己的 provider API key，并且支持超过 60 个 inference providers；截至其公告，前 100 万 BYOK 请求/月免费，超过后按通常 5% 费率收取。(&lt;a href=&quot;https://openrouter.ai/announcements/1-million-free-byok-requests-per-month?utm_source=chatgpt.com&quot; title=&quot;1 million free BYOK requests per month&quot;&gt;OpenRouter&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;通俗讲就是：&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;模式&lt;/th&gt;&lt;th&gt;钱付给谁&lt;/th&gt;&lt;th&gt;适合谁&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;OpenRouter 余额模式&lt;/td&gt;&lt;td&gt;付给 OpenRouter&lt;/td&gt;&lt;td&gt;简单、省事&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;BYOK 模式&lt;/td&gt;&lt;td&gt;主要付给原厂商，OpenRouter 做路由&lt;/td&gt;&lt;td&gt;已经有各家 API Key 的团队&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr/&gt;&lt;h2&gt;6. 它和 ChatGPT 有什么区别？&lt;/h2&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;对比项&lt;/th&gt;&lt;th&gt;ChatGPT&lt;/th&gt;&lt;th&gt;OpenRouter&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;定位&lt;/td&gt;&lt;td&gt;面向用户的聊天产品&lt;/td&gt;&lt;td&gt;面向开发者的模型 API 平台&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;主要使用方式&lt;/td&gt;&lt;td&gt;网页 / App 聊天&lt;/td&gt;&lt;td&gt;API 调用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;是否自己是模型&lt;/td&gt;&lt;td&gt;背后使用 OpenAI 模型&lt;/td&gt;&lt;td&gt;聚合很多模型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;适合谁&lt;/td&gt;&lt;td&gt;普通用户、写作、分析、办公&lt;/td&gt;&lt;td&gt;开发者、AI 应用、智能体、工作流&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;是否方便集成系统&lt;/td&gt;&lt;td&gt;不如 API 灵活&lt;/td&gt;&lt;td&gt;很适合集成&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;一句话：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;ChatGPT 是你直接用的 AI 助手；OpenRouter 是你开发 AI 助手时用的模型调度平台。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr/&gt;&lt;h2&gt;7. 它适合哪些场景？&lt;/h2&gt;&lt;h3&gt;很适合&lt;/h3&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;场景&lt;/th&gt;&lt;th&gt;原因&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;AI 应用开发&lt;/td&gt;&lt;td&gt;一套接口调用多模型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;智能体系统&lt;/td&gt;&lt;td&gt;方便不同任务分配不同模型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;OpenClaw / 工作流平台&lt;/td&gt;&lt;td&gt;适合做模型网关&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;企业内部 AI 中台&lt;/td&gt;&lt;td&gt;方便统一模型入口&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;编程工具接入&lt;/td&gt;&lt;td&gt;可切 Claude、GPT、Qwen Coder 等&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;成本测试&lt;/td&gt;&lt;td&gt;方便比较不同模型价格和效果&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;课程演示&lt;/td&gt;&lt;td&gt;模型切换快，演示效果明显&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3&gt;不太适合&lt;/h3&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;场景&lt;/th&gt;&lt;th&gt;原因&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;完全不写代码的人&lt;/td&gt;&lt;td&gt;使用门槛比 ChatGPT 高&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;只想聊天&lt;/td&gt;&lt;td&gt;直接用 ChatGPT / Claude 更简单&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;极高隐私数据&lt;/td&gt;&lt;td&gt;要仔细看数据流和服务条款&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;对大陆网络稳定性要求极高&lt;/td&gt;&lt;td&gt;可能还要考虑网络、支付、合规问题&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr/&gt;&lt;h2&gt;8. 使用时要注意什么？&lt;/h2&gt;&lt;h3&gt;8.1 不要把它当成“免费模型神器”&lt;/h3&gt;&lt;p&gt;它有免费模型和免费额度，但免费模型一般会有速率限制、可用性波动。OpenRouter pricing 页面说明 free 用户有限制，pay-as-you-go 用户付费模型没有平台级限制，但免费模型仍可能有限制。(&lt;a href=&quot;https://openrouter.ai/pricing?utm_source=chatgpt.com&quot; title=&quot;Pricing&quot;&gt;OpenRouter&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;所以：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;学习测试可以用免费模型，正式项目最好按付费模型设计。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr/&gt;&lt;h3&gt;8.2 不要把敏感客户数据随便丢进去&lt;/h3&gt;&lt;p&gt;OpenRouter 是中间层，背后还会路由到不同 provider。&lt;br/&gt;如果是客户经营数据、财务数据、人事数据、合同数据，最好先做：&lt;/p&gt;&lt;ol class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;脱敏；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;字段替换；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;权限控制；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;日志隔离；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;明确选择模型供应商；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;看清数据隐私条款。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr/&gt;&lt;h3&gt;8.3 国内访问和支付可能需要额外处理&lt;/h3&gt;&lt;p&gt;这一点要现实一点。&lt;br/&gt;OpenRouter 面向全球开发者，国内网络、支付、模型可访问性都可能受环境影响。正式部署时，要测试：&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;项目&lt;/th&gt;&lt;th&gt;要测什么&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;网络&lt;/td&gt;&lt;td&gt;是否稳定访问&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;延迟&lt;/td&gt;&lt;td&gt;响应是否可接受&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;支付&lt;/td&gt;&lt;td&gt;是否能充值&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;模型&lt;/td&gt;&lt;td&gt;目标模型是否可用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;失败重试&lt;/td&gt;&lt;td&gt;超时后怎么处理&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;日志&lt;/td&gt;&lt;td&gt;是否记录敏感内容&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr/&gt;&lt;h2&gt;9. 你可以怎么用它？&lt;/h2&gt;&lt;p&gt;结合你现在做的 AI 工具看板、AI 工作流、OpenClaw、小龙虾、企业经营分析，我建议你把 OpenRouter 放在这个位置：&lt;/p&gt;&lt;pre&gt;用户&amp;nbsp;/&amp;nbsp;企业系统
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;↓
你的&amp;nbsp;AI&amp;nbsp;工作流&amp;nbsp;/&amp;nbsp;智能体&amp;nbsp;/&amp;nbsp;工具看板
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;↓
模型网关层：OpenRouter
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;↓
GPT&amp;nbsp;/&amp;nbsp;Claude&amp;nbsp;/&amp;nbsp;Gemini&amp;nbsp;/&amp;nbsp;Qwen&amp;nbsp;/&amp;nbsp;DeepSeek&amp;nbsp;/&amp;nbsp;Llama&amp;nbsp;...&lt;/pre&gt;&lt;p&gt;也就是说：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;不要把 OpenRouter 当成最终产品，而要把它当成你 AI 系统里的“模型调度层”。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这对你后面做“AI 中台化”“企业陪跑”“自动化经营分析”是有价值的。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;10. 最后给你一个判断标准&lt;/h2&gt;&lt;p&gt;你可以这样判断是否需要 OpenRouter：&lt;/p&gt;&lt;h3&gt;只聊天、不开发&lt;/h3&gt;&lt;p&gt;不用。&lt;br/&gt;直接 ChatGPT、Claude、Gemini 就行。&lt;/p&gt;&lt;h3&gt;要做自动化工作流 / AI 工具 / API 接入&lt;/h3&gt;&lt;p&gt;值得用。&lt;br/&gt;因为它能让你一套代码接很多模型。&lt;/p&gt;&lt;h3&gt;要做企业级 AI 中台&lt;/h3&gt;&lt;p&gt;可以重点研究。&lt;br/&gt;但要把权限、隐私、成本、日志、fallback 设计清楚。&lt;/p&gt;&lt;h3&gt;要做课程演示&lt;/h3&gt;&lt;p&gt;很适合。&lt;br/&gt;因为你可以现场展示：“同一个任务，不同模型效果和成本完全不同。”这个对管理层很有冲击力。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;我的结论&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;OpenRouter 本质上是 AI 模型的统一 API 网关。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;它最大的价值不是“便宜”，而是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;统一入口、多模型切换、成本比较、故障备用、快速集成。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;对普通用户，它不是刚需；&lt;br/&gt;对做 AI 自动化、智能体、企业 AI 应用的人，它很有用。&lt;/p&gt;</description><pubDate>Fri, 08 May 2026 12:26:51 +0800</pubDate></item><item><title>Gmail 发送邮件配置指南：MAIL_SMTP_PASS 到底在哪里获取？</title><link>https://jiangtian.top/?id=16327</link><description>&lt;h1&gt;Gmail 发送邮件配置指南：MAIL_SMTP_PASS 到底在哪里获取？&lt;/h1&gt;&lt;p&gt;很多人在配置邮箱发送功能时，会卡在一个字段上：&lt;/p&gt;&lt;pre&gt;MAIL_SMTP_PASS=&lt;/pre&gt;&lt;p&gt;或者在 Laravel、Node.js、PHP 项目里看到类似配置：&lt;/p&gt;&lt;pre&gt;MAIL_PASSWORD=
SMTP_PASS=
EMAIL_PASS=
MAIL_SMTP_PASS=&lt;/pre&gt;&lt;p&gt;这几个字段本质上要填的，通常都是 &lt;strong&gt;Gmail 的应用专用密码&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;它不是你的 Gmail 登录密码，也不是 Google Authenticator 里的 6 位验证码，更不是恢复代码。它是 Google 账号单独生成的一串 &lt;strong&gt;16 位应用密码&lt;/strong&gt;，专门给程序、脚本、SMTP 服务使用。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;一、先搞清楚：MAIL_SMTP_PASS 是什么？&lt;/h1&gt;&lt;p&gt;如果你要用 Gmail 给别人发邮件，比如：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;网站注册后发送验证码；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;系统发送通知邮件；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Laravel / Yii / Node.js 后台自动发邮件；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;用 SMTP 调用 Gmail 发信；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;自动化工作流里发送提醒邮件；&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;那你一般需要配置 Gmail SMTP。&lt;/p&gt;&lt;p&gt;常见配置长这样：&lt;/p&gt;&lt;pre&gt;MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=你的Gmail邮箱@gmail.com
MAIL_SMTP_PASS=你的应用专用密码
MAIL_ENCRYPTION=tls&lt;/pre&gt;&lt;p&gt;这里的 &lt;code inline=&quot;&quot;&gt;MAIL_SMTP_PASS&lt;/code&gt; 填的就是 &lt;strong&gt;Google 应用专用密码&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;它是一串 16 位字符，格式大概像这样：&lt;/p&gt;&lt;pre&gt;abcd&amp;nbsp;efgh&amp;nbsp;ijkl&amp;nbsp;mnop&lt;/pre&gt;&lt;p&gt;放进 &lt;code inline=&quot;&quot;&gt;.env&lt;/code&gt; 文件时，通常去掉空格：&lt;/p&gt;&lt;pre&gt;MAIL_SMTP_PASS=abcdefghijklmnop&lt;/pre&gt;&lt;hr/&gt;&lt;h1&gt;二、在哪里获取 Gmail 应用专用密码？&lt;/h1&gt;&lt;p&gt;重点来了。&lt;/p&gt;&lt;p&gt;它不在 Gmail 邮箱后台里。&lt;/p&gt;&lt;p&gt;很多人打开 Gmail，找设置、找转发、找 POP/IMAP，翻半天都找不到。因为这个密码是在 &lt;strong&gt;Google 账号安全设置&lt;/strong&gt; 里面生成的。&lt;/p&gt;&lt;p&gt;最快入口是：&lt;/p&gt;&lt;pre&gt;https://myaccount.google.com/apppasswords&lt;/pre&gt;&lt;p&gt;如果你打不开，或者进去之后没有看到创建入口，就按下面步骤来。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;三、完整获取步骤&lt;/h1&gt;&lt;h2&gt;1. 打开 Google 账号安全中心&lt;/h2&gt;&lt;p&gt;先进入 Google 账号管理页面：&lt;/p&gt;&lt;pre&gt;https://myaccount.google.com/security&lt;/pre&gt;&lt;p&gt;也可以这样进：&lt;/p&gt;&lt;pre&gt;右上角头像&amp;nbsp;→&amp;nbsp;管理你的&amp;nbsp;Google&amp;nbsp;账号&amp;nbsp;→&amp;nbsp;安全性&lt;/pre&gt;&lt;p&gt;进去后，找到：&lt;/p&gt;&lt;pre&gt;你登录&amp;nbsp;Google&amp;nbsp;的方式&lt;/pre&gt;&lt;p&gt;这里会看到“两步验证”等安全设置。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;2. 先开启两步验证&lt;/h2&gt;&lt;p&gt;应用专用密码有一个前提：&lt;strong&gt;你的 Google 账号必须开启两步验证&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;路径一般是：&lt;/p&gt;&lt;pre&gt;安全性&amp;nbsp;→&amp;nbsp;你登录&amp;nbsp;Google&amp;nbsp;的方式&amp;nbsp;→&amp;nbsp;两步验证&lt;/pre&gt;&lt;p&gt;根据提示开启即可。&lt;/p&gt;&lt;p&gt;你可以选择：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;手机短信；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Google Authenticator；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Google Prompt；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;安全密钥；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;备用验证码。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;建议至少绑定一个常用手机和一个身份验证器，避免以后登录麻烦。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;3. 进入应用专用密码页面&lt;/h2&gt;&lt;p&gt;两步验证开启后，再打开：&lt;/p&gt;&lt;pre&gt;https://myaccount.google.com/apppasswords&lt;/pre&gt;&lt;p&gt;这时候 Google 可能会要求你重新输入一次账号密码。&lt;/p&gt;&lt;p&gt;输入完成后，就会进入应用专用密码页面。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;4. 创建一个应用密码&lt;/h2&gt;&lt;p&gt;页面里通常会让你填写一个应用名称。&lt;/p&gt;&lt;p&gt;这里可以写：&lt;/p&gt;&lt;pre&gt;SMTP&lt;/pre&gt;&lt;p&gt;或者写得更清楚一点：&lt;/p&gt;&lt;pre&gt;MAIL_SMTP_PASS&lt;/pre&gt;&lt;p&gt;再或者写项目名：&lt;/p&gt;&lt;pre&gt;我的网站邮件发送&lt;/pre&gt;&lt;p&gt;名称只是方便你以后识别，这个名称不会影响实际使用。&lt;/p&gt;&lt;p&gt;填写后，点击：&lt;/p&gt;&lt;pre&gt;创建&lt;/pre&gt;&lt;p&gt;或者英文界面里的：&lt;/p&gt;&lt;pre&gt;Create&amp;nbsp;/&amp;nbsp;Generate&lt;/pre&gt;&lt;hr/&gt;&lt;h2&gt;5. 复制 16 位应用密码&lt;/h2&gt;&lt;p&gt;创建完成后，Google 会显示一串 16 位密码。&lt;/p&gt;&lt;p&gt;大概长这样：&lt;/p&gt;&lt;pre&gt;abcd&amp;nbsp;efgh&amp;nbsp;ijkl&amp;nbsp;mnop&lt;/pre&gt;&lt;p&gt;你要马上复制保存，因为这个密码通常只显示一次。&lt;/p&gt;&lt;p&gt;放进项目配置时，建议去掉空格：&lt;/p&gt;&lt;pre&gt;MAIL_SMTP_PASS=abcdefghijklmnop&lt;/pre&gt;&lt;p&gt;如果你后面忘记了，不能再次查看原密码，只能删除旧的，再重新生成一个新的。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;四、常见项目配置示例&lt;/h1&gt;&lt;h2&gt;Laravel 配置示例&lt;/h2&gt;&lt;p&gt;Laravel 里通常写在 &lt;code inline=&quot;&quot;&gt;.env&lt;/code&gt; 文件：&lt;/p&gt;&lt;pre&gt;MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=你的Gmail邮箱@gmail.com
MAIL_PASSWORD=abcdefghijklmnop
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=你的Gmail邮箱@gmail.com
MAIL_FROM_NAME=&amp;quot;你的项目名&amp;quot;&lt;/pre&gt;&lt;p&gt;如果你的项目字段叫 &lt;code inline=&quot;&quot;&gt;MAIL_SMTP_PASS&lt;/code&gt;，那就写：&lt;/p&gt;&lt;pre&gt;MAIL_SMTP_USER=你的Gmail邮箱@gmail.com
MAIL_SMTP_PASS=abcdefghijklmnop&lt;/pre&gt;&lt;p&gt;不同项目字段名可能不一样，但本质一样：&lt;br/&gt;&lt;strong&gt;SMTP 用户名填 Gmail 邮箱，SMTP 密码填应用专用密码。&lt;/strong&gt;&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;Node.js 配置示例&lt;/h2&gt;&lt;p&gt;如果你用 &lt;code inline=&quot;&quot;&gt;nodemailer&lt;/code&gt;，可以这样写：&lt;/p&gt;&lt;pre&gt;const&amp;nbsp;nodemailer&amp;nbsp;=&amp;nbsp;require(&amp;quot;nodemailer&amp;quot;);

const&amp;nbsp;transporter&amp;nbsp;=&amp;nbsp;nodemailer.createTransport({
&amp;nbsp;&amp;nbsp;host:&amp;nbsp;&amp;quot;smtp.gmail.com&amp;quot;,
&amp;nbsp;&amp;nbsp;port:&amp;nbsp;587,
&amp;nbsp;&amp;nbsp;secure:&amp;nbsp;false,
&amp;nbsp;&amp;nbsp;auth:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user:&amp;nbsp;&amp;quot;你的Gmail邮箱@gmail.com&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pass:&amp;nbsp;&amp;quot;abcdefghijklmnop&amp;quot;
&amp;nbsp;&amp;nbsp;}
});&lt;/pre&gt;&lt;p&gt;也可以从 &lt;code inline=&quot;&quot;&gt;.env&lt;/code&gt; 读取：&lt;/p&gt;&lt;pre&gt;MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USER=你的Gmail邮箱@gmail.com
MAIL_PASS=abcdefghijklmnop&lt;/pre&gt;&lt;hr/&gt;&lt;h2&gt;PHP 原生项目配置示例&lt;/h2&gt;&lt;p&gt;如果你的 PHP 项目需要 SMTP 发信，一般会有类似字段：&lt;/p&gt;&lt;pre&gt;$mailHost&amp;nbsp;=&amp;nbsp;&amp;#39;smtp.gmail.com&amp;#39;;
$mailPort&amp;nbsp;=&amp;nbsp;587;
$mailUser&amp;nbsp;=&amp;nbsp;&amp;#39;你的Gmail邮箱@gmail.com&amp;#39;;
$mailPass&amp;nbsp;=&amp;nbsp;&amp;#39;abcdefghijklmnop&amp;#39;;
$mailSecure&amp;nbsp;=&amp;nbsp;&amp;#39;tls&amp;#39;;&lt;/pre&gt;&lt;p&gt;&lt;code inline=&quot;&quot;&gt;$mailPass&lt;/code&gt; 这里填的依然是应用专用密码。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;五、Gmail SMTP 常用参数&lt;/h1&gt;&lt;p&gt;建议直接收藏下面这组配置。&lt;/p&gt;&lt;pre&gt;SMTP服务器：smtp.gmail.com
端口：587
加密方式：TLS
用户名：你的&amp;nbsp;Gmail&amp;nbsp;邮箱
密码：Google&amp;nbsp;应用专用密码&lt;/pre&gt;&lt;p&gt;如果使用 SSL，也可能是：&lt;/p&gt;&lt;pre&gt;SMTP服务器：smtp.gmail.com
端口：465
加密方式：SSL
用户名：你的&amp;nbsp;Gmail&amp;nbsp;邮箱
密码：Google&amp;nbsp;应用专用密码&lt;/pre&gt;&lt;p&gt;一般优先用：&lt;/p&gt;&lt;pre&gt;587&amp;nbsp;+&amp;nbsp;TLS&lt;/pre&gt;&lt;hr/&gt;&lt;h1&gt;六、为什么我找不到“应用专用密码”？&lt;/h1&gt;&lt;p&gt;这个问题很常见，通常是下面几种情况。&lt;/p&gt;&lt;h2&gt;1. 两步验证没有开启&lt;/h2&gt;&lt;p&gt;这是最常见原因。&lt;/p&gt;&lt;p&gt;没有开启两步验证，应用专用密码入口通常不会正常出现。&lt;/p&gt;&lt;p&gt;先去这里开启：&lt;/p&gt;&lt;pre&gt;https://myaccount.google.com/security&lt;/pre&gt;&lt;p&gt;找到：&lt;/p&gt;&lt;pre&gt;两步验证&lt;/pre&gt;&lt;p&gt;开启之后，再访问：&lt;/p&gt;&lt;pre&gt;https://myaccount.google.com/apppasswords&lt;/pre&gt;&lt;hr/&gt;&lt;h2&gt;2. 你用的是公司或学校账号&lt;/h2&gt;&lt;p&gt;如果你的邮箱是这种形式：&lt;/p&gt;&lt;pre&gt;xxx@公司域名.com
xxx@学校域名.edu&lt;/pre&gt;&lt;p&gt;那它可能是 Google Workspace 账号。&lt;/p&gt;&lt;p&gt;这种账号的应用专用密码功能，可能被管理员关闭了。&lt;/p&gt;&lt;p&gt;这时你需要联系管理员，让他检查：&lt;/p&gt;&lt;pre&gt;Google&amp;nbsp;Workspace&amp;nbsp;管理后台&amp;nbsp;→&amp;nbsp;安全设置&amp;nbsp;→&amp;nbsp;应用专用密码&lt;/pre&gt;&lt;p&gt;如果管理员不允许，你自己是开不了的。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;3. 账号开启了更严格的安全保护&lt;/h2&gt;&lt;p&gt;如果你的 Google 账号开启了高级保护计划，或者只允许某些更严格的登录方式，应用专用密码可能不可用。&lt;/p&gt;&lt;p&gt;这种情况下，要么改用 OAuth 登录授权，要么换一个允许 SMTP 应用密码的 Gmail 账号。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;4. 你找错地方了&lt;/h2&gt;&lt;p&gt;再强调一次：&lt;/p&gt;&lt;p&gt;应用专用密码不在 Gmail 设置里。&lt;/p&gt;&lt;p&gt;不要在这里找：&lt;/p&gt;&lt;pre&gt;Gmail&amp;nbsp;→&amp;nbsp;设置&amp;nbsp;→&amp;nbsp;查看所有设置&lt;/pre&gt;&lt;p&gt;应该去这里：&lt;/p&gt;&lt;pre&gt;Google账号&amp;nbsp;→&amp;nbsp;安全性&amp;nbsp;→&amp;nbsp;应用专用密码&lt;/pre&gt;&lt;p&gt;或者直接访问：&lt;/p&gt;&lt;pre&gt;https://myaccount.google.com/apppasswords&lt;/pre&gt;&lt;hr/&gt;&lt;h1&gt;七、几个容易搞混的东西&lt;/h1&gt;&lt;h2&gt;Gmail 登录密码&lt;/h2&gt;&lt;p&gt;这个是你平时登录 Gmail 的密码。&lt;/p&gt;&lt;p&gt;不要填到 &lt;code inline=&quot;&quot;&gt;MAIL_SMTP_PASS&lt;/code&gt; 里。&lt;/p&gt;&lt;p&gt;现在 Google 通常不允许你直接用登录密码做 SMTP 密码。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;Google Authenticator 验证码&lt;/h2&gt;&lt;p&gt;这个是 6 位动态验证码。&lt;/p&gt;&lt;p&gt;它只用于登录验证，不能当 SMTP 密码。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;恢复代码&lt;/h2&gt;&lt;p&gt;恢复代码是账号救急用的。&lt;/p&gt;&lt;p&gt;比如你手机丢了，验证器没了，可以用恢复代码找回账号访问权限。&lt;/p&gt;&lt;p&gt;它也不能用来发邮件。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;应用专用密码&lt;/h2&gt;&lt;p&gt;这个才是你要找的。&lt;/p&gt;&lt;p&gt;它是 16 位密码，只给 SMTP、邮件客户端、脚本程序这类应用使用。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;八、配置好后怎么测试？&lt;/h1&gt;&lt;p&gt;如果你是 Laravel 项目，配置完 &lt;code inline=&quot;&quot;&gt;.env&lt;/code&gt; 后，建议执行：&lt;/p&gt;&lt;pre&gt;php&amp;nbsp;artisan&amp;nbsp;config:clear
php&amp;nbsp;artisan&amp;nbsp;cache:clear&lt;/pre&gt;&lt;p&gt;然后再测试发送邮件。&lt;/p&gt;&lt;p&gt;如果是 Node.js 项目，改完 &lt;code inline=&quot;&quot;&gt;.env&lt;/code&gt; 后，重启服务。&lt;/p&gt;&lt;p&gt;如果是 PHP 项目，也要确认配置文件被重新加载。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;九、常见报错排查&lt;/h1&gt;&lt;h2&gt;报错：Username and Password not accepted&lt;/h2&gt;&lt;p&gt;大概率是密码错了。&lt;/p&gt;&lt;p&gt;检查这几项：&lt;/p&gt;&lt;pre&gt;1.&amp;nbsp;是否填成&amp;nbsp;Gmail&amp;nbsp;登录密码了？
2.&amp;nbsp;是否复制错应用专用密码？
3.&amp;nbsp;是否保留了多余空格？
4.&amp;nbsp;是否用错&amp;nbsp;Gmail&amp;nbsp;邮箱？
5.&amp;nbsp;应用专用密码是否已经被撤销？&lt;/pre&gt;&lt;p&gt;建议重新生成一个新的应用专用密码，再试一次。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;报错：Connection timed out&lt;/h2&gt;&lt;p&gt;这通常是服务器连不上 Gmail SMTP。&lt;/p&gt;&lt;p&gt;检查：&lt;/p&gt;&lt;pre&gt;1.&amp;nbsp;服务器是否能访问&amp;nbsp;smtp.gmail.com
2.&amp;nbsp;端口&amp;nbsp;587&amp;nbsp;或&amp;nbsp;465&amp;nbsp;是否开放
3.&amp;nbsp;服务器防火墙是否拦截
4.&amp;nbsp;云服务器安全组是否放行
5.&amp;nbsp;服务器网络环境是否限制&amp;nbsp;Gmail&lt;/pre&gt;&lt;p&gt;在某些服务器环境里，访问 Gmail SMTP 可能会受限。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;报错：Could not authenticate&lt;/h2&gt;&lt;p&gt;检查配置组合：&lt;/p&gt;&lt;pre&gt;MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=你的Gmail邮箱@gmail.com
MAIL_PASSWORD=应用专用密码
MAIL_ENCRYPTION=tls&lt;/pre&gt;&lt;p&gt;&lt;code inline=&quot;&quot;&gt;MAIL_USERNAME&lt;/code&gt; 和 &lt;code inline=&quot;&quot;&gt;MAIL_FROM_ADDRESS&lt;/code&gt; 最好先保持一致。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;十、安全提醒&lt;/h1&gt;&lt;p&gt;应用专用密码可以直接让程序用你的 Gmail 发邮件，所以不要随便发给别人。&lt;/p&gt;&lt;p&gt;尤其不要把它写进公开代码仓库。&lt;/p&gt;&lt;p&gt;错误示范：&lt;/p&gt;&lt;pre&gt;把&amp;nbsp;.env&amp;nbsp;上传到&amp;nbsp;GitHub
把密码截图发到群里
把密码写进前端代码&lt;/pre&gt;&lt;p&gt;正确做法：&lt;/p&gt;&lt;pre&gt;放在服务器&amp;nbsp;.env&amp;nbsp;文件里
放在&amp;nbsp;CI/CD&amp;nbsp;的&amp;nbsp;Secret&amp;nbsp;变量里
放在环境变量管理器里
定期检查不用的应用密码并删除&lt;/pre&gt;&lt;p&gt;如果怀疑泄露，马上进入应用专用密码页面，把旧密码删除，再生成新的。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;十一、一句话总结&lt;/h1&gt;&lt;p&gt;配置 Gmail 发邮件时，&lt;code inline=&quot;&quot;&gt;MAIL_SMTP_PASS&lt;/code&gt; 填的是 &lt;strong&gt;Google 账号生成的 16 位应用专用密码&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;获取路径记住这个：&lt;/p&gt;&lt;pre&gt;Google账号&amp;nbsp;→&amp;nbsp;安全性&amp;nbsp;→&amp;nbsp;两步验证&amp;nbsp;→&amp;nbsp;应用专用密码&lt;/pre&gt;&lt;p&gt;最快入口：&lt;/p&gt;&lt;pre&gt;https://myaccount.google.com/apppasswords&lt;/pre&gt;&lt;p&gt;生成后，把 16 位密码填进项目配置里，就可以通过 Gmail SMTP 给别人发送邮件了。&lt;/p&gt;</description><pubDate>Fri, 08 May 2026 11:37:50 +0800</pubDate></item><item><title>每天claude code订阅版pro有多少token额度？</title><link>https://jiangtian.top/?id=16326</link><description>&lt;p&gt;简短结论是：&lt;strong&gt;Claude Code Pro 套餐并没有&amp;quot;每天 token 数&amp;quot;这种额度&lt;/strong&gt;——Anthropic 官方从来不按天计 token，而且也不公开具体 token 数。&lt;/p&gt;&lt;p&gt;实际的限额机制是这样的：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;两层窗口&lt;/strong&gt;：每 5 小时一个滚动会话窗口，再叠加一个每周上限。Pro 的会话额度每 5 小时重置一次；同时还有一个每周额度，从 session 开始 7 天后重置。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Pro 和 Code 共用同一个池子&lt;/strong&gt;：Pro 和 Max 的额度在 Claude（网页/桌面/手机）和 Claude Code 之间共享，两边的活动一起计入同一份限额。所以你在 claude.ai 聊得多，Code 里能用的就少。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;最近刚扩容&lt;/strong&gt;：2026 年 5 月 6 日 Anthropic 和 SpaceX 签了算力协议后，Claude Code 在 Pro、Max、Team、Enterprise（按席位）套餐上的 5 小时窗口额度翻倍，同时取消了 Pro 和 Max 账户的&amp;quot;高峰时段&amp;quot;限速。也就是说现在的 Pro 比一周前能跑的活儿多了一倍左右。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;为什么不给具体 token 数&lt;/strong&gt;：因为同样的额度用 Opus 4.7 几把就烧完，用 Sonnet 4.6 能跑很久，再加上上下文长度、工具调用、缓存命中率都会影响消耗。Anthropic 官方建议在 Code 里用 &lt;code&gt;/status&lt;/code&gt; 看剩余额度，用 &lt;code&gt;/cost&lt;/code&gt; 看本次会话的消耗。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;用完了怎么办&lt;/strong&gt;：等 5 小时窗口重置，或者开 extra usage 按 API 价继续跑，或者升 Max 5x（一般是 Pro 的 5 倍额度）/Max 20x。&lt;/p&gt;&lt;p&gt;如果你想精确测自己每天能跑多少，最实在的办法是连着跑两三天，自己记录 &lt;code&gt;/status&lt;/code&gt; 的消耗节奏——社区里 ccusage 这种第三方工具也能更细地拆开看。&lt;/p&gt;</description><pubDate>Fri, 08 May 2026 11:20:49 +0800</pubDate></item><item><title>忘记了自己的旧手机号，怎么安全找回？一篇讲透正规路径、检索方法和避坑思路</title><link>https://jiangtian.top/?id=16325</link><description>&lt;h1&gt;忘记了自己的旧手机号，怎么安全找回？一篇讲透正规路径、检索方法和避坑思路&lt;/h1&gt;&lt;p&gt;很多人都遇到过这种情况：以前用过一个手机号，只记得开头和结尾，比如：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;136******81&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;中间几位怎么也想不起来。&lt;/p&gt;&lt;p&gt;这个号码可能绑定过银行卡、邮箱、微信、支付宝、淘宝、学信网、旧简历、论文系统、招聘网站、论坛账号，甚至一些十几年前注册的平台。想找回来很正常，但这里面有一个重要前提：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;找回自己的旧手机号，要走正规路径；不要通过公开互联网反查、拼接、撞库、购买数据等方式找。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;手机号属于个人敏感信息。即使是你自己的号码，也不建议通过网上公开痕迹去“扒完整号码”。一是容易误伤隐私，二是可能搜到错误信息，三是有些方式本身就存在法律和安全风险。&lt;/p&gt;&lt;p&gt;真正靠谱的方法，是从&lt;strong&gt;运营商、官方查询、个人旧资料、旧账号绑定记录&lt;/strong&gt;这几条线索入手。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;一、先明确：你要找的是“完整号码”，不是随便猜一个号码&lt;/h1&gt;&lt;p&gt;很多人只记得：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;前三位：136；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;后两位：81；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;中间六位忘了；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;大概知道曾经用过；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;可能是自己实名办的；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;也可能早已停机或销户。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;这种情况下，千万不要靠猜。&lt;/p&gt;&lt;p&gt;手机号中间六位的组合数量非常大，即使你知道前后，也不能靠人工试出来。更重要的是，旧手机号如果已经销户，有可能被运营商重新放号给别人使用。你随便尝试登录、发验证码、拨打确认，可能会打扰到现在的号码使用者。&lt;/p&gt;&lt;p&gt;正确思路应该是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;先确认这个号码是否仍然与你本人身份有关，再通过官方渠道找明细。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr/&gt;&lt;h1&gt;二、第一步：用“一证通查”查自己名下电话卡&lt;/h1&gt;&lt;p&gt;你可以先使用中国信通院的全国移动电话卡“一证通查”服务。&lt;/p&gt;&lt;p&gt;它的作用是：&lt;br/&gt;通过你的身份证信息，查询你名下现在登记了多少张电话卡，以及涉及哪些运营商。&lt;/p&gt;&lt;p&gt;它通常不会直接把完整手机号全部展示给你，但它可以帮你判断：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;你名下现在还有没有移动卡；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;涉及中国移动、中国联通、中国电信、广电中的哪几家；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;是否有异常办卡情况；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;是否需要进一步去营业厅核查。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;如果你记得旧号是 136 开头，那么大概率优先查中国移动。但不要完全排除其他情况，因为携号转网之后，号码归属运营商可能发生变化。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;三、第二步：优先去中国移动营业厅查历史实名号码&lt;/h1&gt;&lt;p&gt;136 号段历史上通常属于中国移动号段，所以你可以优先去中国移动。&lt;/p&gt;&lt;p&gt;最稳的方式是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;带本人身份证，去线下营业厅查询历史实名号码。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;你可以这样问工作人员：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;我以前实名办理过一个 136 开头、尾号 81 的手机号，现在不记得完整号码了。请问能否凭本人身份证查询我历史名下办理过、已销户或仍在网的号码记录？&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;注意，这里有几个关键词：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;本人身份证&lt;/strong&gt;；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;历史名下办理过的号码&lt;/strong&gt;；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;已销户或仍在网&lt;/strong&gt;；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;136 开头、尾号 81&lt;/strong&gt;。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;有些线上客服权限有限，未必能查到历史销户记录。线下营业厅通常更适合处理这种问题。&lt;/p&gt;&lt;p&gt;如果中国移动查不到，再按顺序问：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;中国联通；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;中国电信；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;中国广电。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;尤其如果你曾经办过携号转网，或者中间换过运营商，单查一家可能不够。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;四、第三步：从自己的旧邮箱里搜&lt;/h1&gt;&lt;p&gt;邮箱是找回旧手机号的高命中率入口。&lt;/p&gt;&lt;p&gt;你可以登录自己以前常用的邮箱，比如：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;QQ邮箱；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;163邮箱；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;126邮箱；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Gmail；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Outlook；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;公司邮箱；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;学校邮箱。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;然后搜索这些关键词：&lt;/p&gt;&lt;pre&gt;136
136&amp;nbsp;81
136****81
联系电话
手机号
手机号码
收货地址
报名信息
注册信息
验证码
简历
联系方式&lt;/pre&gt;&lt;p&gt;如果你记得自己的名字，也可以组合搜索：&lt;/p&gt;&lt;pre&gt;江天&amp;nbsp;136
江天&amp;nbsp;联系电话
江天&amp;nbsp;手机号
宁夏大学&amp;nbsp;江天&amp;nbsp;136
环境科学&amp;nbsp;江天&amp;nbsp;136&lt;/pre&gt;&lt;p&gt;邮箱里最容易命中的内容包括：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;旧简历；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;招聘网站投递记录；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;培训报名邮件；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;考试报名确认；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;电商订单；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;快递通知；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;论坛注册邮件；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;老合同；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;论文投稿系统；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;学校系统通知；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;支付平台安全提醒。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;很多人找不回旧手机号，不是因为没有记录，而是没有系统搜过自己的邮箱。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;五、第四步：查电商平台的历史收货地址&lt;/h1&gt;&lt;p&gt;手机号最容易完整出现的地方之一，就是电商平台的收货地址。&lt;/p&gt;&lt;p&gt;你可以依次查看：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;淘宝；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;天猫；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;京东；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;拼多多；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;苏宁；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;当当；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;唯品会；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;美团；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;饿了么；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;携程；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;飞猪；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;12306。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;重点不是看现在默认地址，而是看：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;历史收货地址；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;老订单详情；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;售后记录；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;发票信息；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;退换货记录；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;快递信息；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;常用联系人。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;有些平台现在为了隐私会隐藏手机号中间几位，但老订单、发票、售后记录里，可能还保留完整号码或部分号码。&lt;/p&gt;&lt;p&gt;你可以重点筛选：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;2007年之后的订单；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;早期淘宝订单；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;老京东订单；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;搬家前后的收货地址；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;学校、公司、老家地址相关订单。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;如果你只记得 136 开头和 81 结尾，可以在平台搜索框里尝试：&lt;/p&gt;&lt;pre&gt;136
81
江天
宁夏
宜昌
长阳&lt;/pre&gt;&lt;hr/&gt;&lt;h1&gt;六、第五步：查微信、支付宝、QQ、安全中心绑定记录&lt;/h1&gt;&lt;p&gt;很多旧手机号都曾经绑定过社交和支付账号。&lt;/p&gt;&lt;p&gt;你可以检查这些地方：&lt;/p&gt;&lt;h2&gt;1. 微信&lt;/h2&gt;&lt;p&gt;查看路径大致是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;我 → 设置 → 账号与安全 → 手机号&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;如果现在绑定的不是旧号，也可以查看：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;账号保护记录；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;登录设备；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;微信支付实名信息；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;安全通知；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;旧聊天记录中是否有人发过你的联系方式。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;你还可以在微信聊天记录里搜：&lt;/p&gt;&lt;pre&gt;136
手机号
电话
联系方式
收货地址&lt;/pre&gt;&lt;h2&gt;2. 支付宝&lt;/h2&gt;&lt;p&gt;可以查：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;账号与安全；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;手机号；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;登录记录；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;账单；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;收货地址；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;转账备注；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;生活缴费；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;电子发票。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;支付宝里经常能找到旧号码痕迹，尤其是收货地址、账单备注、身份认证记录。&lt;/p&gt;&lt;h2&gt;3. QQ&lt;/h2&gt;&lt;p&gt;如果你以前常用 QQ，可以查：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;QQ安全中心；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;密保手机；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;QQ邮箱；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;旧聊天记录；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;QQ同步助手；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;QQ空间留言；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;旧群资料。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;很多早期用户的手机号会出现在 QQ 资料、群名片、通讯录备份里。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;七、第六步：查电脑、网盘、旧手机里的文件&lt;/h1&gt;&lt;p&gt;旧手机号很可能藏在你的本地文件里。&lt;/p&gt;&lt;p&gt;重点查这些文件类型：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;Word；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Excel；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;PDF；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;TXT；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;简历；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;报名表；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;合同；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;扫描件；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;通讯录；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;旧照片；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;截图；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;备份文件。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Mac 上可以这样搜&lt;/h2&gt;&lt;p&gt;如果你用 Mac，可以打开终端，搜索文档和桌面里的 136：&lt;/p&gt;&lt;pre&gt;grep&amp;nbsp;-R&amp;nbsp;&amp;quot;136&amp;quot;&amp;nbsp;~/Documents&amp;nbsp;~/Desktop&amp;nbsp;2&amp;gt;/dev/null&lt;/pre&gt;&lt;p&gt;更精准一点：&lt;/p&gt;&lt;pre&gt;grep&amp;nbsp;-R&amp;nbsp;&amp;quot;136.*81&amp;quot;&amp;nbsp;~/Documents&amp;nbsp;~/Desktop&amp;nbsp;2&amp;gt;/dev/null&lt;/pre&gt;&lt;p&gt;如果你不熟悉命令行，也可以直接用 Finder 搜索：&lt;/p&gt;&lt;pre&gt;136
手机号
联系方式
联系电话&lt;/pre&gt;&lt;h2&gt;Windows 上可以这样搜&lt;/h2&gt;&lt;p&gt;Windows 可以用资源管理器搜索：&lt;/p&gt;&lt;pre&gt;136&lt;/pre&gt;&lt;p&gt;也可以用 Everything 这类本地搜索工具，搜索：&lt;/p&gt;&lt;pre&gt;136
136&amp;nbsp;81
手机号
联系方式
联系电话&lt;/pre&gt;&lt;p&gt;如果你有旧硬盘、旧U盘、旧电脑备份，也值得翻一下。很多早期简历和报名表里会留下完整手机号。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;八、第七步：查旧简历、招聘网站和报名系统&lt;/h1&gt;&lt;p&gt;手机号最常出现在简历里。&lt;/p&gt;&lt;p&gt;你可以重点登录：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;智联招聘；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;前程无忧；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Boss直聘；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;拉勾；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;猎聘；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;领英；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;个人博客后台；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;老论坛账号；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;学校就业系统；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;各类培训报名系统。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;搜索或查看：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;我的简历；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;历史投递；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;附件简历；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;账号设置；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;联系方式；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;报名表；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;个人资料。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;尤其是 Word 版简历、PDF 简历，往往保留完整手机号。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;九、第八步：查云盘和相册截图&lt;/h1&gt;&lt;p&gt;很多人会忽略一个地方：相册。&lt;/p&gt;&lt;p&gt;你可以在手机相册、iCloud、百度网盘、Google Photos、QQ空间相册里搜索或翻找：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;验证码短信截图；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;运营商短信截图；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;快递短信截图；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;订单截图；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;简历截图；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;报名成功截图；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;证件扫描件；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;银行预留手机号截图；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;通讯录截图。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;如果相册支持文字识别，可以直接搜索：&lt;/p&gt;&lt;pre&gt;136
验证码
手机号
中国移动
10086
收货
联系电话&lt;/pre&gt;&lt;p&gt;旧短信截图、快递截图和银行短信，命中率非常高。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;十、第九步：查银行、证券、保险、社保、公积金等实名系统&lt;/h1&gt;&lt;p&gt;如果这个手机号曾经长期使用过，大概率绑定过一些正式系统。&lt;/p&gt;&lt;p&gt;可以查：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;银行App；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;网银；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;信用卡中心；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;证券账户；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;基金账户；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;保险公司；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;社保系统；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;公积金系统；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;个税App；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;交管12123；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;12306；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;学信网；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;学校教务系统；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;医院挂号平台。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;这些平台通常不会轻易展示完整旧手机号，但可以通过客服或线下网点确认历史预留手机号。&lt;/p&gt;&lt;p&gt;你可以这样问：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;我以前可能用过一个 136 开头、尾号 81 的手机号作为预留手机。请问能否帮我核验历史预留手机号，或告诉我当前绑定信息是否与该号码有关？&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;注意，不要让客服直接透露敏感信息。你可以让对方通过身份验证后协助确认或变更。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;十一、不要做这几件事&lt;/h1&gt;&lt;p&gt;找旧手机号时，最容易走偏。以下方式不建议做：&lt;/p&gt;&lt;h2&gt;1. 不要公开发帖求完整号码&lt;/h2&gt;&lt;p&gt;比如：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;我叫某某，曾经用过 136******81，谁能帮我查一下？&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这种方式可能泄露更多个人信息，也容易被骗子盯上。&lt;/p&gt;&lt;h2&gt;2. 不要购买所谓“社工库查询”&lt;/h2&gt;&lt;p&gt;这类东西高度违法违规，数据来源也不可靠。即使查到了，也可能是过期、错误、他人信息。&lt;/p&gt;&lt;h2&gt;3. 不要大量拨打疑似号码&lt;/h2&gt;&lt;p&gt;你只知道前后几位，中间组合太多。盲目拨打会打扰别人，也没有效率。&lt;/p&gt;&lt;h2&gt;4. 不要用验证码反复试登录&lt;/h2&gt;&lt;p&gt;如果号码已经被别人使用，你反复触发验证码，会干扰对方，也可能导致平台风控。&lt;/p&gt;&lt;h2&gt;5. 不要把身份证、姓名、学校、出生日期、旧手机号片段一起发到公开平台&lt;/h2&gt;&lt;p&gt;这些信息组合起来，风险很高。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;十二、推荐找回顺序&lt;/h1&gt;&lt;p&gt;如果你想效率最高，可以按这个顺序来：&lt;/p&gt;&lt;h2&gt;第一步：官方查名下号码&lt;/h2&gt;&lt;p&gt;先用“一证通查”确认自己名下还有哪些电话卡。&lt;/p&gt;&lt;h2&gt;第二步：中国移动营业厅&lt;/h2&gt;&lt;p&gt;因为 136 开头优先考虑中国移动，带身份证去线下营业厅查历史实名号码。&lt;/p&gt;&lt;h2&gt;第三步：邮箱搜索&lt;/h2&gt;&lt;p&gt;搜：&lt;/p&gt;&lt;pre&gt;136
136&amp;nbsp;81
联系电话
手机号
收货地址
简历&lt;/pre&gt;&lt;h2&gt;第四步：电商历史地址&lt;/h2&gt;&lt;p&gt;查淘宝、京东、拼多多、12306、外卖、旅游平台。&lt;/p&gt;&lt;h2&gt;第五步：本地文件和云盘&lt;/h2&gt;&lt;p&gt;搜电脑、网盘、旧手机、旧硬盘里的 Word、Excel、PDF、截图。&lt;/p&gt;&lt;h2&gt;第六步：旧简历和招聘网站&lt;/h2&gt;&lt;p&gt;查所有历史简历、附件简历、投递记录。&lt;/p&gt;&lt;h2&gt;第七步：银行、支付宝、微信、社保、公积金&lt;/h2&gt;&lt;p&gt;通过实名验证，查历史绑定或预留手机号。&lt;/p&gt;&lt;hr/&gt;&lt;h1&gt;十三、可以直接复制使用的查询话术&lt;/h1&gt;&lt;h2&gt;问运营商&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;你好，我本人以前实名办理过一个 136 开头、尾号 81 的手机号，现在忘记完整号码了。请问能否凭本人身份证查询我名下历史办理过的号码，包括已销户和仍在网号码？&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;问学校或单位&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;你好，我想核对一下我以前在学校/单位登记的联系电话。我只记得号码是 136 开头、81 结尾，请问能否在本人身份核验后协助查询历史登记手机号？&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;问银行或平台客服&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;你好，我以前可能使用过一个 136 开头、尾号 81 的手机号作为预留手机。现在想核验历史绑定信息。请问在本人身份验证后，能否协助确认或更新预留手机号？&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;搜邮箱关键词&lt;/h2&gt;&lt;pre&gt;136
136&amp;nbsp;81
136******81
联系电话
手机号码
联系方式
收货地址
报名表
简历
验证码&lt;/pre&gt;&lt;h2&gt;搜电脑关键词&lt;/h2&gt;&lt;pre&gt;136
136.*81
手机号
联系方式
联系电话
收货地址
简历&lt;/pre&gt;&lt;hr/&gt;&lt;h1&gt;十四、最后总结&lt;/h1&gt;&lt;p&gt;忘记旧手机号，不要急着去公开互联网搜索，更不要试图通过非正规渠道反查完整号码。&lt;/p&gt;&lt;p&gt;真正靠谱的路径是：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;官方一证通查 → 运营商线下营业厅 → 自己邮箱/电商/网盘/旧文件 → 银行和实名平台核验。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;如果你只记得：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;136******81&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;那就优先从中国移动开始查，再配合自己的邮箱、旧简历、电商收货地址和本地文件搜索。只要这个号码曾经长期使用过，大概率会在某个旧资料里留下痕迹。&lt;/p&gt;&lt;p&gt;找旧手机号，本质上不是“技术破解”，而是一次&lt;strong&gt;合法、系统、耐心的个人信息归档&lt;/strong&gt;。走正规路径，既安全，也更容易找准。&lt;/p&gt;</description><pubDate>Thu, 07 May 2026 15:41:36 +0800</pubDate></item><item><title>应phone要求制作简历</title><link>https://jiangtian.top/?id=16324</link><description>&lt;p data-pm-slice=&quot;0 0 []&quot;&gt;我问：&lt;/p&gt;&lt;p data-pm-slice=&quot;0 0 []&quot;&gt;&lt;img src=&quot;https://jiangtian.top/zb_users/upload/2026/05/202605071778122736291711.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p data-pm-slice=&quot;0 0 []&quot;&gt;context：&lt;/p&gt;&lt;p&gt;以下是我特别要好的高中同学给我推荐的职位，让我去试试。我是湖北宜昌的，跟老板是老乡，他是当阳市的，我是长阳县的，离的很近。&lt;/p&gt;&lt;p&gt;有一个宜昌老板的上市公司，招聘CAIO，200W，你有没有兴趣去聊聊呀？[偷笑]&lt;/p&gt;&lt;p&gt;东土科技&lt;/p&gt;&lt;p&gt;要求做过智能体开发，熟悉大模型，做的是AI转型&lt;/p&gt;&lt;p&gt;就是你现在讲课辅导的内容，哈哈&lt;/p&gt;&lt;p&gt;https://baike.weixin.qq.com/v10004530731.htm?fromType=liteappShare&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;还有我的博客：https://jiangtian.top，你应该能抓取到数据。&lt;/p&gt;&lt;p&gt;我的背景你应该也很清楚。自己没有正式做过管理岗，全是干活的小喽啰。在我们现在公司我也只能算是主力核心研发。但我是实战型。也就是啥都自己动手去操作。&lt;/p&gt;&lt;p&gt;我曾经参与过的项目有：南航管理平台，飞利信视频会议平台，智评云智能评估作业系统，天健督学视频系统，智评云智能核验系统，智评云大数据平台，内蒙古大数据管理局管理平台等。其中：智评云智能评估作业系统，天健督学视频系统，智评云智能核验系统，智评云大数据平台为主力研发。&lt;/p&gt;&lt;p&gt;兼职做过30+中小型系统，合育教育小程序，智学AI学习系统学生版、教师版，人人保障网系统（含后台管理、小程序、ios和安卓app），虚拟币交易撮合系统，恩施住建局图集管理系统等。&lt;/p&gt;&lt;p&gt;大约2年半时间，跟AI协作输出16000+篇内容，累计3000w+字，总阅读560w+。17个公众号推送累计850w+字。&lt;/p&gt;&lt;p&gt;写书三本，第一本代写，名为《SEO搜索引擎优化》，名字在我博客里有，给你也提过。第二本《互联网营销大全》，第三本未出版，名为《AI创作从入门到精通》，我将提供电子版。&lt;/p&gt;&lt;p&gt;毕业院校：宁夏大学。专业：环境科学。&lt;/p&gt;&lt;p&gt;工作经历：2007-2013，银川，心脑血管、饮水机等保健产品销售，做到兴庆区区域店长，年销售额最高到300万。&lt;/p&gt;&lt;p&gt;2013-2014，在家创业。&lt;/p&gt;&lt;p&gt;2014-2015，美丽站（北京）科技有限公司，SEO+全栈技术。&lt;/p&gt;&lt;p&gt;2015-2016，北京博威调查事务所，SEO+全栈技术。&lt;/p&gt;&lt;p&gt;2016-2017，新华频媒数据技术有限公司，SEO+全栈技术。&lt;/p&gt;&lt;p&gt;2017-2019，北京飞利信科技股份有限公司，后端研发，项目经理，兼职创业，项目名：智学AI，该项目的核心价值在于内置算法，采用艾宾浩斯遗忘曲线辅助K12阶段孩子学习（此处你可抓取同类竞品的介绍融入进来）。&lt;/p&gt;&lt;p&gt;2019-2026，北京智评云数字科技有限公司，股东，后端核心研发，项目经理，其间从2023年初AI正式火爆起来，深度使用AI进行技术研发、内容创作、openclaw及hermes技能skills测试应用、擅长使用claude code，codex，copilot等AI vibe coding软件。&lt;/p&gt;&lt;p&gt;2025-2026，兼职国泰道合AI实战导师，参与AI辅导授课、企业内训、AI项目落地。&lt;/p&gt;&lt;p&gt;第二个pdf是我的电子书，第三个截图是我博客后台截图。&lt;/p&gt;&lt;p&gt;出版书籍《SEO搜索引擎优化 原理+方法+实战 全网营销 SEM 搜索引擎优化》及《互联网营销实战宝典 》两本。&lt;/p&gt;&lt;p&gt;https://product.dangdang.com/1520432875.html&lt;/p&gt;&lt;p&gt;https://product.dangdang.com/11173180505.html&lt;/p&gt;&lt;p&gt;还有制作智能体十数个，请你围绕我的兴趣列举3-5个，并作简要介绍。把为国泰道合制作的客户咨询整理入CRM算作一个智能体，将飞书里制作的提醒表单填写算作一个智能体，不过你需要包装的稍微高大上一点，将我为国泰道合正在开发的公众号选题也作为一个智能体介绍。昨天刚做的一个AI最新工具抓取聚合平台也作为一个智能体。还有经营竞对分析的也作为一个智能体介绍。简要介绍功能。还有八字排盘引擎。内容自动选题及发布智能体。&lt;/p&gt;&lt;p&gt;政治面貌为中共党员。同时笃信儒释道，颇有心得。&lt;/p&gt;&lt;p&gt;https://jiangtian.top/?id=5这个里面有简要介绍。&lt;/p&gt;&lt;p&gt;使用AI超过10000小时（GPT，CLAUDE，GEMINI，GROK，豆包，deepseek，GLM《智谱清言》）&lt;/p&gt;&lt;p&gt;在学校一直是学生干部，从学习委员到团支部书记等。&lt;/p&gt;&lt;p&gt;objective：输出一份高端商务版pdf简历。请你面向面试官编写这份简历，不要对着我说话。简历配色风格我第八份文件（图片）形式给你。每一页有页码。中英文双语吧。我的个人照片第七张第八张图。&lt;/p&gt;&lt;p&gt;style：风格严谨、不失活泼，体现我的专业度，同时传递出我的温暖。配色用我待会给你的图片。另外不要出现“不是。。。而是。。。”的句式，请把下面这段话改得更像真人写的，降低AI味儿。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;要求：&lt;/p&gt;&lt;p&gt;1. 不要使用过度整齐的排比句；&lt;/p&gt;&lt;p&gt;2. 不要频繁使用“首先、其次、最后、总之”；&lt;/p&gt;&lt;p&gt;3. 不要用“不是……而是……”这种模板句；&lt;/p&gt;&lt;p&gt;4. 语气更自然，有轻微口语感，但不要太随便；&lt;/p&gt;&lt;p&gt;5. 保留原意，不要空泛拔高；&lt;/p&gt;&lt;p&gt;6. 多用具体表达，少用宏大抽象词。&lt;/p&gt;&lt;p&gt;tone：语气嘛！温柔大方，语言幽默，不是稳重，体现我修行人的气质、气场。&lt;/p&gt;&lt;p&gt;audience：东土科技人力资源部及高管层。&lt;/p&gt;&lt;p&gt;response：平常简历部分；我的自述部分，用半白话半文言写，全部配上中英文翻译；但不许花里胡哨；然后再抓取全网关于东土科技的核心信息，以彰显我对这家公司的了解以及我的认真度，尤其对创始人（我老乡）做细致信息搜集，并完成一篇“江楠观东土”的外部观察文章，提出对该公司AI落地的我的看法。&lt;br/&gt;AI答：&lt;/p&gt;&lt;p&gt;【腾讯文档】江天_个人简历与作品集_A4图版_最终清晰版&lt;/p&gt;&lt;p&gt;https://docs.qq.com/pdf/DTGVqemJoVWhLaFJW&lt;/p&gt;</description><pubDate>Thu, 07 May 2026 10:56:37 +0800</pubDate></item><item><title>从身触入道</title><link>https://jiangtian.top/?id=16323</link><description>&lt;p&gt;身触圆通这一脉，《楞严经》里讲得最清楚。你要找的那位菩萨，是&lt;strong&gt;跋陀婆罗&lt;/strong&gt;（梵 Bhadrapāla，意译&amp;quot;贤护&amp;quot;）。&lt;/p&gt;&lt;p&gt;故事在《楞严经》卷五。佛问二十五位圣者各自从哪一根入道，跋陀婆罗带着同行的十六开士起座说：他们从前在威音王佛时出家，僧团按例去澡堂洗浴，他随例进去，水触身上的那一刻——&amp;quot;忽悟水因，既不洗尘，亦不洗体，中间安然，得无所有&amp;quot;。水不是来洗灰尘的，也不是来洗身体的，能洗所洗当下脱落，中间一段空空朗朗，没有&amp;quot;什么&amp;quot;可以指认。这一悟从威音王佛时就没忘掉，今生随释迦佛出家，证得无学。佛给他取的名字就叫跋陀婆罗。他自己下的判语是八个字：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;妙触宣明，成佛子住。&lt;/strong&gt;&lt;strong&gt;佛问圆通，如我所证，触因为上。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;quot;触因为上&amp;quot;——这就是身触一脉的祖师印可，整个佛教史上靠触觉那一根直入而被佛亲自盖章的，就是他。&lt;/p&gt;&lt;p&gt;二十五圆通里，跟身相关的还有一位&lt;strong&gt;毕陵伽婆蹉&lt;/strong&gt;，他从&amp;quot;身根&amp;quot;入。他出去乞食，被毒刺扎了脚，举身疼痛，他思惟&amp;quot;是谁在觉这个痛&amp;quot;——&amp;quot;虽觉觉痛，觉清净心，无痛痛觉&amp;quot;，由觉知反入，得阿罗汉。他下的判语是&amp;quot;纯觉遗身，斯为第一&amp;quot;。这一路偏在受蕴觉知，跟跋陀婆罗的&amp;quot;触尘&amp;quot;略有分工：一个是触境的当下能所脱落，一个是觉痛者反观谁在觉。你说身触跟你最相应，两路都该看，但若要认祖师，跋陀婆罗这一脉更正。&lt;/p&gt;&lt;p&gt;把经典开给你，由本及末。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、根本经&lt;/strong&gt;&lt;/p&gt;&lt;ol class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;《大佛顶首楞严经》卷五&lt;/strong&gt;，二十五圆通章里跋陀婆罗自述那一段——命根所在，原文不长，要背下来。同卷毕陵伽婆蹉、月光童子（水大圆通）、乌刍瑟摩（火光三昧）、持地菩萨（地大圆通）几段也连着读，整张身心入道的图就完整了。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;《般舟三昧经》&lt;/strong&gt;（支娄迦谶译）。跋陀婆罗是这部经里的当机菩萨，整部经是他向佛请法。般舟三昧又叫&amp;quot;佛立三昧&amp;quot;，要求行人九十日经行，不坐不卧，全靠身体的极限维持心的专注——这是跋陀婆罗给后人留下的实修法门，仍然走身的那一根。慧远在庐山结白莲社修的就是这个。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;《大方等大集经·贤护分》&lt;/strong&gt;（阇那崛多译）。是《般舟三昧经》的另一个译本，更详尽。&amp;quot;贤护&amp;quot;就是跋陀婆罗的意译。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;《大宝积经·贤护长者会第三十九》&lt;/strong&gt;。讲跋陀婆罗作为长者居士的因缘，补他作为人的那一面背景。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;《观佛三昧海经》卷九&lt;/strong&gt;，里面有跋陀婆罗见佛三昧的记述。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;二、辅证经&lt;/strong&gt;&lt;/p&gt;&lt;ol start=&quot;6&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;《大念处经》&lt;/strong&gt;（南传《长部》第二十二经，对应北传《中阿含·念处经》）。佛亲口讲的身念处——观姿势、动作、呼吸、不净、四大、九想——是一切身入道法门的源头。跋陀婆罗的&amp;quot;妙触&amp;quot;是顿悟一闪，《大念处经》是把这一闪铺成二十四小时的日常功夫。两本对照读。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;《佛说大安般守意经》&lt;/strong&gt;（安世高译）及**《杂阿含·安那般那念经》**。呼吸出入触鼻端、触上唇——身触法门最稳当的入手处。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;《维摩诘经·入不二法门品》&lt;/strong&gt;。三十一位菩萨各说不二，其中善眼、善意几位从触的角度破能所，跟跋陀婆罗澡堂那一段可以互参。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;三、祖师注疏（这一脉真正的修行说明书）&lt;/strong&gt;&lt;/p&gt;&lt;ol start=&quot;9&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;交光真鉴《楞严经正脉疏》&lt;/strong&gt;——明代第一注，专立&amp;quot;舍识用根&amp;quot;一旨，对身根、触尘的入路讲得极透。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;蕅益智旭《楞严经文句》《楞严经玄义》&lt;/strong&gt;——把二十五圆通跟天台教观打通。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;憨山德清《楞严通议》&lt;/strong&gt;——憨山自己从耳根入，但讲身触一段也讲得很活。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;圆瑛法师《楞严经讲义》&lt;/strong&gt;——民国第一讲家，最适合当代人读，遇到不通的地方先翻这本。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;宣化上人《楞严经浅释》&lt;/strong&gt;——白话铺得最开，可以陪着原文一起念。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;四、实修要诀&lt;/strong&gt;（替你把跋陀婆罗那八个字翻成可下手的话）&lt;/p&gt;&lt;p&gt;&amp;quot;妙触宣明&amp;quot;四字，骨头在&amp;quot;宣明&amp;quot;二字。&lt;/p&gt;&lt;p&gt;水碰到身上的那一刻，多数人立刻分两段：一边是水（外面的尘），一边是身（里面的体），中间夹一个&amp;quot;我&amp;quot;在感觉。跋陀婆罗的悟就是这一刻没分。水来，身在，触是触，可是没有&amp;quot;水在洗我&amp;quot;这个故事。能所没立起来，所以&amp;quot;中间安然，得无所有&amp;quot;。&lt;/p&gt;&lt;p&gt;落到日常，做这几件事：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;洗澡。&lt;/strong&gt; 不要刷手机不要想事，让水从头浇下来，单独感觉那个触，不去命名它（&amp;quot;热&amp;quot;&amp;quot;凉&amp;quot;&amp;quot;舒服&amp;quot;都是命名）。每天一次，跋陀婆罗就是这样开的。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;走路。&lt;/strong&gt; 脚底每一次接触地面，知道触在那里，但不去分&amp;quot;地硬鞋软&amp;quot;。一开始走五分钟。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;抚物。&lt;/strong&gt; 喝茶时杯子在掌心的那个温度，握手时对方掌心的那个实在感，单独让它在那里几秒钟，不评论。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;痛。&lt;/strong&gt; 这是毕陵伽婆蹉那一条路的入口。下次磕到桌角，不要立刻骂出来，停半秒，看那个痛在哪里、是谁在觉它。两路并修，互为印证。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;久了你会发现，&amp;quot;触&amp;quot;从来没断过——身体每一刻都在触衣服、触椅子、触空气——只是平时被念头盖住没看见。这一根本来一直现成，跋陀婆罗只是替我们点了一下。&lt;/p&gt;&lt;p&gt;合十。&lt;/p&gt;</description><pubDate>Thu, 07 May 2026 09:06:51 +0800</pubDate></item></channel></rss>