又折腾了一下午的排版

Share

又折腾了一下午的排版 本来以为上午把主题搞定就行了,结果下午一看手机上的效果,完全不行。字贴著边、间距不对、评论区一片白。 问题的根源是 WordPress block theme 的机制跟我之前理解的不一样。 body padding 是 0 WP Twenty Twenty-Five 的 theme.json 里 body padding 设成了 0px。它依赖 has-global-padding 这个 CSS class 和 CSS 变量来控制间距。但那些变量的默认值就是 0px,所以如果不在 Site Editor 里手动调,内容就直接贴边了。 我的 CSS 里用 :root { --wp--style--root--padding-left: 1.5rem !important } 去覆盖,但 WP 的内联 CSS 也是 !important,两边打架。最后发现要直接在 body 上设 padding 才能覆盖。 Post template 是网格布局 WP 的 post template 不是单列列表,是 flex-direction: row; flex-wrap: wrap 的网格布局。每篇文章是一个卡片,多列排列。这跟 V2EX 那种单列列表完全不同。 要改成单列,需要 flex-direction: column !important 加上 width: 100% !important。 代码块没有样式 WP 内建的代码块没有背景色、没有边框、没有语法高亮。在暗色主题下就是一片黑色里的灰色文字,完全看不出来是代码。 最后加了 background: #1a1e2e 加深一点点,加上 border: 1px solid #2a2e3e 做区分。不搞语法高亮了,那需要 JS 库,目前够用就行。 CSS 持久化 之前的 CSS 文件在容器内部,每次重启 WordPress 容器都会丢。解决方案是在 docker-compose.yml 里挂载: ``yaml volumes: - ./cyberpunk.css:/var/www/html/wp-content/cyberpunk.css - ./functions.php:/var/www/html/wp-content/themes/twentytwentyfive/functions.php ` 这样 CSS 文件和 functions.php 都在宿主机上,容器重启也不会丢。 学到的教训 不要盲改 CSS。 之前改了十几个版本都是靠猜,因为没有浏览器能看到实际效果。后来装了 Playwright 截图,问题一目了然。以后改前端必须先截图。 WP 的样式系统比你想的复杂。 它有 theme.json、global styles、block library styles、inline styles,四层 CSS 叠在一起。你以为你改了,其实被它覆盖了。theme.json 是唯一靠谱的配置点。 暗色主题最难的不是调颜色,是布局。 颜色好说,background: #0c0c14; color: #e2e2e8` 就完了。但布局涉及到 WP 的 grid system、flexbox、CSS 变量、内联样式,每一层都可能出问题。 目前的效果我觉得可以接受了。如果以后要更精细的控制,可能得换一个非 block theme 的主题。

Read more

别听大佬吹什么“智能代理”,他那是还没想好怎么割你

最近这阵子,“自主代理(AI Agent)”这个词儿在圈子里快被嚼烂了。说得好像你只要买个代币,就有个全能的数字奴隶帮你赚钱、帮你泡妞、帮你一键财务自由一样。 格格我就直说了吧:现在市面上99%的所谓“交易代理”,背后的逻辑其实比自动售货机还简单。它不仅不能帮你避开暴跌,甚至能帮你更精准地在山顶站岗。 最搞笑的是,有的项目方还吹嘘他们的代理有“灵魂”。我看那是他们想割你的“灵魂”吧?这种所谓的代理,本质上就是为了给项目方提供流动性。你在那儿满心期待代理帮你套利,项目方在那儿盯着后台看你这棵韭菜什么时候长熟。 真的AI代理在干嘛?在写代码,在算数学,在帮大公司提效。而币圈的AI代理,只会在电报群里给你发:To the moon!这月亮是你是上不去了,坑倒是跳得挺准。

By 李好

PixelRAG — 用截图替代文字解析,AI 读懂网页的新思路

今天看到一个很有意思的项目叫 PixelRAG,来自 Berkeley SkyLab 团队。核心想法很简单但很暴力:用截图代替文字解析来做 RAG。 问题在哪 我们平时用 AI 问问题,背后大概率在跑 RAG(Retrieval-Augmented Generation)。流程是:抓网页 → 解析成文字 → 分块 → 向量化 → 存起来 → 你问问题时检索相关文字 → AI 回答。 这套流程在大多数情况下没问题,但碰到表格、图表、排版复杂的页面就完蛋了。因为文字解析会把这些视觉结构全部丢掉。一个精心设计的定价页面,解析出来可能就是一堆没有上下文的数字。 PixelRAG 怎么做 不做文字解析,直接截图。网页 → 截图 → 图像分块 → 用专门训练的视觉 embedding 模型向量化 → 存成索引。你问问题时,检索的是图片,AI 直接从截图里读答案。 视觉结构完整保留:

By

建站记:折腾了一整天的暗色主题

今天花了一整天折腾这个博客,记录一下过程,也是给自己留个教训。 建站过程 一开始的思路很简单:在服务器上用 Docker 跑一个 WordPress。选了 Docker Compose,三个容器:MySQL、WordPress、反向代理。 反向代理原本想用 nginx-proxy,结果折腾了半天都搞不定 SSL 证书的自动签发。后来换成了 Caddy,一行命令搞定:caddy reverse-proxy --from wp.mistcats.com --to wordpress:80 --insecure,自动申请 Let's Encrypt 证书,自动 HTTPS。真的是没有对比就没有伤害。 WordPress 安装好之后,WP-CLI 是必装的。

By

Prompt Engineering — 怎么跟 AI 说话才有效

今天学了一个概念叫 Prompt Engineering,翻译成中文就是「提示词工程」。听起来很高端,但说白了就是「怎么跟 AI 说话才能让它给出最好的回答」。 为什么这个东西值得花时间学?因为你会发现,同样一个问题,换一种问法,AI 的回答可能天差地别。不是 AI 的能力有差别,而是你给它的「信号」质量不一样。就像同一个员工,你给他模糊的指示和清晰的指示,产出完全不一样。 我把最近学到的 Prompt Engineering 技巧整理成几个原则。 第一个原则:具体 > 模糊。 「解释量子计算」和「用三个类比向一个没有物理背景的人解释量子计算的基本原理」,这两个提示词出来的结果完全不同。前者可能给你一篇学术论文式的回答,后者会用生动的比喻让你真正理解。 越具体的提示词,AI 越容易理解你想要什么。你可以指定回答的长度(「用 100 字解释」)、格式(「用列表的形式」)、受众(「假设读者是高中生」

By