DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件

1 DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件

1.1 背景

  AI能力再强,如果不能在企业的自有业务上产生助益,那基本也是一无是处。将企业的自有业务上传到线上训练,那是脑子进水的做法,竞争对手不仅捡了大便宜,自己的企业可能没享受到AI红利就被干死了!
  这也是为什么DeepSeek的本地模型及硬件设备会大热,但对中小企业,特别是小微企业来说,硬件设备从几十万~几百万的成本,是无法逾越的障碍!那中小微企业就要在AI的大潮中被时代淘汰吗?
  肯定不是,也肯定不能!

自有业务场景
本文将以一个小众文本编辑器EverEdit为切入点,训练AI认识EverEdit的语法着色规则,并生成一份新的编程语言(zig)的语法着色文件。

🕮说明
  因为EverEdit够小众,所以现成的各种线上线下AI模型都不认识,需要自己进行训练,这很符合中小微企业的自有业务特点。

1.2 准备步骤

1.2.1 AI平台账号准备硅基流动注册

在这里插入图片描述

1.2.2 下载CherryStudio

注:CherryStudio工具的知识库支持训练本地素材

1.2.3 在CherryStudio中配置密钥

  配置密钥是为了能够让CherryStudio使用AI供应商(这里是硅基流动)的模型

  1. 步骤1:在siliconflow网站登录后,拷贝自己的密钥,如下图所示:
    在这里插入图片描述

  2. 步骤2:在CherryStudio中配置密钥,如下图所示:
    在这里插入图片描述

1.3 训练本地知识库(EverEdit的语法着色规则)

  1. CherryStudio中新建本地知识库,如下图所示:
    在这里插入图片描述

注:如果已经创建过EverEdit本地知识库,就不用重复创建了。

  1. EverEdit自带的语法文件丢给CherryStudio消化,如下图所示:
      知识库有两部分,一是EverEdit内置的语法着色文件,二是EverEdit的语法着色规则介绍文件(帮助文档)。
      消化完成后,会出现绿色的“√”符号
    在这里插入图片描述

1.3.1 在CherryStudio中使用本地知识库(EverEdit)和DeepSeek在线模型生成zig语法着色文件

1.3.1.1 打开知识库开关,并选择本地知识库,如下图所示:
  1. CherryStudio的导航栏选择“助手”按钮,切换到助手模式
    在这里插入图片描述

  2. 在界面的底部聊天窗口中选择本地知识库
    在这里插入图片描述

1.3.1.2 提问让AI生成zig语法文件,并不断进行修正
  1. 让AI生成一份EverEdit编辑器的zig语法着色文件
    在这里插入图片描述

注:以上是和AI的对话记录,用户内容部分即本人在CherryStudio聊天窗口中输入的内容, 下同。

  1. 顺手让AI生成1份Zig源代码用于测试

    在这里插入图片描述
    AI生成的源码内容如下:

const std = @import("std"); // 导入标准库// 定义一个结构体
const Point = struct {x: i32,y: i32,// 结构体方法pub fn move(self: *Point, dx: i32, dy: i32) void {self.x += dx;self.y += dy;}
};// 定义一个枚举
const Direction = enum {North,South,East,West,// 枚举方法pub fn opposite(self: Direction) Direction {return switch (self) {.North => .South,.South => .North,.East => .West,.West => .East,};}
};// 定义一个联合体
const Value = union(enum) {Int: i32,Float: f32,Bool: bool,// 联合体方法pub fn print(self: Value) void {switch (self) {.Int => |i| std.debug.print("Int: {}\n", .{i}),.Float => |f| std.debug.print("Float: {}\n", .{f}),.Bool => |b| std.debug.print("Bool: {}\n", .{b}),}}
};// 主函数
pub fn main() void {// 变量声明const a: i32 = 10;var b: i32 = 20;b += a;// 控制流if (b > 15) {std.debug.print("b is greater than 15\n", .{});} else {std.debug.print("b is less than or equal to 15\n", .{});}// 循环var i: u8 = 0;while (i < 5) : (i += 1) {std.debug.print("i = {}\n", .{i});}// 结构体使用var p = Point{ .x = 0, .y = 0 };p.move(5, 10);std.debug.print("Point: ({}, {})\n", .{ p.x, p.y });// 枚举使用const dir = Direction.North;const oppositeDir = dir.opposite();std.debug.print("Opposite of North is {}\n", .{oppositeDir});// 联合体使用const val = Value{ .Int = 42 };val.print();
}
  1. 将AI生成的zig.mac语法着色文件保存到EverEdit安装目录下的syntax目录

  2. 参考配置EverEdit语法着色对zig语法进行配置

  3. 告诉AI哪里出了错误,如下所示:
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    注:后面还有一些错误调试,就不一一列举了。

  4. 最终的着色结果
    在这里插入图片描述

