通過Claude Code+K2模型編寫Dify插件 原創(chuàng)
前言
由于近日以??cursor???、??claude code???為代表的vibing編程模型逐漸流行,本章將分享介紹近期工作中借助??claude code+Kimi K2??模型開發(fā)dify插件的實踐過程。
文章概要
本文主要包含兩個部分:
1、環(huán)境搭建:claude code+Kimi K2開發(fā)環(huán)境的配置
2、插件開發(fā):使用claude code+Kimi K2開發(fā)dify插件
1.開發(fā)環(huán)境準(zhǔn)備
1.1 安裝node.js
- 訪問https://nodejs.org/en/download
- 按照官網(wǎng)提示,安裝node.js即可
1.2 安裝claude code
確認(rèn)node.js已經(jīng)安裝成功后,執(zhí)行以下命令安裝claude code
npm install -g @anthropic-ai/claude-code
安裝需要一定時間,耐心等待安裝完畢后,使用??cluade --version??驗證安裝成功即可。
1.3 注冊Kimi K2
- 訪問https://platform.moonshot.cn/console/account
- 注冊Kimi K2賬號
- 新建API Key

備注:注冊Kimi賬號之后,默認(rèn)會贈送15元額度,由于其有用量限速,所以最好充值50元以上。
1.4 配置claude code
Mac系統(tǒng)在終端下執(zhí)行
export ANTHROPIC_BASE_URL=https://api.moonshot.cn/anthropic
export ANTHROPIC_AUTH_TOKEN=your-api-key
為了避免每次執(zhí)行命令時都輸入API KEY,我們可以將API KEY保存在環(huán)境變量中,在終端下執(zhí)行
echo -e '\n export ANTHROPIC_AUTH_TOKEN=your-api-key' >> ~/.bash_profile
echo -e '\n export ANTHROPIC_BASE_URL=https://api.moonshot.cn/anthropic' >> ~/.bash_profile
echo -e '\n export ANTHROPIC_AUTH_TOKEN=your-api-key' >> ~/.zshrc
echo -e '\n export ANTHROPIC_BASE_URL=https://api.moonshot.cn/anthropic' >> ~/.zshrc
通過以上設(shè)置,在命令行(或者在cursor、vscode中啟動終端)中,輸入claude命令就可以啟動claude了,如圖:

2.Dify插件開發(fā)
接下來,我將借助一個實踐項目,分享claude的使用過程。
特別說明:在開展本次調(diào)研的時候,我對dify平臺的源碼不了解,對于dify插件的開發(fā)更是一無所知,以下所開展的工作主要借助claude code以及dify的官方文檔完成。
2.1 需求描述
由于工作中的項目需要,我們目前的前后端鏈路如下:

需求:找到一種方法,能夠?qū)⒄n件平臺與Dify交互時所使用的sys.user_id傳遞給模型聚合平臺One-API系統(tǒng),從而使得One-API系統(tǒng)能夠獲取到用戶信息,開展相關(guān)的業(yè)務(wù)邏輯。
2.2 需求調(diào)研
基于以上的需求,我們將通過claude來解決上述的工作問題。
第一步:由于問題的解決涉及到dify相關(guān)信息的調(diào)研,所以我們將dify平臺和dify插件的源碼進(jìn)行clone。
# clone dify平臺源碼
git clone https://github.com/langgenius/dify.git
# clone dify插件源碼
git https://github.com/langgenius/dify-official-plugins.git
第二步:啟動claude,借助其代碼理解能力進(jìn)行分析調(diào)研
# 進(jìn)入到dify-official-plugins目錄
cd dify-official-plugins
# 啟動claude
claude
第三步:輸入我們的需求,讓claude進(jìn)行分析調(diào)研
我有一個需求,請幫我評估如何實現(xiàn)相應(yīng)的需求。
背景:
1、我在Dify平臺上配置了一個工作流,這個工作流中通過sys.user_id記錄了用戶的信息。
2、我在Dify平臺上借助Dify平臺的模型供應(yīng)商功能,通過OpenAI-API-compatible配置了對應(yīng)的模型提供地址http://192.168.6.188:3000/v1以及API-KEY
3、在工作流中會使用到上述OpenAI-API-compatible已經(jīng)配置好的模型,例如:deepseek-chat
4、以上鏈路目前是可以運行的。
需求:
1、我現(xiàn)在希望將工作流中的sys.user_id信息透傳給大模型供應(yīng)商http://192.168.6.188:3000/v1,也就是說在工作流中使用大模型的時候,發(fā)送給大模型的請求會攜帶sys.user_id的信息,從而使得大模型供應(yīng)商接收到sys.user_id,進(jìn)而進(jìn)行相關(guān)處理。
2、由于Dify平臺后續(xù)會持續(xù)升級,所以我不太希望修改Dify平臺的源碼來實現(xiàn),因為這樣做每次升級Dify平臺的時候都需要進(jìn)行代碼合并,最好能夠借助插件系統(tǒng)實現(xiàn)上述功能。
3、我希望在openai_api_compatible插件的基礎(chǔ)上進(jìn)行功能添加
參考資料:
1、openai_api_compatible插件源碼:位于當(dāng)前工程下的models/openai_api_compatible
2、dify平臺源碼位置:/Users/deadwalk/Code/ai_proj_llm/dify
請你根據(jù)我的需求,仔細(xì)分析models/openai_api_compatible插件的實現(xiàn)和dify平臺的源碼實現(xiàn),給出可行的解決方案輸出到docs目錄。
要求:
1、方案中需要詳細(xì)說明實現(xiàn)原理
稍事片刻,claude code通過分析Dify平臺

