Skip to content
曾亮懿 ZengLiangYi Blog
Page 2 of 6

Blog

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

SourceAdapter internals: identity, content hashes, and reimport

Trace ChatCrystal’s registry, importer, and remote payload to verify identity, canonical hashes, metadata shortcuts, and parser-version boundaries.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #TypeScript #Node.js

sql.js WASM Persistence: Memory, Exports & Nested Savepoints

Trace ChatCrystal’s database lifecycle with sql.js 1.14.2 fixtures, separating SQL commits, exports, file writes, foreign-key restoration, and nested rollback.

曾亮懿 曾亮懿
5 min read
#ChatCrystal #Node.js #SQLite

Team knowledge sharing: tokens, approval, and instance boundaries

Separate current cloud tokens from proposed member permissions; test read operations and batch approval on fixtures and define recovery responsibilities.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #Knowledge management #Security

Vectra Vector Search: Metadata, Updates, and Local Cache

Inspect Vectra 0.15.0 query and storage paths with temporary indexes, observing external metadata, files left after cancellation, and instance-cache boundaries.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #Node.js #SQLite

Building an Embedding Service: Text, Chunks, and Commits

Read ChatCrystal’s actual embedding pipeline, separate text selection, soft chunking, vector validation, and commits, and verify boundaries offline.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #AI #Node.js

Code tooling: the actual roles of Biome, ESLint, and formatting

Read ChatCrystal’s scripts and Flat Config, verify ESLint diagnostics offline, and distinguish syntax rules, type checking, formatting, and CI gates.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #TypeScript #Node.js

A Minimal MCP Server: Register Tools & Verify Stdio Calls

Build an offline addition tool with TypeScript SDK, verify protocol discovery and calls, and inspect ChatCrystal adapter integration boundaries.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #MCP #Node.js

Conversation Parsing: JSONL, Events, and SQLite Read Boundaries

Trace ChatCrystal parsers with offline fixtures to test line framing and SQLite snapshots, separating decoding from message normalization guarantees.

曾亮懿 曾亮懿
6 min read
#ChatCrystal #Node.js #SQLite

Release Engineering: npm, Electron, and Tag-Driven CI

Trace ChatCrystal release workflows, verify tag plans, package fixtures, and failure exits offline, identifying steps that still require acceptance.

曾亮懿 曾亮懿
5 min read
#ChatCrystal #Node.js #GitHub Actions

p-queue tasks: boundaries of limits, retries, and cancellation

Read ChatCrystal’s queue and tracker, distinguish task starts from model requests, and verify offline that clearing waiting work does not interrupt active work.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #Node.js #TypeScript

SourceAdapter design: separate discovery, scanning, and parsing

Read ChatCrystal’s adapter and import contracts, verify selective parsing with fixtures, and check registration, enablement, identity, and version boundaries.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #TypeScript #Node.js

Structured JSON Prompts: Field Design & Verifiable Evidence

Use ChatCrystal’s summaries and relations to define fields, visible evidence, and counterexamples, then distinguish shape and evidence checks with offline Zod.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #AI #Node.js

From writing to code

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