注:一般的编辑器都没有部署LSP,因此对库函数中的关键字是不识别的,如:std.debug

1.4 附录:AI生成的EverEdit规范的zig语言语法着色文件zig.mac

'******************************************************************************
' @file    zig.mac
' @brief   Zig 语言语法着色文件
' @author  tyysoft & DeepSeek-V3 & CherryStudio
' @date    2025-2-13
' @version 1.0
' @note    本文件定义了 Zig 语言的语法着色规则,包括注释、字符串、关键字、数据类型等的着色
'          通过包含 const.mac 文件获取颜色常量,并使用 Doxygen 风格注释进行说明。
'******************************************************************************' 包含颜色定义文件
Include ".\const.mac"' 创建 Zig 语法着色对象
Dim zig
Set zig = Parser.CreateParser()' 设置最大解析字符数
zig.SetParseMax(1000)' 定义注释
Dim regionLineComment, regionBlockComment
Set regionLineComment = zig.CreateRegion(COLOR_COMMENT1, "+//+", "$", True)
Set regionBlockComment = zig.CreateRegion(COLOR_COMMENT1, "+/*+", "+*/+", True)' 定义字符串
Dim regionString
Set regionString = zig.CreateStringRegion(COLOR_STRING1, """", """", False)' 定义关键字
Dim itemKeyword
Set itemKeyword = zig.CreateWord(COLOR_WORD1, "const var fn if else while for switch case break continue return struct enum union error defer try catch unreachable async await suspend resume using comptime noalias volatile align linksection export extern packed anytype undefined null true false and or xor not pub", True)' 定义数据类型
Dim itemDataType
Set itemDataType = zig.CreateWord(COLOR_WORD2, "i8 i16 i32 i64 u8 u16 u32 u64 f16 f32 f64 bool void anyerror anytype anyframe", True)' 定义函数
Dim itemFunction
Set itemFunction = zig.CreateItem(COLOR_FUNCTION, "\b[a-zA-Z_]\w*\s*\(", True)' 定义数字
Dim itemNumber
Set itemNumber = zig.CreateItem(COLOR_NUMBER, "\b\d+(\.\d+)?\b", False)' 定义操作符
Dim itemOperator
Set itemOperator = zig.CreateItem(COLOR_OPERATOR, "[+\-*/%&|^<>=!]+", False)' 将定义的元素添加到语法着色对象
zig.AddRegion regionLineComment
zig.AddRegion regionBlockComment
zig.AddRegion regionString
zig.AddItem itemKeyword
zig.AddItem itemDataType
zig.AddItem itemFunction
zig.AddItem itemNumber
zig.AddItem itemOperator' 设置代码折叠规则
zig.FoldText "{", False, "}", False' 设置括号匹配
zig.SetPairs "(){}[]"' 定义注释快捷键
zig.CommentLine "//"
zig.CommentBlock "/*", "*/"' 添加自定义高亮(示例:高亮注释中的TODO)
Dim itemTodo
Set itemTodo = zig.CreateItem(COLOR_HIGHLIGHT1, "\bTODO\b", True)
regionLineComment.AddItem itemTodo
regionBlockComment.AddItem itemTodo

作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来源自豆包AI,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17352.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java常用设计模式面试题总结(内容详细,简单易懂)

设计模式的分类 创建型模式&#xff1a;通过隐藏对象创建的细节&#xff0c;避免直接使用 new 关键字实例化对象&#xff0c;从而使程序在判断和创建对象时更具灵活性。常见的模式包括&#xff1a; 工厂模式抽象工厂模式单例模式建造者模式原型模式 结构型模式&#xff1a;通…

使用HX搭建UNI-APP云开发项目(适合新手小白与想学云开发的宝子)

什么是uni-app云开发 uni-app云开发是uni-app提供的一套后端服务,它可以帮助开发者快速搭建起一个完整的后端服务,包括数据库、云函数、存储等。开发者只需要关注前端页面的开发,后端服务由uni-app云开发提供。 uni-app云开发的优势: 快速搭建后端服务:uni-app云开发提供了…

零基础学CocosCreator·第九季-网络游戏同步策略与ESC架构

课程里的版本好像是1.9&#xff0c;目前使用版本为3.8.3 开始~ 目录 状态同步帧同步帧同步客户端帧同步服务端ECS框架概念ECS的解释ECS的特点EntityComponentSystemWorld ECS实现逻辑帧&渲染帧 ECS框架使用帧同步&ECS 状态同步 一般游戏的同步策略有两种&#xff1a;…

最新版Edge浏览器集成ActiveX控件之金山WpsDocFrame控件

背景 WpsDocFrame控件‌是由金山公司开发的ActiveX控件&#xff0c;主要用于OA系统中&#xff0c;支持在浏览器中嵌入WPS文档的查看和编辑功能。 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有…

Win10系统IP地址修改_出现了一个意外的情况不能完成所有你在设置中所要求的更改---Windows工作笔记001

今天在修改win10系统中的ip地址的时候报错了 来看看如何解决吧,挺简单,简单记录一下 这个时候就需要使用cmd命令来修改 一定要使用,管理员权限,运行cmd才可以 然后首先: 输入 netsh 然后输入 ip 然后输入: set address "以太网" 172.19.126.199 255.255.255.0…

算法 ST表

目录 前言 一&#xff0c;暴力法 二&#xff0c;打表法 三&#xff0c;ST表 四&#xff0c;ST表的代码实现 总结 前言 ST表的主要作用是在一个区间里面寻找最大值&#xff0c;具有快速查找的功能&#xff0c;此表有些难&#xff0c;读者可以借助我的文章和网上的课程结…

node.js+兰空图床实现随机图

之前博客一直用的公共的随机图API&#xff0c;虽然图片的质量都挺不错的&#xff0c;但是稳定性都比较一般&#xff0c;遂打算使用之前部署的兰空图床&#xff0c;自己弄一个随机图 本文章服务器操作基于雨云——新一代云服务提供商的云服务器进行操作&#xff0c;有兴趣的话可…

CNN|ResNet-50

导入数据 import matplotlib.pyplot as plt # 支持中文 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号import os,PIL,pathlib import numpy as npfrom tensorflow import keras from tensor…

基于微型5G网关的石化厂区巡检机器人应用

石化工业属于高风险产业&#xff0c;由于涉及易燃易爆、有毒有害工业原料&#xff0c;为了保障企业的安全生产与持续运营&#xff0c;因此相比其它行业需要进行更高频次、更全面细致的安全巡检和监测。由于传统的人工巡检监测存在诸多不便&#xff0c;例如工作强度大、现场环境…

Docker+Jenkins自动化部署SpringBoot项目【详解git,jdk,maven,ssh配置等各种配置,附有示例+代码】

文章目录 DockerJenkins部署SpringBoot项目一.准备工作1.1安装jdk111.2安装Maven 二.Docker安装Jenkins2.1安装Docker2.2 安装Jenkins2.3进入jenkins 三.Jenkins设置3.1安装jenkins插件3.2全局工具配置全局配置jdk全局配置maven全局配置git 3.3 系统配置安装 Publish Over SSH …

知识图谱数据库 Neo4j in Docker笔记

下载 docker pull neo4j:community官方说明 https://neo4j.com/docs/operations-manual/2025.01/docker/introduction/ 启动 docker run \--restart always \--publish7474:7474 --publish7687:7687 \--env NEO4J_AUTHneo4j/your_password \--volumeD:\files\knowledgegrap…

前缀和算法篇:解决子数组累加和问题

1.前缀和原理 那么在介绍前缀和的原理之前&#xff0c;那么我们先来说下前缀和最基本的一个应用场景&#xff0c;那么就是如我们标题所说的子数组累加和问题&#xff0c;那么假设我们现在有一个区间为[L,R]的数组&#xff0c;那么我们要求的其中子数组比如[L,i]或者[i,m] (L&l…

Notepad++ 中删除所有以 “pdf“ 结尾的行

Notepad 中删除所有以 “pdf” 结尾的行 操作步骤 1.打开文件&#xff1a; 在 Notepad 中打开你需要处理的文本文件。 2.打开查找和替换对话框&#xff1a; 按快捷键 Ctrl F&#xff0c;打开“查找和替换”对话框。 3.启用正则表达式模式&#xff1a; 在对话框的底部&#xf…

知识管理成功:关键指标和策略,研究信息的投资回报率

信息过载会影响生产力。没有人工智能的帮助&#xff0c;信息过载会影响生产力。大量的可用信息&#xff0c;知识工作者不仅仅是超负荷工作&#xff1b;他们感到不知所措&#xff0c;他们倾向于浪费时间&#xff08;和脑细胞&#xff09;来应付他们被大量的数据抛向他们&#xf…

Golang 进阶训练营

一、Golang 的 slice、map、channel 1.1 slice vs array a : make([]int, 100) //切片 b : [100]int{} //数组array需指明长度&#xff0c;长度为常量且不可改变 array长度为其类型中的组成部分&#xff08;给参数为长度100的数组的方法传长度为101的会报错&#xff09; array在…

Oracle临时表空间(基础操作)

临时表空间 临时表空间&#xff1a;用来存放用户的临时数据&#xff0c;临时数据在需要时被覆盖&#xff0c;关闭数据库后自动删除&#xff0c;其中不能存放永久性数据。 用户进程和服务器进程是一对一的叫做专用连接。 任何一个用户连到oracle数据库&#xff0c;oracle都会…

AI时代的前端开发:对抗压力的利器

在飞速发展的AI时代&#xff0c;前端开发工程师们面临着前所未有的挑战。项目周期不断缩短&#xff0c;需求变化日新月异&#xff0c;交付压力更是与日俱增&#xff0c;这使得开发人员承受着巨大的压力。如何提升对抗压能力&#xff0c;成为摆在每一位前端工程师面前的重要课题…

如何使用DHTMLX Scheduler的拖放功能,在 JS 日程安排日历中创建一组相同的事件

DHTMLX Scheduler 是一个全面的调度解决方案&#xff0c;涵盖了与规划事件相关的广泛需求。假设您在我们的 Scheduler 文档中找不到任何功能&#xff0c;并且希望在我们的 Scheduler 文档中看到您的项目。在这种情况下&#xff0c;很可能可以使用自定义解决方案来实现此类功能。…

计算机网络-八股-学习摘要

一&#xff1a;HTTP的基本概念 全称&#xff1a; 超文本传输协议 从三个方面介绍HTTP协议 1&#xff0c;超文本&#xff1a;我们先来理解「文本」&#xff0c;在互联网早期的时候只是简单的字符文字&#xff0c;但现在「文本」的涵义已经可以扩展为图片、视频、压缩包等&am…

【pytorch】weight_norm和spectral_norm

apply_parametrization_norm 和spectral_norm是 PyTorch 中用于对模型参数进行规范化的方法&#xff0c;但它们在实现和使用上有显著的区别。以下是它们的主要区别和对比&#xff1a; 实现方式 weight_norm&#xff1a; weight_norm 是一种参数重参数化技术&#xff0c;将权…