MoreRSS

site iconManatee LazyCat修改

懒猫微服CEO,Linux, Emacs开源社区从业二十余载。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Manatee LazyCat的 RSS 预览

最佳代理实践 (2026-3-19)

2026-03-19 00:00:00

切换 FLClash

最近 v2raya 的全局规则代理总是不稳定,看了同事的 FLClash 挺好,就切换过来了,下面是配置攻略。

购买机场

因为我需要那种超级稳定, 支持 SSH, 同时国家节点特别多的顶级机场, 经过网友的推荐, 最后买了 Nexitally 家的, 全世界节点 135 个, 延迟非常低, 很给力哇。

安装 FLClash

yay -S flclash

添加订阅

订阅机场: Nexitally 机场购买后, 等一下, 在 Ss & Trojan 页面点击对应操作系统平台的 Clash 拷贝机场订阅 URL, 奶昔现在为了防止攻击, 它需要你登录以后去掉备用梯子, 然后点击订阅的地方等 60s 。

然后把拷贝的订阅 URL 替换下面的 PROXY_URL, 保存为 proxy.yaml 文件

# 锚点区
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}

PProviders: &PProviders {type: http, interval: 86400, health-check: {enable: true, url: 'https://www.gstatic.com/generate_204', interval: 300}, filter: '^(?!.*(拒绝|直连|群|邀请|返利|循环|官网|客服|网站|网址|获取|订阅|流量|到期|机场|下次|版本|官址|备用|过期|已用|联系|邮箱|工单|贩卖|通知|倒卖|防止|国内|地址|频道|无法|说明|提示|特别|访问|支持|教程|关注|更新|作者|加入|USE|USED|TOTAL|EXPIRE|EMAIL|Panel|Channel|Author|traffic))'}

##############################################
# 机场订阅,Airport_01/02/03名称不能重复,但可修改为自己喜欢的
# 订阅链接1/2/3是用来写订阅链接的,填入即可
# 机场名称1/2/3是用来给节点添加备注的,不用记得整行删除
proxy-providers:
  VPS_01:
    url: "PROXY_URL"
    type: http
    interval: 86400
    health-check:
      enable: true
      url: https://edge.microsoft.com/captiveportal/generate_204
      interval: 300
    proxy: "🟢 直连"
    override:
      additional-prefix: "[自建 1] "
      skip-cert-verify: 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"           # 所有 .lan 结尾的域名
    - "+.local"         # 所有 .local 结尾的域名(macOS/iOS mDNS)
    - "+.localhost"     # 本地主机
    - "+.home.arpa"     # 家用路由器常见本地域名
    - "localhost.ptlogin2.qq.com"  # QQ 登录特殊域名
    - "+.msftconnecttest.com"      # Windows 网络连接测试
    - "+.msftncsi.com"             # Windows 网络状态指示器
    - "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"
    # LZC
    - "+.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 # gvisor
  mtu: 9000
  # endpoint-independent-nat: true
  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"  # 覆盖 192.168.0.0 - 192.168.255.255
    - "10.0.0.0/8"      # 建议加上,防止企业内网冲突
    - "172.16.0.0/12"
    - "169.254.0.0/16"  # 链路本地地址
    - "224.0.0.0/4"     # 组播协议(lzc-core 发现设备可能需要)
    - "fd00::/8"        # IPv6 ULA
    - "fe80::/10"       # IPv6 链路本地地址

# DNS模块
dns:
  enable: true
  cache-algorithm: arc
  listen: 127.0.0.1:1053
  ipv6: true
  prefer-h3: false # 是否开启 DoH 支持 HTTP/3,将并发尝试
  respect-rules: true
  hosts:
    '+.local.localhost': 127.0.0.1
  # 模式切换 redir-host / fake-ip
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  # 模式切换 whitelist/blacklist 
  # 黑名单模式表示如果匹配成功则不返回 Fake-IP, 白名单模式时只有匹配成功才返回 Fake-IP
  fake-ip-filter-mode: blacklist
  fake-ip-filter:
    - "+.lan"           # 所有 .lan 结尾的域名
    - "+.local"         # 所有 .local 结尾的域名(macOS/iOS mDNS)
    - "+.localhost"     # 本地主机
    - "+.home.arpa"  # 新增:现代路由器可能用这个
    - "localhost.ptlogin2.qq.com"  # QQ 登录特殊域名
    - "+.msftconnecttest.com"      # Windows 网络连接测试
    - "+.msftncsi.com"             # Windows 网络状态指示器
    - "+.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

