自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

开源,让世界更美好

这是一个程序员的博客

  • 博客(74)
  • 收藏
  • 关注

原创 AI 编程 5000 条对话后的复盘与反思

开发者通过分析5247条AI编程对话(来自Claude Code、Cursor等工具),总结出四大模式:40%为低价值一次性问答;调试对话是核心资产,记录排查路径而非答案;长对话多涉及架构决策,需结构化记录;重复问题频现,凸显知识管理必要性。工具使用经历三阶段演变,从问答机器到构建知识网络。关键教训包括:优先标签体系、主动关联搜索、培养记录习惯。未来AI编程工具需强化智能过滤、分类摘要与团队协作,将对话转化为可复用的知识资产,实现长期效率提升。

2026-06-18 09:59:10 4

原创 我用知识图谱发现了一个重构的隐藏依赖

摘要: 本文通过一个重构引发的语义搜索故障,展示了知识图谱在发现跨模块隐式依赖中的价值。作者在异步改造Embedding服务后遭遇搜索异常,通过关键词搜索无果后,借助语义搜索扩展和知识图谱的可视化关联(尤其是低置信度边),发现任务队列与向量索引的隐藏依赖关系。最终定位到问题根源:异步并发导致部分数据写入后事务未回滚。修复方案包括串行生成、增加中间状态和明确事务语义。关键经验:重构前检索历史知识库、关注弱关联、完整设计状态机及异常路径。知识图谱通过揭示非显性关联,帮助开发者规避潜在风险。 (字数:149)

2026-06-12 09:00:00 165

原创 用 ChatCrystal 管理团队知识:多人协作方案

本文介绍了三种将ChatCrystal个人AI知识库升级为团队协作方案的部署方式: 共享服务器+独立客户端:简单部署一个服务器供团队访问,适合3-5人小团队,但仅支持单人维护知识库。 集中式导入+分布式访问:通过文件同步工具(如rsync)汇总成员对话,服务器统一导入,实现知识共享,需注意数据安全。 MCP集成+AI助手共享:通过MCP协议让成员在各自AI工具中直接访问团队知识库,灵活高效,但依赖网络配置。 文章还探讨了知识积累的标准,建议记录高价值内容(如调试经验、架构决策),并提供了权限隔离方案(多实例

2026-06-12 08:45:00 231

原创 从 ChatCrystal 导出到 Obsidian 的工作流

本文介绍如何将ChatCrystal中的AI对话知识自动同步到Obsidian笔记系统。通过ChatCrystal CLI导出JSON数据,再使用Node.js脚本转换为带标签和双向链接的Markdown文件,最终存入Obsidian Vault目录。脚本会保留标题、摘要、关键结论、代码片段等结构化内容,并自动生成YAML元数据和wikilink关联笔记。运行简单命令即可实现增量同步,让AI对话知识与现有笔记形成知识网络。最终在Obsidian中可获得标签索引、双向链接和全文搜索等完整功能。

2026-06-11 09:00:00 398

原创 CLI 自动化:构建知识管理流水线

本文介绍了如何利用ChatCrystal CLI工具crystal通过shell脚本实现自动化工作流,主要包括四个典型场景的流水线实现:1)每日自动导入新对话并生成摘要;2)批量处理未摘要对话并监控进度;3)定期备份数据库和向量索引;4)知识库健康状态检查。文章首先梳理了CLI核心命令,然后详细展示了每个场景的脚本实现,包括日志记录、错误处理和定时任务配置。这些脚本充分利用了--json参数实现机器可解析输出,并通过组合基础命令构建端到端自动化流程,适合开发者集成到日常工作中。

2026-06-11 08:45:00 208

原创 批量导入 1000 条对话的性能优化实战

本文分享了优化大规模对话导入性能的六个关键点,从最初1200条对话导入导致OOM崩溃,到最终实现1000条对话47秒完成导入的优化过程。主要优化措施包括:控制sql.js内存峰值、流式解析JSONL数据避免内存积累、导入期间暂停数据库自动保存、及时关闭源数据库实例、合理控制任务队列并发策略等。这些方法有效降低了内存占用,提升了导入效率,适用于需要处理大量对话数据的开发者。

