2026-04-06 00:00:00
我现在已经离不开折叠屏手机了,我给你们讲一下,一个研发的人为什么离不开折叠屏手机
因为它收起来的时候,它的屏幕是非常窄的,这个宽度就像iPhone 4的那个宽度一样,对于单手操作是非常友好。现在的手机屏幕默认太宽了,有时候你够不着,容易摔手机
展开的时候就可以左侧编程,右侧做测试。关于折叠屏手机的编程视频,可以看我上个推特
你出差的时候,折叠屏手机就是一个完美的电子书啊!完美的电子书啊!还是完美的视频播放器
2026-04-06 00:00:00
今天这篇文章手把手教你怎么自建机场,方案:
下面就是手把手的教程, 熟手不超过 5 分钟, 跟着我一步一步的来
Type: A
Name: hy2
IPv4 address: 填写 VPS IP
Proxy status 开关: 把开关关闭, 从橙色开关切换为灰色, DNS Only (Cloudflare 默认对域名提供安全防护, 但是 QUIC 协议不支持 Cloudflare 代理,所以这一步最重要)
添加好了域名解析等 1 ~ 2 分钟, 一般你 ping hy2.你的域名.com 可以 ping 通就证明域名解析生效了
ssh root@你的VPS-IP -p 你的随机 SSH 端口
bash <(curl -fsSL https://get.hy2.sh/)
nano /etc/hysteria/config.yaml
上面配置文件的默认内容删除,换成下面的配置
listen: :443
acme:
domains:
- hy2.你的域名.com # ←←← 改成你设置的子域名
email: [email protected] # ←←← 改成你自己的邮箱(用于Let's Encrypt证书)
auth:
type: password
password: "你的超级强密码" # ←←← 改成你自己的强密码, 后面 FlClash 客户端需要用到
masquerade:
type: proxy
proxy:
url: https://www.bing.com
rewriteHost: true
# 可选优化(推荐保留)
quic:
initStreamReceiveWindow: 16777216
maxStreamReceiveWindow: 16777216
initConnReceiveWindow: 33554432
maxConnReceiveWindow: 33554432
maxIdleTimeout: 30s
maxIncomingStreams: 1024
maxIncomingUniStreams: 1024
congestionControl: bbr
按 Ctrl + O → 回车保存 → Ctrl + X 退出
systemctl restart hysteria-server
systemctl enable hysteria-server
systemctl status hysteria-server 命令看到是 active 就 OK 啦
ArchLinux 用下面方式安装 FlClash PC 客户端
yay -S flclash
把下面文件保存为 proxy.yaml, 然后把里面的域名改成 Cloudflare 买的子域名, 把密码改成 VPS 服务端 /etc/hysteria/config.yaml 里面设置的超级密码, 搜索我在下面模板文件中标注的 ←←← 注释
打开 FlClash PC客户端
自建/家宽节点
FlClash 手机端配置也是类似, 添加配置文件、 选择家宽、 选择自动运行。
# 锚点区
Proxy_first: &Proxy_first {type: select, proxies: [节点选择, 全部节点, 自建/家宽节点, 全球直连]}
Direct_first: &Direct_first {type: select, proxies: [全球直连, 节点选择, 全部节点, 自建/家宽节点]}
Include_all: &Include_all {type: select, proxies: [节点选择, 全部节点, 自建/家宽节点, 全球直连], include-all: true, exclude-filter: "(?i)(🟢 直连)"}
Urltest_Base: &Urltest_Base {type: url-test, include-all: true, tolerance: 20, interval: 300, max-failed-times: 1, hidden: true}
# 用于下载订阅时指定UA
global-ua: clash.meta
# 全局配置
mixed-port: 7890
ipv6: true
allow-lan: false
unified-delay: true
tcp-concurrent: true
log-level: warning
# interface-name: eth0 (路由器下根据情况指定出站接口)
authentication:
# 密码设置选项默认无
- ""
skip-auth-prefixes:
- 127.0.0.1/8
- ::1/128
geodata-mode: true
# GEO 文件加载模式(standard:标准加载器/memconservative:专为内存受限 (小内存) 设备优化的加载器 (默认值))
geodata-loader: standard
geo-auto-update: true
geo-update-interval: 48
geox-url:
geosite: "https://hub.mirrors.2020818.xyz/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat"
mmdb: "https://hub.mirrors.2020818.xyz/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.metadb"
geoip: "https://hub.mirrors.2020818.xyz/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.dat"
asn: "https://hub.mirrors.2020818.xyz/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/GeoLite2-ASN.mmdb"
# 密码设置选项默认无
external-ui: ui
external-ui-url: "https://hub.mirrors.2020818.xyz/https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip"
# 下载面板地址可更换:https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip
# 匹配进程 always/strict/off
find-process-mode: strict
global-client-fingerprint: random
keep-alive-idle: 600
keep-alive-interval: 30
# 策略组选择和fakeip缓存
profile:
store-selected: true
store-fake-ip: false
# 流量嗅探
sniffer:
enable: true
sniff:
HTTP:
ports: [80, 8080-8880]
override-destination: true
TLS:
ports: [443, 8443]
QUIC:
ports: [443, 8443]
force-domain:
- "+.v2ex.com"
skip-domain:
- "+.lan"
- "+.local"
- "+.localhost"
- "+.home.arpa"
- "localhost.ptlogin2.qq.com"
- "+.msftconnecttest.com"
- "+.msftncsi.com"
- "Mijia Cloud"
- "dlg.io.mi.com"
- "+.push.apple.com"
- "+.apple.com"
- "+.wechat.com"
- "+.qpic.cn"
- "+.qq.com"
- "+.wechatapp.com"
- "+.vivox.com"
- "+.oray.com"
- "+.sunlogin.net"
- "+.heiyu.space"
- "+.lazycat.cloud"
skip-src-address:
- 6.6.6.6/32
- 2000::6666/128
- fc03:1136:3800::/40
- 10.0.0.0/8
- 172.16.0.0/12
- 169.254.0.0/16
- 192.168.0.0/16
- fd00::/8
- fe80::/10
skip-dst-address:
- 6.6.6.6/32
- 2000::6666/128
- fc03:1136:3800::/40
- 10.0.0.0/8
- 172.16.0.0/12
- 169.254.0.0/16
- 192.168.0.0/16
- fd00::/8
- fe80::/10
# 代理模式
tun:
enable: true
stack: gvisor
mtu: 9000
dns-hijack:
- "any:53"
- "tcp://any:53"
- "any:853"
- "tcp://any:853"
auto-route: true
auto-redirect: true
auto-detect-interface: true
strict-route: true
route-exclude-address:
- 6.6.6.6/32
- 2000::6666/128
- fc03:1136:3800::/40
- "192.168.0.0/16"
- "10.0.0.0/8"
- "172.16.0.0/12"
- "169.254.0.0/16"
- "224.0.0.0/4"
- "fd00::/8"
- "fe80::/10"
# DNS模块
dns:
enable: true
cache-algorithm: arc
listen: 127.0.0.1:1053
ipv6: true
prefer-h3: false
respect-rules: true
hosts:
'+.local.localhost': 127.0.0.1
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter-mode: blacklist
fake-ip-filter:
- "+.lan"
- "+.local"
- "+.localhost"
- "+.home.arpa"
- "localhost.ptlogin2.qq.com"
- "+.msftconnecttest.com"
- "+.msftncsi.com"
- "+.heiyu.space"
- "rule-set:fakeip_filter_domain"
- "geosite:cn,category-games@cn,private"
default-nameserver:
- system
- 119.29.29.29
- 180.184.1.1
proxy-server-nameserver:
- https://doh.pub/dns-query
- https://223.5.5.5/dns-query
direct-nameserver:
- https://doh.pub/dns-query
- https://223.5.5.5/dns-query
nameserver:
- https://dns.google/dns-query#节点选择
- https://dns.cloudflare.com/dns-query#节点选择
nameserver-policy:
"+.heiyu.space,+.lan,+.local,+.localhost,+.home.arpa,geosite:private":
- system
"+.googleapis.cn,+.googleapis.com,+.xn--ngstr-lra8j.com":
- https://dns.google/dns-query#节点选择
- https://dns.cloudflare.com/dns-query#节点选择
"geosite:cn,category-games@cn":
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
proxies:
- name: "🟢 直连"
type: direct
udp: true
- name: "懒猫微服"
type: http
server: 127.0.0.1
port: 31085
skip-cert-verify: true
- name: "[自建 1] 美国家宽-HY2"
type: hysteria2
server: hy2.你的域名.com # ←←← 改成你设置的子域名
port: 443
password: "你的超级强密码" # ←←← 改成你自己的强密码
sni: hy2.你的域名.com # ←←← 改成你设置的子域名
skip-cert-verify: false
alpn:
- h3
udp: true
# 策略组
proxy-groups:
- {name: 节点选择, type: select, proxies: [自建/家宽节点, 全部节点, CK 自用订阅请勿分享外泄], icon: "https://pub-8feead0908f649a8b94397f152fb9cba.r2.dev/select.png"}
- {name: 自建/家宽节点, type: select, include-all: true, filter: "(?=.*(?i)(自建|CF|The_house|private|home|家宽|hgc|HKT|HKBN|icable|Hinet|att))", exclude-filter: "(?=.*(?i)(机场|Seattle))", icon: "https://pub-8feead0908f649a8b94397f152fb9cba.r2.dev/private_node.png"}
- {name: STEAM,type: select, <<: *Proxy_first, icon: "https://pub-8feead0908f649a8b94397f152fb9cba.r2.dev/steam.png"}
- {name: 全球直连, type: select, proxies: [🟢 直连, 🔗 代理], icon: "https://pub-8feead0908f649a8b94397f152fb9cba.r2.dev/direct.png"}
- {name: 隐私拦截, type: select, proxies: [🚫 拒绝, ⚪ 丢弃 ,🟢 直连, 🔗 代理], icon: "https://pub-8feead0908f649a8b94397f152fb9cba.r2.dev/block.png"}
- {name: Final, type: select, <<: *Include_all, icon: "https://pub-8feead0908f649a8b94397f152fb9cba.r2.dev/final.png"}
- {name: 反重力, type: select, include-all: true, filter: "(?=.*(?i)(自建|CF|The_house|private|home|家宽|hgc|HKT|HKBN|icable|Hinet|att))", exclude-filter: "(?=.*(?i)(机场|Seattle))", icon: "https://pub-8feead0908f649a8b94397f152fb9cba.r2.dev/private_node.png"}
- {name: 全部节点, type: select, include-all: true, tolerance: 20, interval: 300, exclude-filter: "(?i)(🟢 直连)", icon: "https://pub-8feead0908f649a8b94397f152fb9cba.r2.dev/all.png"}
# 功能型代理组默认隐藏 start
- {name: 🔗 代理, type: select, hidden: true, proxies: [节点选择]}
- {name: 🚫 拒绝, type: select, hidden: true, proxies: [REJECT]}
- {name: ⚪ 丢弃, type: select, hidden: true, proxies: [REJECT-DROP]}
# over
- {name: CK 自用订阅请勿分享外泄, type: fallback, include-all: true, interval: 300, icon: "https://pub-8feead0908f649a8b94397f152fb9cba.r2.dev/fallback.png"}
- {name: GLOBAL, type: select, include-all: true , proxies: [节点选择, 自建/家宽节点, 全部节点, 反重力, STEAM, 全球直连, 隐私拦截, Final, CK 自用订阅请勿分享外泄], exclude-filter: "(?i)(🟢 直连)", icon: "https://pub-8feead0908f649a8b94397f152fb9cba.r2.dev/global.png"}
rules:
- PROCESS-NAME,adb,全球直连
- PROCESS-NAME,adb.exe,全球直连
- PROCESS-NAME,懒猫微服,全球直连
- PROCESS-NAME,lzc-core.darwin,全球直连,no-resolve
- PROCESS-NAME,antigravity,反重力
- DOMAIN-KEYWORD,antigravity,反重力
- IP-CIDR,223.6.6.6/32,全球直连
- IP-CIDR,120.53.53.53/32,全球直连
- IP-CIDR,119.29.29.29/32,全球直连
- IP-CIDR,180.184.1.1/32,全球直连
- DOMAIN,doh.pub,全球直连
- DOMAIN,doh-pure.onedns.net,全球直连
- DOMAIN,dns.alidns.com,全球直连
- DOMAIN,dns.google,节点选择
- DOMAIN,dns.cloudflare.com,节点选择
- DOMAIN-SUFFIX,googleapis.cn,节点选择
- DOMAIN-SUFFIX,googleapis.com,节点选择
- DOMAIN-SUFFIX,xn–ngstr-lra8j.com,节点选择
- DOMAIN-SUFFIX,xn–ngstr-cn-8za9o.com,节点选择
- DOMAIN-SUFFIX,gvt1.com,节点选择
- DOMAIN-SUFFIX,gvt2.com,节点选择
- DOMAIN-SUFFIX,gvt3.com,节点选择
- DOMAIN-SUFFIX,googlevideo.com,节点选择
- DOMAIN-SUFFIX,1e100.net,节点选择
- DOMAIN-SUFFIX,ytimg.com,节点选择
- DOMAIN-SUFFIX,ggpht.com,节点选择
- DOMAIN-SUFFIX,gstatic.com,节点选择
- DOMAIN-SUFFIX,googleusercontent.com,节点选择
- DOMAIN-SUFFIX,googleapis.com,节点选择
- DOMAIN-SUFFIX,android.com,节点选择
- DOMAIN-SUFFIX,linux.do,节点选择
- DOMAIN-SUFFIX,oa-sg1.2020818.xyz,全球直连
- DOMAIN-SUFFIX,oa-us1.2020818.xyz,全球直连
- DOMAIN-SUFFIX,2020818.xyz,节点选择
- DOMAIN-SUFFIX,heiyu.space,懒猫微服
- DOMAIN-SUFFIX,lazycat.cloud,全球直连
- DOMAIN-SUFFIX,lazycat.ai,全球直连
- DOMAIN-SUFFIX,lazycatmicroserver.com,全球直连
- DOMAIN-SUFFIX,gitee.com,全球直连
- DOMAIN-SUFFIX,tower.im,全球直连
- DOMAIN-SUFFIX,zaomusic.com,全球直连
- DOMAIN-SUFFIX,gvt1-cn.com,全球直连
- DOMAIN-SUFFIX,gvt1.com,全球直连
- DOMAIN-SUFFIX,hf-mirror.com,全球直连
- DOMAIN,p.tencentmusic.com,隐私拦截
- GEOSITE,category-ads-all,隐私拦截
- GEOSITE,private,全球直连
- GEOIP,private,全球直连,no-resolve
- GEOSITE,category-games@cn,全球直连
- GEOSITE,category-public-tracker,全球直连
- GEOSITE,openai,节点选择
- GEOSITE,category-ai-!cn,节点选择
- RULE-SET,ai_domain,节点选择
- GEOSITE,youtube,节点选择
- GEOSITE,google,节点选择
- GEOIP,google,节点选择,no-resolve
- GEOSITE,github,节点选择
- GEOSITE,onedrive,节点选择
- GEOSITE,microsoft,节点选择
- GEOSITE,apple,全球直连
- GEOSITE,telegram,节点选择
- GEOIP,telegram,节点选择,no-resolve
- GEOSITE,facebook,节点选择
- GEOSITE,netflix,节点选择
- GEOSITE,disney,节点选择
- GEOSITE,hbo,节点选择
- RULE-SET,emby_domain,节点选择
- GEOSITE,spotify,节点选择
- GEOSITE,bahamut,节点选择
- GEOSITE,tiktok,节点选择
- GEOSITE,bilibili,全球直连
- RULE-SET,bilibili_ip,全球直连,no-resolve
- GEOSITE,biliintl,节点选择
- GEOSITE,category-media-cn,全球直连
- GEOSITE,steam,STEAM
- GEOIP,twitter,节点选择,no-resolve
- GEOIP,ai,节点选择,no-resolve
- GEOSITE,gfw,节点选择
- GEOSITE,geolocation-!cn,节点选择
- GEOSITE,cn,全球直连
- GEOIP,private,全球直连,no-resolve
- GEOIP,cn,全球直连,no-resolve
- MATCH,Final
rule-anchor:
ip: &ip {type: http, interval: 86400, behavior: ipcidr, format: mrs}
ip_text: &ip_text {type: http, interval: 86400, behavior: ipcidr, format: text}
ip_yaml: &ip_yaml {type: http, interval: 86400, behavior: ipcidr, format: yaml}
domain: &domain {type: http, interval: 86400, behavior: domain, format: mrs}
domain_text: &domain_text {type: http, interval: 86400, behavior: domain, format: text}
domain_yaml: &domain_yaml {type: http, interval: 86400, behavior: domain, format: yaml}
class: &class {type: http, interval: 86400, behavior: classical, format: text}
class_yaml: &class_yaml {type: http, interval: 86400, behavior: classical, format: yaml}
rule-providers:
emby_domain: { <<: *domain, url: "https://hub.mirrors.2020818.xyz/https://raw.githubusercontent.com/Lanlan13-14/Rules/refs/heads/main/rules/Domain/emby.mrs" }
ai_domain: { <<: *domain, url: "https://hub.mirrors.2020818.xyz/https://raw.githubusercontent.com/Lanlan13-14/Rules/refs/heads/main/rules/Domain/ai.mrs" }
bilibili_ip: { <<: *ip, url: "https://hub.mirrors.2020818.xyz/https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/refs/heads/meta/geo-lite/geoip/bilibili.mrs" }
fakeip_filter_domain: { <<: *domain, url: "https://hub.mirrors.2020818.xyz/https://raw.githubusercontent.com/Lanlan13-14/Rules/refs/heads/main/rules/Domain/fakeip-filter.mrs" }
FlClash默认用Tun模式,会接管手机和电脑所有流量,上面的配置文件已经在规则上把微服的域名排除在外,还需要在客户端进行下面配置,才能保证懒猫微服直连:
这两点配置好以后,重启 FlClash 和懒猫微服客户端, 就可以同时科学上外网并能直连回家中的微服啦。
2026-04-04 00:00:00
最近公司懒猫微服的LightOS发布了,我每天都在微服的Webshell做AI编程,有时候遇到一个AI中转站挂了就需要在命令行环境切换AI中转站,本来电脑上用 cc-switch 真的很好用,所以就下载了 cc-switch-cli
用的时候就发现,天啊,这是怎么设计的?虽然非常像GUI版本的 cc-switch, 但是交互真的超级超级难用,用了半天都不知道怎么编辑和添加管理.
清明节刚好从菜地干完活回来,在家编写的小龙猫的时候,就顺手重新写了一个 cc-switch 的命令行版本 cctui, 按照 lazygit 的风格重新设计, 极简, 只有添加,删除,编辑的功能,其他功能一概没有,全程在底部用 lazygit 风格的快捷键保障,保证第一天用cctui的人都可以流畅操作.
喜欢用命令行的朋友,欢迎使用cctui,欢迎发PR, happy hacking!
2026-04-03 00:00:00
AI不会干翻软件业,只会让软件业更繁荣,因为制造软件的成本降低了,原来只有专业软件公司能造的软件,现在普通公司也能造了
换而言之,AI会增加软件业的需求,打个比方,蒸汽机发明后,农民会失业,但是用工却变多了,因为工人多了很多
老程序员会被各大行业抢着要,应届毕业生很难很难找到工作,因为有了AI,企业对新人的成长和培养包容度会降低很多,企业宁愿高薪招老程序员,也不愿意招新手程序员,因为新手程序员相对于AI来说,时间成本太贵
2026-03-31 00:00:00
过去的软件行业,核心竞争力建立在高门槛、长周期和重交付上。谁能组织更大的工程团队,谁能把复杂需求翻译成稳定的系统,谁就更有优势。但 AI 一旦把理解、推理、生成和修正的能力继续往前推,软件行业最深层的变化就不再只是效率提升,而是整个行业属性会被改写。软件会越来越像一种即时响应、按需生成、持续迭代的服务,软件制造的门槛会被压低,而真正拉开差距的,将从写代码的能力,转向表达问题、组织上下文和提出独特思想的能力。
今天的软件交付,依然带着很强的制造业气质。产品先定义需求,设计师先画界面,工程师再实现功能,最后上线给用户使用。整个过程像工厂流水线,软件是被生产出来的,用户只能在既定功能里做选择。
但如果 AI 的推理速度、上下文理解能力和执行能力再往前跨一个数量级,软件就会从先造好再卖,变成边理解边服务。用户不需要等待功能排期,也不需要先适应软件的结构,而是直接表达目标:我要完成什么,我遇到了什么问题,我想达到什么效果。软件则根据目标即时生成页面、流程、规则、自动化动作和数据组织方式。
到那时,软件的价值不再是功能清单,而是持续解决问题的能力。软件公司看起来更像服务公司,软件本身则更像一个随时待命、持续演化的服务接口。
很多人会误以为,既然以后和 AI 对话就能完成事情,那传统软件是不是会越来越少。事实更可能相反。正因为生产软件的成本被压到极低,过去大量不值得做的需求,都会变成可以被实现的小工具、小流程、小系统和小服务。
以前一个需求要经过立项、设计、开发、测试、部署,成本太高,所以绝大多数长尾需求都被放弃了。未来只要一个想法足够清晰,一个具体场景足够真实,软件就可以被快速生成和持续调整。过去只有大公司才配拥有的内部系统,未来个人、小团队、小商家甚至家庭都可能随手拥有。
所以 AI 不会让软件消失,它只会让软件像空气一样弥漫。软件不再是少数产品经理和工程师集中生产的大件商品,而会变成无数细小、灵活、贴身的能力单元,渗透到几乎所有场景里。
这句话并不是说代码真的不重要了,而是说软件生产的核心资产正在变化。过去最重要的是源代码本身,因为只有把代码一行一行写出来,系统才真正存在。谁掌握代码,谁就掌握软件。
但在 AI 时代,越来越重要的不是怎么写,而是你到底想让它做什么。Markdown 在这里代表的不是一种具体语法,而是一种更接近自然语言的组织方式:目标是什么,规则是什么,边界是什么,例子是什么,风格是什么,哪些不能做,哪些必须做。也就是说,描述、约束、文档、上下文和知识库,会越来越成为软件质量的源头。
源代码不会消失,但它会越来越像一种中间产物。真正决定软件上限的,往往是前面的表达质量。谁能把业务讲清楚,把规则写清楚,把例子给清楚,把上下文组织清楚,谁就更容易让 AI 产出高质量的软件。
过去软件行业的稀缺,来自掌握复杂技术的人太少。你要懂语言、懂架构、懂数据库、懂网络、懂部署、懂调试,还要有足够长时间的训练,才能稳定造出真正可用的软件。这种门槛天然制造了稀缺性,也构成了行业壁垒。
但当 AI 能把大量编码、重构、测试、排错、文档生成和系统拼装都变成低成本能力时,传统古法编程所形成的很多稀缺性就会被快速冲淡。不是工程能力完全不重要了,而是单纯依靠执行层面的技术壁垒,将越来越难以长期构成护城河。
未来真正稀缺的,会是你能看到什么别人没看到的问题,你能提出什么别人没想到的产品形式,你能不能把模糊需求变成清晰上下文,你能不能借助 AI 工具把一个独特判断快速变成真实的软件服务。软件制造工具会越来越普及,但独特思想、独特视角、独特审美和独特判断,仍然只属于少数人。
软件不会消失,程序员也不会消失,但软件行业的重心一定会迁移。制造会越来越自动化,服务会越来越即时化,代码会越来越被意图驱动,真正有价值的人会越来越像思想的制造者和上下文的组织者。当造软件这件事不再稀缺,人的判断力和创造力,才会第一次站到行业正中央。