最終,經(jīng)過claude的分析調(diào)研,給出了相應(yīng)的解決方案,方案按照提示詞要求,輸出在了docs目錄下。

2.3 插件開發(fā)
整個開發(fā)過程,claude code會按照擬定好的todo,一步一步執(zhí)行。
- 基本上不需要人工參與,在需要一些有權(quán)限的操作時,claude code會進(jìn)行提示獲取權(quán)限。
- 為了省事,你也可以選擇不再提示,這樣claude code會直接進(jìn)行編輯、改寫等操作。

2.4 插件打包
插件開發(fā)完畢之后,通過??dify plugin??命令進(jìn)行打包,然后在dify平臺安裝即可。
2.4.1 安裝dify plugin
Mac下通過brew安裝dify plugin
brew tap langgenius/dify
brew install dify
更多安裝方式可以查看Dify官方文檔:Dify插件安裝
2.4.2 插件打包
切換到插件源碼的上一級目錄下,執(zhí)行以下命令打包插件
dify plugin package ./openai_api_compatible

插件打包成功后,會生成一個??.difypkg??的文件
2.5 插件測試
2.5.1 關(guān)閉Dify平臺的簽名檢查
# 切換到dify的docker目錄
cd docker
# 編輯.env 搜索并修改FORCE_VERIFYING_SIGNATURE 的值為false
FORCE_VERIFYING_SIGNATURE=false
重啟Dify的docker容器即可。
具體說明請見Dify官網(wǎng)FAQ
2.5.2 上傳并安裝插件
在Dify平臺的插件管理頁面,上傳之前打包好的插件文件并安裝

2.5.3 測試插件
1. 打開插件的配置頁面,可以看到對應(yīng)的配置項增加了透傳參數(shù)的選項

2. 開啟插件的透傳功能,同時配置對應(yīng)的模型信息(模型地址配置本地已經(jīng)啟動的one-api服務(wù))

3. 創(chuàng)建一個Dify工作流

4. 運行工作流,同時查看one-api的日志


可以看到,one-api上接受的服務(wù)日志??X-User-Id???與Dify運行時提供的??sys.user_id??一致。
備注:one-api服務(wù)我們已經(jīng)進(jìn)行了改造,可以將接收到的headers信息打印出來,方便我們查看透傳信息
花費情況
- 訪問Kimi開發(fā)者平臺,查看花費情況
- 本次插件開發(fā),主要進(jìn)行了前期的需求調(diào)研、然后是插件開發(fā),中間經(jīng)歷了2次調(diào)試修改,總計花費約17元。

總結(jié)
- 借助?
?claude code + Kimi K2??模型,可以開展非常多的編碼工作,比如:代碼調(diào)研、方案評估、代碼實現(xiàn)等。 - 相比?
?cursor???的使用過程,??claude code??獨立完成性更高,花費更加便宜。 - 相比?
?cursor???動輒幾十美元的花費,不但費用降低至原來的約1/10之一,整個代碼實現(xiàn)過程中,不需要像??cursor???一樣進(jìn)行多次代碼??confirm??的確認(rèn)生成的代碼質(zhì)量。 - 同時使用?
?cursor???和??claude code???并不沖突,完全可以在??cursor???中啟動一個終端,在終端中運行??claude code???,然后通過??terminal??提供提示詞。 - 對于開發(fā)人員而言,無論是?
?cursor???還是??claude code??,能夠提供結(jié)構(gòu)化的提示詞,同時具備清晰的問題分析和決策能力,是未來最為重要的能力。
本文轉(zhuǎn)載自公眾號??一起AI技術(shù)?? 作者:熱情的Dongming

