2026-06-10 09:00:00 341

原创 AI 编程工具对话管理方案对比

本文对比了Claude Code、Cursor、GitHub Copilot和Trae四种AI编程工具的对话数据管理方案,分析了它们在数据格式、可迁移性、搜索能力和知识提取方面的差异。Claude Code采用简单的JSONL文件存储,可迁移性最佳但缺乏内置搜索;Cursor和Trae使用SQLite数据库,结构化存储但导出复杂;Copilot采用JSONL快照,折中但存在数据冗余。文章指出数据可迁移性的长期价值在于支持工具切换、知识沉淀和跨工具关联,并介绍了ChatCrystal的统一格式翻译架构如何解决

2026-06-10 08:45:00 200

原创 GEO 到底是不是噱头?我把这平台的两套优化机制都实测了一遍

本文探讨了CSDN「AI数字营销平台」中的GEO(生成式引擎优化)功能,分析了其与SEO的区别及重要性。作者通过实测验证了平台的两套GEO机制:内容生成时的自动优化勾选框和独立的GEO工具。测试发现,开启优化后内容更符合AI引用格式,但GEO工具的建议仍需更具体。文章肯定了平台将GEO与SEO并重的策略,并建议增加量化效果指标。作者强调GEO是AI时代内容可见性的关键,但效果验证需要时间观察。

2026-06-09 13:38:25 232

原创 本地向量数据库选型:vectra vs chroma vs hnswlib

