---
title: "#ChatCrystal — Blog"
description: "Posts tagged \"ChatCrystal\"."
image: "https://zengliangyi.com/og/blog/tag/chatcrystal.png"
---

Tag

# #ChatCrystal

59 posts tagged "ChatCrystal".

[All 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)

[##  AI Conversation Formats: JSONL Events vs SQLite Snapshots

Compare 5 AI adapter formats: separate JSONL events from SQLite keys, and inspect indexed, orphan, and unknown-version chat transcripts in memory stores.          曾亮懿       October 7, 2026      4 min read

#ChatCrystal

#Node.js

#SQLite](/en/blog/ai-conversation-format-divergence)    [##  How Claude Code, Cursor, Copilot, and Trae Store Chats on Disk

Compare Claude Code, Cursor, Copilot, and Trae storage paths. Distinguish raw copies from exports, and verify migration retention with test manifests.          曾亮懿       October 7, 2026      4 min read

#ChatCrystal

#Node.js

#SQLite](/en/blog/ai-conversation-management-options)    [##  Five AI conversation parsers: retained fields and loss boundaries

Build an acceptance matrix from Claude Code, Codex, Cursor, Trae, and Copilot parsers, checking tool flags, thinking, order, and snapshot coverage.          曾亮懿       October 7, 2026      4 min read

#ChatCrystal

#TypeScript

#Node.js](/en/blog/ai-conversation-parser-boundaries)    [##  AI SDK Provider Abstraction: Capabilities and Protocols

Test 7 ChatCrystal providers and AI SDK factories with offline mocks for Responses, Chat Completions, embeddings, and structured output rejection.          曾亮懿       October 7, 2026      4 min read

#ChatCrystal

#Node.js

#TypeScript](/en/blog/ai-sdk-provider-abstraction)    [##  Bulk import with 1000 conversations: cost and performance checks

Separate parsing, SQL writes, WASM export, and summary queues; use synthetic inputs to check retention and data equivalence.          曾亮懿       October 7, 2026      4 min read

#ChatCrystal

#SQLite

#Performance](/en/blog/bulk-import-performance-plan)    [##  CLI knowledge workflows: exits, JSON contracts, and final states

Check current CLI commands and JSON shapes; reject false success with synthetic process and per-ID state checks before scheduling and recovery.          曾亮懿       October 7, 2026      4 min read

#ChatCrystal

#CLI

#Automation](/en/blog/cli-knowledge-workflow)    [##  Review AI coding conversations: denominators, quality, and reuse

Audit source and length denominators, false accepts and rejects, and empty samples; separate current filtering, summaries, and measured reuse.          曾亮懿       October 7, 2026      5 min read

#ChatCrystal

#Knowledge management

#Evaluation](/en/blog/conversation-knowledge-retrospective)    [##  Fastify and Electron: Desktop Startup & Shutdown Boundaries

Trace ChatCrystal local, cloud, and onboarding modes, verify CommonJS loading and port contention, and inspect window and shutdown boundaries.          曾亮懿       October 7, 2026      5 min read

#ChatCrystal

#Node.js

#Electron](/en/blog/fastify-electron-service-lifecycle)    [##  Graph-Assisted Refactoring: Turning Relational Clues into Checks

Turn note and code graph relations into verifiable fault checks: trace candidate edges, check dependencies, and avoid treating links as proof.          曾亮懿       October 7, 2026      5 min read

#ChatCrystal

#Knowledge graph

#Testing](/en/blog/graph-assisted-refactoring)    [##  MCP Boundaries: Discovery, Identity, and Call Permissions

Examine Model Context Protocol boundaries: tool discovery, server instance tracking, and execution permissions in reviewable developer environments.          曾亮懿       October 7, 2026      4 min read

#ChatCrystal

#MCP

#Node.js](/en/blog/mcp-protocol-boundaries)    [##  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.          曾亮懿       October 7, 2026      4 min read

#ChatCrystal

#TypeScript

#Node.js](/en/blog/source-adapter-internals)    [##  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.          曾亮懿       October 7, 2026      5 min read

#ChatCrystal

#Node.js

#SQLite](/en/blog/sqljs-wasm-persistence)    [##  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.          曾亮懿       October 7, 2026      4 min read

#ChatCrystal

#Knowledge management

#Security](/en/blog/team-knowledge-sharing-plan)    [##  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.          曾亮懿       October 7, 2026      4 min read

#ChatCrystal

#Node.js

#SQLite](/en/blog/vectra-search-internals)    [##  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.          曾亮懿       October 6, 2026      4 min read

#ChatCrystal

#AI

#Node.js](/en/blog/embedding-service-design)    [##  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.          曾亮懿       October 6, 2026      4 min read

#ChatCrystal

#TypeScript

#Node.js](/en/blog/lint-format-tooling)    [##  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.          曾亮懿       October 6, 2026      4 min read

#ChatCrystal

#MCP

#Node.js](/en/blog/mcp-server-implementation)    [##  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.          曾亮懿       October 6, 2026      6 min read

#ChatCrystal

#Node.js

#SQLite](/en/blog/multi-format-conversation-parsing)    [##  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.          曾亮懿       October 6, 2026      5 min read

#ChatCrystal

#Node.js

#GitHub Actions](/en/blog/npm-release-ci)    [##  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.          曾亮懿       October 6, 2026      4 min read

#ChatCrystal

#Node.js

#TypeScript](/en/blog/pqueue-task-queues)    [##  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.          曾亮懿       October 6, 2026      4 min read

#ChatCrystal

#TypeScript

#Node.js](/en/blog/source-adapter-design)    [##  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.          曾亮懿       October 6, 2026      4 min read

#ChatCrystal

#AI

#Node.js](/en/blog/structured-json-prompts)    [##  TanStack Query Data Flow: Keys, Invalidation, and Queries

Trace ChatCrystal hooks and API, verify parameterized query keys and prefix invalidation, and distinguish accepted requests from background refreshes.          曾亮懿       October 6, 2026      4 min read

#ChatCrystal

#React

#TypeScript](/en/blog/tanstack-query-data-flow)    [##  Testing Strategy: Counterexamples for SQL, Functions & APIs

Check ChatCrystal’s Node test entry points, practice dependency isolation, SQL rollback, and Fastify inject offline, and state what those tests do not cover.          曾亮懿       October 6, 2026      4 min read

#ChatCrystal

#Node.js

#TypeScript](/en/blog/testing-strategy)    [##  TypeScript monorepo configuration: types and runtime boundaries

Check ChatCrystal’s shared types, server, Vite client, and Electron settings, then reproduce an alias failure that passes compilation but fails at runtime.          曾亮懿       October 6, 2026      4 min read

#ChatCrystal

#TypeScript

#Node.js](/en/blog/typescript-monorepo-configuration)    [##  Vectra local search: fixed vectors, filters, and persistence

Run a deterministic Vectra 0.15.0 exercise in a temporary directory to check cosine scores, metadata filters, reopening, and canceled updates.          曾亮懿       October 6, 2026      4 min read

#ChatCrystal

#AI

#Node.js](/en/blog/vectra-local-search)    [##  AI SDK structured notes: adapters, schemas, and business checks

Read ChatCrystal’s AI SDK 7 calls, distinguish provider adaptation from output shape and factual validity, and test description limits with offline Zod.          曾亮懿       October 5, 2026      4 min read

#ChatCrystal

#AI

#Node.js](/en/blog/ai-sdk-structured-notes)    [##  Electron tray and window state: hide, restore, and quit

Read ChatCrystal’s mode-aware tray, saved window bounds, and shutdown flow, including what persistence restores and which failures still need testing.          曾亮懿       October 5, 2026      4 min read

#ChatCrystal

#Electron

#Node.js](/en/blog/electron-tray-window-state)    [##  Fastify production files: one port, SPA fallback, and failures

Check ChatCrystal’s build outputs and static-root discovery, then use isolated inject exercises to distinguish pages, unknown APIs, and missing assets.          曾亮懿       October 5, 2026      4 min read

#ChatCrystal

#Fastify

#Node.js](/en/blog/fastify-production-static-service)    [##  Electron Basics: Main Process, WebPages, and Bounded IPC

Follow ChatCrystal’s modes, BrowserWindow, preload, and Fastify startup to understand desktop permissions and lifecycle boundaries.          曾亮懿       October 4, 2026      4 min read

#ChatCrystal

#Electron

#Desktop Apps](/en/blog/electron-app-basics)    [##  Evaluate embedding retrieval with fixed notes and labeled queries

Compare local and cloud embeddings with labeled queries and separate indexes, checking rebuild completion, retrieval quality, and resource costs.          曾亮懿       October 4, 2026      3 min read

#ChatCrystal

#Embedding

#Evaluation](/en/blog/embedding-retrieval-evaluation)    [##  Learn Fastify from ChatCrystal: plugins, validation, and failures

Read the actual createServer and route boundaries, then use an isolated inject exercise to check success, invalid input, and missing routes.          曾亮懿       October 4, 2026      3 min read

#ChatCrystal

#Fastify

#Node.js](/en/blog/learn-fastify-with-chatcrystal)    [##  Comparing LLM Summaries: Fixed Inputs and Verifiable Evidence

Evaluate local vs cloud LLM summarization on identical transcripts, field review, and failure logs, separating model quality from app pipelines.          曾亮懿       October 4, 2026      3 min read

#ChatCrystal

#LLM

#Evaluation](/en/blog/llm-summary-evaluation)    [##  sql.js Practice: In-Memory SQLite, Foreign Keys, and Saves

Read ChatCrystal’s loading, transaction, and export boundaries, then verify foreign keys, rollback, and reload with an isolated exercise.          曾亮懿       October 4, 2026      3 min read

#ChatCrystal

#SQLite

#WebAssembly](/en/blog/sqljs-wasm-basics)    [##  Tailwind CSS v4 and Vite: Compiling Utilities and Variables

Check ChatCrystal’s two-package installation, Vite plugin, and CSS variable themes while separating build-time utilities from runtime values.          曾亮懿       October 4, 2026      3 min read

#ChatCrystal

#Tailwind CSS

#Vite](/en/blog/tailwind-v4-vite-setup)    [##  Getting started with ChatCrystal: install, import, and search

Verify installation, the local service, both model configurations, import, summarization, and search with the actual ChatCrystal 0.6.1 CLI.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Node.js

#Knowledge management](/en/blog/chatcrystal-getting-started)    [##  Set up ChatCrystal MCP: make Claude Code calls reviewable

Connect ChatCrystal to Claude Code with a project-scoped stdio server, then verify its seven tools, HTTP backend, approvals, and request path.          曾亮懿       October 3, 2026      3 min read

#ChatCrystal

#MCP

#Claude Code](/en/blog/chatcrystal-mcp-setup)    [##  Importing Claude Code history: paths, parsing, and verification

Check history paths, JSONL filtering, incremental import, and watcher limitations against the current ChatCrystal adapter.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Claude Code

#Data parsing](/en/blog/claude-code-conversation-import)    [##  Filtering Claude Code JSONL: Events, Blocks, and Omissions

Follow ChatCrystal relevance checks, content extraction, and tag cleanup to distinguish top-level filtering from nested thinking and tool flags.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Claude Code

#JSONL

#Data parsing](/en/blog/claude-code-jsonl-noise-filter)    [##  Claude Code memory workflow: recall, verify, then write back

Use recall_for_task, validate_task_memory, and write_task_memory as an auditable workflow without treating MCP configuration as an automatic-memory guarantee.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#MCP

#Claude Code](/en/blog/claude-code-memory-workflow)    [##  Configuring Cloud LLMs: Providers, Endpoints, and Summaries

Follow ChatCrystal provider registrations to configure remote generation and check native APIs, gateways, persisted settings, credentials, and test boundaries.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#LLM

#Configuration](/en/blog/cloud-llm-configuration)    [##  Importing Codex, Trae, and Copilot: verify each history format

Check source directories, event extraction, and snapshot boundaries in ChatCrystal, then verify each adapter against a conversation you know.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Data parsing

#Knowledge management](/en/blog/codex-trae-copilot-import)    [##  Memory Budgets for Large Chat Imports: Measure Before Batching

Profile memory peaks in large chat imports with sql.js and task queues. Size batches from reproducible benchmarks instead of arbitrary fixed thresholds.          曾亮懿       October 3, 2026      6 min read

#ChatCrystal

#Import

#Performance](/en/blog/conversation-import-memory-budget)    [##  Importing Cursor history: workspace metadata and global messages

Trace how ChatCrystal joins Cursor SQLite data, discovers orphan sessions, and extracts messages, then verify the import with a known conversation.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Cursor

#SQLite

#Data parsing](/en/blog/cursor-conversation-import)    [##  Parsing Cursor SQLite: Debugging Missing Messages Across Tables

Check paired databases, key prefixes, unknown versions, and orphan discovery to distinguish unreadable data, parsing omissions, and absent records.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Cursor

#SQLite

#Data parsing](/en/blog/cursor-sqlite-parser-pitfalls)    [##  Configuring Embeddings: Model Selection and Rebuilding

Check task support, actual embedding inputs, and index compatibility, then accept model settings and changes with known notes and no-answer queries.          曾亮懿       October 3, 2026      3 min read

#ChatCrystal

#Embedding

#Vector search](/en/blog/embedding-model-configuration)    [##  LLMs and embeddings: separate tasks, even with one provider

Distinguish text generation from vector generation, then verify ChatCrystal model settings, connection tests, and index rebuilding boundaries.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#AI

#Vector search](/en/blog/llm-and-embedding-separation)    [##  Note Relations and Graph Views: Discover, Project, and Verify

Trace ChatCrystal relation APIs, candidate discovery, and graph projections, keeping generated edges and tag co-occurrence within verified boundaries.          曾亮懿       October 3, 2026      3 min read

#ChatCrystal

#Knowledge graph

#Relations](/en/blog/note-relations-and-graph)    [##  Ollama Local Workflow: Generation, Vectors, and Retrieval

Run local LLMs with Ollama: test generation endpoints, embedding dimensions, vector consistency, and ChatCrystal integration boundaries offline.          曾亮懿       October 3, 2026      3 min read

#ChatCrystal

#Ollama

#Local-first](/en/blog/ollama-local-workflow)    [##  Recover a debugging solution: retrieve, read, then verify reuse

Use a constructed debugging scenario to check notes, vectors, and search results, then compare the original conversation with the current project.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Semantic search

#Debugging](/en/blog/recover-debugging-notes)    [##  Semantic Search and Context: Finding Hidden Code Dependencies

Combine vector search with one-hop graph relation expansion in code refactoring, keeping similarity scores, candidates, and sources verifiable on disk.          曾亮懿       October 3, 2026      3 min read

#ChatCrystal

#Semantic search

#Knowledge graph](/en/blog/semantic-search-relation-context)    [##  Semantic Search: Candidate Deduplication and Graph Context

Trace query vectors, candidate growth, lexical boosts, and relation expansion in ChatCrystal, distinguishing list filtering from semantic retrieval.          曾亮懿       October 3, 2026      3 min read

#ChatCrystal

#Semantic search

#RAG](/en/blog/semantic-search-workflow)    [##  Vectra index recovery: separate state, cleanup, and rebuilding

Diagnose semantic-search failures across note status, Vectra files, and cleanup tasks, then choose a single-note or full-index recovery path.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Vectra

#Troubleshooting](/en/blog/vectra-index-recovery)    [##  Exporting ChatCrystal Notes to Obsidian

Export every page of ChatCrystal notes, build Obsidian links with stable IDs, and distinguish a readable snapshot from editing and incremental synchronization.          曾亮懿       June 11, 2026      6 min read

#ChatCrystal

#Obsidian

#Node.js

#Knowledge management](/en/blog/chatcrystal-to-obsidian)    [##  Choosing a Local Vector Store: Vectra, Chroma, and hnswlib

Compare Vectra, Chroma, and hnswlib through ChatCrystal’s deployment constraints: integration, retrieval cost, backups, and recovery boundaries.          曾亮懿       June 9, 2026      6 min read

#ChatCrystal

#TypeScript

#Vector search

#Architecture](/en/blog/local-vector-database-selection)    [##  Understanding Five AI Conversation Data Formats

How ChatCrystal parses Claude Code, Codex, Cursor, Trae, and Copilot records, and where JSONL messages, event streams, SQLite KV stores, and snapshots differ.          曾亮懿       June 9, 2026      7 min read

#ChatCrystal

#TypeScript

#AI

#Data parsing](/en/blog/ai-conversation-data-formats)    [##  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)

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