# 策略组
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,节点选择
  
  # GVT & Cache (主要用于下载和流媒体)
  - DOMAIN-SUFFIX,gvt1.com,节点选择
  - DOMAIN-SUFFIX,gvt2.com,节点选择
  - DOMAIN-SUFFIX,gvt3.com,节点选择
  - DOMAIN-SUFFIX,googlevideo.com,节点选择
  # Infrastructure (服务器骨干)
  - DOMAIN-SUFFIX,1e100.net,节点选择
  # Content Delivery (静态资源与图片)
  - DOMAIN-SUFFIX,ytimg.com,节点选择
  - DOMAIN-SUFFIX,ggpht.com,节点选择
  - DOMAIN-SUFFIX,gstatic.com,节点选择
  - DOMAIN-SUFFIX,googleusercontent.com,节点选择
  # System & APIs (更新与服务)
  - 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 PC端

  1. 点击 ‘配置’ 标签, 点击添加配置,菜单中选择从文件添加,选择刚才的 proxy.yaml 文件
  2. 点击 ‘代理’ 标签, 选择自建/家宽节点, 选择一个你喜欢的服务器
  3. 点击 ‘仪表盘’ 标签, 打开虚拟网卡开关(模式用 mixed), 出站模式用 ‘规则’
  4. 点击 ‘工具’ 标签, 应用程序里面打开 ‘自启动’、‘静默启动‘、 ’自动运行‘ 的选项

最后点击仪表盘右下角开始按钮就可以正常上网了

配置 FLClash 手机端

  1. 点击 ‘配置’ 标签, 点击添加配置,菜单中选择从文件添加,选择刚才的 proxy.yaml 文件
  2. 点击 ‘工具’ 标签, 选择访问控制,右上角点击‘开启’, 搜索懒猫微服并勾选,点击保存,把懒猫微服排除在 VPN 之外 (默认是黑名单模式)
  3. 点击 ‘代理’ 标签, 选择自建/家宽节点, 选择一个你喜欢的服务器
  4. 点击 ‘工具’ 标签, 应用程序里面打开 ’自动运行‘ 的选项

最后点击仪表盘右下角开始按钮就可以正常上网了

懒猫微服的配置

懒猫微服直连穿透需要配置代理工具,避免和懒猫微服自己的网络冲突:

  1. 点击 ‘工具’ 标签, 选择基本配置,打开 IPv6 开关 (PC 和手机端)
  2. 点击 ‘工具 -> 访问控制’,右上角点击‘开启’,搜索懒猫微服并勾选,点击保存,把懒猫微服排除在 VPN 之外 (仅移动端)

读《明朝那些事儿》

2026-03-18 00:00:00

懒猫微服上一直没有什么好的图书阅读软件,刚好去年年底研究 AI 编程,就准备拿读书软件练手。 AI 果然很强大,半个月,每天 2 个小时就成功复制了微信读书。读书软件有很多用户体验细节,所以真的要打磨好一本图书,需要每天自己阅读才能发现产品中哪些细节不好用。

所以从年前到现在 2 个月的时间,陆陆续续的读完了《明朝的那些事儿》这本书

当代明月真的是很厉害的人,传统的正史写的非常严谨正派,同时也意味着很难啃。明月的文学功底非常强,洋洋洒洒几百年的时光在他笔下,弹指之间,嬉笑怒骂、快意恩仇、正气荡然…没想到自己有一天像看小说一样就把明朝的几百年历史读完了。

看这本书的时候,里面有几个印象最深刻的人

  1. 朱元璋,真的勤奋呀,打仗政务靠勤奋杀掉了全国的官吏,只为不贪。如果只看个人来说,确实猛人,但从人性传承来看,太猛的人后代都不行。当然从好的方面来看,正是朱元璋的变革,才让明朝很民主开放,很多中国历史名著,三国演义,西游记,水浒传才得以问世。而且经济和军事异常强大

  2. 王阳明,老师登场,肯定要仔细看,和我之前读过的书了解的差不多,不过明月给我新的视角,他阐述的王阳明心学是,只要最后的目的是正确的,中间做事的方式可以灵活应变,比如王阳明,给老百姓做事教书,目的是好的,做事方式是正派的,就是知行合一,攻打宁王,战术用很多阴谋诡计,目的是好的,就是知行合一。这种目标远大但是顺应时代的做法是需要仔细实践才能理解的,而他这一理念在徐阶身上得到充分的体现

  3. 徐阶,之前没有听说这个人,但是读了他的故事才知道,他把王阳明的心学实践的很好,简单来说就是既要仰望星空,又要脚踏实地。我们中国现代的教育是对立教育,只有好人和坏人。要不就是理想很伟大,实践能力为零,俗称愤世嫉俗的喷子,动嘴能力爆表啥都干不了。要不就是只是实践却很少读书思考,很容易变成环境的牺牲品。徐阶上班隐忍 20 多年,为了目的,持续积累,一剑封喉。不得不服