本文比较了本地优先项目中三种向量数据库(vectra、chroma、hnswlib)的选型考量。vectra作为纯JS实现,以零依赖、易部署的优势胜出,特别适合Node.js/TypeScript项目和小规模数据(千到万级)。chroma功能丰富但依赖Python,hnswlib性能卓越但需处理原生绑定。最终选择应基于项目约束:部署复杂度、技术栈匹配和数据规模。ChatCrystal因本地优先、零原生依赖的需求选择了vectra,虽牺牲了扩展性但完美契合其个人知识库场景。文章建议开发者根据自身需求(语言生态

2026-06-09 09:00:00 312

原创 5 种 AI 对话数据格式全解析

本文分析了五种主流AI编程工具(Claude Code、Codex CLI、Cursor、Trae、Copilot)的对话数据格式及其解析难点。Claude Code采用简单的JSONL格式,但存在系统标签污染和嵌套工具调用问题;Codex CLI使用JSONL事件流,需要重建对话;Cursor和Trae采用SQLite数据库存储,前者通过键值对间接引用消息,后者以"任务制"组织对话;Copilot的JSONL快照格式规整但存在冗余存储。这些格式在存储结构、解析复杂度和元数据完整性方面差异显著,开发者需要统

2026-06-09 08:45:00 608

原创 版本管理:npm 发布 + Electron 打包 + CI/CD

本文介绍了如何为同时提供npm CLI和Electron桌面端的开源项目搭建自动化发布流水线。主要内容包括: 双版本号管理:遵循SemVer规范,独立管理npm和Electron版本号,支持灵活发布模式。 一键发版脚本:通过release.mjs实现版本号更新、提交、打标签和推送,支持全量、仅npm或仅Electron发布。 npm发布优化:利用Trusted Publisher和--provenance参数确保安全发布,精简files字段控制发布内容。 Electron打包配置:通过electron-bu

2026-06-08 09:56:58 412

原创 测试策略:单元测试 + 集成测试怎么写

本文介绍了如何为全栈TypeScript项目建立测试体系,通过测试金字塔模型(单元测试70%、集成测试适量、少量E2E测试)分层实施。以ChatCrystal项目为例,使用Node.js内置的node:test模块实现零依赖测试方案,涵盖纯函数单元测试(如正则清洗、文本分块、路径解析)、集成测试(sql.js内存数据库与Fastify路由测试)以及CI自动化。文章强调单元测试应快速验证函数输入输出,集成测试需关注模块协作,所有代码示例可在GitHub仓库查看。该方案适合追求轻量级、原生ESM支持的TypeS

2026-06-08 09:54:43 1419

原创 困扰我多年的“今天写啥“,被这个选题功能解决了大半

这篇文章测评了CSDN「AI数字营销平台」的「选题发现」和「热点洞察创作」功能。作者作为技术博主,认为选题是最痛苦的环节,而该功能通过实时热点推荐和结构化创作流程(选题→策略→大纲→内容)大幅提升了效率。亮点包括:AI领域热点精准且实时,四步流程保留创作者对大纲的掌控,默认优化SEO/GEO。但生成内容仍需人工润色,AI味较浓。建议扩展非AI领域热点、丰富策略选项、优化内容自然度。总体评价该功能能解决选题难题,值得一试。

2026-06-06 18:02:56 216

原创 用了一周 CSDN 的 AI 数字营销平台,我把它从头到尾摸了个遍

CSDN推出的「AI数字营销平台」并非简单的AI写作工具,而是覆盖了从选题到发布的全链路内容营销解决方案。体验一周后发现,其亮点在于实时热点追踪(尤其AI领域)、SEO/GEO自动优化及多平台一键分发功能,大幅节省内容创作的前后期精力。但存在生成内容稳定性待提升、批量额度有限等问题。该平台更适合需要持续产出的技术博主或内容运营团队,对低频创作者可能过重。后续将分模块深入测评其选题、批量生产等核心功能。

2026-06-06 15:51:44 216

原创 代码规范:ESLint + Prettier 配置实战

本文介绍了在TypeScript + React monorepo项目中落地Lint工具链的完整方案。重点内容包括: 采用ESLint Flat Config新格式配置客户端React/TS专项检查,整合TypeScript ESLint和React插件; 通过Biome(全仓库通用检查)和ESLint(客户端专项检查)双层架构实现职责分离; 处理Prettier与ESLint的规则冲突,建议使用eslint-config-prettier关闭冲突规则; 配置编辑器即时反馈和pre-commit hooks

2026-06-06 09:00:00 363

原创 TypeScript 项目配置:tsconfig、ESM、路径别名

本文针对TypeScript工程化配置需求,详细讲解了在monorepo环境下管理多包编译的最佳实践。以ChatCrystal项目为例,展示了一个包含shared、server、client和electron四个子项目的配置方案。重点内容包括: 通过tsconfig.base.json实现基础配置共享 shared包采用零构建方案直接导出TS源文件 server包使用tsx实时转译的开发模式 client包采用Vite+Project References的三文件配置方案 关键配置项详解:target、mo

2026-06-06 08:45:00 258

原创 AI Agent 时代的知识库应该长什么样

AI Agent时代知识库的六大核心能力 传统知识库依赖人工检索,而AI Agent需要具备自主记忆与知识调用能力。本文提出下一代知识库应具备的六大能力: 主动调用接口:通过MCP协议提供任务导向的语义搜索与结构化记忆工具; 自动写入与质量门控:LLM驱动的相关性、信息密度和重复性检测确保知识质量; 双向记忆循环:任务启动时自动关联历史知识,结束时沉淀新经验; 多源数据融合:整合不同AI工具产生的碎片化知识形成统一网络; 结构化知识图谱:建立笔记间的逻辑关系,支持深度推理; 离线可用性:本地化存储与计算保障

2026-06-05 09:00:00 208

原创 从 RAG 到知识图谱:个人知识管理的演进

本文梳理了信息检索技术的四代演进:从关键词搜索(直接匹配但忽视同义和上下文)、全文搜索(引入分词和权重仍缺乏语义理解)、RAG与向量搜索(通过向量距离衡量语义相似性但无法表达结构化关系),到知识图谱(构建实体间关系网络实现关联推理)。作者提出混合架构解决方案——ChatCrystal结合向量搜索的语义召回、知识图谱的关系连接和LLM的推理能力,形成三层检索流程,并实现从被动搜索到AI主动记忆的转变。该架构通过自动化知识沉淀和智能关联,正在缩短信息与知识间的距离。

2026-06-05 08:45:00 233

原创 本地优先 vs 云端:AI 工具的隐私之争

本文探讨了开发者在使用AI编程工具时面临的本地与云端方案选择问题。云端工具(如GitHub Copilot)提供开箱即用的强大模型能力和零运维成本,但存在数据隐私、合规风险及供应商锁定等问题。本地优先方案(如ChatCrystal)通过将数据保留在用户设备上,保障数据主权和低延迟,但受限于模型能力和硬件门槛。文章提出分层混合架构的折中方案:高频隐私敏感操作(如语义搜索)默认本地处理,复杂任务可选云端模型,同时保持核心数据本地存储。最终建议开发者根据自身场景(如行业合规要求、代码敏感度等)权衡选择,并始终明确

2026-06-04 08:30:00 158

原创 AI 编程工具的数据格式为什么不能统一

不同AI编程工具(Claude Code、Codex CLI、Cursor、Trae、GitHub Copilot)采用差异化的数据存储格式(JSONL、事件流、SQLite等),根源在于各自的技术起点和设计优先级。ChatCrystal通过适配器模式(SourceAdapter接口)统一处理这些差异,将格式转换逻辑隔离在系统边界,实现多工具对话数据的标准化导入。该方案包含detect()检测数据源、scan()扫描元数据、parse()解析内容三个关键步骤,最终输出结构一致的ParsedConver

2026-06-04 08:00:00 182

原创 MCP 协议到底解决了什么问题

MCP Server 通过});},return {},参数用 Zod schema 定义,MCP SDK 自动转换为 JSON Schema 发送给 Host。Host 的 LLM 看到工具描述和参数 schema,就能在对话中决定何时调用、传什么参数。MCP 是跨进程、跨应用的标准协议,而 Function Calling 是单次 API 调用内的工具定义。

