---
title: 文章 — 第 3 页
description: 第 3 / 6 页：前端工程、AI 编程与开源实践文章。
image: "https://zengliangyi.com/og/default.png"
---

第 3 / 6 页

# 文章

分享前端工程与 AI 编程中的问题、实现思路和实践总结。

[最新文章](/blog)

- [#ChatCrystal](/blog/tag/chatcrystal)

- [#Node.js](/blog/tag/node-js)

- [#TypeScript](/blog/tag/typescript)

- [#SQLite](/blog/tag/sqlite)

- [#AI](/blog/tag/ai)

- [#数据解析](/blog/tag/数据解析)

- [#MCP](/blog/tag/mcp)

- [#Claude Code](/blog/tag/claude-code)

- [#知识管理](/blog/tag/知识管理)

- [#Electron](/blog/tag/electron)

[##  TanStack Query 数据流：缓存键、失效与后台任务

对照 ChatCrystal 的查询钩子和 API，用离线缓存实验验证参数键与前缀失效，再区分请求成功、后台完成和页面刷新。          曾亮懿       2026年10月6日      阅读约 4 分钟

#ChatCrystal

#React

#TypeScript](/blog/tanstack-query-data-flow)    [##  测试策略：用反例验证纯函数、数据库与 API 边界

核对 ChatCrystal 的 Node 测试入口，用离线样本练习依赖隔离、SQL 回滚和 Fastify inject，并明确这些测试没有覆盖什么。          曾亮懿       2026年10月6日      阅读约 4 分钟

#ChatCrystal

#Node.js

#TypeScript](/blog/testing-strategy)    [##  TypeScript 多包配置：类型检查与运行环境的分界

核对 ChatCrystal 的共享类型、服务端、Vite 客户端和 Electron 配置，用可复现的别名反例解释编译通过为何不等于运行成功。          曾亮懿       2026年10月6日      阅读约 4 分钟

#ChatCrystal

#TypeScript

#Node.js](/blog/typescript-monorepo-configuration)    [##  Vectra 本地搜索：用固定向量验证排序、过滤与持久化

在临时目录运行 Vectra 0.15.0 的确定性练习，检查余弦分数、元数据过滤、重新打开索引和取消更新。          曾亮懿       2026年10月6日      阅读约 4 分钟

#ChatCrystal

#AI

#Node.js](/blog/vectra-local-search)    [##  AI SDK 结构化笔记：统一调用、Schema 与业务校验

对照 ChatCrystal 的 AI SDK 7 调用，分清 provider 适配、输出类型与业务事实，用离线 Zod 练习验证提示描述的边界。          曾亮懿       2026年10月5日      阅读约 4 分钟

#ChatCrystal

#AI

#Node.js](/blog/ai-sdk-structured-notes)    [##  Electron 托盘与窗口状态：隐藏、恢复和退出的边界

对照 ChatCrystal 当前托盘菜单、窗口位置校验与退出流程，理解状态持久化能恢复什么，以及仍需测试的失败场景。          曾亮懿       2026年10月5日      阅读约 4 分钟

#ChatCrystal

#Electron

#Node.js](/blog/electron-tray-window-state)    [##  Fastify 生产静态服务：同端口、SPA fallback 与失败路径

核对 ChatCrystal 的实际构建与静态目录探测，用隔离 inject 练习验证页面、未知 API 和缺失资源的不同响应。          曾亮懿       2026年10月5日      阅读约 4 分钟

#ChatCrystal

#Fastify

#Node.js](/blog/fastify-production-static-service)    [##  Electron 入门：主进程、页面与有限的 IPC 能力

沿 ChatCrystal 的模式选择、BrowserWindow、preload 和 Fastify 启动路径，理解桌面宿主与 Web 页面的权限和生命周期边界。          曾亮懿       2026年10月4日      阅读约 4 分钟

#ChatCrystal

#Electron

#桌面应用](/blog/electron-app-basics)    [##  Embedding 横评方法：固定笔记与查询，比较实际命中

用人工标注的查询和独立索引比较本地与云端 Embedding，核对重建状态、命中质量和资源成本。          曾亮懿       2026年10月4日      阅读约 3 分钟

#ChatCrystal

#Embedding

#评测](/blog/embedding-retrieval-evaluation)    [##  从 ChatCrystal 学 Fastify：插件、校验与失败路径

对照真实 createServer 与路由边界，在隔离练习中运行 Fastify inject，验证成功、无效输入和不存在的路由。          曾亮懿       2026年10月4日      阅读约 3 分钟

#ChatCrystal

#Fastify

#Node.js](/blog/learn-fastify-with-chatcrystal)    [##  摘要模型怎么比较：固定输入、核对证据，再算成本

用相同转录、字段评分和失败记录比较本地与云端摘要模型，区分质量评测和 ChatCrystal 的实际处理链路。          曾亮懿       2026年10月4日      阅读约 4 分钟

#ChatCrystal

#LLM

#评测](/blog/llm-summary-evaluation)    [##  sql.js 实战：内存 SQLite、外键与显式保存

从 ChatCrystal 数据层理解 sql.js 的加载、事务和导出边界，用隔离练习验证外键、回滚与重新加载。          曾亮懿       2026年10月4日      阅读约 3 分钟

#ChatCrystal

#SQLite

#WebAssembly](/blog/sqljs-wasm-basics)

##  从文章到代码

到我的 GitHub 看看 ChatCrystal、开发者工具和日常学习记录，欢迎交流实现细节。

[访问我的 GitHub](https://github.com/ZengLiangYi)

```json
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "ZengLiangYi Blog",
  "alternateName": [
    "Zeng Liangyi",
    "ZengLiangYi",
    "zengliangyi.com"
  ],
  "url": "https://zengliangyi.com",
  "description": "曾亮懿的个人网站。记录 AI Native 探索、开发者工具与全栈产品实践。"
}
```
