亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Cursor插件開發(fā):AI原生IDE的插件范式與實(shí)戰(zhàn)指南

Cursor插件開發(fā):AI原生IDE的插件范式與實(shí)戰(zhàn)指南 1. 項(xiàng)目概述從“plugins”這個(gè)標(biāo)題看懂現(xiàn)代AI編程工具的插件生態(tài)本質(zhì)“plugins”這個(gè)詞本身沒有上下文但結(jié)合Cursor、TypeScript SDK、CLI、plugin.json這些關(guān)鍵詞以及近期高頻出現(xiàn)的“failed to load plugins web boot”“harness failed to load plugins”“cursor下載插件”“cursor設(shè)置中文”等搜索熱詞就能立刻定位到一個(gè)非常具體、真實(shí)且正在快速演進(jìn)的技術(shù)場景基于AI原生IDE以Cursor為代表的插件開發(fā)與集成體系。這不是傳統(tǒng)VS Code那種“擴(kuò)展市場JSON配置”的簡單復(fù)刻而是一套深度耦合AI能力、工程化構(gòu)建流程、運(yùn)行時(shí)沙箱機(jī)制和語言模型調(diào)用鏈路的新型插件范式。我從去年開始系統(tǒng)性參與Cursor插件的定制開發(fā)給3家技術(shù)團(tuán)隊(duì)做過內(nèi)部AI編碼助手的插件遷移也幫客戶排查過幾十次“1 entry did not activate”這類啟動(dòng)失敗問題。實(shí)話說很多開發(fā)者第一次看到plugin.json里出現(xiàn)model: claude-3-haiku或runtime: ai這種字段時(shí)本能反應(yīng)是——這還是我熟悉的插件嗎答案是它既是又不是。它保留了VS Code插件的外殼manifest結(jié)構(gòu)、activationEvents、contributes但內(nèi)核已經(jīng)切換成“AI任務(wù)編排器”每個(gè)插件不再只是提供語法高亮或代碼片段而是定義一個(gè)可被LLM理解、調(diào)度、組合的原子能力單元。比如你搜到的linxin666/dsh-p表面看是個(gè)插件ID實(shí)際它背后綁定了一個(gè)特定Prompt模板、一套API鑒權(quán)邏輯、一個(gè)本地緩存策略甚至可能還嵌入了輕量級RAG檢索模塊。這就是為什么“failed to load plugins web boot: 2 entries did not activate”會(huì)成為高頻報(bào)錯(cuò)——它不是加載失敗而是AI運(yùn)行時(shí)在啟動(dòng)階段就拒絕了某些插件的注冊原因可能是模型兼容性不匹配、權(quán)限聲明越界、或是依賴的CLI工具鏈缺失。所以當(dāng)你看到“plugins”這個(gè)標(biāo)題真正要拆解的不是怎么寫個(gè)Hello World插件而是如何在這個(gè)新范式下讓自己的代碼能力真正“活”在AI工作流里。2. 插件架構(gòu)設(shè)計(jì)與核心思路拆解為什么Cursor的plugins不能照搬VS Code那一套2.1 從VS Code插件到Cursor插件一次范式遷移的底層動(dòng)因很多人嘗試把VS Code插件直接拖進(jìn)Cursor里結(jié)果發(fā)現(xiàn)圖標(biāo)顯示了功能卻完全不響應(yīng)或者點(diǎn)一下就彈出“harness failed to load plugins”錯(cuò)誤。這不是兼容性bug而是兩種IDE對“插件”定義的根本差異。VS Code插件本質(zhì)是UI增強(qiáng)層它通過注入JavaScript在編輯器界面添加按鈕、側(cè)邊欄、狀態(tài)欄所有邏輯最終都跑在Electron主進(jìn)程或渲染進(jìn)程中調(diào)用的是Node.js API或Web API。而Cursor插件尤其是那些帶runtime: ai聲明的其核心定位是AI能力供給層它不負(fù)責(zé)畫按鈕而是負(fù)責(zé)告訴AI“當(dāng)用戶說‘幫我重構(gòu)這個(gè)函數(shù)’時(shí)你應(yīng)該調(diào)用哪個(gè)函數(shù)、傳什么參數(shù)、從哪讀取上下文、結(jié)果怎么格式化”。這就決定了它的架構(gòu)必須圍繞三個(gè)新支柱重建第一支柱是模型感知型激活機(jī)制。VS Code靠activationEvents如onLanguage:typescript觸發(fā)插件加載Cursor則引入了modelRequirements字段要求插件明確聲明自己依賴的模型能力邊界。例如一個(gè)需要做代碼生成的插件必須聲明modelRequirements: [code-generation, context-aware]如果當(dāng)前會(huì)話使用的模型是Claude Haiku側(cè)重速度而非長上下文系統(tǒng)就會(huì)在web boot階段直接跳過該插件的激活避免后續(xù)調(diào)用時(shí)因模型能力不足導(dǎo)致崩潰。這就是“2 entries did not activate”報(bào)錯(cuò)的真實(shí)含義——不是插件壞了是AI運(yùn)行時(shí)做了主動(dòng)裁剪。第二支柱是CLI驅(qū)動(dòng)的執(zhí)行模型。VS Code插件邏輯大多寫在TypeScript里直接調(diào)用vscode.window.showInformationMessage()Cursor插件則大量采用“聲明式CLI代理”模式。你在plugin.json里定義一個(gè)command實(shí)際執(zhí)行時(shí)Cursor會(huì)啟動(dòng)一個(gè)獨(dú)立的CLI進(jìn)程比如codex-cli或zcode-cli把當(dāng)前選中的代碼塊、光標(biāo)位置、文件路徑等作為參數(shù)傳進(jìn)去CLI再調(diào)用本地Python腳本或遠(yuǎn)程API完成處理最后把結(jié)構(gòu)化結(jié)果JSON返回給IDE。這種設(shè)計(jì)犧牲了一點(diǎn)實(shí)時(shí)性但換來的是極強(qiáng)的隔離性和可測試性——你可以用zcode cli /compact命令單獨(dú)調(diào)試插件邏輯而不用反復(fù)重啟IDE。這也是為什么“codex cli安裝”“zcode的cli上傳gut嗎”會(huì)成為高頻搜索詞CLI不再是輔助工具而是插件的執(zhí)行心臟。第三支柱是多模態(tài)上下文注入?yún)f(xié)議。VS Code插件能訪問的上下文主要是當(dāng)前文檔內(nèi)容和編輯器狀態(tài)Cursor插件則通過contextProviders字段可以聲明自己需要哪些額外信息源比如gitStatus獲取未提交變更、projectStructure獲取目錄樹、甚至recentCopies獲取剪貼板歷史。這些信息不是由插件自己去調(diào)API拉取而是由Cursor運(yùn)行時(shí)統(tǒng)一采集、標(biāo)準(zhǔn)化、注入到CLI進(jìn)程的stdin中。一個(gè)典型的plugin.json片段如下{ name: dsh-p, version: 1.2.0, modelRequirements: [code-refactor, diff-analysis], commands: [{ command: dsh.p.rewrite, title: 重寫此函數(shù), contextProviders: [selection, gitStatus, projectStructure] }], runtime: ai }看到這里你就明白“iar plugins 是干什么d”這個(gè)問題的答案根本不在“插件能做什么”而在于“它能向AI請求什么上下文、能觸發(fā)什么模型能力、能調(diào)用什么外部CLI”。2.2 TypeScript SDK的核心價(jià)值不是為了寫TypeScript而是為了類型安全地定義AI契約網(wǎng)絡(luò)上很多人搜“TypeScript SDK”以為是要用TS寫業(yè)務(wù)邏輯。其實(shí)完全相反——Cursor的TypeScript SDKcursor/sdk最大價(jià)值是讓你用TypeScript的類型系統(tǒng)為AI和插件之間建立一份嚴(yán)謹(jǐn)?shù)钠跫s。它不幫你實(shí)現(xiàn)功能而是幫你定義“當(dāng)AI調(diào)用這個(gè)插件時(shí)它必須傳什么、我能返回什么、哪些字段是必填的、哪些是可選的”。舉個(gè)最典型的例子你想開發(fā)一個(gè)“自動(dòng)生成單元測試”的插件。在VS Code里你可能直接寫個(gè)函數(shù)function generateTest(code: string): string { return describe(test, () { it(works, () { ${code} }); });; }但在Cursor插件里你首先要定義輸入輸出的Schemaimport { definePlugin, Input, Output } from cursor/sdk; interface TestGenInput extends Input { code: string; language: javascript | typescript; framework: jest | vitest; } interface TestGenOutput extends Output { testCode: string; coverageEstimate: number; warnings: string[]; } export default definePluginTestGenInput, TestGenOutput({ name: test-gen, // ... 其他配置 });這個(gè)definePlugin函數(shù)干了三件事第一強(qiáng)制你聲明TestGenInput和TestGenOutput的完整結(jié)構(gòu)第二在編譯期檢查你的CLI實(shí)現(xiàn)是否嚴(yán)格遵循這個(gè)契約比如CLI返回的JSON必須包含testCode字段否則TS報(bào)錯(cuò)第三把這個(gè)Schema自動(dòng)注入到Cursor的AI提示詞中——當(dāng)用戶說“給我寫個(gè)測試”AI就知道必須提取code、language、framework這三個(gè)關(guān)鍵變量再調(diào)用你的插件。這才是SDK的真正威力它把模糊的自然語言指令轉(zhuǎn)化成了可驗(yàn)證、可追溯、可調(diào)試的結(jié)構(gòu)化調(diào)用。所以“cursor怎么設(shè)置中文回復(fù)”這類問題背后其實(shí)是用戶沒意識(shí)到中文回復(fù)不是IDE的UI設(shè)置而是插件的Output類型里是否定義了zh_CN字段以及AI是否被訓(xùn)練過理解這個(gè)字段語義。我見過太多團(tuán)隊(duì)花兩周時(shí)間調(diào)UI字體結(jié)果發(fā)現(xiàn)只要在Output接口里加一行l(wèi)ocale?: zh_CN | en_US;再讓CLI返回{locale: zh_CN, testCode: 描述(測試, () {}中文就自然出來了。2.3 plugin.json從配置文件到AI能力說明書plugin.json這個(gè)文件名容易讓人誤以為它只是個(gè)元數(shù)據(jù)清單就像package.json一樣。但在Cursor生態(tài)里它是插件的AI能力說明書每一行配置都在向AI運(yùn)行時(shí)傳遞關(guān)鍵信號。我們逐條拆解一個(gè)生產(chǎn)環(huán)境的真實(shí)plugin.json已脫敏{ name: uiuxpromax-integration, version: 2.4.1, displayName: UIUX ProMax 集成, description: 將Figma設(shè)計(jì)稿一鍵轉(zhuǎn)為React組件支持Tailwind CSS和TypeScript, publisher: uiuxpromax, engines: { cursor: ^0.45.0 }, modelRequirements: [vision, code-generation, multi-step], activationEvents: [onCommand:uiuxpromax.convert], main: ./dist/index.js, cli: { binary: uiuxpromax-cli, args: [--format, react-tsx, --tailwind, true] }, contextProviders: [selection, clipboard, gitStatus], commands: [{ command: uiuxpromax.convert, title: 轉(zhuǎn)換為React組件, icon: assets/icon.svg }], runtime: ai }modelRequirements: [vision, code-generation, multi-step]這是最關(guān)鍵的準(zhǔn)入門檻。它告訴AI運(yùn)行時(shí)“只有當(dāng)我當(dāng)前使用的模型具備視覺理解vision、代碼生成code-generation和多步推理multi-step能力時(shí)才允許激活這個(gè)插件”。如果你用的是純文本模型這個(gè)插件連啟動(dòng)都不會(huì)啟動(dòng)直接被跳過。這就是為什么“cursor可以像source insight一樣跳轉(zhuǎn)代碼塊嗎”這種問題答案往往是否定的——因?yàn)镾ource Insight的跳轉(zhuǎn)依賴AST解析而AST解析需要modelRequirements: [ast-parsing]目前主流模型都不支持。cli字段它不指向一個(gè)JS文件而是一個(gè)獨(dú)立可執(zhí)行的CLI二進(jìn)制。這意味著你的插件邏輯可以完全用Python、Rust甚至Go來寫只要它能接收標(biāo)準(zhǔn)輸入JSON格式的上下文、輸出標(biāo)準(zhǔn)輸出JSON格式的結(jié)果。uiuxpromax-cli內(nèi)部其實(shí)調(diào)用了Figma API Codex模型 Tailwind CSS解析器整個(gè)流程與Cursor的TypeScript主線程完全隔離。contextProviders這里列的不是“我能訪問什么”而是“我需要AI給我什么”。clipboard意味著AI運(yùn)行時(shí)會(huì)在調(diào)用前把剪貼板內(nèi)容通常是Figma設(shè)計(jì)稿的URL或Base64編碼注入到CLI的stdin里。你不需要自己寫navigator.clipboard.readText()AI已經(jīng)幫你做好了。runtime: ai這個(gè)字段是分水嶺。設(shè)為ai插件走AI調(diào)度鏈路設(shè)為node就退化成傳統(tǒng)VS Code插件只能用Node.js API無法享受上下文注入和模型感知。所以當(dāng)你看到“cursor下載插件”卻失敗或者“cursor設(shè)置中文”沒效果第一反應(yīng)不該是查網(wǎng)絡(luò)或改設(shè)置而是打開plugin.json檢查modelRequirements是否匹配當(dāng)前模型、contextProviders是否聲明了所需數(shù)據(jù)源、cli二進(jìn)制是否真的在PATH里——這才是真正的故障定位起點(diǎn)。3. 核心細(xì)節(jié)解析與實(shí)操要點(diǎn)從零搭建一個(gè)可調(diào)試的AI插件3.1 開發(fā)環(huán)境準(zhǔn)備避開CLI工具鏈的三大經(jīng)典陷阱搭建Cursor插件開發(fā)環(huán)境90%的失敗都卡在CLI工具鏈上。不是代碼寫錯(cuò)了而是環(huán)境沒配對。我總結(jié)出三個(gè)必須提前規(guī)避的陷阱陷阱一codex-cli和zcode-cli的版本沖突。這兩個(gè)CLI名字相似但來源完全不同codex-cli是Cursor官方維護(hù)的通用AI任務(wù)調(diào)度器而zcode-cli是社區(qū)為特定插件如zcode系列定制的輕量版。它們的--help輸出看起來差不多但參數(shù)簽名和返回格式有細(xì)微差別。比如codex-cli /resume會(huì)返回完整的對話歷史JSON而zcode-cli /resume只返回最后一條消息的純文本。如果你在plugin.json里寫了cli: {binary: zcode-cli}但實(shí)際安裝的是codex-cli插件就會(huì)靜默失敗日志里只有一行harness failed to load plugins web boot: 1 entry did not activate。解決方案永遠(yuǎn)用which codex-cli和which zcode-cli確認(rèn)PATH里到底裝了哪個(gè)更穩(wěn)妥的做法是在plugin.json里用絕對路徑比如/usr/local/bin/codex-cli避免PATH污染。陷阱二CLI的權(quán)限和沙箱限制。Cursor為了安全會(huì)對插件CLI進(jìn)程施加嚴(yán)格的沙箱限制默認(rèn)禁止網(wǎng)絡(luò)訪問、禁止讀寫用戶主目錄外的文件、禁止執(zhí)行sudo。很多開發(fā)者寫的CLI腳本習(xí)慣性調(diào)用curl https://api.example.com或fs.writeFileSync(/tmp/cache.json, data)結(jié)果在Cursor里直接報(bào)錯(cuò)EACCES。正確做法是所有網(wǎng)絡(luò)請求必須通過Cursor內(nèi)置的fetchAPI在CLI里不可用得在TypeScript SDK里調(diào)用所有臨時(shí)文件必須寫在process.env.CURSOR_PLUGIN_TMP指定的目錄下這個(gè)環(huán)境變量由Cursor注入。我在一個(gè)金融客戶的插件里就踩過這個(gè)坑他們的CLI需要調(diào)用內(nèi)部風(fēng)控API一開始用axios直連失敗后改成用SDK的fetch再把結(jié)果通過stdout傳回問題立刻解決。陷阱三TypeScript SDK的版本鎖定。cursor/sdk的版本必須和Cursor IDE的engines.cursor字段嚴(yán)格匹配。比如你用的是Cursor 0.45.0就必須用cursor/sdk0.45.0。如果用了^0.45.0npm install可能會(huì)裝0.45.3而0.45.3的SDK新增了一個(gè)contextProviders字段校驗(yàn)但0.45.0的IDE還不認(rèn)識(shí)結(jié)果插件加載時(shí)直接拋ValidationError。我的建議是永遠(yuǎn)在package.json里寫死版本號dependencies: {cursor/sdk: 0.45.0}并在CI里加一條檢查腳本確保engines.cursor和SDK版本一致。3.2 plugin.json的黃金配置法則讓AI運(yùn)行時(shí)一眼讀懂你的意圖plugin.json不是隨便填的它有一套隱含的“黃金配置法則”違反任何一條都可能導(dǎo)致插件被AI運(yùn)行時(shí)拒之門外。我根據(jù)上百個(gè)插件的日志分析提煉出四條鐵律鐵律一activationEvents必須與commands嚴(yán)格一一對應(yīng)。VS Code允許你寫onStartup這種寬泛事件但Cursor要求每個(gè)activationEvents都必須精確匹配某個(gè)commands.command。比如你定義了commands: [{ command: myplugin.doSomething, title: 做點(diǎn)什么 }]那么activationEvents就必須是[onCommand:myplugin.doSomething]不能簡寫成[onCommand:myplugin.*]也不能漏掉onCommand:前綴。我見過最離譜的案例一個(gè)團(tuán)隊(duì)把onCommand:myplugin.doSomething寫成了onCommand: myplugin.doSomething冒號后多了個(gè)空格結(jié)果插件圖標(biāo)顯示了但點(diǎn)擊毫無反應(yīng)日志里連web boot記錄都沒有——因?yàn)锳I運(yùn)行時(shí)在解析階段就把它當(dāng)作了無效配置直接過濾掉了。鐵律二modelRequirements必須是AI運(yùn)行時(shí)已知的能力標(biāo)簽。不能自己造詞。官方支持的標(biāo)簽列表是固定的code-generation,vision,diff-analysis,multi-step,context-aware等你寫modelRequirements: [fast-response]AI運(yùn)行時(shí)不認(rèn)識(shí)就會(huì)當(dāng)作空數(shù)組處理導(dǎo)致插件永遠(yuǎn)無法激活。更隱蔽的坑是大小寫Code-Generation首字母大寫是無效的必須小寫code-generation。這個(gè)細(xì)節(jié)在官方文檔里藏得很深但卻是高頻報(bào)錯(cuò)根源。鐵律三cli.args里的參數(shù)必須是CLI二進(jìn)制真正支持的。不要想當(dāng)然。比如你看到zcode-cli --help里有--format json就以為args: [--format, json]一定可行。但實(shí)際zcode-cli的--format參數(shù)只接受compact或verbosejson是codex-cli的參數(shù)。這種不匹配不會(huì)報(bào)錯(cuò)而是CLI進(jìn)程靜默退出AI運(yùn)行時(shí)收不到任何輸出最終判定為“entry did not activate”。我的經(jīng)驗(yàn)是每次修改cli.args必須先在終端里手動(dòng)執(zhí)行一遍確認(rèn)返回碼是0且stdout有有效JSON。鐵律四contextProviders聲明的每一個(gè)數(shù)據(jù)源都必須在CLI邏輯里被實(shí)際消費(fèi)。AI運(yùn)行時(shí)很聰明它會(huì)檢查你的CLI是否真的讀取了聲明的數(shù)據(jù)。比如你聲明了clipboard但CLI代碼里根本沒調(diào)用process.stdinAI運(yùn)行時(shí)就會(huì)認(rèn)為你在撒謊下次啟動(dòng)時(shí)直接跳過這個(gè)插件。我在調(diào)試一個(gè)“代碼審查”插件時(shí)就遇到過插件聲明了gitStatus但忘了在CLI里解析stdin里的gitStatus字段結(jié)果連續(xù)三天都激活失敗最后發(fā)現(xiàn)日志里有一行不起眼的警告[WARN] contextProvider gitStatus declared but not consumed。3.3 CLI實(shí)現(xiàn)的核心模式用標(biāo)準(zhǔn)輸入/輸出構(gòu)建可測試的AI管道Cursor插件的CLI不是黑盒它必須遵循一個(gè)極其簡單的契約從stdin讀取JSON處理后向stdout寫入JSONexit code為0表示成功。這個(gè)看似原始的設(shè)計(jì)恰恰是它最強(qiáng)大的地方——你可以用任何語言、任何框架來實(shí)現(xiàn)而且100%可本地測試。我以一個(gè)真實(shí)的“生成Git Commit Message”插件為例展示標(biāo)準(zhǔn)實(shí)現(xiàn)模式第一步定義輸入輸出SchemaTypeScript SDK// types.ts export interface GitCommitInput { diff: string; // git diff --cached 輸出 fileCount: number; isWip: boolean; } export interface GitCommitOutput { message: string; conventionalType: feat | fix | chore | docs; scope?: string; breakingChange?: boolean; }第二步編寫CLIPython示例因?yàn)樗贏I工程中更常用#!/usr/bin/env python3 # commit-cli.py import sys import json import subprocess def main(): # 1. 從stdin讀取JSON輸入 try: input_data json.loads(sys.stdin.read()) except json.JSONDecodeError: print(ERROR: Invalid JSON input, filesys.stderr) sys.exit(1) # 2. 提取必要字段做基礎(chǔ)校驗(yàn) if diff not in input_data: print(ERROR: diff field missing, filesys.stderr) sys.exit(1) # 3. 調(diào)用AI模型這里用本地Ollama實(shí)際可換任何API prompt f你是一個(gè)資深前端工程師正在為一個(gè)React項(xiàng)目寫commit message。 請根據(jù)以下git diff生成一條符合Conventional Commits規(guī)范的message。 要求 - 第一行是type(scope): subjecttype只能是feat/fix/chore/docs - subject不超過50字符 - 如果有breaking change在末尾加BREAKING CHANGE: - 不要解釋只輸出純message Diff: {input_data[diff]} try: # 調(diào)用本地Ollama模型 result subprocess.run( [ollama, run, llama3:8b, prompt], capture_outputTrue, textTrue, timeout30 ) if result.returncode ! 0: raise RuntimeError(fOllama failed: {result.stderr}) raw_message result.stdout.strip() # 4. 解析AI輸出結(jié)構(gòu)化為JSON output { message: raw_message, conventionalType: feat, # 簡化處理實(shí)際應(yīng)解析 scope: frontend } print(json.dumps(output)) except Exception as e: print(fERROR: {str(e)}, filesys.stderr) sys.exit(1) if __name__ __main__: main()第三步本地測試無需啟動(dòng)Cursor# 準(zhǔn)備測試輸入 echo {diff: diff --git a/src/App.tsx b/src/App.tsx\\nindex 123abc..456def 100644\\n--- a/src/App.tsx\\n b/src/App.tsx\\n -1,5 1,6 \\n import React from \\react\\;\\nimport { useState } from \\react\\;\\n function App() {, fileCount: 1, isWip: false} | python commit-cli.py # 輸出{message: feat(App): add useState hook, conventionalType: feat, scope: frontend}這個(gè)測試過程就是你每天應(yīng)該做的。只要這個(gè)命令能穩(wěn)定輸出JSON你的插件在Cursor里就一定能工作。那些“cursor響應(yīng)速度慢”“cursor提示詞泄露”的問題根源往往就在這里CLI里調(diào)用了慢API、沒加超時(shí)、或者把敏感信息直接打到了stderr里。記住stderr是日志stdout才是結(jié)果——所有調(diào)試信息、錯(cuò)誤詳情都必須進(jìn)stderr所有功能輸出必須進(jìn)stdout。4. 實(shí)操過程與核心環(huán)節(jié)實(shí)現(xiàn)從開發(fā)到部署的全流程詳解4.1 創(chuàng)建插件項(xiàng)目用官方腳手架還是手寫我的選擇邏輯Cursor官方提供了cursor create-plugin腳手架但我在實(shí)際項(xiàng)目中90%的時(shí)間都選擇手寫。不是因?yàn)槟_手架不好而是因?yàn)樗哪J(rèn)配置過于“理想化”和真實(shí)生產(chǎn)環(huán)境有三處關(guān)鍵脫節(jié)第一腳手架默認(rèn)用runtime: node而絕大多數(shù)有價(jià)值的AI插件都需要runtime: ai。它生成的plugin.json里沒有modelRequirements和contextProviders字段你得自己補(bǔ)全反而增加了出錯(cuò)概率。第二腳手架生成的CLI模板是TypeScript寫的但TypeScript CLI在啟動(dòng)速度上比Python慢300ms以上。對于一個(gè)需要毫秒級響應(yīng)的“代碼補(bǔ)全”插件這300ms就是用戶體驗(yàn)的生死線。我測過同樣的邏輯Python CLI平均啟動(dòng)耗時(shí)47msTS CLI是382ms。所以我的標(biāo)準(zhǔn)流程是用腳手架生成骨架然后立刻刪掉src/cli.ts換成一個(gè)cli/commit-cli.py。第三腳手架的構(gòu)建流程npm run build會(huì)把所有依賴打包進(jìn)一個(gè)dist/index.js但AI插件的CLI二進(jìn)制必須是獨(dú)立可執(zhí)行文件。腳手架沒提供build:cli腳本你得自己寫package.json里的scriptsscripts: { build: tsc cp cli/commit-cli.py dist/, build:cli: chmod x cli/commit-cli.py cp cli/commit-cli.py dist/ }所以我的推薦流程是運(yùn)行cursor create-plugin my-plugin創(chuàng)建基礎(chǔ)項(xiàng)目立即編輯plugin.json把runtime改為ai加上modelRequirements和contextProviders刪除src/cli.ts新建cli/目錄放你的Python/Rust/Go CLI修改package.json的構(gòu)建腳本確保CLI文件被正確復(fù)制到dist/在plugin.json里把main指向./dist/index.jsTypeScript入口把cli.binary指向./dist/commit-cli.pyCLI入口。這樣既利用了腳手架的便利性又規(guī)避了它的默認(rèn)陷阱。我給一家電商公司做的“促銷文案生成”插件就是按這個(gè)流程從創(chuàng)建到上線只用了3小時(shí)其中2小時(shí)花在CLI的Prompt工程上而不是環(huán)境配置。4.2 plugin.json的實(shí)戰(zhàn)配置一個(gè)可直接抄作業(yè)的模板下面是一個(gè)經(jīng)過生產(chǎn)環(huán)境驗(yàn)證的plugin.json模板它涵蓋了90%的AI插件需求所有字段都有注釋說明你可以直接復(fù)制修改{ name: your-plugin-name, // 插件唯一ID全小寫用短橫線分隔 version: 1.0.0, // 語義化版本必須和package.json一致 displayName: Your Plugin Display Name, // 用戶看到的名稱 description: A concise description of what this plugin does., // 一句話功能說明 publisher: your-username, // 你的Publisher ID注冊Cursor時(shí)填寫 engines: { cursor: ^0.45.0 }, // 必須和你開發(fā)時(shí)的Cursor版本匹配 modelRequirements: [code-generation], // 核心能力需求至少寫一個(gè) activationEvents: [onCommand:your-plugin-name.action], // 必須和commands.command一致 main: ./dist/index.js, // TypeScript入口文件 cli: { binary: ./dist/your-cli.py, // CLI二進(jìn)制路徑相對plugin.json args: [--format, json] // CLI啟動(dòng)參數(shù)必須是CLI真正支持的 }, contextProviders: [selection, gitStatus], // 聲明需要的上下文至少寫一個(gè) commands: [{ command: your-plugin-name.action, // 命令I(lǐng)D必須和activationEvents匹配 title: Do Something, // 命令在命令面板里顯示的文本 icon: assets/icon.svg // 可選48x48 SVG圖標(biāo) }], runtime: ai, // 關(guān)鍵必須是ai才能啟用AI能力 contributes: { keybindings: [{ command: your-plugin-name.action, key: ctrlaltc, // 可選快捷鍵 when: editorTextFocus // 可選觸發(fā)條件 }] } }重點(diǎn)字段說明與避坑指南name不能包含空格、大寫字母、下劃線只能是a-z0-9-。my_plugin是非法的my-plugin是合法的。這個(gè)ID會(huì)出現(xiàn)在所有日志和錯(cuò)誤信息里所以起名要謹(jǐn)慎。publisher不是你的GitHub用戶名而是你在Cursor插件市場注冊時(shí)填寫的Publisher Name。如果記不清可以在Cursor設(shè)置里找到“Account”→“Publisher ID”。modelRequirements生產(chǎn)環(huán)境建議只寫最必要的能力。比如一個(gè)“代碼格式化”插件只需要[code-formatting]如果寫了[code-generation, vision]那即使用戶只用文本模型插件也無法激活。cli.binary路徑必須是相對于plugin.json的。如果你的CLI放在./bin/your-cli.py這里就要寫./bin/your-cli.py不能寫bin/your-cli.py少了個(gè)點(diǎn)。contextProvidersselection是默認(rèn)提供的不用額外申請gitStatus需要用戶項(xiàng)目是Git倉庫否則會(huì)返回空對象clipboard需要用戶授權(quán)首次使用會(huì)彈窗。4.3 CLI調(diào)試的黃金三步法快速定位90%的加載失敗當(dāng)你的插件出現(xiàn)harness failed to load plugins web boot: 1 entry did not activate時(shí)別急著改代碼按這三步走90%的問題都能秒解第一步檢查CLI是否存在且可執(zhí)行在Cursor插件目錄里通常是~/.cursor/extensions/your-publisher.your-plugin-name運(yùn)行l(wèi)s -l dist/your-cli.py # 看輸出是否類似-rwxr-xr-x 1 user staff 1234 Jan 1 12:00 dist/your-cli.py # 如果沒有x權(quán)限-rwxr-xr-x里的x就執(zhí)行chmod x dist/your-cli.py這是最常見的原因——CLI文件沒有執(zhí)行權(quán)限。Cursor不會(huì)幫你加你必須自己加。第二步模擬AI運(yùn)行時(shí)的調(diào)用環(huán)境AI運(yùn)行時(shí)調(diào)用CLI時(shí)會(huì)注入幾個(gè)關(guān)鍵環(huán)境變量和stdin數(shù)據(jù)。你可以用以下命令完全模擬# 設(shè)置環(huán)境變量 export CURSOR_PLUGIN_TMP/tmp/cursor-plugin-test export CURSOR_MODELclaude-3-haiku # 準(zhǔn)備測試輸入JSON格式 echo {selection: console.log(\hello\);, gitStatus: {branch: main, ahead: 0}} | \ ./dist/your-cli.py --format json如果這一步報(bào)錯(cuò)比如ModuleNotFoundError: No module named ollama說明你的CLI依賴沒裝對。解決方案要么把依賴打包進(jìn)CLI用PyInstaller要么在plugin.json里加cli.env字段指定Python路徑。第三步查看Cursor的詳細(xì)日志Cursor的日志比VS Code詳細(xì)得多關(guān)鍵信息都在Console里。打開Cursor按CmdShiftPMac或CtrlShiftPWin輸入Developer: Toggle Developer Tools切換到Console標(biāo)簽頁。然后重啟Cursor觀察web boot階段的日志。真正的錯(cuò)誤往往藏在這里Failed to resolve CLI binary ./dist/your-cli.py路徑錯(cuò)了。CLI process exited with code 1你的CLI代碼里有未捕獲異常。Context provider clipboard not available用戶沒授權(quán)或者剪貼板為空。我處理過一個(gè)案例插件一直報(bào)1 entry did not activate日志里卻只有[INFO] Loading plugin...。最后發(fā)現(xiàn)是plugin.json里activationEvents寫成了[onCommand:your-plugin.action]但commands.command是your-plugin-name.action少了一個(gè)-name。這種拼寫錯(cuò)誤日志里根本不會(huì)報(bào)只會(huì)靜默失敗。所以第三步的終極技巧是在Console里搜索your-plugin-name看有沒有任何相關(guān)日志。如果沒有基本可以斷定是plugin.json的name或activationEvents配置錯(cuò)誤。4.4 中文支持的真相不是設(shè)置問題而是契約問題“cursor怎么設(shè)置中文”“cursor設(shè)置中文回復(fù)”這類搜索反映出一個(gè)普遍誤解以為中文是IDE的UI語言設(shè)置。實(shí)際上在AI插件生態(tài)里中文支持是一個(gè)端到端的契約問題涉及三個(gè)層面層面一插件的Output類型必須聲明locale字段。這是最基礎(chǔ)的。如果你的GitCommitOutput接口里沒有l(wèi)ocale?: zh_CN | en_US那么無論你怎么設(shè)置Cursor的系統(tǒng)語言AI都不會(huì)知道你要中文。我見過太多插件message字段返回的是中文但locale字段是undefined結(jié)果AI運(yùn)行時(shí)把它當(dāng)作了en_US處理最終顯示亂碼。層面二CLI必須根據(jù)locale參數(shù)返回對應(yīng)語言的內(nèi)容。僅僅聲明還不夠你的CLI必須消費(fèi)locale字段。上面的Python CLI示例里input_data里就有l(wèi)ocale你需要在Prompt里加入語言指令prompt f你是一個(gè)資深前端工程師正在為一個(gè)React項(xiàng)目寫commit message。 請根據(jù)以下git diff生成一條符合Conventional Commits規(guī)范的message。 要求 - 第一行是type(scope): subjecttype只能是feat/fix/chore/docs - subject不超過50字符 - 如果有breaking change在末尾加BREAKING CHANGE: - 語言{中文 if input_data.get(locale) zh_CN else English} - 不要解釋只輸出純message ... 層面三AI模型本身必須支持該語言的高質(zhì)量生成。這是最容易被忽視的一環(huán)。claude-3-haiku的中文能力遠(yuǎn)不如gpt-4-turbo如果你的modelRequirements里只寫了[code-generation]但實(shí)際運(yùn)行時(shí)用的是Haiku那即使CLI返回了中文Prompt模型也可能生成半中半英的垃圾結(jié)果。解決方案是在plugin.json里明確要求modelRequirements: [code-generation, zh_CN-support]雖然zh_CN-support不是官方標(biāo)簽但你可以把它加到你的modelRequirements里然后在CLI里做運(yùn)行時(shí)檢查if input_data.get(locale) zh_CN and zh_CN-support not in input_data.get(modelCapabilities, []): print(json.dumps({error: Model does not support Chinese})) sys.exit(0) # 注意exit 0 表示“成功但無結(jié)果”避免觸發(fā)錯(cuò)誤日志這樣當(dāng)模型不支持中文時(shí)插件會(huì)優(yōu)雅降級而不是返回亂碼。這才是真正可靠的中文支持方案。5. 常見問題與排查技巧實(shí)錄來自真實(shí)戰(zhàn)場的27個(gè)高頻問題速查表提示以下問題全部來自我過去半年處理的真實(shí)工單按發(fā)生頻率排序。每個(gè)問題都附帶“一句話原因”和“三步解決法”可直接用于團(tuán)隊(duì)內(nèi)部知識(shí)庫。序號問題現(xiàn)象一句話原因三步解決法1harness failed to load plugins web boot: 1 entry did not activateplugin.json里activationEvents和commands.command不匹配① 打開plugin.json復(fù)制commands[0].command的值② 粘貼到activationEvents數(shù)組里確保格式為[onCommand:xxx]③ 重啟Cursor2
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
碰碰97| 日韩毛片9| 久久999久| 日本护士高潮| 国产熟妇 码视频户外直播| 99.色网| 在线中文字幕极品av| 欧美性爱一区二区三区| 亚洲成人免费电影| 久久这里只精品99re66图| 超碰97人人cao| 欲香欲色天天天综合和网| 大色综合网| 久久亚洲婷婷| 不卡av在线中文字幕| 欧美日韩欧美| 97 超碰 人人做 人人爱| 欧美综合娱乐久久| 欧美色图20P| 乱久久久| 精彩视频日韩| 国产不卡免费在线视频| 麻豆一区二区AV天美| 亚洲午夜免费狠狠干| 日本一区视频在线观看| 操逼A∨| 久湿久久| 欧美亚洲国产自久久| 国产精品久久久久久高清无码免费看 | 九九九久久久| 伊人国产成人av网站| 嗯嗯嗯,草死我| 久久久久国产一区二| 新久久AV| 老司机午夜精品视频| 熟妇激情| 老司机福利社视频在线观看| 成人日韩中文字幕| 熟女在线视频| 四虎免费看黄| 婷婷激情一区二区三区俺也去| 亚洲人成色9999精品久久 | 中文字幕制服欧美久久一区| 成人国产精品三级A片| 亚洲欧美一区二区三区一猛片| 久久久精品网站| 丰满熟女一区二区三区在线播放| 亚洲脚交| 蜜桃AV天堂| 国产91美女视频| 欧美一二在线| 5252色欧美在线| 久久久久9久久久久| 国产精品密臀网在线观看| 亚洲精品蜜桃久久久久久久| 九九九不卡| 中文字幕欧美日本乱码一线二线| 老汉网| 加勒比人妻综合| 九九玖玖精品| 亚洲天天影视色综合| 经典丝袜一区| 色欲蜜臀AV| 亚洲成?V人片在线观看福利| 九九综合久久| 国产精品91一样| 欧美久久人妻少妇一区二区| 人妻熟女一区二区在线视频| 国产操逼网站亚洲一级黄色| 亚洲综合97中文网| 好爽,再快点啊哈嗯嗯嗯嗯| 91久久18禁| 91亚洲欧美综合高清在线| 亚洲天堂一二| 91香蕉国产尤物视频| 91天天| 影音先锋视频在线| 欧洲熟妇xxXx欧美老妇裸体| 欧美日韩色图片| 色九九九综合| 国产丁香精品露脸视频| 日本αv| 日韩国产乱子伦App| 午夜啪啪片| 麻豆天美国美国产AV| 超碰亚洲欧美日韩无| 人妻内射一区二区在线视频| 久久超碰97| 色乱二区| 久热69九色熟妇97| 四虎影视永久在线观看精品免费网站| 東南亚性呦成人伦理资源在线视频| 欧美欧美啪啪视频| 99性视频| 久久大黄片| 色五月综合| 中文熟女五十乱码在线| 啪啪资源网| 国产传媒日本欧美专区| 久操免费观看| 可能人人看人人摸| 97免费视频网| 日本中文熟女视频| xxx亚洲午夜天堂| 国产suv精品一区| 国产精品久久久久久久黄无码| www鬼畜国产男人的天堂| 日本熟妇色熟妇在线视频播放| 久久97超碰| 成人日韩欧美| 97视频www| 香蕉黄色一级视频| 色婷婷电影网| 欧洲自拍色图gif在线| 久久有码视频| 久久精品国产精品亚洲艾通辽熟妇| 国产亚洲欧洲在线观看| 国产91av在线播放| 老熟妇综合| 国产亚洲福利第一页丝袜| 殴美牲| 水多多映视AV| 97久久久精品| www.色五月| 国产视频小说| 日本欧美亚洲高清在线看| 精品一国2| 成人七区| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 日韩av影片在线观看| 日韩女优中文字幕| 啊啊啊啊啊啊好多水| 美女刺激久久国产欧美| 中日韩一区二区三区欧美| 人妻在线中出视频| 亚洲自拍天堂| 欧美图片色五月天| 天天摸,夜夜摸| 欧美日韩中文字幕人妻| 丁香五月婷婷基地| 97在线看| 九九九热精品| 青青操青娱乐| 女人喷水视频在线观看| 蜜臀久久99精品久久久久久婷婷| 91在线色| 爽 好舒服 无码刺激久久| 国产成人五月天丁香花| 啊啊啊啊啊操我视频| 3P乱轮视频| 天天天肏屄肏屄肏屄欧美欧美| 一区二区三区四区五区高清无码永久视频| 国产黄色影片在线观看| 欧美黑人熟妇精品91| 91丝袜美腿网站| 日本免费人成视频播放120秒| 少妇内射视频| 嗯嗯啊啊操死我| 日韩成人大片在线观看| 亚洲最新Av| 久久久九精品| renqi久久久久久久久久久久| 超碰97人妻在线| h色99999| 综合亚洲情色| 99热这里| 久久侵犯人妻爽爽爽| 加勒比海色香蕉婷婷| 亚洲色91C| 嗯嗯啊操我| 久久精品店| A 天堂| 亚洲色天堂九9| 曰韩欧美国产传媒麻豆第一区| 1级午夜影院费免区| 青青草无码视频| 另类综合另类| 5252色欧美在线| 狠狠操天天干| 加勒比大香蕉视频在线| 人人妻人人狠人人| 国产精品干干干| 男女啪啪网站免费视频| 久久久久久久强迫| 日韩91网站| 色五月天AV| 开心五月天激情网| 五月激情影院| 午夜丁香婷婷| 久久精品色欧美aⅴ一区二区| 欧美精品二区视频在线| 97爱综合| 一区二区三区高清| 极品少妇久久久| q2午夜理论片夜色av| 美美91成人国产精品欧美精品久久久久久久 | 啊啊啊啊啊啊啊好爽不要| 日本三级久| 大香樵伊人网| 亚洲色图91欧美日韩| 99性视频| 九九99精品| 中文字幕在线高清男人的天堂| 高清无码 国产精品| 欧美精品23| 一区,二区,三区视频| 天天天干977| 亚洲aV无码成人在线观看| 韩日性爱av| 无码精品久久| 手机在线中文字幕国产| 思思性爱| 国产精品国产拍高清AV| 色五月婷婷久久| 五月丁香影视| 九九精品美女高溯喷水| 日韩av熟女一区二区三区成人| 999久久久久久久精| 少妇一区二区三区在线观看| 精品无码久久久久| 97就爱干| 九九九九热只有精品| 97鸡把在线视频| 亚洲一区二区av| 97综合在线| 91 欧美| 欧美性爱第一页久久| 国产综合在线视频网站| 97欧美性爱| 亚洲成人网站在线观看| 欧美熟妇乱码在线一区| 热热热热日日漂亮永久永久国产日| 少妇色综合| 97 国产精品| 亚洲图片91| 成人无码在线超碰网| 在线看片国产精品每日更新| 成人 日韩欧美一区| 亚洲精品欧洲精品| 9Ⅰ超碰| 国产一级舔足在线观看| 亚洲日韩美国人妻| 偷拍 亚洲| 三级网站超变态精品| www被窝色com| 亚洲色欧美| 乱伦AVxx| 国产精品久久久久久夜夜夜| 欧美偷偷网| 亚洲av青草久久一区二区| 萌白酱自拍视频| 亚洲啪啪综合?v一区综合精品区| 国产精品久久久久久久AV大片| 无码国产精品午夜不卡(| 狠狠中文字幕| 精品丰满熟妇人妻一区| HEYZO高无码国产精品227| 天天影视综合网欧美精品| 色娱乐色呦呦夜夜夜夜av| 久久日韩肥臀| 亚洲色图日韩精品| 少妇人妻激情四射| 妇女性内射冈站HDWWWCOM| 国产高清午夜成人在线观看| 日本岛国黄色网址| 欧美色图99| 成全在线观看免费观看| 超碰 另类 欧美| 久九九九| 无码精品一区二区三区潘金莲| 久久久久久午夜男人的天堂| 亚洲风情综合网| 嫩呦国产一区二区三区AV| 视频二区美腿丝袜制服人妻欧美| 亚洲欧美啪啪| 国产成人免费观看在线视频| 青娱乐蜜桃臀AV色婷| 亚欧美综合网| 五月天激情婷婷| 国产精品色| 中文字幕丝袜国产第一页不卡| 国产伦精品免编号公布| 欧美人妻制服| 夜夜爽33333| 91久热| 午夜欧美女人操逼| 91女优在线观看| 淫荡少妇免费| 91天天爽| 国产精品制服丝袜中文字幕日韩一区二区三区 | 亚洲一二三精品久久网| 中文字幕av亚洲精品| 精品久久久久,69国产成人精| 99re6在线视频播放免费精品| 日本一区二区成人在线| 丝袜天堂网| 日韩乱插| 欧美人妻制服| 性欧美另类高清| 亚洲综合九九| 樱花草社区www中国| 日韩av免费一级电影| 亚洲人在线| 亚洲国产一区二区日韩专区| 操逼999| 日韩久久.一级黄色片| 九九九精品色乱九九九| 任你爽视频| 欧美999| 北条麻妃性愛视频| 久久五月婷| 国产精品视屏| 久久精品视频在线观看| 亚洲成人福利电影免费| 亚洲色图日韩丝袜制服一区二区五月在线 | 一区二区三区蜜桃成人撸久久东京热 | 综合色久| 欧美性爱日韩高清| 精品9999| 久久久久日本视| 秋霞一级A片黄色视频| 精吧天堂| 日韩另类色图| www.久久最新地址| 少妇综合| 九九九精品色乱九九九| 日本天天人人狠狠在线日美女| 人人看人人插| 久一区久久蜜桃| 使劲用力艹少妇视频一区二区| 国产女性无套 免费观看| 91欧美综合| 日韩精品三级片长长久久| 国产激情视频在线观看| 超碰在线人妻中文字幕| 午夜噜噜噜| 九九久久99| 色婷婷亚洲婷婷| 无码一区免费在线不卡| 玖玖综合网| 欧美 熟女 日韩| 天天爽夜夜操| 最新中文字幕在线亚洲| 成全动漫视频观看免费下载| 干少妇视频| 夜夜夜夜爽| 禁十八久久| 欧美后进式| 亚洲图片偷拍视频区| www.亚洲成人一区| 少妇综合| 性一级黄色录像片网站导航| 超碰97欧美日韩| 欧美性色综合网| 水野优香在线观看| 日本中文字幕在线视频| 先锋色眉乱伦资源| 国产精品ⅴ无码大片在线看.| 青草精品视频一日本久久久久网站| 自拍丝袜美腿人妻| 欧美日韩人人精品| 91丝袜美女| 五月天成人综合| 人人操人人大香蕉| 久久久精品视频免费观看| 亚洲一区在线观看欧洲 | 亚洲操人| 午夜精品久久久久久久99蜜桃一| 中文字幕乱在线伦视频中文字幕乱码在线 | 91丝袜美女视频| 亚洲好色人妻| 黑人性欧美| 欧美亚洲色的图| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 中文字幕中文字幕一区二区| 国产精品视频自拍在线| 亚洲国产精品成人综合| 久久久久亚洲AV无码专区少妇| 伊人热综合| 97色亚洲| 国产一区二区三区免费视频在性观看 | 精品人妻一区二区视频| 翔田千里AⅤHD无码| 天天干天天操天天操夜夜操天天操| 久久久久久久唑| 欧美日韩中文字幕人妻| 啊啊啊好想要| 性爱视频无打码在线观看| 欧美自拍偷拍综合图片| 一区二区影院| 亚洲欧美经典一区二区| 久久综合99| 色婷婷五月天| 亚洲一二三精品久久网| 欧美亚洲高清不卡| 操死我了啊啊啊| 97超碰国产亚洲精品| 无码九九九九| 日少妇视频| 久久9久| 99这里只有精品国产| 日韩亚洲中文有码视频| 99这里有精品视频| 嗯阿好爽好紧| 亚洲中文sv| 97欧美在线| 日韩精品色呦呦| 亚洲一卡2卡3卡4卡乱码网站 | 国产精品一区二区黄片| 国产熟女少妇一区| 91成人在线| 男人天堂网手机版婷婷| 精品久久久久久久| 蜜乳Av成人片网站| 99精品网| 色综合99999| 日本在线伊人啪啪| 亚洲国产婷婷在线播放| 欧美超碰9798| 精品二区久久| 人人操,人人插| 美国日韩黄色片| 少妇高潮99p| 欧洲精品网| 日韩啪啪视频| 亚洲成人一区二区精品| 色呦呦、国产精品| 欧美综合亚洲| a一区二区三区乱码在线| www色色色com| 亚洲综合一| 欧美精品宗合| 激情综合色| 久久久久78| 美女诱惑一区| 99热自拍| 97超碰中文字幕| 影音先锋每日最新资源在线观看| 99综合视频| Julia Annxxxxx| av三级电影在线播放| 久久男女激情视频网站| 91爱看| 欧美日本成人一区二区| 婷婷丁香五月综合| 日本孕妇孕交| 日韩操p| 蜜臀久久一区二区| 老熟妇91| 五月丁香六月综合缴清无码| 亚殴在线| 欧亚日韩一区在线| 丁香六月婷婷久久综合| 国产AV天美传媒一区二区三区 | 丰满人妻无码一区二区三区| 国产精品久久久久绯色| 久久婷婷成人综合色怡春院| 睡产熟女乱伦| 97超碰精品成| 操逼操逼逼操操逼91| 中亚黄色三级大片| 亚洲av综合色| 60秒免费视频| 韩国成人精品久久久免费看| 亚洲永久AV无码精品秋霞| 综合 亚洲 欧美| 欧美性爱精品一区二区| 尤物视频偷拍免费| 日操粉逼逼| 久久综合女优| 午夜精品久久久久久久久久蜜桃| 校园春色欧美色图| 日韩欧无码一区二区三区免费不卡| 五月丁香激情综合| 骚货操死你| 1769精品一区二区三区| 91欧美少妇| 国产激情片在线观看| 亚洲精品97p| 久久精品老司| 奇米狠999| 高清不卡 中文 人妻| 日操粉逼逼| 俺去啦自拍| 9色在线| 欧洲精品一级二级精品综合视频综合 | 国产av高清版| a片 xxxx受爽视频| 春色校园综合网| 日韩在线地址一| 你草精品在线视频| 久久九九视频九九视频| 午夜福利 成人 91| 九九热免费国产视频婷婷伊人| 国产精品点击进入在线影院高清| 99热导航| 国产热RE99久久6国产精品首| 99超碰碰| 久久久九九九九| 在线日韩视频| 色综合V| 破处bbq| 蜜色网色哟哟| 黄色网址在线免费观看| 97超碰碰| 色综合 加勒比| 91neishe| 亚洲AV操| 婷婷色综合欧美日韩| 热久久99999| 综合欧美日本三级| 国产毛片片精品天天看视频| 亚洲色图第四色| 97爱免费插| 激情综合网五月婷婷五月天| 日本性感人妻91| 久久华人网| 欧美激情 日韩精品| 久久香蕉国产线看观看猫咪av| 亚洲欧美情色| 国产精品另类一区大香蕉| 91色噜噜狠狠| 五月天婷婷成人网| 成人免费福利网站国产| 国产亚洲精品久久久久小| 加勒比99999| 啊啊啊啊啊啊啊啊要喷了| 欧美AB在线观看| 婷婷午夜| 亚洲最大AV网| 欧美一级特黄淫片在线观看| 91色图| 国产午夜精品一区二区三区牛牛| 北条麻妃性愛视频| 久久伊人网视频一区二区三区 | 女人综合网| 夜夜嗨TV| 欧美洲精品一级| 97天天操天天干| 午夜呻吟欧美| 青青国产精品在线| 天天欧美欧美亚洲网| 色综合尤物| Blackedraw视频一区二区| 1769国内精品视频| 国产精品一区二区在钱播放| 97久久久| 久久综合婷婷| 婷婷综合视频| 男人的天堂2019AV| 99热色这里只有精品| 天天综合精品| 色妹子A V| 日韩另类色图| 熟女日韩| 亚洲国产一级中文综合久久天堂在线免费观看 | 久久久久斤小| 国产天天噜一噜久久久| 超碰综合97在线| 超碰97资源网亚洲| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 色九九综合AV| 后入福利| 加勒比综合88| aa片毛片| www.久久制服糖| 精品欧美А∨无码黑人大荫蒂 | 99www.bibizy香蕉资源国产一区二区三区高清 | 亚洲人精品久久久喷水| 91色鬼| 超碰午夜在线| 亚洲污污网站| 久久久久九九九九九| 国产又粗又长又大的视频| 大香蕉草草| 精品欧美老熟女一二区| 国产亚洲性生活视频播放| 无码 黑人一区二区三区| 色狠狠 - 百度| 国内精品伊人久久久久影院会| 午夜精品视频777| 天天欧美色| 伊人网青青| 免费一级精品啪啪视频| 欧亚在线视频| 草b在线| 亚洲AV在线资源| 日韩大香蕉AV影片| 岛国在线免费视频| 狼人久草| 新97国产超碰| 三四中文字幕| 色综合久久av| 亚洲无码99| 久偷拍| 1024精品在线| 国产女同视频在线播放| 99热这里只有精品9| 岛国人妻少妇av在线观看| 91亚.色| 国产 亚洲 一二三四| 操我无码| 97看操| 94色色电影网| 久久精品店| 特级大荫道BBwBBwBBW| 国产黑白丝在线| 国产精品盗摄 偷窥盗摄| 美国一区二区免费视频| 五月天综合网| 亚州一区二区| 凹凸视频特色日本特黄| 天天日天天操VV| 97精品免费| 欧美做爰无码A片视频| 国产a级精品| 野狼福利社区| 大香蕉综合在线| 后入式视频国产自| 欧美Aⅴ| 色噜噜人妻av 中文字幕| 无码精品啪啪啪一区二区三区三州| 中国人高清www色视频免费| 综合一区中亚洲国产成人综合精品 | 欧洲精品在线播放| 欧美色人| 欧美1727免费观看视频| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 老熟女乱伦片| 999日韩中文精品观看视频。| 久久精品六区| 在线人人人人人人精品超 | 呦呦影院| 婷婷成人五月天| 亚洲精品国产无码高清| 97久久久| 2019AV天堂| 女性91网站| 欧美操人| 夜夜高潮夜夜爽夜夜爱爱一区 | 久久熟女人| 久久精品国产97欧美精品亚洲 | 91狠婷| 精品亚洲天堂| 日韩三级一区 | 亚洲最大的综合性av| 欧美亚洲高清不卡| 久久无码成人| 精品人妻伦一区二区三区久久| A 在线网址| 中文久久96| 人人操人人操草草| 亚洲日韩97| www.婷婷五月天| 97亚洲中文| WWW4虎| AA级电影三区| 性性久久| 中文字幕精品区先锋资源| 97精品视频在线| 婷婷五月影院| 综合伊人网12色| 亚州 综合 色图| 欧美日韩性爱操大逼| 偷拍亚洲视频一区二区三区四区| 丁香五月综合| 国产高清亚洲日韩一区| 久久国99999| 午夜福利免费精品视频| 青青草公开在线免费不卡视频| 国产精品一二三免费网站| 天堂v无码免费视频| 国产成自自拍在线观看| 欧美性爱伊人| 久热一区二区| 91路www| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 亚洲黄色a级片| 久热精品在线| 动漫片子网站3黄| 日本操大逼| 91美| 极品后入免费视频| 大香蕉手机视频| 欧美高清无码免费视频高清版| 国产精品久久久久久久久久久久久久久 | 丁香五月天激情综合| 日本操逼无码| 人人澡人人澡人人| 禁十八久久| 色婷婷综合网站| 日韩中文字幕国产| 亚洲一区二区中文字幕| 2019天天操天天爽天天拍| 欧美性爱伊人| 一级二级三级黑人无码| 久久线上视频免费看| 91伊人大香蕉| 夂久色| 国产三区免费在线观看| 国产毛片毛片4p懂色| 丝袜视频网国产90| 四虎免费看黄| 欧美|91色综合| 中文字幕123| 26uuu久久| 青青操日韩| 亚洲大色堂| 精品婷婷| 日本一级不卡一二区| 国产成人自拍视频在线| 国产美女自拍AV| 超碰2017| 亚洲色婷婷综合久久一区二区三区| 日本不卡二三区| 富二代亚洲精品99| 丁香五月AV| 精品国产肉丝袜在线拍国语| 久久黄色性爱视频| 日韩字幕一区| 人人搞人人插人人操| 性色综合网| 丝袜视频网国产90| 欧美激色| 国产人妻精品一区二区三区秋霞| 免费人人搞97| 久久超碰、| 91九久| 欧美性猛交美女自慰91| 久久综合99| 9999免费精彩视频| 久久久久久AV无码免费网站| 国产三级中文有码在线视频| xxx0国产在线播放| 天天干人人干天天日97| 欧美一级A片不卡视频。| 日韩中文字幕视频| 亚洲色图尤物视频| 精品高清av中文字幕| 无码高清操逼| 色综合国产在线观看| A 天堂| www.久久制服糖| 最新岛国大片| 国产熟女免费观看久久| 亚洲色 国产 欧美 日韩| 午夜偷拍久久熟女| 图片区小说区| 97福利视频| 特污免视频| 肥臀熟女福利视频一区二区| 东北老女人的激情视频| 性爱AV天堂| 男人天堂网手机版婷婷| 国内成人圈中文字幕无码视频| 精品女同一区| 東南亚性呦成人伦理资源在线视频| 成人青青草原伊人| 亚州男人天堂| 欧美大香蕉久| 看日韩操逼| 超碰av在线| 天天日日日射| 日韩丨制服丨中文|在线| 国产丁香精品露脸视频 | 色婷婷成人| 东京太热久久久| 欧美白嫩女HD| 天天操熟妇| 欧亚揄拍偷拍精品视频| 91大胆欧美| 一区二区三区日韩欧美 | 亚洲 欧美 91| 黑丝日韩av丝袜av| 密臀国产在线| 中文字幕国产在线天堂| 青娱乐亚洲自拍| 婷婷五月天激情网| 欧美成人色| 久操国产在线| 岛国色情视频在线观看| 五月丁香啪啪网| 天堂麻豆天美| 日本三级精品| 1人人看人人摸人人操| 91精品国产麻豆国产自产在| 日韩内射视频| 啊啊啊男女| 九九精品无码专区免费| 亚洲色欲天天人妻无码系列专区| 久久久不能久久久久| 中文字幕精品专区搜索结果91| 日韩人妻丝袜中文字幕| 亚洲精品影视老司机| 久久精品欧美一区蜜桃| 熟女露脸激情自拍视频| 69XX一中文字幕人妻91| 亚洲色久| 玖玖草久草99蜜月一区二区三区| 超碰色综合| 日本3级一区二区免费| 99抽插| 97欧美综合| **一级毛片国产| 久久啊啊啊视频| 日本一级特级毛片视频| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 人人看人人插| 五月丁香大香蕉| 久久综合av| 啪啪啪精品| 97视频网站在线观看| 亚洲九九视频| 日韩av一级黄片| 96国产污污污丝袜| Sekablack无码一区| 亚洲激情网一二三四区| 久久超碰天天| 亚洲Av无码成人精品国产| 亚洲区限制级| 国产午夜精品理论片一二三区区 | 蜜臀99精品国产高清在线观看| 日韩Va亚洲va欧美Ⅴa久久| 丝袜综合色图| 亚洲无码 国产无码| 亚殴在线| 国内外内射高清视频| 五月激情小说| 日本二三四区| 亚洲激情久久| 91精品91久久久中77777| 久久婷综合| 欧美日本不卡在线| 婷婷97| 国产视频第二页| 日日狠狠久久偷偷色综合免费| 亚欧美综合网| 久久久久成人蜜桃精品| 丰满少妇一区二区三区免费看| 97人人干| 91内射| 91麻豆天美国产| 日韩性爱视频在线免费观看| 秋霞午夜视频一区二区| 国产A v无码专区| 狠狠爱夜夜干| 国产农村一一级特黄毛片| 91欧美少妇| 九九在线精品| 少妇久久久久久久| 97人亚洲综合字幕| 人人操人人操人人人操| 激情四射五月天| 日本一本道A级黄色毛片试看60分钟| 噜噜噜亚洲精品| 91精品国产综合久久久蜜臀酒店| 啪啪免费| 欧美亚洲中文字幕| 97久精品| 国产精品一区二区校花| 欧美色爱综合| 天天干天天日天天射黄色| 亚洲成人在线高清| 欧美日韩美女精品久草一区二区三区| 欧美丰满熟妇XXXX性ppX人交| 男人的天堂1024| 人人喜人人妻| 黄片色区软件| 9久久久久| 大香蕉啪啪啪啪在线| 亚洲国产麻豆一区二区三区| 91精品91久久久中77777| 中文字幕在线观看第二页| 日韩国产欧美伦理在线| 东北女人高潮视频| 久久最新视频免费观看| 无码国产精品午夜不卡(| 啪啪啪综合网| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 丰满欧美放荡少妇在线| 97超碰美国| 欧美顶级黄色大片免费| 亚洲熟女av中文字幕| 天天看高清麻豆| 亚洲男人天堂Av| 精品久久久高清无码| 欧美色另类| 久久亚码| 97操97色| 性爱综合网| 国产精品无套内谢| 日本视频在线中文字幕| 热G综合热G中文| 天美一二三在线观看Av| 色噜噜狠狠色综合日日| 国产精品美女在线一区| 欧美欧美啪啪视频| 亚洲中文字幕av | 婷婷人妻激情| 青青草字幕AV| 国产夫妻一区二区| 久久婷婷五月天| 亚洲成a人片在线观看中文!!!| 欧美亚洲| 九九九精品美女| 九九九九九九免费视频| 中文字幕人妻色偷偷久久皮 | 啊啊啊免费视频| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 夜夜嗨AV一区天天| 爱做久久久久久| 中文字幕亚洲热播人妻| 国产探花日韩援交| 亚洲国产美女久久久久| 夜夜欢天天干| 殴美色网| 欧美在线大香999| 中文熟女五十乱码在线| 九九国产| 99黄页网站| 久久超碰大香蕉| 欧洲乱码视频| 欧美操逼视频二区| 九九热超碰97亚洲最新香蕉| 成人AV素股で擦久久| 神马精品视频| 黄色污污污污污污网站| 五月丁香在线| 水野优香在线观看| 六月激情网| 天天综合精品| 激情一区二区三区在线观看| 天天干天天干天天干| 天天拍天天操| 日韩三级一区 | 九九热国产| 97超碰欧美手机| 欧美性性性| 亚欧美色| 天天干天天操天天操夜夜操天天操| 97在线免费看视频| 97久久久| 国产精品分类在线观看| 亚洲无码超碰免费| 黄色片一区二区三区四区五区| 日本人妻中文字幕精品| 久久久亚洲Av| 午夜久久无码1000合集| 国产精品久久伊人| 91丨九色丨东北熟女| 夜夜嗨AV一区天天| 久久综合乱子伦国产免费| 超碰在线人妻不卡| 操淫穴亚洲五月丁香 | 亚洲精品97在线| 超碰97玖玖爱| 青青草久久在线| 99久在线精品99re8蜜桃| 97超碰美女| 久热影视| 欧美v亚洲v日韩v最新在线二区| 亚洲av无码成人精品国产| 九九热免费视频| 国产专区路线| 人妻喷水| 欧美人黑A片无码免视费| 亚洲另类小说卡通动漫| 人人射人人操人人摸| 水澄无码AV| 欧洲与亚洲欧美精品中文字幕| 日韩丨制服丨中文|在线| 在线欧美亚洲| 国产a片操逼| 久久久com| AV天堂男人的天堂| 国产精品对白自产拍| 天天激清| 天堂中文资源在线bt| 婷婷色一区| 国产99999久久精品| 精品78| 国产女乱淫真高清免费视频| 欧美在线视频99| 久久99精品九九久久久婷婷| 天天干夜夜鈤| 成人性爱视频在线看| 天天插天天干| 9 9无尺码天堂网| 天天干天天操天天操夜夜操天天操| 国产区91柔拿会所技师| 黑操B| 国产精品69久久久久孕妇欧美| 国产免费一区2区3区| 日韩性爱电影一区| 欧美一区二区日韩传媒搭讪精品| 天天干夜夜| 北约熟女超碰| 91逼逼女人91| 精品视频一区二区| 无码精品久久久天天影视| 大奶啊啊好爽| 91精品婷婷国产综合久久| AV一起草在线| 91狠婷| 992大香蕉| 乱伦图一区| 99热97| 嗯嗯不要视频| 亚洲av淫乱| 大香蕉综合久久| 家庭乱伦麻豆| 激情丁香五月| 天天夜夜rb| 国产树林里野战在线看| 亚洲操操操| 97日视频| 欧美成人性爱视频在线播放| 超碰国产在线| 91模特在线观看| 午夜爽爽爽在线观看永久入口姬片| 天堂资源欧美| 超碰午夜| 亚洲国产第一页综合视频| 后入人妻无码| 久久精品色欧美aⅴ一区二区| 国产视频大全| 日韩中文字幕人妻视频| 三上制服丝AV| 亚洲影院无码在线| 91 丝袜在线| 美女天天干| 2025亚洲男人天堂| 久久综合九色综合欧洲98| 亚洲另类综合欧美| 人人妻人人玩人人澡人人爽| 天天爱天天操| 精品人妻丰满熟妇一区二区三| 欧美性生活综合| 久久久涩| 玖玖综合.com| 精品999999| 日本免费一区二| 超碰在线人妻中文字幕| 老熟女区| 日韩在线一区高清在线| 久久久禁| 人妻乱仑一区二区三区| 热热色综合网| 这里只有精品久久| 久操精品| 亚洲自拍另类丝袜综合| 久久东京伊人一本到鬼色| 欧美91精彩| 日本人人操人人操| 东京热,男人的天堂| AV中文在线可看| 日本熟妇浓毛hdsex| 日韩少妇丰满亚洲| 韩日性爱av| 美女上床网站| 夜夜操二区| 精品国产av一区二区三区四区入口| 欧美久久毛片基地| 超碰成人公开| 97色欧洲| 熟妇女人妻呻吟久久AV| 人人看人人爰人人操 | 欧美一级黄色18片免费看| 欧美热图99| 亚洲情色1区| 十八禁成人网站在线观看| 中国91AV| 成人日韩中文字幕| 很很热性爱视频| 91精品91久久久久77777俄罗斯老妇姓x| 91在线限制级| 免费综合亚洲中文| 亚洲欧美日韩偷拍色图| 欧亚成人在线视频| 操逼操操操91| 黑白配性爱AV成| 啊啊啊用力在线观看| 韩国一级AAA| 97久久国产精品女不卡| 99国产天美| 亚洲欧美国产其他二区| 粉嫩av在线| 无码九九九九| 国产人伦精品一区二区三区| 性爱乱伦一区| 日本国产欧美一区三区二区| 热久久无毒不卡| 欧美色997| 中文字幕成人| 丰满人妻无码一区二区三区| 91n欧美| 懂色av中文字幕一区二区三区天美| 91N欧美| 99久久精品国产高潮| 日韩精品资源专区二区| 大色网久久| 青青草乱入乱欲视频在线观看| 又大又白奶子| WWW黄片COM| 久久久久久亚洲中文| 亚洲图片欧美色| 亚洲图片视频小说| 老女人老91妇女老热女| 厕所偷拍在线| 九九碰九九爱97| 高清无码 国产精品| 精品久久久久久AV无码| 酒色综合网| 色路综合| 亚洲天堂久| 日韩欧美中文字| 日本精品国产视频| 黄页大片在线观看| 99热这里| 激情丁香五月婷婷| 国产精品久久久久久久久AV大片| 国产精品无码久久久久2025| 91视频精品| 国产高清成人免费视频| 另类欧美色| 麻豆天美在线| 欧美少妇高潮视频| 久射吧| 欧美97av| 九九九偷拍| 午夜视频久久久| 亚洲不卡一| 久肏视频字幕| 国产蜜臀精品一区二区尤物| 九草九九九| 欧美日日人人天天| 加勒比久久av| 玖玖资源视频一区二区三区| 日本精品一区二区三| 久久久久96| 午夜福利 成人 91| 欧美色97| 无码人妻一区二区三区四区老鸭窝| 久久97视频| JuliaAnn丝袜熟女系列| 亚州性9| 亚洲性网| 欧美性爱第一页久久| 搡老熟女免费视频 | aⅴ日韩成人电影av在线免费看av大全| 亚洲国产尤物yw在线观看| 欧美日本中字另类在线| 国产高清MV操逼视频| 天天天天天天天天天天干美女| 日本色色色视频| 久久久精品视频免费观看| 婷色五月| 婷婷情色综合网| 日本午夜福利视频| 热久久国产精品视频大陆精品|