2026-06-03 09:00:00 700

原创 Vercel AI SDK 多 Provider 统一抽象

本文介绍了面向AI应用开发者的多模型服务商统一解决方案,重点分析了Vercel AI SDK和ChatCrystal的Provider工厂模式。文章首先指出开发者切换不同LLM/Embedding服务商时面临的接口不统一问题,随后展示了ChatCrystal支持的6种Provider类型及其特性。核心解决方案是通过Provider工厂模式(Map<string, ProviderEntry>)实现模型创建的抽象化,并结合AI SDK的generateText、generateObject和embed等统一A

2026-06-03 08:45:00 229

原创 vectra 本地向量搜索的实现原理

Vectra是一个轻量级本地向量数据库,采用纯TypeScript实现,无需外部依赖。它通过单文件JSON存储所有向量和元数据,支持内存内线性扫描和余弦相似度计算,提供事务式写入保障数据一致性。Vectra适合小规模应用场景,具有部署简单、透明可调试的特点,但存在全量加载、无近似检索等局限。在ChatCrystal中,Vectra与SQLite协同完成从向量搜索到结果展示的完整流程,满足个人知识库管理需求,但在大规模场景下可能需要迁移到专业解决方案。

2026-06-02 17:56:39 312

原创 sql.js WASM 深度解析

本文介绍了如何在Node.js/Electron应用中使用纯WASM版本的SQLite(sql.js)替代原生编译方案。主要优点包括免编译安装、跨平台兼容性,虽然性能略低但足够应对单用户本地数据库场景。文章详细解析了sql.js的核心使用方案:内存模型(全量加载+手动持久化)、自动保存机制(定时30秒保存)、查询结果标准化转换、嵌套事务实现(通过SAVEPOINT),以及无ORM的Schema迁移策略。特别说明了处理外键约束重置的陷阱和开发/生产环境下的WASM文件定位方案,为开发者提供了完整的WASM S

2026-06-02 17:53:55 267

原创 React Query + REST API 最佳实践