当然还有我最喜欢的将军们,比如孤军深入的蓝玉(有点霍去病的感觉),朱元璋再世的朱棣(勇猛无比,战术大家),戚继光自学成长抗击倭寇,还有牛逼的关宁铁骑(骑兵配枪,以一档十)。读了中外历史才发现,不管是中国历代武将,还是国外的亚历山大、恺撒都喜欢用的一招是:正面冲锋,攻击侧翼,分而围之。中外兵法是一家。

学历史最大的收获是:

  1. 你能获得全局观,从整个历史中总结出你看到的那条隐藏规律,那些人性的规律在历史的好好坏坏中自然的展现在你的眼前
  2. 你能充分理解人性,你眼前再坏的人估计都比不上历史上那些纯粹的坏人,你眼中再厉害的自己估计都比不上历史的一个小兵,很多时候,我们自己就是沧海一粟
  3. 你能理解人之所以为人,历史的大规律纵然是利益和人性,但是你总在每个时刻看到了有些人在坚持什么,他们坚持的事情在当时是被无情嘲笑的,但是正是这些不起眼的坚持,历史才有了真正的闪光点:理想、正气、做自己

用明月这本书最后一段话结尾,我觉得写的挺好的:

成功只有一个 – 按照自己的方式,去度过人生

Fcitx 最佳配置实践 2026-03-17

2026-03-17 00:00:00

Linux 下最爽的输入法就是 Fcitx 了, 但是没有配置好, 就会出现各种各样的问题, 比如打太快漏字这种问题。

今天把所有博客关于 Fcitx 的配置都整理成一篇, 方便我自己和大家以后用。

我测试了雾凇输入法、白霜输入法还有万象输入法,最后还是回到雾凇输入法,万象输入法的拼音模式太烦人了,特别容易误触。

如果你用Arch Linux,恭喜你,你不用折腾这篇博客下面的命令行,直接用我开发的 rime-ice-installer,输入法自动安装并应用下面的所有配置。

yay -S rime-ice-installer
rime-ice-installer

安装 Fcitx5 输入法

安装 Fcitx5 软件包:

sudo pacman -S fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool fcitx5-rime librime
  • fcitx5: 输入法基础框架主程序
  • fcitx5-gtk: GTK 程序的支持, 必须安装, 修复打字太快漏字的问题
  • fcitx5-qt: QT5 程序的支持, 必须安装, 修复打字太快漏字的问题
  • fcitx5-configtool: 图形化配置工具
  • fcitx5-rime: RIME 输入法
  • fcitx5-im: 输入法设置工具
  • librime: rime 相关库, 下面的 emacs-rime 会用到

Wayland 环境设置

安装好上面的 Fcitx 包,在 KDE 环境下,只需要进入 KDE 设置->虚拟键盘, 选择 Fcitx5 后重新注销即可在大部分应用中输入中文。

一些特殊的应用,比如微信就无法输入中文, 需要创建配置文件 ~/.config/plasma-workspace/env/ime.sh 文件, 并在配置文件中写入

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

重新注销后就可以在 Wayland 环境下的微信输入中文了。

备注:

  • 需要安装 fcitx5-gtkfcitx5-qt 并写入上面 IM 设置, 不然打字太快会发生漏字的现象, 就是拼音没有变成汉字而是直接插入输入框中。
  • 附加组件: 粘贴板和快速输入模块的快捷键去掉, 避免和 Emacs 按键冲突

X11 环境设置

X11 的配置文件需要写入 ~/.xprofile

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

重新登录即可。

