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平台账号准备点击进入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.mzph.cn/news/895585.shtml

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

相关文章

DeepSeek教unity------MessagePack-05

动态反序列化 当调用 MessagePackSerializer.Deserialize<object> 或 MessagePackSerializer.Deserialize<dynamic> 时&#xff0c;二进制数据中存在的任何值都将被转换为基本值&#xff0c;即 bool、char、sbyte、byte、short、int、long、ushort、uint、ulong、…

C++入门之《拷贝构造函数》详解

拷贝构造函数是构造函数的一个重载 拷贝构造函数是特殊的构造函数&#xff0c;用于基于已存在对象创建新对象。比如定义一个 Person 类&#xff1a; class Person { private:std::string name;int age; public:Person(const std::string& n, int a) : name(n), age(a…

Ollama命令使用指南

Ollama 命令使用指南 Ollama 命令使用指南1. Ollama 命令概览2. Ollama 命令详解2.1 启动 Ollama2.2 创建模型2.3 查看模型信息2.4 运行模型2.5 停止运行的模型2.6 从注册表拉取模型2.7 推送模型到注册表2.8 列出本地模型2.9 查看正在运行的模型2.10 复制模型2.11 删除模型 3. …

为什么配置Redis时候要序列化配置呢

序列化和反序列化&#xff1f;&#xff1a; 序列化&#xff1a;将对象转换为二进制数据&#xff0c;以便存储到Redis中。 反序列化&#xff1a;将Redis中的二进制数据转换回对象&#xff0c;以便在应用程序中使用。 1. 默认序列化器的问题 如果不配置序列化器&#xff0c;Re…

【问】强学如何支持 迁移学习呢?

案例&#xff1a;从CartPole-v1迁移到MountainCar-v0 在源环境&#xff08;CartPole-v1&#xff09;中训练模型 首先&#xff0c;我们使用DQN算法在CartPole-v1环境中训练一个强化学习模型。以下是代码示例&#xff1a; import gym import torch import torch.nn as nn impor…

深入浅出Java反射:掌握动态编程的艺术

小程一言反射何为反射反射核心类反射的基本使用获取Class对象创建对象调用方法访问字段 示例程序应用场景优缺点分析优点缺点 注意 再深入一些反射与泛型反射与注解反射与动态代理反射与类加载器 结语 小程一言 本专栏是对Java知识点的总结。在学习Java的过程中&#xff0c;学习…

【算法与数据结构】并查集详解+题目

目录 一&#xff0c;什么是并查集 二&#xff0c;并查集的结构 三&#xff0c;并查集的代码实现 1&#xff0c;并查集的大致结构和初始化 2&#xff0c;find操作 3&#xff0c;Union操作 4&#xff0c;优化 小结&#xff1a; 四&#xff0c;并查集的应用场景 省份…

C语言简单练习题

文章目录 练习题一、计算n的阶乘bool类型 二、计算1!2!3!...10!三、计算数组arr中的元素个数二分法查找 四、动态打印字符Sleep()ms延时函数system("cls")清屏函数 五、模拟用户登录strcmp()函数 六、猜数字小游戏产生一个随机数randsrandRAND_MAX时间戳time() 示例 …

ShenNiusModularity项目源码学习(8:数据库操作)

ShenNiusModularity项目使用SqlSugar操作数据库。在ShenNius.Repository项目中定义了ServiceCollectionExtensions.AddSqlsugarSetup函数注册SqlSugar服务&#xff0c;并在ShenNius.Admin.API项目的ShenniusAdminApiModule.OnConfigureServices函数中调用&#xff0c;SqlSugar所…

MATLAB图像处理:图像特征概念及提取方法HOG、SIFT

图像特征是计算机视觉中用于描述图像内容的关键信息&#xff0c;其提取质量直接影响后续的目标检测、分类和匹配等任务性能。本文将系统解析 全局与局部特征的核心概念&#xff0c;深入讲解 HOG&#xff08;方向梯度直方图&#xff09;与SIFT&#xff08;尺度不变特征变换&…