本文介绍了如何利用React Query构建React应用的REST API数据层。主要内容包括: React Query解决了传统useState+useEffect方案存在的缓存缺失、状态同步困难和竞态风险等问题 详细说明了QueryClient的配置参数(staleTime、retry等)及其最佳实践 设计了统一的API请求层,包括错误处理和开发环境代理配置 通过自定义Hook封装查询逻辑,实现代码复用和集中管理 介绍了queryKey的设计原则和条件查询的使用 展示了useMutation的写操作实

2026-06-01 10:41:39 1183

原创 Fastify 加 Electron:把 Web 服务嵌进桌面应用

本文介绍了将Web服务嵌入Electron桌面应用的完整方案,包括以下关键技术点: 通过Function()构造器绕过CJS限制,实现主进程动态导入ESM模块 端口检测机制优先使用3721端口,失败时自动降级到随机端口 生产环境注入严格CSP安全头防止XSS攻击,开发环境保持宽松 生命周期管理实现: 分步骤启动流程(数据目录、环境变量、端口检测等) 窗口关闭隐藏到系统托盘 优雅关闭流程(服务器关闭→数据库保存→资源释放) 窗口状态持久化存储,并自动适配多显示器环境 该方案实现了Web服务在独立运行和嵌入El

2026-06-01 09:00:00 168

原创 如何解析 5 种完全不同格式的 AI 对话

本文针对开发者解析5种AI对话格式的策略:1) Claude Code采用JSONL流式日志,需过滤噪音类型和清理XML标签;2) Codex CLI的事件流结构需处理多源数据去重;3) Cursor跨SQLite数据库查询,需关联workspace与global数据;4) Trae采用单key存储,需解析嵌套的agentTaskContent;5) Copilot的JSONL快照仅需读取首行完整会话。每种格式的数据组织方式和解析难点各异,开发者需针对性地设计处理逻辑。

2026-05-31 09:30:00 223

原创 SourceAdapter 插件架构详解

本文介绍了ChatCrystal插件式数据源架构的设计细节,核心是通过SourceAdapter接口统一不同AI编程工具的对话数据格式处理。该接口定义三个方法契约:detect()用于轻量级探测数据源,scan()扫描对话文件元数据,parse()解析为统一格式。采用注册表模式管理适配器,通过Map实现"导入即注册"机制。导入服务通过编排适配器完成去重、解析和原子化入库,最终输出标准化的对话数据结构。文章还对比了五种适配器的实现差异,并说明扩展新数据源只需实现接口并注册即可。该设计有效解决了多源数据格式差异

2026-05-31 09:00:00 231

原创 语义搜索 + 知识图谱:发现代码重构的隐藏依赖

本文介绍如何利用ChatCrystal的语义搜索和知识图谱功能发现代码重构中的隐藏依赖关系。通过语义搜索可找到直接相关的技术笔记,再通过知识图谱扩展搜索范围,沿8种预定义关系类型(如DEPENDS_ON、LEADS_TO等)发现间接关联的模块。文章提供了具体操作步骤,包括直接搜索、关系扩展、图谱可视化等方法,并解释了不同关系类型在重构场景中的含义。这种组合方法能有效识别传统代码搜索工具无法发现的逻辑依赖,帮助开发者在重构前全面评估影响范围,避免遗漏关键关联模块。

2026-05-30 09:30:00 179

原创 多格式文件解析:JSONL / SQLite / Event Stream

本文介绍了处理多种AI工具对话记录的统一解析方案。针对JSONL、SQLite和事件流三种存储格式,提出SourceAdapter统一接口,分离检测、扫描和解析三层逻辑。JSONL采用流式读取优化内存,过滤Claude Code的流式增量噪音;SQLite通过WASM内存副本绕过文件锁;事件流则需重建完整对话。设计上强调格式无关性,通过适配器模式统一不同工具的解析差异,避免代码重复。

2026-05-30 09:00:00 221

原创 任务队列设计:p-queue 限速 + 重试策略