备注:

  • 需要安装 fcitx5-gtkfcitx5-qt 并写入上面 IM 设置, 不然打字太快会发生漏字的现象, 就是拼音没有变成汉字而是直接插入输入框中。
  • 附加组件: 粘贴板和快速输入模块的快捷键去掉, 避免和 Emacs 按键冲突

安装 Fcitx5 输入法皮肤

yay -S fcitx5-skin-adwaita-dark

然后修改配置文件 ~/.config/fcitx5/conf/classicui.conf

# 横向候选列表
Vertical Candidate List=False

# 禁止字体随着 DPI 缩放, 避免界面太大
PerScreenDPI=False

# 字体和大小, 可以用 fc-list 命令来查看使用
Font="Noto Sans Mono 13"

# Gnome3 风格的主题
Theme=adwaita-dark

备注: 我比较喜欢仓耳今楷, 上面的 Font 可以换成 TsangerJinKai03-6763 15

安装雾凇拼音

上面的步骤只是把 Fcitx 的核心和皮肤搞定了, 但是 Fcitx 默认的词库非常难用, 流畅的输入需要安装雾凇输入法。

使用下面的命令拷贝雾凇拼音的所有 rime 配置到 fcitx 的 rime 配置目录下

git clone https://github.com/iDvel/rime-ice --depth=1

修改默认配置

切换到 rime-ice 目录, 做下面三个操作:

  1. grep 目录下所有- { when: paging, accept: comma, send: Page_Up }- { when: has_menu, accept: period, send: Page_Down } 内容, 去掉注释
  2. grep page_size, 把 5 换成 9 即可
sed -i 's/# \(- { when: \(paging\|has_menu\), accept: \(comma\|period\), send: Page_\(Up\|Down\) }\)/\1/' default.yaml

sed -i 's/page_size: 5/page_size: 9/' default.yaml

前两个操作是实现逗号、 句号翻页, 后面一个操作是更改候选词的数量

增加语言大模型

虽然雾凇输入法默认调教已经非常智能了, 我们还可以通过安装万象语言模型来增强输入法在上下文时的联想功能。

具体的操作方法如下: 下载 rime-lmdg, 我下载的是 amz-v2n3m1-zh-hans.gram 文件。

amz-v2n3m1-zh-hans.gram 这个文件移动到 rime-ice 目录下

在 rime-ice 目录下新建一个 rime_ice.custom.yaml 文件, 内容如下:

patch:
  grammar:
    language: amz-v2n3m1-zh-hans
    collocation_max_length: 5
    collocation_min_length: 2
  translator/contextual_suggestions: true
  translator/max_homophones: 7
  translator/max_homographs: 7

更新到 Fcitx 目录

调整完上面配置后, 进行下面拷贝操作, ~/.config/fcitx/rime/ 和 ~/.local/share/fcitx5/rime 这两个目录的内容备份后清空掉,避免配置冲突

