---
title: Blog — Page 6
description: "Page 6 of 6: articles on frontend engineering, AI coding and open-source practice."
image: "https://zengliangyi.com/og/default.png"
---

Page 6 of 6

# Blog

Notes on frontend engineering and AI coding: problems, implementation choices and lessons learned.

[Newest posts](/en/blog)

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

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

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

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

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

- [#Data parsing](/en/blog/tag/data-parsing)

- [#Knowledge management](/en/blog/tag/knowledge-management)

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

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

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

[##  Knowledge Bases for AI Agents: Recall, Validate, and Write Back

Use ChatCrystal MCP tools and task memory to build scoped, revisable agent memory, separating real tool capabilities from automation promises.          曾亮懿       June 5, 2026      5 min read

#ChatCrystal

#MCP

#AI Agent

#Knowledge management](/en/blog/agent-knowledge-memory-loop)    [##  From RAG to Knowledge Graphs: Preserving Context in Retrieval

Compare keyword search, vectors, and knowledge graphs. Trace one-hop candidate expansion in ChatCrystal and identify boundaries relationships cannot prove.          曾亮懿       June 5, 2026      5 min read

#ChatCrystal

#RAG

#Knowledge graphs

#Retrieval](/en/blog/rag-and-knowledge-graphs)    [##  Local-First and Cloud AI: Understanding Data Boundaries

Trace storage, embeddings, summaries, and agent recall in ChatCrystal to identify which data boundaries local-first architecture actually controls.          曾亮懿       June 4, 2026      5 min read

#ChatCrystal

#Architecture

#Privacy

#AI](/en/blog/local-first-ai-data-boundaries)    [##  Using AudioContext suspend/resume as a Streaming A/V Sync Gate

Freeze and release the AudioContext timeline as streamed frames arrive, so frame availability drives playback while audio and video remain synchronized.          曾亮懿       March 16, 2026      4 min read

#TypeScript

#web audio api

#a/v sync](/en/blog/audiocontext-stream-sync-gate)    [##  Stable React Event Subscriptions: useEffect to useEffectEvent

Prevent WebSocket, EventEmitter, and DOM listeners from resubscribing on every callback change, using a ref proxy or React 19.2 useEffectEvent.          曾亮懿       March 16, 2026      4 min read

#React

#hooks

#event subscriptions](/en/blog/react-stable-event-subscriptions)    [##  Token Refresh Races Under Concurrent 401 Responses

How to collapse concurrent 401 responses into one token refresh, retry queued requests safely, and settle every waiting Promise when refresh fails.          曾亮懿       March 16, 2026      4 min read

#TypeScript

#authentication

#concurrency](/en/blog/token-refresh-race-condition)

##  From writing to code

Explore ChatCrystal, developer tools and daily learning notes on my GitHub. Questions about the implementation are welcome.

[Visit my 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 探索、开发者工具与全栈产品实践。"
}
```