java枚举类型的查找

AllArgsConstructor Getter public enum FileFilterRangeEnum {FILE_NAME("文件名称","fileName"),FILE_CONTENT("文件内容","fileContent");private final String text;private final String value;// 根据传入的字符串值查找对应的枚…

小白win10安装并配置yt-dlp

需要yt-dlp和ffmpeg 注意存放路径最好都是全英文 win10安装并配置yt-dlp 一、下载1.下载yt-dlp2. fffmpeg下载 二、配置环境三、cmd操作四、yt-dlp下视频操作 一、下载 1.下载yt-dlp yt-dlp地址 找到win的压缩包点下载&#xff0c;并解压 2. fffmpeg下载 ffmpeg官方下载 …

【技术解析】MultiPatchFormer:多尺度时间序列预测的全新突破

今天给我大家带来一篇最新的时间序列预测论文——MultiPatchFormer。这篇论文提出了一种基于Transformer的创新模型&#xff0c;旨在解决时间序列预测中的关键挑战&#xff0c;特别是在处理多尺度时间依赖性和复杂通道间相关性时的难题。MultiPatchFormer通过引入一维卷积技术&…

145,【5】 buuctf web [GWCTF 2019]mypassword

进入靶场 修改了url后才到了注册页面 注测后再登录 查看源码 都点进去看看 有个反馈页面 再查看源码 又有收获 // 检查$feedback是否为数组 if (is_array($feedback)) {// 如果是数组&#xff0c;弹出提示框提示反馈不合法echo "<script>alert(反馈不合法);<…

CTF-WEB: 利用iframe标签利用xss,waf过滤后再转换漏洞-- N1ctf Junior display

核心逻辑 // 获取 URL 查询参数的值 function getQueryParam(param) { // 使用 URLSearchParams 从 URL 查询字符串中提取参数 const urlParams new URLSearchParams(window.location.search); // 返回查询参数的值 return urlParams.get(param); } // 使用 DOMPuri…

晶闸管主要参数分析与损耗计算

1. 主要参数 断态正向可重复峰值电压 :是晶闸管在不损坏的情况下能够承受的正向最大阻断电压。断态正向不可重复峰值电压 :是晶闸管只有一次可以超过的正向最大阻断电压,一旦晶闸管超过此值就会损坏,一般情况下 反向可重复峰值电压 :是指晶闸管在不损坏的情况下能够承受的…

el-select 设置宽度 没效果

想实现下面的效果&#xff0c;一行两个&#xff0c;充满el-col12 然后设置了 width100%,当时一直没有效果 解决原因&#xff1a; el-form 添加了 inline 所以删除inline属性 即可

Python创建FastApi项目模板

1. 项目结构规范 myproject/ ├── app/ │ ├── core/ # 核心配置 │ │ ├── config.py # 环境配置 │ │ └── security.py # 安全配置 │ ├── routers/ # 路由模块 │ │ └── users.py # 用户路由 │ ├…

面试完整回答:SQL 分页查询中 limit 500000,10和 limit 10 速度一样快吗?

首先&#xff1a;在 SQL 分页查询中&#xff0c;LIMIT 500000, 10 和 LIMIT 10 的速度不会一样快&#xff0c;以下是原因和优化建议&#xff1a; 性能差异的原因 LIMIT 10&#xff1a; 只需要扫描前 10 条记录&#xff0c;然后返回结果。 性能非常高&#xff0c;因为数据库只…

一款利器提升 StarRocks 表结构设计效率

CloudDM 个人版是一款数据库数据管理客户端工具&#xff0c;支持 StarRocks 可视化建表&#xff0c;创建表时可选择分桶、配置数据模型。目前版本持续更新&#xff0c;在修改 StarRocks 表结构方面进一步优化&#xff0c;大幅提升 StarRocks 表结构设计效率。当前 CloudDM 个人…