本文介绍了如何使用任务队列控制并发和失败重试的技术方案,主要基于p-queue库实现。文章首先分析了任务队列的必要性,包括限制并发、控制速率、失败重试和状态跟踪等需求。然后详细讲解了p-queue的限速配置参数及其效果,以及针对429错误实现的指数退避重试策略。同时介绍了任务状态机TaskTracker的设计,包括任务生命周期管理和自动重置机制。最后阐述了队列取消功能和通过SSE实现的实时状态推送方案。这套方案适用于需要控制API调用频率和实现可靠任务处理的场景。

2026-05-29 08:30:00 463

原创 插件式架构设计:SourceAdapter 接口抽象

本文介绍了一种插件式数据源适配架构,通过定义统一的SourceAdapter接口,实现对多种AI编程工具数据源的灵活支持。该架构采用detect→scan→parse三层漏斗设计:detect检测数据源是否存在,scan收集对话元信息,parse解析具体内容。文章以Claude Code(JSONL流式解析)和Cursor(SQLite查询)两种差异显著的数据源为例,展示了不同适配器的实现细节,并通过注册表机制统一管理各适配器。这种设计避免了代码膨胀,使系统能优雅地扩展新数据源,同时保持核心流程的简洁性。开

2026-05-29 08:00:00 403

原创 MCP 协议从零实现:手写最简 MCP Server

本文介绍了如何基于MCP协议开发一个TypeScript实现的MCP Server,使AI助手能够调用自定义工具。主要内容包括:MCP协议的三个核心角色(Server、Client、Transport);使用@modelcontextprotocol/sdk创建Server实例;通过zod定义工具参数和校验规则;注册Tool的四个要素(名称、描述、参数定义和处理函数);以及通过StdioServerTransport实现标准输入输出通信。文章还展示了复杂参数的定义方法和实际项目中的配置示例,帮助开发者快速掌

2026-05-28 08:30:00 501

原创 Prompt 工程:让 LLM 输出结构化 JSON

本文介绍了两种让LLM输出结构化JSON的方案:1)Prompt约束+后处理,兼容性强但需额外容错逻辑;2)使用AI SDK的generateObject函数,结合Zod Schema定义输出格式,自动验证并支持重试。重点阐述了Zod Schema的设计技巧(字段描述、枚举约束等)和System Prompt的协同设计方法(角色定义、字段说明、注意事项)。通过ChatCrystal的实际案例,展示了如何利用结构化输出提升程序可处理性,并建议采用"SDK验证+业务验证"的双重保障机制确保数据质量。该方案特别适

2026-05-28 08:00:00 423

原创 vectra 实战:纯 JS 本地向量搜索引擎

Vectra 是一个纯 JavaScript 实现的本地向量搜索引擎,专为 Node.js 项目设计,无需依赖 Python、Docker 或云服务 API。它支持向量索引的创建、插入、查询和删除,采用 HNSW 算法实现高效的近似最近邻搜索。Vectra 的优势在于零配置、文件存储和跨平台兼容性,适合本地工具、CLI 应用和 Electron 桌面软件。文章详细介绍了 Vectra 的安装、初始化、向量插入(支持元数据存储)、相似度查询(支持候选集升级优化)以及按元数据过滤等核心功能,并分享了

2026-05-27 08:30:00 1559

原创 生产环境部署:Fastify 静态服务 + SPA fallback

本文介绍了生产环境中前后端合并部署的完整方案,重点分析了ChatCrystal项目基于Fastify的实现。开发环境采用前后端分离架构,通过Vite代理API请求;生产环境则通过Fastify统一托管静态文件和API服务。关键技术点包括:使用@fastify/static插件托管静态文件并配置SPA fallback机制,区分API和页面的404处理逻辑,开发与生产环境的CORS配置差异,以及支持多路径探测的灵活部署方案。文章还详细说明了构建流程、端口配置和优雅关闭机制,为开发者提供了前后端合并部署的完整实

2026-05-27 08:00:00 411

原创 从零实现 Embedding 服务:文本转向量

