对齐是把"会说话的模型"变成"能帮忙的助手"的关键一步。
- 问题:基座模型只会续写 token,不会服从指令。
- 定义:对齐 = 让输出符合有用、诚实、无害 三 个标准。
- SFT:用"指令→回答"样例做监督微调,教会模型执行任务。
- RLHF:人类打分排 序 → 训练奖励模型 → PPO 强化学习优化。
- DPO:直接从偏好数据学习,省掉奖励模型,训练更稳定。
- 代价:过度对齐有"对齐税"——创造力下降,安全与能力需要取舍。
- 现实:对齐不是一锤子买卖,用户反馈是最好的持续对齐信号。
对齐是把"会说话的模型"变成"能帮忙的助手"的关键一步。
AI 模型的流式输出本质是单向长文本推送,SSE 比 WebSocket 更合适,多数场景不需要双向通道 。
.vscode/launch.json 不是 Claude Code 的配置文件,但它是 Claude Code 获得调试能力的"基础设施"——MCP 调试服务器通过它让 AI 学会打断点、查变量、单步执行。
.vscode/,在 .claude/settings.json(权限和钩子)+ CLAUDE.md(项目指令)+ .mcp.json(工具集成)——它定义的是"AI 怎么跑",不是"程序怎么跑"。金字塔结构说白了就一句话:先给结论,再用论据逐层支撑。
函数组件 re-render 的根因只有一条:引用变了。state 更新、props 变化、父组件渲染、context 值变化——本质上都是"某个引用不等于上一次的引用"。
input:checked 改成父元素边框高亮、img 存在时父容器切两栏布局、表单校验状态动态联动——以前这些都需要 JS 去监听子元素状态再回头改父元素。:has() 的出现,把"子元素状态驱动父元素样式"这件事直接搬进了 CSS。
:has() 是名副其实的父选择器,根据子元素/后代/兄弟的状态反向匹配父元素或前面的兄弟。.card:has(img))的开销是微秒级;只有 div:has(...) 这种宽泛选择器 + 频繁 DOM 变更时才是问题。:has() 替代 JS 后代码量减半、不会漏同步。性能提醒::has() 选择器锚定越具体越好,避免 body:has()、*:has() 这种全局监听。
agent-browser 和 Playwright CLI 的区别不在"谁更好",而在谁在做决策——是 LLM 自己看着办,还是人写好每一步指令。
Playwright MCP 和 Chrome DevTools MCP 不是竞品——一个负责"开",一个负责"修"。
一句话:日常交互用 Playwright,需要性能/网络排查时切 DevTools。
AI Coding 工具越来越多,配置文件越来越乱——CC Switch 用一个 GUI把 Claude Code、Codex、Gemini CLI 等工具的 Provider、MCP Server、Skills 全管起来,一键切换,不用再手改 JSON。
AI Coding 的下半场不是 更强的模型,而是更难违反的流程。