cp -r ./rime-ice/* ~/.config/fcitx/rime/
cp -r ./rime-ice/* ~/.local/share/fcitx5/rime
  • ~/.config/fcitx/rime/: 这个目录主要是 Emacs 的 emacs-rime 插件会读取
  • ~/.local/share/fcitx5/rime: 这个目录是 Fcitx 读取的, 用于外部软件使用雾凇输入法

删除误输入的拼音

有时候我们会不小心把拼音确认了, 这样这些拼音就会变成第一个候选词, 影响拼音后面对应的中文候选词。

Fcitx 的用户自定义英文候选词都会自动记录到下面配置文件中:

~/.local/share/fcitx5/rime/en_dicts/en.dict.yaml ~/.config/fcitx/rime/en_dicts/en.dict.yaml

找到误输入的字符串, 保存配置文件重启 Fcitx 即可。

安装 emacs-rime

这一节讲的是怎么让 Emacs 可以使用上雾凇输入法。

首先安装 posframe, posframe 可以让侯选词显示在光标处, 所以建议安装。

然后下载 emacs-rime:

git clone https://github.com/DogLooksGood/emacs-rime

把 emacs-rime 目录放到 load-path 下, 添加以下配置:

(require 'rime)

;;; Code:
(setq rime-user-data-dir "~/.config/fcitx/rime")

(setq rime-posframe-properties
      (list :background-color "#333333"
            :foreground-color "#dcdccc"
            :font "WenQuanYi Micro Hei Mono-14"
            :internal-border-width 10))

(setq default-input-method "rime"
      rime-show-candidate 'posframe)

上面的配置分别设置 emacs-rime 读取 RIME 配置的路径、 UI 细节和使用 posframe 来显示候选词。

重启 Emacs 后, 调用 toggle-input-method 命令来尝试输入中文。

雾凇拼音 主页有一些输入用例, 如果你打同样的拼音可以补全相同的中文候选词, 就证明已经成功用上了雾凇拼音。

我个人的体验, 雾凇拼音的细节调教非常好, 比我们自己折腾的 rime 词库要专业的多, 中文输入, 特别是长句输入再也不用翻很多页。

emacs-rime 搭配雾凇拼音后, Emacs 的中文输入非常爽, 我顺手就给 rime-ice 的作者捐了一点款, 感谢开源作者的辛劳付出。 ;)

面试最重要的三点

2026-03-08 00:00:00

这两天招人招累了,给同事们分享一下面试人的经验

我们公司面试人其实就看三点

1.这个人是否诚实?怎么说呢?真正厉害的人的简历都是非常朴实的,以分享的观点在写。而那些水平不高的人,简历非常的花哨,把他前公司的所有的厉害的事情都写在他自己身上

2.这个人是否喜欢学习?真正喜欢学习的人,他的成长经历都是细节满满的。而且你问他的问题,他都会一针见血地回复出来。而那些花哨的人,就会说一些看似非常正确却没有水平的话

3.你是否愿意和这个人工作?这一点没有固定的识别方法,就完全是面试过程中,你感受对方的气场。如果对方是一个狂妄的、骄傲的,而且不真诚的人,你可以在你的第六感里面感受出来。简单一句就是,如果这个人今天跟你一起工作,你愿意和他工作吗?

简单总结来说,诚实的人上限非常高。爱学习的人,不管他现在水平在什么地方,他以后一定会成长得非常快。很多谦虚的人组在一起,团队才能拧成一股绳。

AI 编程中提示词是否重要?

2026-03-08 00:00:00

今天朋友问,AI 编程提示词工程重不重要?

  1. 提示词工程不重要,AI 能力够强不需要提示词

  2. 产品思维很重要,因为清晰的目标会让 AI 写清晰的代码,很多人一开始就写不好,是因为脑袋不清楚。事实上,很多研发逻辑思维很强,但是他们却不知道真实世界的需求是什么

  3. 编程经验在后期很重要,因为后期项目大了,上下文超出 AI 智商,AI 就会变笨,这时候编程经验让 AI 脱离大坑就需要编程素养了,因为你通过 AI 反复修不好的问答过程,你就知道 AI 困在什么地方,告诉它方向,它马上起飞

简单来说,AI 是一辆好的越野车,但是要到处都能开,司机越野经验也很重要

没有编程经验,大型项目,后期 bug 满天飞

AI 编程怎么效率高?

2026-03-08 00:00:00

很多人问我 AI 编程为什么这么快的原因?

我觉得有三个点:

  1. 思路清晰:做为有研发背景的产品经理,我每天无时无刻不在想功能逻辑、内在需求和任务分解,加上懒猫清单高效管理,我在给 AI 任务之前已经是逻辑清晰目标明确的 “小任务”, 因为任务小,所以上下文小,所以 AI 精准打击,bug 少

  2. 善用 Plan 模式,很多人说 Plan 模式不就是 /plan 吗,有什么稀奇的?耗费人能量的是思考,AI 也是,所以要提高效率,就要用很多 Plan 并行,我每天运行 30 多个 AI,每个 AI 都用 Plan 和它聊天,Review 它的计划。这样我 90% 的时间都在聊天,一旦 30 多个计划细节边界都聊清楚,剩下的事情就很简单:执行、测试、Commit。关键是并行 Plan 可以节省你 90% 的时间, 而且把人的精力划分成上午思考,下午执行,这样避免人脑在思考、执行和测试之前来回横跳,效率自然就高得多了

  3. 多用 Guard,一旦 AI 把代码写对了,或者好不容易把 AI 中途改坏的代码又拉回来了,我最喜欢就是和 AI 盘点,为什么中途被改坏了?是文档需求不明确?还是代码逻辑有冲突?还是测试脚本过期了?这些把事情做对以后的盘点,并把盘点的内容再次融入到文档、代码和 CI 中的习惯,会减少以后增加功能的时候 AI 把已有功能改坏的几率,少回归,自然效率就高了

总结一下就是:目标清晰、并行 Plan、盘点正确的原因