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:在
siliconflow
網站登錄后,拷貝自己的密鑰
,如下圖所示:
-
步驟2:在
CherryStudio
中配置密鑰,如下圖所示:
1.3 訓練本地知識庫(EverEdit的語法著色規則)
- 在
CherryStudio
中新建本地知識庫,如下圖所示:
注:如果已經創建過EverEdit
本地知識庫,就不用重復創建了。
- 將
EverEdit
自帶的語法文件丟給CherryStudio
消化,如下圖所示:
??知識庫有兩部分,一是EverEdit
內置的語法著色文件,二是EverEdit
的語法著色規則介紹文件(幫助文檔)。
??消化完成后,會出現綠色的“√”符號
1.3.1 在CherryStudio
中使用本地知識庫(EverEdit)和DeepSeek
在線模型生成zig
語法著色文件
1.3.1.1 打開知識庫開關,并選擇本地知識庫,如下圖所示:
-
在
CherryStudio
的導航欄選擇“助手”按鈕,切換到助手
模式
-
在界面的底部聊天窗口中選擇
本地知識庫
1.3.1.2 提問讓AI生成zig
語法文件,并不斷進行修正:
- 讓AI生成一份EverEdit編輯器的zig語法著色文件
注:以上是和AI的對話記錄,用戶內容部分即本人在CherryStudio
聊天窗口中輸入的內容, 下同。
-
順手讓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();
}
-
將AI生成的
zig.mac
語法著色文件保存到EverEdit
安裝目錄下的syntax
目錄 -
參考配置EverEdit語法著色對
zig
語法進行配置 -
告訴AI哪里出了錯誤,如下所示:
注:后面還有一些錯誤調試,就不一一列舉了。
-
最終的著色結果
注:一般的編輯器都沒有部署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.