色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

Claude Code Hooks實(shí)戰(zhàn):格式化、安全與測試的6個(gè)配置

Claude Code Hooks實(shí)戰(zhàn):格式化、安全與測試的6個(gè)配置 如果你已經(jīng)開始用 Claude Code 處理日常編碼任務(wù)大概率遇到過這樣的局面它寫得很快但改完的代碼格式化風(fēng)格跟項(xiàng)目規(guī)范完全不是一回事它偶爾會提出一個(gè)看起來很合理的 bash 命令但你沒仔細(xì)看就批準(zhǔn)了測試它也提可更多時(shí)候是建議你“自己跑一下試試”。這些問題不是模型能力不夠而是缺少一套強(qiáng)制性的機(jī)制在工具調(diào)用鏈路里卡點(diǎn)。Hooks 就是干這個(gè)的。這篇文章我會用 6 個(gè)可直接抄走的配置把代碼格式化、安全防護(hù)和自動(dòng)測試這三件事焊死在 Claude Code 的工作流里涵蓋 PreToolUse、PostToolUse、Stop、Notification 等觸發(fā)時(shí)機(jī)和完整腳本適合所有用 Claude Code 寫代碼、并且希望少一點(diǎn)失控感的人。先說清楚一件事hook 不是讓你在 prompt 里多寫幾行“請遵守項(xiàng)目規(guī)范”而是在 Claude 調(diào)用工具Bash、Edit、Write、Read的前后掛上外部腳本。腳本不滿足條件工具調(diào)用就直接被攔下。這種“硬約束”和“軟提示”的區(qū)別就是為什么很多人配置完 hooks 之后代碼合入 CI 的一次通過率明顯提升。1. Hooks 到底解決了什么問題先看三個(gè)最常見的失控現(xiàn)場1.1 失控現(xiàn)場一格式化規(guī)則全憑心情我用 Claude Code 做過一個(gè)小型 TypeScript 項(xiàng)目。模型默認(rèn)的代碼風(fēng)格跟項(xiàng)目里 prettier 配置不能說一模一樣只能說是各寫各的。單引號、雙引號混用對象末尾逗號時(shí)有時(shí)無縮進(jìn)偶爾從兩個(gè)空格跳成四個(gè)。最頭疼的是它每次 Edit 只改一小塊格式化問題被分散在十幾個(gè)文件里肉眼根本盯不過來。你可以在系統(tǒng)提示詞里寫“請始終使用項(xiàng)目 prettier 配置”但模型記不住每一條規(guī)則的細(xì)節(jié)更不會在每次寫入前主動(dòng)跑一遍格式化。等 CI 跑完報(bào)錯(cuò)再回頭修一個(gè)下午就沒了。Hooks 的正確姿勢是在文件落盤之后、或者寫入之前由外部腳本強(qiáng)制執(zhí)行 prettier不讓模型的“個(gè)人風(fēng)格”有機(jī)會進(jìn)入代碼庫。1.2 失控現(xiàn)場二危險(xiǎn)命令說跑就跑Claude Code 的 Bash 工具權(quán)限很大。它可能因?yàn)槟愕哪尘洹扒謇硪幌马?xiàng)目”就執(zhí)行rm -rf node_modules這還算可控但它也可能在改依賴時(shí)順手執(zhí)行npm install --unsafe-perm或者在你沒注意的時(shí)候往~/.bashrc里追加內(nèi)容。AI 沒有“這個(gè)操作影響范圍是否超出當(dāng)前項(xiàng)目”的常識它只有“用戶讓我完成目標(biāo)”的指令。我見過有人被 Claude 連續(xù)執(zhí)行了git push --force覆蓋遠(yuǎn)端提交也見過它在排查問題時(shí)把.env里的密鑰cat到了對話上下文里這些事后都很不好收拾。Bash 類的 hook 就是最后一道閘門命令在執(zhí)行前先過一遍規(guī)則命中風(fēng)險(xiǎn)項(xiàng)直接阻止并告訴 Claude 為什么不行。1.3 失控現(xiàn)場三測試永遠(yuǎn)“我建議你跑一下”另一個(gè)讓我比較無語的行為模式是Claude 改完代碼它的收尾往往是“測試已更新建議你運(yùn)行npm test驗(yàn)證”。如果你不追問它就當(dāng)你已經(jīng)跑過了。偶爾它會主動(dòng)跑但改一次跑一次全量測試幾分鐘就浪費(fèi)在等待上。自動(dòng)測試類的 hook 能解決兩個(gè)層面一是強(qiáng)制改完代碼后自動(dòng)觸發(fā)相關(guān)測試沒有通過就繼續(xù)修二是精準(zhǔn)不是所有變更都跑全量測試而是根據(jù)變更文件反推對應(yīng)的測試范圍。后面我會給出具體的實(shí)現(xiàn)思路。2. 開工前必讀settings.json 和 Hook 觸發(fā)機(jī)制的基礎(chǔ)2.1 配置文件放哪項(xiàng)目級與用戶級Claude Code 的 hooks 配置寫在settings.json里。項(xiàng)目級位置是.claude/settings.json用戶級位置是~/.claude/settings.json。項(xiàng)目級配置隨倉庫走適合團(tuán)隊(duì)統(tǒng)一約束用戶級配置只對本機(jī)生效適合放個(gè)人習(xí)慣類的 hook。我建議大部分自動(dòng)化規(guī)則放項(xiàng)目級這樣團(tuán)隊(duì)里任何人用 Claude Code 都會被同一套規(guī)則約束。需要說明的是項(xiàng)目級配置默認(rèn)情況下對協(xié)作者可見你最好在 README 里寫清楚每個(gè) hook 的用途免得別人 clone 項(xiàng)目后第一次跑被攔截腳本嚇一跳。2.2 六類事件與 matcher 匹配規(guī)則Hooks 的配置結(jié)構(gòu)大致是{ hooks: { PreToolUse: [ { matcher: Edit|Write, hooks: [ { type: command, command: node .claude/hooks/check-format.js } ] } ] } }PreToolUse是事件名表示“工具執(zhí)行之前”。官方支持的事件類型主要有這些事件名觸發(fā)時(shí)機(jī)典型用途PreToolUse工具調(diào)用前攔截危險(xiǎn)命令、檢查寫入內(nèi)容PostToolUse工具調(diào)用后格式化、Lint、自動(dòng)測試NotificationClaude 等待用戶確認(rèn)時(shí)桌面通知提醒StopClaude 回復(fù)生成完成運(yùn)行完整校驗(yàn)、輸出摘要SessionStart會話開始環(huán)境檢查、項(xiàng)目信息注入U(xiǎn)serPromptSubmit用戶提交提示詞時(shí)內(nèi)容過濾、追加上下文PreCompact上下文壓縮前保存任務(wù)進(jìn)度摘要matcher是一段正則表達(dá)式用來限定 hook 作用于哪些工具或哪些調(diào)用。比如Edit|Write表示匹配編輯文件和新建文件操作Bash表示匹配所有 bash 命令也可以寫成Bash\\(.*git.*\\)這類更精確的形態(tài)去匹配包含 git 的命令。2.3 退出碼、stdin JSON 與超時(shí)三個(gè)決定成敗的細(xì)節(jié)hook 命令執(zhí)行時(shí)Claude Code 會通過 stdin 傳入一段 JSON里面至少包含{ session_id: xxx, cwd: /home/user/project, hook_event_name: PreToolUse, tool_name: Bash, tool_input: { command: rm -rf node_modules } }腳本要做的就是讀取這段 JSON然后根據(jù)tool_input內(nèi)容決定返回什么退出碼。我這里約定退出碼0放行工具繼續(xù)執(zhí)行。退出碼2阻止工具執(zhí)行stdout 內(nèi)容會返回給 Claude讓它知道被攔的原因。其他非 0 退出碼表示 hook 自身出錯(cuò)Claude Code 會記錄 warning但不會強(qiáng)制阻止工具。所以攔截類邏輯務(wù)必用2。還有一個(gè)容易被忽略的是timeout。hook 命令默認(rèn)超時(shí)時(shí)間是 60 秒超過會被終止。如果你的自動(dòng)測試腳本可能要跑幾分鐘一定要在 hook 配置里顯式調(diào)大{ type: command, command: node .claude/hooks/run-tests.js, timeout: 120 }另外hook 腳本的 stdout 和 stderr 會被 Claude Code 捕獲并放進(jìn)模型上下文。這意味著你可以在腳本里輸出給模型看的提示信息但不要打印一堆無關(guān)日志否則會白白消耗 token還會干擾模型對工具調(diào)用結(jié)果的理解。3. 前兩個(gè)配置用 PreToolUse 和 PostToolUse 把格式化和 Lint 焊死在編輯動(dòng)作上3.1 配置一文件落盤后自動(dòng)格式化不用再跟模型強(qiáng)調(diào)“別用雙引號”這是我在所有項(xiàng)目里第一個(gè)配的 hook。先給結(jié)論用 PostToolUse 而不是 PreToolUse 做格式化。原因在于調(diào)用時(shí)序。PreToolUse 發(fā)生在 Claude 的 Edit/Write 工具真正寫入文件之前這時(shí)你拿到的file_path是目標(biāo)路徑但文件內(nèi)容還沒寫入或者寫入的是舊版本。如果你在這個(gè)時(shí)機(jī)去prettier --write格式化的是舊文件等 Edit 執(zhí)行完新內(nèi)容覆蓋上去格式化又被沖掉了。所以正確做法是 PostToolUse。腳本在 Edit/Write 完成后拿到文件路徑立刻執(zhí)行格式化命令#!/usr/bin/env node // .claude/hooks/format-on-write.js const fs require(fs); const { execSync } require(child_process); let input ; process.stdin.on(data, (chunk) (input chunk)); process.stdin.on(end, () { try { const payload JSON.parse(input); const filePath payload.tool_input?.file_path; if (!filePath) process.exit(0); const ext filePath.split(.).pop(); const supported [ts, tsx, js, jsx, json, css, md]; if (!supported.includes(ext)) process.exit(0); // 跳過 node_modules 和生成目錄 if (filePath.includes(node_modules) || filePath.includes(dist)) process.exit(0); execSync(npx prettier --write ${filePath}, { cwd: payload.cwd, stdio: pipe, }); console.log([format] ${filePath} 已按項(xiàng)目 prettier 配置格式化); process.exit(0); } catch (e) { // 格式化失敗不阻斷工具調(diào)用避免惡性循環(huán) console.error([format] 格式化失敗: ${e.message}); process.exit(0); } });配置代碼里注冊它{ hooks: { PostToolUse: [ { matcher: Edit|Write, hooks: [ { type: command, command: node .claude/hooks/format-on-write.js } ] } ] } }你可能會擔(dān)心一個(gè)問題格式化之后的文件內(nèi)容和 Claude 在上下文里看到的“剛寫入的內(nèi)容”不一致。實(shí)際影響不大因?yàn)?Claude 下次讀取文件時(shí)讀到的是格式化后的內(nèi)容它自然會基于這個(gè)版本繼續(xù)改。還有一個(gè)坑是 Windows 環(huán)境。npx prettier --write里的路徑如果有特殊字符引號轉(zhuǎn)義容易出問題。建議所有 hook 腳本都用 Node.js 寫避免直接依賴 bash 語法。后面所有示例我都用 Node。3.2 配置二Lint 結(jié)果自動(dòng)回流給模型從源頭減少“改完又錯(cuò)”的來回格式化解決的是風(fēng)格Lint 解決的是“代碼有沒有明顯問題”。我在這個(gè) hook 里跑的是 ESLint并且只針對 Claude 改過的文件不做全量掃描。#!/usr/bin/env node // .claude/hooks/lint-on-write.js const { execSync } require(child_process); let input ; process.stdin.on(data, (chunk) (input chunk)); process.stdin.on(end, () { try { const payload JSON.parse(input); const filePath payload.tool_input?.file_path; if (!filePath || filePath.includes(.test.)) process.exit(0); try { const out execSync( npx eslint ${filePath} --max-warnings0 --format compact, { cwd: payload.cwd, stdio: pipe } ).toString(); // 無錯(cuò)誤則靜默退出 process.exit(0); } catch (e) { const output e.stdout?.toString() || ; // 只輸出錯(cuò)誤摘要最多截取 1500 字符避免刷爆上下文 const summary output.split(\n).slice(0, 20).join(\n).slice(0, 1500); console.error([lint] ESLint 檢測到問題請修復(fù)后再繼續(xù): \n${summary}); process.exit(0); } } catch (e) { process.exit(0); } });注意這里我讓 exit code 保持 0沒有用 2 阻止寫入。為什么不攔截因?yàn)橛行?lint 錯(cuò)誤是結(jié)構(gòu)性的Claude 需要先寫入代碼、看到報(bào)錯(cuò)、再修復(fù)這是一個(gè)迭代過程。如果你在寫入時(shí)就把它攔住模型會陷入“不知道代碼哪里有問題”的困境。更好的做法是把錯(cuò)誤信息喂給它讓它自己判斷怎么改。--max-warnings0這參數(shù)很有用。它把 warning 也當(dāng)作 error 處理防止項(xiàng)目里積累一大堆“不痛不癢”的警告。對 Claude 這種大模型來說警告太多會稀釋注意力寧可讓 hook 直接暴露出來。有人會問eslint 的--fix能不能直接放在 PostToolUse 里自動(dòng)修可以但建議單獨(dú)跑。因?yàn)?-fix可能改出模型意料之外的結(jié)果尤其是一些涉及代碼結(jié)構(gòu)的規(guī)則。我的經(jīng)驗(yàn)是格式化可以自動(dòng)lint 修復(fù)盡量讓模型自己來否則它下次可能重復(fù)犯同樣的錯(cuò)。4. 中間兩個(gè)配置給 Bash 命令套上安全圍欄給寫入內(nèi)容加上敏感信息閘門4.1 配置三危險(xiǎn)命令黑名單 項(xiàng)目目錄白名單雙管齊下Bash hook 是整個(gè)安全體系里最重要的一環(huán)因?yàn)?Claude Code 的大多數(shù)破壞性操作都是通過 Bash 完成的。我的攔截腳本分兩層第一層是黑名單直接命中關(guān)鍵詞就阻止。這里列幾個(gè)我實(shí)測下來比較實(shí)用的規(guī)則const BLOCKED_PATTERNS [ /rm\s-rf\s\//, // 刪除根目錄 /rm\s-rf\s~/, // 刪除用戶目錄 /mkfs\./, // 格式化磁盤 /git\spush\s.*--force/, // 強(qiáng)推 /curl.*\|\s*(ba)?sh/, // curl 管道執(zhí)行腳本 /npm\sinstall\s-g\s.*--unsafe/, /chmod\s-R\s777/, /sudo/, ];第二層是白名單思路這個(gè)更重要。對rm、mv、chmod這類具有破壞性的命令我會校驗(yàn)?zāi)繕?biāo)路徑是否在項(xiàng)目目錄內(nèi)。路徑不在項(xiàng)目內(nèi)直接阻止。實(shí)現(xiàn)得并不復(fù)雜關(guān)鍵在于用 Node 的path.resolve把相對路徑轉(zhuǎn)成絕對路徑再做前綴比較。// .claude/hooks/guard-bash.js const path require(path); let input ; process.stdin.on(data, (chunk) (input chunk)); process.stdin.on(end, () { try { const payload JSON.parse(input); const command payload.tool_input?.command || ; const cwd payload.cwd; for (const pattern of BLOCKED_PATTERNS) { if (pattern.test(command)) { console.error([guard] 命令命中危險(xiǎn)規(guī)則: ${pattern}\n已阻止執(zhí)行。如果你確實(shí)需要執(zhí)行請手動(dòng)在終端操作。); process.exit(2); } } // 對 rm/mv 做路徑范圍檢查 if (/^(rm|mv|chmod)\b/.test(command)) { const unsafe command .split(/\s/) .filter((arg) arg.startsWith(/) || arg.startsWith(~) || arg.startsWith(../)) .some((arg) { const abs path.resolve(cwd, arg); return !abs.startsWith(path.resolve(cwd)); }); if (unsafe) { console.error([guard] 檢測到目標(biāo)路徑超出當(dāng)前項(xiàng)目目錄已阻止執(zhí)行。); process.exit(2); } } process.exit(0); } catch (e) { process.exit(0); } });這個(gè)腳本的思路是“默認(rèn)信任但有限制”。Claude 在項(xiàng)目里跑npm install、git diff、ls這類命令基本不受影響一旦碰到影響范圍超出項(xiàng)目的操作就會被攔截。exit 2的關(guān)鍵在于Claude 能看到 stderr 里的提示它會自己調(diào)整方案。我見過一個(gè)有意思的案例Claude 想把日志寫到/tmp/debug.log被這個(gè) hook 攔了。它看到提示后改為寫到項(xiàng)目下的.logs/debug.log還順手把.logs/加進(jìn)了.gitignore。這說明給模型一個(gè)“為什么不行”的反饋比單純阻止更有效。4.2 配置四敏感信息檢測防止密鑰被寫入代碼或進(jìn)入對話上下文Claude 在寫代碼時(shí)偶爾會“好心”把真實(shí)密鑰寫進(jìn).env文件旁邊或者在測試代碼里硬編碼一個(gè) API Key。更隱蔽的是它可能在排查問題時(shí)直接cat .env把密鑰讀進(jìn)上下文然后這些內(nèi)容就可能出現(xiàn)在日志里。敏感信息 hook 我配在 PreToolUse分別攔截兩類場景Edit/Write檢查tool_input.content和file_path如果發(fā)現(xiàn)密鑰特征阻止寫入。Bash檢查命令里是否有讀取敏感文件或把敏感信息寫入文件的操作。// .claude/hooks/guard-secrets.js const SENSITIVE_PATTERNS [ /sk-[A-Za-z0-9]{20,}/, // OpenAI / Anthropic 風(fēng)格 key /AKIA[0-9A-Z]{16}/, // AWS Access Key /ghp_[A-Za-z0-9]{36,}/, // GitHub Token /BEGIN (RSA|EC|OPENSSH) PRIVATE KEY/, // 私鑰塊 ]; const SENSITIVE_FILES [.env, .env.local, .pem, id_rsa, id_ed25519]; let input ; process.stdin.on(data, (chunk) (input chunk)); process.stdin.on(end, () { try { const payload JSON.parse(input); const tool payload.tool_name; const inputData payload.tool_input || {}; if (tool Edit || tool Write) { const content inputData.content || ; const filePath inputData.file_path || ; const fileBasename path.basename(filePath); if (SENSITIVE_FILES.includes(fileBasename) SENSITIVE_PATTERNS.some((p) p.test(content))) { console.error([guard] 檢測到疑似敏感信息被寫入已阻止。請改用環(huán)境變量或 .env.local 維護(hù)密鑰。); process.exit(2); } } if (tool Bash) { const command inputData.command || ; if (SENSITIVE_FILES.some((f) command.includes(cat ${f}) || command.includes(cat ./${f}))) { console.error([guard] 阻止讀取敏感文件避免密鑰進(jìn)入上下文。); process.exit(2); } } process.exit(0); } catch (e) { process.exit(0); } });這個(gè) hook 的難點(diǎn)在于誤報(bào)控制。比如.env里本身可以不寫密鑰只放配置項(xiàng)名稱項(xiàng)目文檔里也可能出現(xiàn)類似sk-xxx的示例占位符。解決方案是只攔截“文件路徑本身很敏感且內(nèi)容命中密鑰特征”的情況。普通代碼文件里出現(xiàn)sk-開頭的測試占位符我選擇放行因?yàn)槟呛芸赡苁?mock 數(shù)據(jù)。配好之后我建議你在測試環(huán)境故意觸發(fā)一次確認(rèn)攔截生效、模型能被正確引導(dǎo)。如果發(fā)現(xiàn)誤報(bào)就調(diào)整正則的嚴(yán)謹(jǐn)度不要因?yàn)椤皩幙刹粩r也不誤判”而把規(guī)則關(guān)掉安全這種事兒寧可多攔幾次。5. 最后兩個(gè)配置文件變更后自動(dòng)跑測試、任務(wù)完成時(shí)主動(dòng)提醒5.1 配置五PostToolUse 精準(zhǔn)觸發(fā)相關(guān)測試而不是傻等全量執(zhí)行自動(dòng)測試最簡單的實(shí)現(xiàn)是監(jiān)聽PostToolUse的Edit|Write事件文件一變就跑npm test。但全量測試在稍大一點(diǎn)的項(xiàng)目里可能要好幾分鐘Claude 每改一次文件就觸發(fā)一次交互體驗(yàn)會非常差。我采用的策略是根據(jù)文件路徑縮小范圍// .claude/hooks/test-on-change.js const { execSync } require(child_process); const path require(path); let input ; process.stdin.on(data, (chunk) (input chunk)); process.stdin.on(end, () { try { const payload JSON.parse(input); const filePath payload.tool_input?.file_path || ; const cwd payload.cwd; // 只對 src 下的業(yè)務(wù)代碼觸發(fā) if (!filePath.startsWith(src/)) process.exit(0); if (filePath.includes(.test.) || filePath.includes(.spec.)) { // 改動(dòng)的是測試文件直接跑這個(gè)測試 execSync(npx vitest run ${filePath} --reporterdot, { cwd, stdio: pipe, timeout: 60000, }); console.error([test] ${path.basename(filePath)} 測試通過); } else { // 改動(dòng)的是業(yè)務(wù)代碼跑相關(guān)測試 execSync(npx vitest run --changed --reporterdot, { cwd, stdio: pipe, timeout: 60000, }); console.error([test] 相關(guān)測試通過); } process.exit(0); } catch (e) { console.error([test] 相關(guān)測試失敗請查看上面的報(bào)錯(cuò)并修復(fù)\n${e.stdout?.toString().slice(0, 1000)}); process.exit(0); } });如果你用的測試框架不是 vitest思路完全一致Jest 可以用jest -o只跑發(fā)生變更的文件相關(guān)的測試其他框架可以通過 git diff 計(jì)算變更文件再傳給測試命令。這里有兩個(gè)細(xì)節(jié)值得說。一是timeout我給的是 60 秒因?yàn)闇y試命令本身要預(yù)留執(zhí)行時(shí)間如果你在 hook 配置里又設(shè)了一個(gè)更小的 timeout頂層的會先生效導(dǎo)致命令被提前 kill。所以建議兩處都設(shè)成一致。二是失敗時(shí)不要 exit 2。為什么因?yàn)闇y試失敗不代表代碼寫入是錯(cuò)誤的Claude 需要先完成這次工具調(diào)用、看到測試失敗的反饋然后進(jìn)行下一輪修復(fù)。如果我們把 exit 2 當(dāng)作“阻止工具執(zhí)行”相當(dāng)于 Claude 寫了一個(gè)代碼但因?yàn)闇y試沒過就不讓它寫這會陷入奇怪的狀態(tài)。測試 hook 的核心價(jià)值是“反饋”不是“阻斷”。每次測試失敗Claude 都會在下一輪嘗試修復(fù)直到通過。5.2 配置六Stop 和 Notification 事件把等待時(shí)間變成可控提醒最后兩個(gè)配置解決的是“人機(jī)協(xié)作時(shí)的通知”問題。用 Claude Code 時(shí)它經(jīng)常會停下來等人批準(zhǔn)一個(gè) bash 命令或者問一個(gè)問題這時(shí)候如果你切到別的窗口可能很久都不知道需要你確認(rèn)。Notification 事件能在這里觸發(fā)一個(gè)桌面通知。// .claude/hooks/notify-done.js let input ; process.stdin.on(data, (chunk) (input chunk)); process.stdin.on(end, () { try { const payload JSON.parse(input); const event payload.hook_event_name; const title event Notification ? Claude Code 需要確認(rèn) : Claude Code 待辦提醒; // macOS const { execSync } require(child_process); try { execSync(osascript -e display notification 請查看 Claude Code with title ${title}); } catch (e) { // Linux try { execSync(notify-send ${title} 請查看 Claude Code); } catch (_) {} } process.exit(0); } catch (e) { process.exit(0); } });注冊到 Notification 事件即可。至于 Stop 事件我把它用作“任務(wù)收尾檢查”。Claude 每次回復(fù)完成后這個(gè) hook 會檢查一下 git 狀態(tài)如果有未格式化的文件直接輸出提醒讓它主動(dòng)處理。// .claude/hooks/stop-check.js const { execSync } require(child_process); let input ; process.stdin.on(data, (chunk) (input chunk)); process.stdin.on(end, () { try { const payload JSON.parse(input); const cwd payload.cwd; const changed execSync(git status --porcelain, { cwd, stdio: pipe }).toString(); const unformatted changed .split(\n) .filter((line) /\.(ts|js|tsx|jsx|json|css|md)$/.test(line) line.startsWith( M )); if (unformatted.length 0) { console.error( [check] 以下文件有修改但可能未格式化如果確認(rèn)已完成所有任務(wù)請運(yùn)行 prettier --write 處理\n${unformatted.slice(0, 5).join(\n)} ); } process.exit(0); } catch (e) { process.exit(0); } });這個(gè) hook 不會阻止任何操作只是提供一個(gè)“事后提醒”。它的價(jià)值在于解決 Claude 的“總覺得自己干完了”問題——每次回復(fù)完它都能看到還有哪些代碼處于臟狀態(tài)從而決定是否繼續(xù)收拾。6. 完整配置匯總與排錯(cuò)實(shí)錄一份可直接抄走的 settings.json6.1 六合一配置示例把上面六個(gè) hook 合并到項(xiàng)目.claude/settings.json里大概長這樣{ hooks: { PostToolUse: [ { matcher: Edit|Write, hooks: [ { type: command, command: node .claude/hooks/format-on-write.js }, { type: command, command: node .claude/hooks/lint-on-write.js }, { type: command, command: node .claude/hooks/test-on-change.js, timeout: 60 } ] } ], PreToolUse: [ { matcher: Bash, hooks: [ { type: command, command: node .claude/hooks/guard-bash.js }, { type: command, command: node .claude/hooks/guard-secrets.js } ] }, { matcher: Edit|Write, hooks: [ { type: command, command: node .claude/hooks/guard-secrets.js } ] } ], Notification: [ { matcher: .*, hooks: [ { type: command, command: node .claude/hooks/notify-done.js } ] } ], Stop: [ { matcher: .*, hooks: [ { type: command, command: node .claude/hooks/stop-check.js } ] } ] } }請把format-on-write.js、lint-on-write.js、guard-bash.js、guard-secrets.js、test-on-change.js、notify-done.js、stop-check.js這幾個(gè)腳本放到.claude/hooks/目錄下。文件路徑按你項(xiàng)目實(shí)際情況調(diào)整。6.2 排錯(cuò)實(shí)錄我踩過的四個(gè)坑第一個(gè)坑是 matcher 寫太寬。我一開始把 PreToolUse 的 matcher 寫成.*結(jié)果 Claude 每次調(diào)用任何工具都要跑一遍 guard 腳本雖然腳本本身很快但大量 JSON 解析和正則匹配拖慢了整體交互。后來改成了Bash才清爽。第二個(gè)坑是 hook 腳本里忘了讀 stdin。Claude Code 通過 stdin 傳入 JSON如果你的腳本不讀 stdin 直接開始執(zhí)行是拿不到tool_input的。最穩(wěn)妥的寫法就是我上面反復(fù)用的那套process.stdin.on(data)累積后在end事件里處理。第三個(gè)坑是 exit code 語義混淆。早期我把攔截函數(shù)寫成process.exit(1)結(jié)果工具并沒有被阻止只是 Claude Code 報(bào)了個(gè) warning。后來查文檔確認(rèn)PreToolUse 場景下必須用exit(2)才會真正攔截。所以攔截類邏輯請務(wù)必記住2。第四個(gè)坑是 Windows 下路徑和 shell 雙引號問題。在 Windows 上用npx prettier --write ${filePath}如果路徑里帶空格Node 的execSync會解析出錯(cuò)。我的解決辦法是統(tǒng)一用spawnSync搭配參數(shù)數(shù)組避免 shell 轉(zhuǎn)義或者把路徑中的空格做轉(zhuǎn)義處理。最簡單的方案是讓所有腳本都用 Node 編寫盡量不依賴 shell 特殊語法。6.3 還能怎么擴(kuò)展這 6 個(gè)配置是我的基礎(chǔ)配置你可以按需升級。比如在SessionStart事件里注入一個(gè)“當(dāng)前項(xiàng)目測試命令”的提示讓 Claude 一開始就知道用什么命令跑測試。在UserPromptSubmit事件里檢查 prompt 里是否包含“忽略所有規(guī)則”這類注入嘗試遇到可疑內(nèi)容直接攔截。在PreCompact事件里把當(dāng)前未完成的任務(wù)摘要保存到文件上下文壓縮后 Claude 還能記得之前做到哪一步。我個(gè)人在實(shí)際操作中的體會是hooks 配置完成后最明顯的變化不是“代碼變好了”而是“規(guī)則沖突變少了”。格式化、安全、測試這三件事從“需要時(shí)刻盯著”變成了“系統(tǒng)自動(dòng)守門”我只需要在 Claude 被 hook 攔住時(shí)看一眼原因然后決定是調(diào)整規(guī)則還是讓它換個(gè)方案。這種“定好規(guī)則再放手”的開發(fā)方式才是 Claude Code 這類工具真正讓人放心的用法。最后再分享一個(gè)小技巧所有 hook 腳本里那兩行process.stdin.on(data)的讀取邏輯是同一個(gè)套路建議你封裝成一個(gè)readPayload()公共函數(shù)放到hooks/util.js里每個(gè)腳本都 require 它。這樣以后新增 hook 時(shí)代碼能少寫一大半也方便統(tǒng)一處理異常。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久伊人网视频一区二区三区| 色五月激情AV在线| 青青草好吊| 国产精品久久泡妞网站| 色综合婷婷| 美女黑人91神马| 亚洲加勒比久久日本道| 欧美日韩成人| 日本不卡一二区| 国产精品久久久久久久久AV大片| 九一性生活免费视频| 伦激情人妻另类人妻| 日韩精品国产精品五码一区二区| 亚洲人精品久久久| 日本道久久综合色色| 日韩久久三区| 91超碰在线观看| 日韩欧美中文日韩欧美色| 97超碰逼| 八戒午夜福利理论片| 日韩精品三区四区| 起碰97| 99色视频| 午夜啊啊| 日本不卡高清免v欧美日韩在线观看| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 亚洲av总站| 国产午夜在线观看| 久久一区无码| 国产精品久久天天干| 亚洲天天艹| 亚洲色人阁| 色综合色色| 久久超碰天天| 翘臀vidoes| 久九九九| 嗯啊不要啊啊在线观看视频| 欧州一区二区三区四区| 物尤视频一区二区| 成人性爱av| 亚洲男人天堂2016| 欧美黑人精品一区二区| 91高清欧美| 五月天激情小说| 久久精品久久久久久久| 国产女上位好爽在线| 一区超碰一区| 东京太热久久久| 啊啊啊在线观看| 91女人的网站| 日韩性爱毛片操骚逼| 欧美白嫩在线放| 淫荡少妇免费| 久久精品无码一区二区三区| 青青11操操操操操操操操| 东京热一区二区中文字幕| 国产精品制服丝袜中文字幕日韩一区二区三区| 一区不卡在线观看av| 日韩精品国模| 日韩在线视频1234| 国产美女自拍AV| 91超碰在线播放| www.久久| ji熟女.com| 蜜臀久久在线视频| 亚洲人人操| 久久久久久久免费A片国产成a人亚洲精∨品无码| 大香蕉伊在线久草麻豆天堂故事| 国产熟女完整版中字| 亚州黄站| 伊人青青草久久| 97超碰人人模人人拍人人| SUV一区二区在线看| 黑人无码一区二区| 97ai亚洲| 美女诱惑在线一区| 色色色综合网| 老司机深夜影院18未满| 啊啊啊想要| 9久久9综合| 口爆吞精在线观看| 91色综合| 后入人妻无码| 久久久99999久网站| 国产版a级片直播在线| 蜜臀久久99精品久久久| 国产在线激情| 久久久久密臀视频| 99热97| 强奸乱伦动态污图免费 | 精品人妻15区| 精品人妻一区二区三区视频| 久久久com| 日韩中文字幕人妻视频| 97色亚洲| 91狠狠狠| 性爱AV天堂| 久久久啊啊| 97久久视频| 国产隔壁老王影院在线| 欧美AB在线| 91精品人妻五十路| 亚洲诱惑天堂| 中文字幕av丝袜| 青青草原人妻| 天天日天天插| 99久久九九| 日本视频在线观看污污污| 激情小说日韩无码| 午夜.DJ高清在线观看免费7 | 张柏芝国产一区在线观看| 欧美一品道| 97色97好| 116美女午夜| 亚洲人妻一区二区三区| 俺去俺来也在线www| 自拍内地三级在线观看| 一二三区操逼国产91| 97鸡把在线视频| 国产精品69久久久久孕妇欧美| 婷婷情色五月天| 亚洲情色五月天 | 999久久久免费精品国产牛牛| 好涩综合| 人妻素股| 91 国产丝袜在线播放-百度| 亚洲日韩东京热一区| 99re9这里只有精品| 精品无码久久久| 69精品人人人人| 凹凸视频特色日本特黄| 先锋精品av色鲁| 亚洲国产欧美中文永久| 欧美精品日韩一区二区| 色婷婷网| 中文字幕视频2区| 天天日日舔舔| 肥臀熟女福利视频一区二区| 亚洲不卡不卡中文字幕不卡 | 热天堂一区二区| 99丝袜福利在线播放| 国模限制级电影| 综合色图区| 深爱五月天| 色欲无码人妻日韩欧美精品| 97av在线观看| 亚洲本色精品一区二区久久| 亚洲熟女性高潮久久久| 亚洲欧美日韩夜夜| 欧美中文字幕男人天堂久久精品| 91 国产丝袜在线放观看| 巨爆乳肉感一区二区三区竹菊影视| 翔田千里av一区二区三区| 午夜男人一级A片7777| 久久欧美按摩999| 97超碰超碰| 少妇精品久久| 99久国产精品午夜性色福利| 黄色av片三级三级三级免费看| 色噜噜精品一区二区三| 熟女被操视频网址| 亚洲欧美一区二区三区在钱蜜桃 | 久热超碰| 欧美香蕉视xxx| 日韩情色AV| 91精产一区二区三区| 伊人 俄罗斯 a v| 久热99999| 大香蕉人妻久久| 伊人天天久久动态图| 尤物av网站免费在线播放| 久久久久亚洲熟妇熟女| 手机在线人成免费视频| 亚洲午夜免费狠狠干| 男人的天堂2018.| 国产a级精品| 98福利在线视频| 青女偷拍网| 蜜臀久久99精品久久久久| 国产女同视频在线播放| 91精品国产麻豆国产自产在| 丝袜美腿诱惑亚洲欧美视频在线观看 | 91欧美长吊| 亚洲少妇激情一区二区三区| 99999精品| 人人看人人插| 婷婷五月天色| 欧洲精品一二三在线| 久久精品国产亚洲粉嫩| 91一区二区三区蜜桃| 91操人| 91人妻丝袜无码| 天天内射| 三四中文字幕| 亚洲成人免费中文字幕| 亚洲人成网www| 亚州久久9| 四虎影视国产精品| 国产一级内射无挡观看| 一区二区三区精品黑丝白丝酒店对鸡 | 内射夫妻三片| 亚洲五月丁香花狠狠干一区二区三区| 中文字幕超碰CAO| 久操精品| 无码免费一区二区三区啪啪| 熟妇激情| 激情 欧美 亚洲 小说| 91超级碰碰| 天天天天天天天天综合| 四虎午夜影院| 日本精品人妻少妇一区二区| 天天久久久久久| 天天干天天燥| 精品久久在线区一区| 国产视频大全| 91精品人| 91亚洲青青草原精品1区| 好一吊区二区| 婷婷视频在线免费观看| 女生自91网站| 国产精品人人爽人人做可爱福利| 又黄又爽在线观看视频 | 青青青青操国内视频在线| 免费无码国产精品v片在线观看| 草草网站影院白丝内射| 91爱做| 国产精品美女久久久久久网站| 日本黄 R色 成 人网站| 日韩人人精品| 国产www色在线观看| 校园春色欧美色图| 97干97色| 人妻天天操天天爽视频免费| 97超碰9| 亚洲欧美国产其他二区| www.高清无码诱惑一区.com | 亚洲AV无码天美传媒一区| 高清无码91| 日韩精品中文字幕一| 96免费视频在线| 热思思免费视频| 国产亚洲人妻综合日韩 久久| 一二区在线观看视频| 亚洲成a人在线观看久| 天天做天天爱天天爽AV| 黑人美精品 A片| 久久久久久久国产| 国产日韩精品人妻久久久久色欲网站| 啊啊啊啊啊操我视频| 伊人天天久久动态图| 成人综合色网| 亚洲欧美综合| 亚洲综合夜色| 色综合网1| 劲爆欧美人妖三区91| 久久一区二区高清免费| 久久亚洲天堂| 女人爽到高潮潮喷18禁网站| 中文字幕乱码在线观看| 狠狠久久四虎| 日韩一区二区精彩视频| 日日夜夜噜| 囯产操逼片| 久久久久久久久女黄| 日本天天操| 日本欧美中文字幕| 久久av色| 欧亚性爱啪啪| 中文字幕青青草| 五月婷婷综合网| 人人玩人人添人人澡免费| 欧美伊人电影| 麻豆AV一区二区| 欧美韩日精品资源| 欧美999| 91社操逼| 久久超碰、| 久草成人影片| 激情五月天中文字幕色| 国产成人自拍视频在线| 国产婷婷一区| 十八禁电影伊人网| 国产黄色剧情影片麻豆免费播放| 国产精品探花视频| 人妻天堂综合网| 91 丝袜在线观看| 国产91亚洲精品一区二区三区| 强奸乱伦亚洲第一页| 成年女人一区| 91大香蕉伊人| 久草视频在线视频在线视频在线观看| 夜夜操夜夜爽夜夜高潮| 日本综合色图| 99热综合| 日韩综合97P| 78精品| 亚洲成a人在线观看久| 亚洲 91 在线| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 亚洲精品一区二区免费在线观看| 成·人免费午夜在线观看| 日韩不卡毛片Av免费高清| 亚洲AO在线| 日韩精品啪啪啪| 国产三级中文有码在线视频| 成人综合视频久久| 国产日韩精品suv| 夜夜嗨一区二区| 中文字幕免费在线观看| 岛国黄色大片网站| 欧美色图91p| 久久精品人人做人人看| 亚洲日韩一区电影| www欧美91| 牛黄色久午久| AV在线资源| 俺去啦俺来也久久综合| 91人妻超碰| 日本大香蕉综合网红本杳社区| 中文字幕交换人妻| 精品十三区| 亚洲欧美另类图片| 中文字幕黑人大片| 精品对白久久不卡| 久久香蕉国产传媒一区剧情天美| 久久久性少妇| 婷婷操逼| 久草毛片| www.色婷婷色综合| AV女资源| www.久久| 羞涩视频| 天天干2区3区| 美日韩男女操屄视频| 中文字幕在线观看第二页| 一区在线精品中文字幕| 老女人日韩美91| 尤物av网站免费在线播放| 97一区二区三区视频| 99999re| 很很干很很操| 另类图片综合| 久操 高清| 98超碰日本| 亚洲色图日韩精品| 国产成人啪一区二区| 操逼www.| 97热视频在线观看| 五月婷婷丁香中文字幕| 欧美97免费| 伊人色综合网电影| 大香蕉欧美伊| 色嗨嗨在线| 开心五月婷婷| 国产精品免费久久久久久久久久| 91狠婷| 天美国产三级传媒| 五月天婷婷在线看| 伊人9| 日韩中文字幕视频在线观看| 亚州日韩97| 97任你吞精| 狠狠操狠狠爱| 蜜桃中文字日产乱幕4区| 欧美大香蕉专区网| 黑丝日韩av丝袜av| 插欧洲美女欧美精品| 2017天天拍大香蕉| 欧美色图99| 色噜噜国产在线| 亚洲无码视频免费在线观看网址! J?P?NESEHD熟女熟妇伦 | 99精品热| 五月天成人综合| 思思热在线视频免费| 午夜AV污污污| 91N五十路| 欧美久久伊人| 91性高朝久久久久久久久| q2午夜理论片夜色av| 裸体美女国产免费久久久网站| www.99色| 天天操妹子| 欧美日本天堂| 69超碰综合| 国产高清26uuu| 亚洲色阁| 人妻喷水| 日韩精品人妻中文字幕久久久| 偷看洗澡一二三区美女| 岛国在线免费视频| 色97干| 国产美女激情| 色呦呦、国产精品| 99色综合| 女同性恋久久| 99re公开精品免费视频| 中出20p| 亚洲色性情三级| 久久女婷| 播播亚洲小说亚洲| 欧美亚洲素人制服精品| 91亚洲在线| 天天干1区2区在线| 色欲人妻一区二区在线| 殴美牲| 久久五月视频| 亚洲美女自拍偷拍视频| 亚洲精品久久久久久久蜜桃臀| 乱色视频中文字幕| 国产一区二区三区免费视频在性观看 | 性爱综合一区二区| 久久一区二区三区四区五区| 色九九久九九| 9.1小视频| 亚洲熟女乱综合一区二区三区| 日韩欧美字幕亚洲一区二区| 天天干,天天日| 久久香蕉国产传媒一区剧情天美| 伊人嫩草| 日日夜夜狠狠| 欧美疯狂做爰xxxx| 久久久久久国产精品免费网站| av一区二区三区不卡| 久久系列| 超碰人妻97| 超碰97综合网| www.av不卡中文字幕| 欧美日韩精品久久| 超碰97最新人妻| 99九九久久| 人妻在线臀日韩| 日韩乱码Av| 看日韩美女二区三区免费操逼视频 | 午夜性| 久久久久久久久久久人妻| 大奶啊啊好爽| 爆乳免费黄网站| 成人五月香网在线| 97在线免费看| 中文字幕丝袜人妻| 91九色丨国产丨爆乳| 91大胆欧美| 亚洲 欧美 中文 日韩超碰 | 国产综合久| 免费视频观看60秒| 亚洲综合有码| 91亚洲人| 亚洲啪啪综合?v一区综合精品区| 亚洲网站一区二区在线| 久久国产熟女影院| 午夜视频久久久久一区| 欧美强奸乱能| A片三级无码| 国产一区二区啪啪视频| 成人黑料社久久| 色九月婷婷| 综合网欧美在线| 青青国产精品在线| 亚州色图狠狠干| 97干天天| 97久久天天综合色天天综合色电影| 视频在线中文字幕| 东京热,男人的天堂| 亚洲色图综合| 国产99999| 国产精品com| 91东京热男人的天堂| 久久黄色视频一区二区三区| 日韩免费看黄片| 99色婷婷| 日本丝袜美腿人妻九九| 淫乱图区| 婷婷人妻激情| 蜜臀无码视频在线观看| 午夜AV人气不卡| 亚洲aV性爱| 一二三四免费视频| 97 超碰 人人做 人人爱| 色天堂在线观看| 欧美情色亚洲| 老熟女乱伦片| 国产日本久久免费精品| 亚洲一区深夜| 小草av不卡亚洲二区| 蜜桃午夜视频一区二区| 国产精品白领在线观看 | www.91理论| 99色热| 夜夜操av亚洲一区二区| 99精品久久久久久| 亚州男人天堂| 一类av片在线看| 午夜天堂啪啪| juliaann丝袜大战黑鬼| 亚洲天堂另类| 国产在线观看91精品一区| 亚洲精品影视老司机| 欧美亚性天堂| 久热久| 999精品久久久久久久| 三级AV入口| 深爱五月婷婷| 天堂射| 91网站18禁| 约操熟妇| 最新一二三区视频| 一本一道久久综合久久| 国产亚洲性生活视频播放| 国产一区二区啪啪视频| 亚洲国产综合久久天堂| 日日骚av| 天堂а√在线最新版在线 | 亚洲熟女偷拍在线观看| 欧美色999| 中文字幕在线观看二区三区| 久久精品一区| 天天日天天干少妇日| 操操操日本的逼| 亚洲欧美校园另类春色| yazhouzaixian| 久久久国产av美女私房| 曰韩精品九九无码| 亚洲色图第四色| 国产精品久久久久久高清无码免费看| 五月丁香啪啪| 天天综合网亚洲综合网| 国产极品精品美女视频| 99久久这里只有精品| 国产日韩中文字幕欧美| 日韩在线性爱免费视频| 在线啊啊啊啊| 好吊色综合| 蜜臀AV网站| 素人无码中文字幕| 婷婷av在线中文字幕| 天美麻花大全视频| 亚洲天天精品| 国产精品亚洲一级av第二区| 97综合在线观看| 久久老熟女| 日韩AC| 97视频在线视频| 18禁无码永久免费无限制| 欧美熟妇视频| 国产精品操| 欧美色五月| 日韩在线观看AV| 国产欧美岛国精品一区| 九九热精彩视频| 国产一区二区免费福利片| 激激五月| 嗯嗯啊好爽| 淫妻综合网| 青青久久久| 日韩少妇一区二区三区| 97操综合| aⅴ日韩成人电影av在线免费看av大全| 99国产精品免费| 爱妃国产亚洲视频中文字幕| 青青草在线成人视频| 97天堂| 精品无码久久久| 超碰免费人妻在线| 花野真衣| 在线视频 亚洲精品| 欧美日韩色图片| 网友自拍第一页| 国产黄a三级三级三级av在线看| sewuyueav| 长长久久88视频| 91亚洲网站| 国产这里只有精品| 久久一区二区三区四区五区| 日本天天吊| 欧美黄色手机在线观看| 五月天久久婷婷亚洲 | 色婷婷av在线观看| www亚洲欧美| oumeisetu综合| 国产精品999aaa| 精品久久久久黄少妇| 麻豆国产视频精品观看| 久久一本大香蕉 | 欧美成人亚洲精品| 国产精品久久久久久照片| 成熟熟女国产精品一区二区| 97人人操人人摸人人爱| 蜜臀99久久精品久久久久久| 色婷婷丁香五月| 欧美日韩中文视频播放| 日韩在线人妻网站| 国产精品蜜乳AV| 强乱老妇中文字幕| 欧洲综合视频| 巨爆乳一区二区爆乳区| 色97国产69香蕉| 久久XX| 老司机福利青青草| 试看福利| 免费精品福利在线观看| 校园春色五月天| 国产精品久久久蜜臀| 日韩激情啪啪啪| 欧洲站一级二级三级h| 国产又粗又又黄又猛| 国产精品点击进入在线影院高清| 在线观看视频91| 久久精品性| 91色图| 色偷综合| 夜夜操91744565| 欧美欧美啪啪视频| 青青草中日韩在线| 香蕉在线一区二区三区| 天天懆天天日| 精品久久97| 激情亚洲天堂| 丁香五月电影| 午夜视频久久久久一区| 女人天堂网| 韩日男人的天堂| 人妻中文字幕日韩电影| 久草加勒比一区在线| 性爱AV天堂| 长长久久88视频| 美国精品国产精品| 欧美激情内射| 国产白丝在线| 婷婷久久综合| 亚洲一级特黄大片在线播放91| 亚洲同性aV综合| 91色图片| 激情丁香五月| 国产日韩欧美亚洲精品95 | 自慰白浆在线观看| 精品亚洲成人免费在线| 欧美人妖内射| 99re99视频在线免费观看| 99精品在线播放| 国产精品国产自产高清AV| 天天干人人乐| 2017天天透天天通天天擦| 黑操B| 日本一区二区不卡精品| 欧美大香蕉久| 欧美色视| 夜夜骑日日| 精品一区二区三区四区女| 九九99久久| 在线综合色| 青娱乐老司机视频| 九九九网站| 人妻人久久精品中文字幕| 一区二区 日韩 欧美 国产 传媒| 色播五月丁香| 亚洲黄色网址视频| 国产一区二区三区免费视频在性观看| 99av| 97精品一区| 91nbbbbbb| 9超碰免费| 亚洲 欧美 91| 伊人久久艹| 色久桃花影院在线观看| 999综合网| 加勒比aⅴ| 亚洲中文字幕一区| 在线观看视频91| 欧美成人精品一区二区三区| 精品久久久久久亚洲| 欧美黄色片AAAAA| 盗摄女人妻在线| 国内精品a| 国产偷人伦激情在线观看| 欧美78P| 久区视频| 婷婷10月天青娱乐| 欧美在线第五页| 亚洲色图综合网| 无码人妻精品一区二区三区九九 | 亚洲精品97久久| 十八禁黄色| 毛片99-全集电影手机免费观看完整-B029AV | 69AV女优男人的天堂| 国产亚洲人妻综合日韩 久久| 色婷婷香蕉| 无码日韩网站| 一区二区三区精品久久| 国产懂色精品国产av| 国产麻豆福利av在线播放| 伊人精品久久网站| 亚欧性爱无码| 日韩国产欧美伦理在线| 国产成人无码啪| 久操凹凸视频| 国产亚洲中文不卡二区| 国产精品无码av在线| 人人看欧美性爱| 国产精品久久久无码AV网站| 亚欧无码在线| 久久‘黄片视频| 欧美顶级黄片AAAAA在线免费看| 国产成人免费观看在线视频| 97摸视频| 丁香五月色| 99国产人成精品| 殴美性色a级欧美| 操我啊啊啊啊啊| 国产性刺激| 日韩国产十八禁| 一区二区三区无卡视频在线观看| 亚洲精品一卡二卡三卡福利视频网站| 色天欧美| 欧美人妖内射| 久久 精品| 亚洲婷婷综合网| 色操逼网| 国产懂色精品国产av| 综合久| 香蕉在线一区二区三区| 成人熟女视频一区二区三区| 青青草伊人久久| 天综合网欧美| 午夜福利 成人 91| 精品对白久久不卡| 91一区二区三区蜜桃| 蜜乳Av成人片网站| 亚洲欧美一区二区三区一猛片| 99九九精品| 神马精品视频| 欧美A√综合网| 欧美日韩97在线| 97超碰美女| 韩日色费| 日本精品不卡一二三区| 亚洲色图久久精品蜜| 97超碰天天| 蜜臀aV午夜一区二区三区| 久久男人| 囯戸精品高潮呻吟旡码| 自拍偷拍 日韩无码| 日本色色网| 国产久久一区二区三区野外在线| 亚洲性综合| 亚洲se91| 欧美丰满少妇xx高潮| 综合久久中文字幕综合日韩精品| 国产人妻精品久久久一区二区三区 | 高清无码学生妹高潮| 国产成人在线观看网址| 顶级丝袜熟女一区二区三区| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 中国黄色特级精品一区二区三区片| 一本久久久精品| 99亚洲国产精品色一区二区三区| 97国产高清视频在线观看| 黄色污污污污污污网站| 色妇91| 蜜臀久久99精品久久久久久无删减 | 久草看看看| 久久日韩精品一区二区| 啊v视频在线观看| 日本97久久久精品| 国产精品白丝www| 日本人妻中文字幕 | 中文啪啪视频| 国产熟女自拍| 国产精品久久aV| 久久九色| 裸体美女久久久| 夜夜爽夜夜爽| 国产超碰人人爽人人做| 久久国产精品,久久国产| 自拍啪啪视频| 亚洲三区视频| 偷窥自拍亚洲色图| 竹菊一区二区三区AV线| 久久久久免费看少妇A片特黄| 精品人妻伦一二三区久久| 欧美少妇色综合| V A在线| 99操逼| 色综合超碰超| 国产福利电影| 日本有码影片下载| 丝袜美腿操av| 丝袜剧情| 97久久久精品| 精品人妻一二三| 婷婷亚洲综合| 久久美国毛片| 国产一区二区三三视频| 四虎永久在线精品免费网址| 色欧美在线| 欧美日韩 强奸乱伦| 国产熟女一区二区丰满| 熟女人妻一区二区三区| 影音先锋国产精品| 久久亚洲色图中文字幕| 免费日韩黄片| 色婷婷在线视频精品导航| 91欧美经典| 日韩人妻一区二区精品| 碰超人人在线一区二区三区| 手机看片日韩人妻| 顶级少妇BT天堂| 98久久| 精品一区二区啪啪啪| 99re99在线视频| 久久AV无码网址| 91超碰在线播放| 家庭乱伦国产| 国产又大又粗又长视频在线| 欧美成人免费在线观看| 亚洲情色电影网| 999久久久九九九九| 国产高潮AA片免费看| 欧美日韩亚洲国产中文永久天天看| 操日韩第| 激情视频一二三| 久久国产免费激情视频| 国产亚卅97| 九九精品无码专区免费| 又黄又粗又硬又长又大| 亚洲国产成人精品999| 日本精品88888888| 88xx成人精品视频| 性欧美体内射精| 成人精品久久久午夜福利| 色女综合| 日韩激情毛片一级久久久| 97超碰色屌| 韩三级a视频在线观看| 黄色高清久久无码依人| 东京热视频网| 超碰人妻中文在线| 欧美成人四级在线播放| 一二三四视频在线社区中文字幕| 上海一级黄片| 国产自产22区| 日本午夜久久电影| 高清视频一区| 天美麻豆精品视频99| 青草综合| 女同性恋一区二区三区精品视频| 日韩精品在线放| 久久久久ab| 一区二区三区黄片免费观看| 96精品一区| 超碰免费人人| 91亚洲欧洲| 亚洲最大黄网| 欧美性爱免费短视频| ai欧美亚洲小说| 欧美十八禁网站| 精品少妇99| 99青草| 伊人一区二区在线播放| 91男同| 99综合免费视频| 少妇高潮九九九九| 亚洲综合有玛| 黄片aaaaa一区| 农村少妇久久久久久久| 欧美性爱97超碰| 中文字幕一区二区免费在线| 国产免费一区| 久久丁香| 国产无吗在线播放| 91处女在线视频| 婷婷久久五月天| 美女裸体无遮挡永久免费观看网站| 亚洲免费97免费| 国产在线视视频有精品| 久草成人| 成人黄页| 97色色网| 中文字幕日韩精品久久| 国产精品高朝久久久久久久| 狠狠久久亚洲欧美专区| 五月丁香六月综合缴清无码 | 中文字幕精品一区二| 日本高清一本二本免费不卡| 女人爽到高潮久久久| 尤物视频一区| 综合少妇网| 久久久久久久久九九久孕交| 日韩性爱电影一区| 日本精品五区| 久久久精品久久| 蜜臀久久99精品久久久老,,| 亚洲国产欧美一区二区潘金莲 | 欧美日韩另类在线播放| 黄页网站成人免费| 区一在线观看| 日韩乱插| 大屁股人妻女教师撅着屁股| 久久久久久免费电影| 婷婷成人久久久精品| 国产精品久久久久中文字幕| 欧美日韩资源| 九一性生活免费视频| 性色一线| 91动漫操逼视频| J?P?NESEHD熟女熟妇伦| 熟女熟妇伦久久影院毛片一区二区 | 啪啪啪精品视频| 精品人妻中文字幕高清| 大香交| 国产青视频| 七久久久| 国产一级做a爰大片免费久久| 成人毛片免费| 99操逼| 91 丝袜在线观看| 亚洲国产欧美日韩人妻日中文| 日本成人电影资源网| 亚洲av成人精品一区| 97在线/亚洲| 国产乱码精品久久久久久| 精品超碰中文在线| 亚欧韩av| 岛国激情视频软件| 日韩无码极品| 久久9久久| 日本熟妇精品九九| 91偷拍欧美亚洲| 九九内射在线| 国产精品久久久久综合| 欧美日韩电影成人在线| 日韩兔费看黄片| 中文有码9| 91网站在线播放| 精品人妻一区二区乱码一区二区| 欧美少妇熟女| 玖玖婷婷五月天| 嫩草一区二区在线观看| 波多野结衣AV无码一区| 91久久久久久久久18| 久草成人影片| 欧美中字不卡| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 极品白嫩美少妇在地板上位骑射淫水泛滥| 99热99re6国产在线播放| 精品97久久综合| 在线 亚洲 网爆 自拍| 人妻熟女字幕一区二区| 91久久久久久久| 无码视频黄色网战| 欧美大香蕉专区网| 国产精品美女在线一区| 激情五月综合开心五月| 探花视频免费观看国产专区| 97天天| 欧美丝袜中文字幕07在线| 夜夜嗨TV| chaopen97久久| 亚欧美综合| 色哟哟精品1精品2| 操逼无毒无码免费视频| 亚洲综合图片在线| 国产精品久久久久久久久久久久久久久| 97综合日韩| 久久久久久大| 无码一区二区三区四区五区六区七区八区九区十区视频 | 干b在线性社区| 欧美性暴力猛交XXXX | 国产精品女aA片爽爽视频| 亚洲国产97| 久久久久久久精| 99re在线| 色婷婷国产精品一区在线观看| 极品色| 国产精品久久久久久久电影渣男| 日韩精品 欧美激情| 午夜经典| juliaann丝袜| 日少妇视频| 女人天堂av在线播放| 日本操逼视频免费| 亚洲一区在线观看欧洲| 中文字幕精品一区二| 热无码中文亚洲H一道本一区二区| 国语对白露脸XXXXXX| 7777奇米影视久久| 韩国一级婬片A片无码天美 | 99久久久无码国产精品性啊聊| 美女被啪到深处抽搐视频| 欧美高清无码免费视频高清版| 一个色导综合| 国产最新小视频在线播放下载| 久久综合亚洲色1080p| 亚洲五码一区二区三区| 被体育老师抱着c到高潮| 97啪啪| 婷婷日韩一区二区三区中文字幕在线| 亚洲有薄码区日本系列中文字幕| 久久久久久久九九九九九九| 96AV久久久| 天堂射| 亚州,欧美在线| 97在线视频网站| 91精品国产91久久青草| 强奸乱伦免费网站| 成人七区| 女人爽到高潮潮喷18禁网站| 久久乐| 九九英色视频| 欧美色图在线视频少妇| 大香蕉草草| 超碰午夜| 中文字幕中文字幕一区二区| 1769精品一区二区三区| 亚洲欧洲偷拍一区| 久久久婷婷| 欧美爱国产综合、| 国产久久久久久| 亚洲国产91精品一区二区久久| 日韩午夜精品一区二区三区电影| 婷婷五月综合在线| 日本裸体久久色噜噜| 亚洲成人妻日韩在线| 高清无码学生妹高潮| 中文乱码字字幕在线第5页| 国产欧美精选激情视频| 一级免费啪啪片| 久久久工口| 亚洲欧美日韩国产丝袜自拍中文| 96超碰网| 欧美一区二区一级岛国大片| 欧美久久伊人| 久久久一热在线播放| 青草影院内射高潮| 日韩熟女精一区二区三区不卡| 操婢日韩| 色墦五月丁香| 天天干天天日天天射黄色片| 黑丝制服中文字幕| 亚洲欧美国产中文视频| 久久精品三级影视| 五月天丁香网| 久久久亚洲精品中文字幕人妻| 精品九九九九九| 可以免费观看的日韩av毛片| 欧美国产日韩清纯唯美| 玖玖爱一区在线| 久久啊啊| 18禁美女裸体无遮挡啪啪| 亚洲精品丝袜-不卡成人免费……| 国产熟女二区| 啊啊啊啊网站| 粉嫩绯色AV一区二区在线| 观看免费区二区三区二| 欧美日韩精品久久久久东北老熟妇| 久久产精品一区二区三区电影| 国产小u女在线观看| 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | 爱我干综合| 久久久久久久久久黄色网| 九色黄站| 尤物一级在线免费观看| 欧美少妇第一页| 天天综合色图| 亚洲成人一区二区精品| 九九久久一区二区三区| 91痴汉| 色欲无码人妻日韩欧美精品| 国产精品久久久亚洲一区| 久久精品99| 26uuu国产亚洲综合| 嗯嗯嗯好爽| 国产精品69久久久久久久| 国产av激情无码久久天堂| 亚洲 日韩 欧美 国产综合体| 日韩一级二级三级免费看完整版国语版 | 亚洲A曰本VA欧美VA视频| 婷婷五月天福利| 91美女国产在线| 国产精品网址| 日本一区二区三区精品| 美女9118禁| 久久久 国产精品| 欧美91网站| 日本一区二区三区午夜观看| 女色视频社区| 最新AV在线| 粉嫩在线一区二区懂色| 热G综合热G中文| 国产精品福利资源在线尤物| 色五月婷婷网| 超碰导航97| 国产真实野战在线视频| 亚热日本熟女| 国产乱伦亚洲色图高清无码| 爆乳免费黄网站| 蜜臀久久99精品久久久久久| 免费一级欧美片片线观看| 欧美中字不卡| 五月婷网站| 国厂麻豆77q4| 欧美特大AA级黄片| 美女高潮视频91| 91精品人| 青娱乐av在线| 97视频在线| 国产青一二三| 中文字幕97| 电影69乱码96| 9999久久久| 天天综合~91入口| 九九九九久久久久| 中文字幕啊啊啊在线观看视频| 精品人妻一区二区三区不卡断 | 黄色视频特级毛片| 97超碰超欧美。| 日韩欧美aⅴ综合网站发布| 久久久久78| 天天躁日日躁xxxxx| 污污污8888| av强奸乱轮| 亚洲天堂美臀在线| 超97在线精品视频| 学生妹天天看| 美国aaaaa一级黄片| 91男人天堂网| 嫖老熟女A片一二三区| 亚洲日韩黑丝| 凹凸视频特色日本特黄| 国产9熟妇视频网站| 色综合久| 亚洲色阁| www.操| 亚洲啪AⅤ永久无码| 婷婷丁香一区二区三区| 天天摸夜夜添无码小视频| 日本高清加勒比| 操比国产| 人人妻人人爽| 99色悠悠| 中文字幕日韩专区精品系列| 色小视频蜜乳| 天天综合,91综合永久| 亚洲一区二区三区婷婷| 天天看少妇| 国产91av在线播放| 97精品综合久久网| 加勒比在线视频一区二区三区| 啊嗯嗯啊好大好爽| 五月丁香婷婷啪啪| 97爱综合| 啊啊啊97视频| 亚洲乱码国产乱码精网站| 麻豆色99999| 婷婷五月天补不补| 天堂69亚洲精品中文字| 91老熟女老女人国产老太| 国产 日韩 另类 视频一区爱| 日韩十八禁| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| AA级电影三区|