本文介绍了Embedding服务的核心原理与实现流程。Embedding是将文本转换为机器可处理的数字向量(浮点数组)的过程,其特点是语义相近的文本向量距离相近。文章详细解析了四个关键步骤:1)构建结构化文本(提取标题、摘要等核心信息);2)按500字符分块处理以保持语义完整性;3)通过统一API接口调用不同提供商的Embedding模型;4)将生成的向量存储至vectra向量数据库用于后续的语义搜索。重点阐述了余弦相似度的数学原理及其在语义匹配中的应用,并提供了ChatCrystal服务中的具体代码实现示

2026-05-26 08:30:00 367

原创 系统托盘 + 窗口状态持久化:Electron 细节

本文介绍了优化Electron应用体验的5个关键技巧:1)通过系统托盘实现后台待命,包括图标缩放、右键菜单和双击恢复;2)区分窗口关闭与程序退出,使用标志位控制行为;3)持久化窗口状态,保存位置/尺寸/最大化状态;4)特殊处理最大化状态,追踪正常尺寸;5)多显示器适配,避免窗口"消失"。这些方法能显著提升桌面应用的专业性和用户体验。

2026-05-26 08:00:00 367

原创 Vercel AI SDK 入门:一行代码切换 LLM Provider

Vercel AI SDK 提供统一接口对接多个 LLM Provider(如 Ollama、OpenAI、Anthropic 等),通过 generateText、generateObject 和 embed 核心 API 简化开发。generateObject 结合 Zod Schema 实现结构化输出,自动校验和重试。采用工厂模式管理 Provider,支持灵活切换而不改业务代码。ChatCrystal 项目实践展示了如何通过 Provider 适配器兼容 6 种服务

2026-05-25 15:36:35 991

原创 Electron 入门:Web 应用打包成桌面软件

本文介绍了如何将Web应用打包成桌面软件,主要面向前端开发者。Electron通过整合Chromium和Node.js,允许开发者复用现有HTML/CSS/JS代码。文章重点讲解了Electron的核心概念:主进程负责窗口管理和系统交互,渲染进程负责UI展示,两者通过IPC通信。详细说明了BrowserWindow的安全配置(contextIsolation、nodeIntegration、sandbox)和CSP策略,以及如何嵌入Fastify服务器处理后端逻辑。最后介绍了窗口状态持久化的实现方法,确保用

2026-05-25 15:33:27 508

WeBlog校园论坛系统 Springboot + Vue3

内容概要:WeBlog 是一个基于 Spring Boot + MyBatis + Redis + Vue.js 开发的完整博客系统,涵盖现代 Java Web 开发的完整技术栈。通过学习这个项目,您将掌握 IOC 容器管理与依赖注入、AOP 面向切面编程、过滤器与拦截器应用、RESTful API 设计、Redis 缓存与 Session 管理、JWT 无状态认证、阿里云 OSS 文件存储集成以及 MyBatis 持久层框架的实际运用,帮助您将 Spring 知识点融会贯通,形成完整的知识体系。 适合人群:本项目适合具备 Java 面向对象编程基础、熟悉 Spring 框架基本概念和 Maven 构建工具的学生和开发者。此外还需了解 HTTP 协议和前后端数据交互原理,以及 MySQL 基本操作,最好能阅读 Vue.js 代码。 能学到什么:通过学习这个项目,首先能够深入理解 Spring Boot 核心原理,直观观察 Spring 如何管理 Bean 生命周期、如何解决依赖关系,深刻理解 IOC 容器和依赖注入的工作机制。在 Web 请求处理方面,您将掌握 Controller 层规范设计和 RESTful API 设计规范。认证与授权是核心亮点,通过 JwtUtil 掌握 Token 生成验证,通过 Filter 清晰了解权限校验实现。MyBatis 实际应用让您掌握动态 SQL 编写技巧,Redis 实战让您理解分布式会话管理和缓存协作模式。Vue 3 前端学习则让您理解前后端分离开发模式。 阅读建议:建议先启动项目正常运行,然后从 Controller 层入手沿请求流向逐层向下追踪,把握数据完整流转过程。重点学习认证流程实现,理解 JWT 无状态认证和 Filter 配合使用的核心思路。学习过程中断点调试是最有效的方法,跟踪数据流转全过程观察变量变化。

2026-03-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除