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

news/2025/2/13 17:58:04/文章来源:https://www.cnblogs.com/tyysoft/p/18714123

 

 

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

注:目前常用的AI客户端只有CherryStudio工具的知识库支持训练本地素材

1.2.3 在CherryStudio中配置密钥

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

  1. 步骤1:在siliconflow网站登录后,拷贝自己的密钥,如下图所示:

  2. 步骤2:在CherryStudio中配置密钥,如下图所示:

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

  1. CherryStudio中新建本地知识库,如下图所示:

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

  2. 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聊天窗口中输入的内容, 下同。

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

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.hqwc.cn/news/883314.html

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

相关文章

102400118 林嘉祚 寒假集训第五专题

AC截图:1、自然数的拆分问题 数据范围很小,直接dfs暴力枚举就行。 #include <iostream> using namespace std;int n; int arr[10];void dfs(int x, int sum , int start) {if (sum > n){return;}if (sum == n && x != 2){for (int i = 1 ; i <= x-1 ; i+…

在线网校教育软件开发助力互联网时代教育发展

互联网时代,在线教育已成为推动教育事业发展的重要力量。开发优质的在线网校教育软件,能够有效整合资源、提升效率、促进公平,为教育发展注入新活力。以下是关键点: 一、 在线网校教育软件的优势 打破时空限制: 学生可随时随地学习,充分利用碎片化时间,提升学习效率。 优…

算法备案材料填报攻略

算法备案攻略本算法备案资料使用说明 算法备案材料涉及众多内容,其中以《自评估报告》最为复杂。为方便大家了解,特提供了下面的参考填写内容。注:算法备案自评估报告涉及160多个审核要素,每个算法的实际情况都不相同,以下内容仅供学习了解。如果有实际申报需求,建议咨询…

WPS Office for Mac 7.2.0 - 写作、表格处理、PPT 制作和 PDF 编辑

WPS Office for Mac 7.2.0 - 写作、表格处理、PPT 制作和 PDF 编辑WPS Office for Mac 7.2.0 - 写作、表格处理、PPT 制作和 PDF 编辑 Smarter, Faster, Easier, Free with Seamless MS Office Compatibility 请访问原文链接:https://sysin.org/blog/wps-for-mac-7/ 查看最新版…

Microsoft Office LTSC 2024 for Mac (Microsoft 365) 16.94 - 文档、电子表格、演示文稿和电子邮件

Microsoft Office LTSC 2024 for Mac (Microsoft 365) 16.94 - 文档、电子表格、演示文稿和电子邮件Microsoft Office LTSC 2024 for Mac (Microsoft 365) 16.94 - 文档、电子表格、演示文稿和电子邮件 Office LTSC 2024 for Mac (Word, Excel, PowerPoint, Outlook + OneNote,…

配置文件密文存储敏感信息服务启动流程设计

start() {# ()创建子进程(flock -x 200 # 200 文件描述符,进程级别的。ctl_n=$(ps -fu ${USER} | grep xxx start | grep -v grep | grep -v "$$" | wc -l) # grep -v "$$" 过滤掉当前进程if [ ${ctl_n} -gt 1 ]; thenecho -e "Exist kafka_ctl is…

Failed to load module script Expected a JavaScript module script 解决方案

部署若依前端vue3到云服务器的时候,一直在转圈圈加载中,最后排查出来是vite打包的时候的一个设置出错了 按照下图的加一个点即可解决。本文来自博客园,作者:程序员鲜豪,转载请注明原文链接:https://www.cnblogs.com/hg-blogs/p/18714033

内测之家-安全机制-签名(一)

API 加签的意义身份验证:在网络交互中,服务器需要确定请求的来源是否可靠。通过对请求进行加签,服务器可以验证请求是否来自合法的客户端。客户端使用独特的密钥进行签名操作,服务器能够依据已知的密钥信息对签名进行校验,只有签名验证通过,才能确认请求源自合法身份,有…

支付宝 IoT 设备入门宝典(上)设备管理篇

相信不少朋友最近都被支付宝“碰一下”广告刷屏,“不用打开APP 支付就碰一下”几个字一出简直自带BGM……其实“碰一下”就是支付宝 IoT 设备的一种,趁着热度还在,我会分为设备管理和设备经营上下两篇,简单介绍一下支付宝 IoT,以及在日常使用管理中的常见问题解决方案,本…

【贪心】区间问题

最大不相交区间数量 演唱会、计算最多能观看几场演出样例1 输入 2 720 120 840 120输出 1样例2 输入 2 0 60 75 60输出 2C++代码 // Problem: #OD268. 演唱会、计算最多能观看几场演出 // Contest: Hydro // Memory Limit: 256 MB // Time Limit: 1000 ms // 区间问题:求最大不…

第五讲 搜索算法

第一题 自然数的拆分思路: 1.通过递归的方式将每个数从1开始拆分 2.每次拆分的后一个数大于等于前一个数,确保拆分结果不重复第二题 填涂颜色思路: 1.将外圈的0也都围成圈 2.只需将剩下的0变成2第三题 显示图像AC代码:第四题 健康的荷斯坦奶牛AC代码:

vxe-table 展开行的使用,子表复杂渲染,解决固定列与展开行重复渲染问题

vxe-table 展开行的使用,子表复杂渲染,解决固定列与展开行重复渲染问题,需要注意最新版本才支持 官网:https://vxetable.cn 同时支持虚拟滚动和展开行与固定列、子表复杂渲染,需要注意最新版本才支持使用 <template><div><vxe-grid v-bind="gridOptio…