免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

LLM之Agent(六十一)|拆解 Coding Agent 的 harness:從零構(gòu)建你的第一個(gè) AI 編程助手

LLM之Agent(六十一)|拆解 Coding Agent 的 harness:從零構(gòu)建你的第一個(gè) AI 編程助手 1. 為什么你的 Coding Agent 總在第三步崩掉harness 層缺失的典型癥狀很多人第一次寫 AI 編程助手代碼大概長這樣一個(gè) while 循環(huán)把用戶輸入丟給模型模型返回 tool_call 就執(zhí)行執(zhí)行完把結(jié)果塞回 messages再循環(huán)。跑 demo 沒問題一旦讓它改一個(gè)真實(shí)倉庫里的文件問題就來了——它會(huì)在第三步或第四步開始重復(fù)讀同一個(gè)文件、忘記前面已經(jīng)改過什么、把cd之后的路徑當(dāng)成永久生效、甚至在等你確認(rèn)的時(shí)候把整個(gè)上下文燒光。這些癥狀看起來像模型不夠聰明實(shí)際上幾乎全部出在 harness 層。所謂 harness中文可以理解成挽具或編排腳夫它是包在模型外面那一圈基礎(chǔ)設(shè)施狀態(tài)機(jī)、上下文管理、權(quán)限門、執(zhí)行隔離、事件流。模型權(quán)重和核心 API 行為是固定的你能工程化的部分幾乎全在 harness 里。我拆過 Claude Code、OpenCode、Pi 這類主流 coding agent 的實(shí)現(xiàn)得出一個(gè)反直覺的結(jié)論真正讓 agent 可用的不是那個(gè) ReAct 循環(huán)而是循環(huán)外面的東西。一個(gè) bare agent loop 大概 20 行就能寫完但一個(gè)能跑真實(shí)項(xiàng)目的 harness 需要處理 phase machine、steering queue、permission gate、sandbox、context compaction、memory 注入、可觀測性這一整套。這篇文章面向想理解 Agent 如何調(diào)度工具與上下文的開發(fā)者。我會(huì)帶你把 harness 拆成可復(fù)制的配置片段最后用一個(gè)端到端請(qǐng)求驗(yàn)證整條鏈路真的通了。你不需要先讀完所有源碼跟著配置走一遍黑箱就透明了。先明確邊界。Agent 層負(fù)責(zé)想模型評(píng)估狀態(tài)、選擇 action 或 tool call、接收 observation、迭代。Harness 層負(fù)責(zé)活它驅(qū)動(dòng) turn 的執(zhí)行、管理輸入隊(duì)列、攔截危險(xiǎn)操作、隔離命令執(zhí)行、壓縮上下文、把事件流分發(fā)給界面。Interface 層負(fù)責(zé)看TUI 或 headless 遠(yuǎn)程執(zhí)行。三層分離之后你換模型、換界面、換沙箱harness 邏輯都不用重寫。下面這張對(duì)照表幫你快速定位自己卡在哪一層癥狀大概率出問題的層典型原因重復(fù)讀同一文件Harness / Context沒有 compaction歷史里全是舊 tool 結(jié)果改完文件又改回去Harness / Memory沒有把已改事實(shí)寫回上下文命令執(zhí)行后路徑丟失Harness / Sandboxfresh-exec 模式下 cd 不持久但代碼假設(shè)它持久危險(xiǎn)命令直接執(zhí)行Harness / Permission沒有 permission gate 或 gate 規(guī)則寫反等待確認(rèn)時(shí)卡死Harness / Queue單隊(duì)列阻塞沒有 steering 與 follow-up 分流長任務(wù)中途斷掉無法恢復(fù)Harness / Runtime沒有 durable checkpoint看清這張表你就知道接下來該配什么。2. TaoToken 前置給 harness 一個(gè)穩(wěn)定的模型入口harness 要跑起來第一件事是讓模型調(diào)用這條鏈路穩(wěn)定。我試過把模型入口寫死在代碼里結(jié)果每次換模型都要改源碼、重跑測試非常痛苦。正確做法是把 Base URL、Key、Model ID 三件套抽成配置harness 只讀配置不關(guān)心供應(yīng)商。TaoToken 在這里的角色是提供統(tǒng)一的模型調(diào)用入口。官網(wǎng)地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端點(diǎn)是 https://taotoken.net/api 。注意 API 地址不帶 UTM 參數(shù)配置里寫干凈的 endpoint 就行。你需要準(zhǔn)備三樣?xùn)|西缺一不可Base URLhttps://taotoken.net/api這是所有請(qǐng)求的前綴harness 里的 model client 指向它。API Key在控制臺(tái)創(chuàng)建形如sk-開頭的一串。這個(gè) Key 只放在環(huán)境變量或本地配置文件里絕對(duì)不要提交到 git。我見過有人把 Key 寫進(jìn)settings.py然后推到公開倉庫十分鐘內(nèi)就被掃走了。Model ID具體調(diào)用哪個(gè)模型。harness 的配置里要顯式聲明不要依賴默認(rèn)值否則換環(huán)境時(shí)行為會(huì)漂移。獲取 Key 的入口在控制臺(tái)的 API Keys 頁面地址是 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 。創(chuàng)建之后復(fù)制一次頁面刷新就看不到了先存到本地.env。如果你只是想先驗(yàn)證模型能不能通不想寫代碼可以用模型對(duì)話頁面直接發(fā)一條消息地址是 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 。這一步能幫你排除是 Key 錯(cuò)了還是 harness 寫錯(cuò)了的干擾。對(duì)于長期跑編碼任務(wù)或 Agent 工作流的場景Coding Plan 更合適入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。它的計(jì)費(fèi)方式對(duì)高頻 tool call 更友好因?yàn)?coding agent 一個(gè) turn 可能觸發(fā)十幾次模型請(qǐng)求按次計(jì)費(fèi)會(huì)很難受。接入文檔在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各語言的調(diào)用示例。我建議你先照著文檔跑通一個(gè)最小請(qǐng)求再把它塞進(jìn) harness。這里有個(gè)容易踩的坑harness 里的 model client 通常需要兼容 OpenAI 風(fēng)格的/chat/completions或 Anthropic 風(fēng)格的/messages。TaoToken 的 API 端點(diǎn)支持標(biāo)準(zhǔn)協(xié)議你在配置里把 base_url 指對(duì)剩下的交給 SDK。不要自己手寫 HTTP 拼接容易在 header 和 body 格式上出錯(cuò)。環(huán)境變量建議這樣組織harness 啟動(dòng)時(shí)統(tǒng)一讀取# .env 本地文件不要提交 TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_API_KEYsk-你的key TAOTOKEN_MODEL_ID你的模型ID然后在代碼里用os.environ或pydantic-settings讀取。這樣你的 harness 代碼里不會(huì)出現(xiàn)任何硬編碼的 Key換環(huán)境只改.env。3. 可復(fù)制配置把 harness 三件套寫進(jìn) settings這一節(jié)給你可以直接抄的配置片段。harness 的配置分三塊模型入口、權(quán)限門、沙箱。我按文件路徑組織你照著建目錄就行。先建項(xiàng)目結(jié)構(gòu)my-agent/ config/ settings.toml permissions.json src/ harness/ runner.py queue.py gate.py agent/ loop.py模型入口配置寫在config/settings.toml。TOML 比 JSON 更適合寫配置因?yàn)橹С肿⑨? config/settings.toml [llm] base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY # 從環(huán)境變量讀不寫明文 model_id 你的模型ID timeout_s 120 max_retries 3 [harness] # 上下文窗口預(yù)算compaction 閾值基于它計(jì)算 context_window_tokens 200000 # 保留最近多少 token 不壓縮 keep_recent_tokens 40000 # 觸發(fā) microcompaction 的預(yù)留比例 microcompaction_reserve_fraction 0.15 # 觸發(fā)完整 compaction 的預(yù)留比例 compaction_reserve_fraction 0.20 [sandbox] # none | docker | modal mode docker image python:3.12-slim exec_timeout_s 60權(quán)限門配置寫在config/permissions.json。規(guī)則順序很重要先走 deny再走 allow最后落到 mode 默認(rèn)行為{ mode: default, rules: [ { match: { tool: bash, command_regex: rm\\s-rf\\s/ }, decision: deny, reason: 禁止刪除根目錄 }, { match: { tool: bash, command_regex: git\\spush }, decision: ask, reason: 推送需要人工確認(rèn) }, { match: { tool: read }, decision: allow }, { match: { tool: glob }, decision: allow }, { match: { tool: grep }, decision: allow }, { match: { tool: write }, decision: ask }, { match: { tool: edit }, decision: ask } ] }注意mode字段。default模式下只讀工具自動(dòng)放行寫文件和 bash 需要確認(rèn)edit模式下文件編輯自動(dòng)放行bash 仍然要問bypass模式全部放行只用于 headless 自動(dòng)化絕不能在有真實(shí)憑證的環(huán)境里開。harness 讀取配置的代碼長這樣用 pydantic 做校驗(yàn)字段缺失直接報(bào)錯(cuò)而不是靜默用默認(rèn)值# src/harness/config.py from pathlib import Path import json import tomllib from pydantic import BaseModel, Field class LLMConfig(BaseModel): base_url: str api_key_env: str model_id: str timeout_s: int 120 max_retries: int 3 class HarnessConfig(BaseModel): context_window_tokens: int 200_000 keep_recent_tokens: int 40_000 microcompaction_reserve_fraction: float 0.15 compaction_reserve_fraction: float 0.20 class SandboxConfig(BaseModel): mode: str none image: str python:3.12-slim exec_timeout_s: int 60 class Settings(BaseModel): llm: LLMConfig harness: HarnessConfig sandbox: SandboxConfig def load_settings(root: Path) - Settings: with open(root / config / settings.toml, rb) as f: raw tomllib.load(f) return Settings(**raw) def load_permissions(root: Path) - dict: with open(root / config / permissions.json, r, encodingutf-8) as f: return json.load(f)如果你用的是 Claude Code 或 Cline 這類現(xiàn)成工具配置位置不一樣但三件套邏輯相同。Claude Code 的 settings 里要寫ANTHROPIC_BASE_URL、ANTHROPIC_API_KEY、ANTHROPIC_MODELCline 的 MCP 配置里要寫baseUrl、apiKey、model。不管哪個(gè)工具Base URL、Key、Model ID 三個(gè)字段一個(gè)都不能少少一個(gè)就會(huì)在第一次請(qǐng)求時(shí)報(bào) 401 或 model not found。CC Switch 這類多配置切換工具也遵循同樣結(jié)構(gòu)。它的配置文件里每個(gè) profile 就是一組三件套切換 profile 等于換模型入口。如果你同時(shí)用多個(gè)模型做對(duì)比這個(gè)結(jié)構(gòu)能省很多事。配置寫完先別急著跑 agent。用一段最小代碼驗(yàn)證模型入口通不通# scripts/check_llm.py import os from openai import OpenAI from pathlib import Path from src.harness.config import load_settings settings load_settings(Path(.)) client OpenAI( base_urlsettings.llm.base_url, api_keyos.environ[settings.llm.api_key_env], ) resp client.chat.completions.create( modelsettings.llm.model_id, messages[{role: user, content: 只回復(fù)兩個(gè)字通了}], timeoutsettings.llm.timeout_s, ) print(resp.choices[0].message.content)跑python scripts/check_llm.py輸出通了就說明模型入口沒問題。這一步能幫你把模型問題和 harness 問題徹底分開。4. 端到端驗(yàn)證一次請(qǐng)求看清執(zhí)行鏈路配置就緒后跑一次完整的 turn觀察事件流。harness 的價(jià)值在于把黑箱變成可觀測的事件序列。我設(shè)計(jì)一個(gè)最小驗(yàn)證場景讓 agent 讀一個(gè)文件、改一個(gè)文件、跑一條命令全程打印事件。先寫事件定義。事件是 frozen 且 hashable 的這樣 TUI 和遠(yuǎn)程可觀測性可以共用同一個(gè)真實(shí)來源# src/harness/events.py from dataclasses import dataclass from typing import Union dataclass(frozenTrue) class TurnStarted: turn_id: str dataclass(frozenTrue) class AssistantTextDelta: text: str dataclass(frozenTrue) class ToolCallStarted: tool: str args: dict dataclass(frozenTrue) class ToolResult: tool: str ok: bool preview: str dataclass(frozenTrue) class PermissionRequested: tool: str reason: str dataclass(frozenTrue) class ContextCompacted: before_tokens: int after_tokens: int dataclass(frozenTrue) class TurnFinished: turn_id: str stop_reason: str Event Union[ TurnStarted, AssistantTextDelta, ToolCallStarted, ToolResult, PermissionRequested, ContextCompacted, TurnFinished, ]然后是 runner 的 phase machine。單飛single-flight是關(guān)鍵一個(gè) turn 可能包含多個(gè) legiter → deferred pause → resume → follow-upphase 在第一個(gè) await 之前同步設(shè)置保證狀態(tài)查詢不會(huì)看到中間態(tài)# src/harness/runner.py import enum from dataclasses import dataclass, field class Phase(enum.Enum): IDLE idle DISPATCHING dispatching # 第一個(gè) await 之前的同步窗口 RUNNING running class Boundary(enum.Enum): MODEL_REQUEST model_request # 下一次模型調(diào)用前 drain steering WOULD_STOP would_stop # drain follow-up空則回 idle dataclass class Runner: phase: Phase Phase.IDLE _abort_flag: bool False def dispatch(self): # 同步設(shè)置避免競態(tài) self.phase Phase.DISPATCHING self._abort_flag False def mark_running(self): self.phase Phase.RUNNING def request_abort(self): # 協(xié)作式 abort設(shè)置 flagturn 在下一個(gè) boundary 停止 self._abort_flag True def should_abort(self) - bool: return self._abort_flag雙隊(duì)列交互模型是防止 mid-turn 破壞的核心。用戶按 Enter 的消息進(jìn) steering 隊(duì)列在下一個(gè) model-request 邊界注入按 AltEnter 的消息進(jìn) follow-up 隊(duì)列只在 WOULD_STOP 邊界處理# src/harness/queue.py import asyncio from dataclasses import dataclass, field def _drain(q: asyncio.Queue) - list[str]: out [] while not q.empty(): out.append(q.get_nowait()) return out dataclass class InteractionQueues: steering: asyncio.Queue field(default_factoryasyncio.Queue) follow_up: asyncio.Queue field(default_factoryasyncio.Queue) def drain_steering(self) - list[str]: return _drain(self.steering) def drain_follow_up(self) - list[str]: return _drain(self.follow_up)現(xiàn)在寫主循環(huán)把事件打出來。這是驗(yàn)證 harness 是否工作的核心# src/harness/main.py import asyncio import os from pathlib import Path from openai import AsyncOpenAI from src.harness.config import load_settings, load_permissions from src.harness.runner import Runner, Phase, Boundary from src.harness.queue import InteractionQueues from src.harness.events import ( TurnStarted, AssistantTextDelta, ToolCallStarted, ToolResult, TurnFinished, ) async def run_turn(prompt: str, settings, queues, runner): client AsyncOpenAI( base_urlsettings.llm.base_url, api_keyos.environ[settings.llm.api_key_env], ) runner.dispatch() yield TurnStarted(turn_idt1) messages [{role: user, content: prompt}] tools [ {type: function, function: { name: read, description: 讀文件, parameters: {type: object, properties: { path: {type: string}}, required: [path]}}}, {type: function, function: { name: bash, description: 執(zhí)行命令, parameters: {type: object, properties: { command: {type: string}}, required: [command]}}}, ] for leg in range(8): # MODEL_REQUEST 邊界注入 steering for msg in queues.drain_steering(): messages.append({role: user, content: msg}) runner.mark_running() resp await client.chat.completions.create( modelsettings.llm.model_id, messagesmessages, toolstools, timeoutsettings.llm.timeout_s, ) choice resp.choices[0].message if choice.content: yield AssistantTextDelta(textchoice.content) if not choice.tool_calls: # WOULD_STOP 邊界處理 follow-up follow queues.drain_follow_up() if follow: for msg in follow: messages.append({role: user, content: msg}) continue yield TurnFinished(turn_idt1, stop_reasoncompleted) runner.phase Phase.IDLE return messages.append(choice) for call in choice.tool_calls: yield ToolCallStarted(toolcall.function.name, args{}) # 這里接真實(shí)工具執(zhí)行示例用占位 result f[{call.function.name} 執(zhí)行完成] yield ToolResult(toolcall.function.name, okTrue, previewresult[:80]) messages.append({ role: tool, tool_call_id: call.id, content: result, }) yield TurnFinished(turn_idt1, stop_reasonmax_legs) async def main(): settings load_settings(Path(.)) queues InteractionQueues() runner Runner() async for ev in run_turn(讀一下 README.md 然后告訴我項(xiàng)目是做什么的, settings, queues, runner): print(f[{type(ev).__name__}] {ev}) if __name__ __main__: asyncio.run(main())跑起來你會(huì)看到類似這樣的輸出[TurnStarted] TurnStarted(turn_idt1) [ToolCallStarted] ToolCallStarted(toolread, args{}) [ToolResult] ToolResult(toolread, okTrue, preview[read 執(zhí)行完成]) [AssistantTextDelta] AssistantTextDelta(text這個(gè)項(xiàng)目是一個(gè)...) [TurnFinished] TurnFinished(turn_idt1, stop_reasoncompleted)這條事件序列就是 harness 的心電圖。你能清楚看到turn 開始、工具被調(diào)用、結(jié)果返回、模型生成文本、turn 結(jié)束。如果中間某一步缺失問題就定位到了具體環(huán)節(jié)。驗(yàn)證成功的標(biāo)志有三個(gè)事件按順序出現(xiàn)、stop_reason是completed而不是max_legs、工具結(jié)果被正確回填到 messages。三個(gè)都滿足說明你的 harness 主鏈路通了。5. 本篇常見錯(cuò)排查401、local proxy failed、reading choices、OAuth配置和驗(yàn)證過程中報(bào)錯(cuò)幾乎都集中在這幾類。我按真實(shí)報(bào)錯(cuò)信息給你對(duì)照排查。401 Unauthorized / invalid api key最常見。原因通常是 Key 沒讀到、Key 寫錯(cuò)、或者 base_url 和 Key 不匹配。先確認(rèn)環(huán)境變量真的加載了python -c import os; print(os.environ.get(TAOTOKEN_API_KEY, NOT SET)[:8])如果輸出NOT SET說明.env沒被加載。Python 不會(huì)自動(dòng)讀.env你需要python-dotenv或手動(dòng) export。如果輸出了前 8 位但請(qǐng)求還是 401檢查 base_url 是否寫成了帶路徑的形式比如https://taotoken.net/api/v1有些 SDK 會(huì)自己拼/v1重復(fù)拼接就會(huì) 404 或 401。正確寫法是只寫到https://taotoken.net/api。local proxy failed / connection refused這個(gè)報(bào)錯(cuò)說明請(qǐng)求根本沒發(fā)出去卡在本地網(wǎng)絡(luò)層。檢查三件事base_url 是否拼錯(cuò)、本機(jī)是否有殘留的代理環(huán)境變量、DNS 是否能解析。用 curl 直接測curl -sS -o /dev/null -w %{http_code}\n https://taotoken.net/api返回 200 或 401 都說明網(wǎng)絡(luò)通返回 000 說明連接失敗。如果本機(jī)有HTTP_PROXY之類的環(huán)境變量先 unset 再試。注意不要在代碼里硬編碼任何代理地址harness 應(yīng)該直連配置的 base_url。reading choices of undefined / KeyError: choices這個(gè)報(bào)錯(cuò)幾乎都是響應(yīng)結(jié)構(gòu)不符合預(yù)期。可能原因模型 ID 寫錯(cuò)導(dǎo)致返回了錯(cuò)誤對(duì)象、SDK 版本和 API 協(xié)議不匹配、或者請(qǐng)求體格式不對(duì)。先打印完整響應(yīng)resp await client.chat.completions.create(...) print(resp.model_dump_json(indent2))如果返回體里是{error: {...}}而不是{choices: [...]}那就是請(qǐng)求本身被拒了去看 error 字段的具體信息。常見的是 model not found說明 Model ID 和賬號(hào)可用模型不匹配去控制臺(tái)確認(rèn)一下。OAuth / authentication failed / token expired如果你用的是 Claude Code 這類帶 OAuth 流程的工具報(bào)錯(cuò)可能來自它的登錄態(tài)而不是你的 API Key。這類工具通常有兩套認(rèn)證一套是工具自身的賬號(hào)登錄一套是模型 API 的 Key。兩者不能混。檢查工具的配置文件里模型入口是否指向了正確的 base_url 和 Key。Claude Code 的配置在~/.claude/settings.jsonCline 的在 VS Code 設(shè)置里Codex 的在~/.codex/auth.json。以 Codex 的auth.json為例三件套要寫全{ base_url: https://taotoken.net/api, api_key: sk-你的key, model: 你的模型ID }少任何一個(gè)字段工具都會(huì)回退到默認(rèn)認(rèn)證流程然后報(bào) OAuth 相關(guān)錯(cuò)誤。Cline 的 MCP 配置同理baseUrl、apiKey、model三個(gè)字段缺一不可。CC Switch 切換 profile 時(shí)如果某個(gè) profile 只填了兩個(gè)字段切過去就會(huì)認(rèn)證失敗。上下文超限 / context length exceeded這個(gè)不是認(rèn)證問題是 harness 的 compaction 沒生效。檢查context_window_tokens是否和實(shí)際模型窗口一致keep_recent_tokens是否設(shè)得太大。如果keep_recent_tokens接近c(diǎn)ontext_window_tokenscompaction 永遠(yuǎn)觸發(fā)不了因?yàn)楸A魠^(qū)就占滿了。經(jīng)驗(yàn)值是保留區(qū)占窗口的 20% 到 30%觸發(fā)閾值設(shè)在 80% 左右給模型響應(yīng)和后續(xù) tool output 留 headroom。工具執(zhí)行卡死 / 等待確認(rèn)無響應(yīng)這是隊(duì)列設(shè)計(jì)問題。如果你只有一個(gè)隊(duì)列等待用戶確認(rèn)時(shí)會(huì)阻塞整個(gè)循環(huán)。正確做法是 permission gate 返回 ASK 時(shí)tool 拋出 ApprovalRequired循環(huán)暫停并返回 deferred 狀態(tài)通過獨(dú)立的 decision channel 等待用戶輸入。用戶輸入 y/n/a 后 resolve future循環(huán)恢復(fù)。這樣等待期間不占用計(jì)算資源也不會(huì)死鎖。排查完這幾類你的 harness 基本就穩(wěn)了。每次遇到新報(bào)錯(cuò)先看它屬于哪一層認(rèn)證層、網(wǎng)絡(luò)層、協(xié)議層、還是 harness 邏輯層。分層之后排查范圍立刻縮小。6. 把 harness 用起來從驗(yàn)證到長期編碼主鏈路通了之后你可以按需擴(kuò)展。harness 的每個(gè)組件都是可插拔的不用一次全上。先加 memory 注入。在項(xiàng)目根目錄放AGENTS.mdharness 啟動(dòng)時(shí)讀取并注入到 system prompt。這樣 agent 每次都知道項(xiàng)目約定不用你重復(fù)交代# src/harness/memory.py from pathlib import Path def assemble_memory(cwd: Path) - str: blocks [] for path in discover_memory_files(cwd): content path.read_text(encodingutf-8, errorsignore) if path.name MEMORY.md: content \n.join(content.splitlines()[:200]) blocks.append(f# From {path}\n{content}) return \n\n.join(blocks) def discover_memory_files(cwd: Path): # 從 cwd 向上遍歷到文件系統(tǒng)根收集 AGENTS.md 和 MEMORY.md current cwd.resolve() found [] while True: for name in (AGENTS.md, MEMORY.md): candidate current / name if candidate.exists(): found.append(candidate) if current.parent current: break current current.parent return list(reversed(found))再加 context compaction。兩級(jí)級(jí)聯(lián)microcompaction 不調(diào)模型只把舊的 tool 輸出體替換成占位符完整 compaction 調(diào)一次便宜的模型把老歷史總結(jié)成固定骨架。觸發(fā)閾值基于 token 預(yù)算# src/harness/compaction.py import enum class CompactOutcome(enum.Enum): COMPACTED compacted NOTHING_TO_COMPACT nothing_to_compact SUMMARIZER_FAILED summarizer_failed def split_tail(messages, *, keep_recent_tokens: int) - int: 從尾部累積 tokensnap 到 compaction boundary 保證 tool-call/result 對(duì)不被拆開。 total 0 for i in range(len(messages) - 1, -1, -1): total estimate_tokens(messages[i]) if total keep_recent_tokens: return snap_to_boundary(messages, i) return 0 def microcompact(messages, *, keep_recent_tokens: int): 無 LLM 層把舊 tool 輸出體清空。 boundary split_tail(messages, keep_recent_tokenskeep_recent_tokens) for msg in messages[:boundary]: if msg.get(role) tool: msg[content] [已壓縮] return messages沙箱層按需開啟。本地開發(fā)用mode none跑真實(shí)命令時(shí)切docker。fresh-exec 模式下每條命令作為全新進(jìn)程運(yùn)行cd和export不會(huì)跨調(diào)用持久化。這個(gè)設(shè)計(jì)看起來反直覺但它讓本地和遠(yuǎn)程行為字節(jié)級(jí)一致避免本地能跑遠(yuǎn)程不能跑的問題# src/harness/sandbox.py class SandboxExecutor: Fresh-execcd/export 不持久。 def __init__(self, backend, workspace): self._backend backend self._workspace workspace self._created False async def run(self, command: str, *, timeout_s: float): if not self._created: await self._backend.create(self._workspace) self._created True return await self._backend.exec(bash, -lc, command, timeout_stimeout_s)如果你要跑長期任務(wù)或 Agent 工作流建議用 Coding Plan入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。高頻 tool call 場景下穩(wěn)定的計(jì)費(fèi)和額度比單次便宜更重要因?yàn)?harness 一個(gè) turn 可能觸發(fā)十幾次模型請(qǐng)求。接入文檔在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各語言和各工具的完整配置示例。API Keys 管理在 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 建議給不同項(xiàng)目建不同的 Key方便按項(xiàng)目排查和吊銷。最后說一個(gè)我踩過的坑不要一上來就把所有組件都打開。先跑通模型入口再加事件流再加權(quán)限門最后加沙箱和 compaction。每加一層就跑一次端到端驗(yàn)證確認(rèn)事件序列沒變。這樣出問題時(shí)你永遠(yuǎn)知道是哪一層引入的。harness 的復(fù)雜度是必要的但引入復(fù)雜度必須可控。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久九九综合| 天天日天天久久青青| 9 99免费视频| 成 人片 黄 色 大 片| 99亚洲大片精品永久在线观看| 五月天综合在线网| 五月婷婷色播| 五月天激情.com| 激情久久肏屄视频| 无码人妻一区二区一牛影视| 久久精品99国产精品日本| 天天色,天天日,天天做| 婷婷五六月丁香| 亚洲成人日韩无码精品| 成人做爰A片免费看网站找不到了| 久久婷婷色五月| 操草草草| 97人碰人操| 第四色大香蕉| 国产精品人人妻人人爽| 日韩精品色| 中文字幕黄色电影网址| 色无婷婷| va婷婷在线免费观看| 中文字幕丰满孑伦无码专区| 丁香五月天堂网| 五月丁香六月在线欧美| 91色逼| 国产亚洲精品久久久久久豆腐| 婷婷五月花丁香| wuyuedingxiang99| 精热在线综合网| 欧美亚洲成人在线| 亚洲色五月婷婷| .精品久久久麻豆国产精品| 色五月婷婷大香蕉| 99色在线观看视频| 色色色在线观看| 五月婷婷激情69| 九九色逼| 狠狠综合| 欧美丁香婷婷天天操| 欧美伊人9| 丁香五月欧美婷婷综合| 人人操碰| 无码动漫AV| 久久99热网| 激情深爱五月天| 婷婷五月天av| 超碰在线视屏| 99自拍网| 99色色| 六月丁香啪啪| 丁香婷婷久久综合在线| 五月开心啪啪| 久久久精品色| 天天综合精品| 五夜婷婷| 久操大香蕉| 中文AV网| www.91av.com| 91在线视频综合| 欧美色久| 日日天天天| www.婷婷五月| 99热国内| 97碰精品| 免费超碰在线| 日本久久性| 五月婷婷六月丁香首页| 99热精品在线播放| 欧美在线骚货| 日本激情综合| 大香蕉精品视频| 色99自拍| 欧美搡BBBBB摔BBBBB| www色色com| 六月婷婷五月丁香| 婷婷色网址| 9久9久9久女女女九九九一九| 婷婷五月天天激情| 亚洲综合九九| 五月婷导航| 少妇激情五月天| 综合久久99| 丁香五月综合婷婷| 国产午夜伦鲁鲁| 性爱技巧五月| 99色综合网| 六月婷婷俺也去| 久久婷婷影院| 日韩AV色色色| 色情丁香五月婷婷精品| 成人无码精品1区2区3区免费看| 国产AV影片| 亚洲黄网AV| 亚洲AV成人无码精品| 久久久婷婷色五月资源网| 日韩情色在线观看| 天天摸天天舔天天爽| 亚洲 无码 中文字幕 中出| 少妇2做爰HD韩国电影| 强辱丰满人妻HD中文字幕| 丁香婷婷成年| 99色婷婷| 天天日天天摸| 国产肥白大熟妇BBBB视频| 色婷婷色和| www.99热视频| 国产欧美va| 婷婷五月天亚洲| 99精品国产在热久久| 韩日AV片| 26uuu91| 久久婷婷综合国产| AV片在线观看| 色播丁香五月婷婷操:屄| 五月婷婷天| 五月天综合网| 五月婷婷六月丁香玖玖玫瑰91| 玖玖资源站国产| 激情网综合| 激情综合啪啪| 91久久综合亚洲噜噜成人在线 | 色色激情| 热久视频| 超碰成人黄色网| 99在线观看精品| 爱草视频在线观看| 91色综合网| 丁香六月色婷婷欧美| 九九这里都是精品| 日韩人妻AV在线| www.婷婷,com| 婷婷五月天国产| 看片视频在线免费日产在线看| 国产九月婷婷| 久香草视频在线观看| 99视频久久| 永久天堂日本| 五月婷婷二月丁香| 丁香五月婷婷操逼| 另类综合国产| av操逼网| 天天天天天久久久久久| 国产欧美精品AAAAAA片| 丁香色啪综合| 性一交一乱一交A片久| 99人碰碰碰| 亚洲无码九九| 色婷婷丁香AV综合| 激情丁香五月婷婷啪啪| 欧美A A A A A| 婷婷免费精品视频| 99啪啪| 婷婷亚洲综合| 五月丁香婷婷欧美| 深爱婷婷色| 激情伊人五月天| 九月婷婷激情| 激情综合网五月| 九九青草热| 一婬一伦一区二区三区| 婷婷深爱五月丁香网| 人人干av| 五月婷婷丁香大陆免费| www五月婷婷88导航| 丁香婷婷丁香五月欧美人| 日日操天天操| 久久 这里只有精品1| 免费观看18视频网站| 99免费成人网| 荫道BBWBBB高潮潮喷| 丁香婷婷精品视频| 91大操| 久久综合激情婷婷激情| 久久婷婷五月综合啪| 真实亲子乱子伦高清在线观看| 99ri6在线视频| 婷婷五月天激情丁香| 涩五月婷婷| 久久五月天婷婷视频| 99热在这里只有精品| 五月丁香美女视频| 欧美激情综合色综合啪啪五月| 色综合久久88色综合天天人守婷| 91大神在线免费看视频全集男男一起操| 综合深爱五月| 色婷婷婷婷| 久久婷婷精品| 欧美激情综合色综合色| 久99久视频免费观看| 婷婷综合网性| 色色五月天婷婷| 精品婷婷五月视| ..真实国产乱子伦毛片| 五月天婷婷激情| 六月丁香婷婷综合狠狠爱夜夜爱| 午夜丁香婷婷| 先锋资源婷婷| 俺去也在线官网| 日韩AV在线免费| 五月综合在线| 久久综合激情五月天| 热久久999| 丁香五月天在线观看| 影音先锋一区二区三区| 婷婷不卡基地| 色色五月婷婷| www.99成人视频| 婷婷五月天中文字幕| 五月丁香成人网| 婷婷丁香成人在线视频| www.99热在线| 丁香五月大香蕉在线99| 人妻22p| www.狠狠狠.com| 丁香97综合| 激情綜合W W W,激情五月天| 777.色色| 99综合免费视频| 99热精品10| 思思热99er| 久久永久视频| 五月天婷婷丁香| 同性gv国产精品一区二区| 五月婷丁香久久综合| 五月婷婷综合网| 五月婷在线播放| 丁香五月天无码AV| 五月婷久久久| 五月婷婷狠狠久久| 美女被操一区二区| 熟妇人妻中文字幕无码老熟妇| 久久婷婷综合五月天| 去干网av| 91九色熟女| 九月丁香久久网| 国产午夜一区二区三区| 日本色色网站| 久久久这里有精品| 色情激情五月| 丁香色播五月天| 在线中文字幕视频| 欧美va视频| 久久99日本精品视频免费观看| 天天干,天天日| 色五月丁香婷婷久草| 婷婷涩五月天综合| 欧美激情2025| 色综合久久久久久久久五月| 丁香久久久| 亚洲AAA| 干亚洲天堂| 久婷婷婷| 婷婷久久精品| 色婷婷操逼| 婷婷色在线播放| 神马久久五月天| www.超碰在线| 99操99| 俺去也五月天| 国产精品天天狠天天看| 五月美女婷婷风骚| www91色网站| 成人午夜天| 色五月丁香婷婷| 五月丁香 啪啪| 久久总和99| 日日撸夜夜操| 婷婷色在线播放| 婷婷丁香小说| 丁香激情网| 九九热在线精品视频| 91日在线视频| 色九月丁香婷婷蜜桃在线观看| 夜夜嗨一区二区三区直播内容 | 五月婷婷干干干| 婷婷五月电影| 伊人网欧美在线男人天堂五月丁香 | 狠狠色噜噜狠狠| 免费看片操逼| 超碰免费人人| 激情网开心网| 99热这里只有精品8| 久久99热这里只有精品| 综合久| 超碰av在线| 久久精品99国产精品日本| 国产午夜精品AV一区二区麻豆| 国产成人网| 99热18| 丁香五月影院| 婷婷六月成人| 日本三级日本三级三级人妇四虎| 一本道综合网| 婷婷在线激情| 精品一区二区三区免费毛片爱| 麻豆AV一区二区三区| 色婷婷丁香女女| 日韩日比视频在线| 99精品久久| 色综合播放| 五月情涩综合婷婷| 免费亚洲婷婷中文字幕| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 99热精品一| 五月婷婷开心综合| 久久ab| 久久机热这里只有| 色婷狠狠| 亚洲最大成人综合网720P| 99视频内射三四| 久久ri精品| 国产综合色婷婷精品久久| Av性爱网站| 国产精品成人av在线观看春天| 亚洲最大五月天成人网| 九九精品热| 五月天久久小说| aa久久| 婷婷五月中文字幕国产| 亚洲第一第二网站| 久热精品在看| 九九热这里只有精品9| 婷婷成人五月天成人文学| 五月开心网| www.玖玖婷婷在线| 五月婷婷成人网首页| 五月天综合视频网| 99欧美热| 婷婷热婷婷色| 思思热精品在线视频| 五月色综合| 在线99精品| 清色五月天| www.五月天婷婷| 玖玖九九超碰| 丁香五月婷婷激情123| 99狠狠| 操精品9| 色色色777| 色噜噜狠噜噜视频| YW无码| www.狠狠狠狠| 五月丁香亭亭| 六月丁香大香蕉| 六月丁香社区| 久久免费高| 亚洲久久视频| 国产高潮A片羞羞视频涩涩| 激情图片婷婷| 色色五月婷婷久久| 九月激情综合| 五月婷天天搞视频| 人妻在线观看视频| 2050人人操免费工开爱| 操逼123网| 亚洲丁香花色| 99热国产这里只有| 色婷婷久久| 久久最新色色色| 色婷婷综合网| 丁香五月停停基地| 六月丁香综合| 亚洲Va成人| www.色综合| 九一九九黄色| 六月份天丁香婷婷| 99在线视频精品| 天天噜噜| 91色色色18| 91丨九色丨熟女| 日本久久人| 久久五月天综合| 六月丁香成人| 情色婷婷五月天| 少妇高潮一区二区三区99欧美| 综合久久综合| 激情小说婷婷小说| 超碰婷婷色| 情婷婷五月天| 伊人网啪啪| 天天日天天插| 久久这里都是精品免费| 嫩草AV久久伊人妇女超级A| 九九热这里都是精品6| 嫩BBB槡BBBB搡BBBB| 色五月天天| 综合色色婷婷| 日本一级大片| 五月婷婷综合视频| 婷婷丁香五月天亚洲| 精品五月花| 天天插综合| 日本一级特黄大片AAAAA级| 九九亚洲| 亚色网站小视频| www久视频com| 激情网五月天| 成人操呦av| 夫妇交换刺激做爰| 日韩在线aaa| 久草热8精品视频在线观看 | 久久婷婷青青| 99毛片| 人妻AV在线| 99视频内射三四| 亚洲综合视频在线| 不卡成人免费| 激情五月天婷婷播播久久综合91| 色婷婷最新域名| 青青热久精品视频在线观看| 婷婷射综合| 婷婷五月天激情偷拍| 天天婷婷综合| 99re思思精品在线观看| 播播网色播播| 久久人操-久草婷婷-成人AV| 色五月婷婷九月| 99热亚洲只有色| 精品网站99| 五月天婷婷成人网| 亚洲色色图片| 丁香五月情色| 1024欧美看片| 婷婷五月天狠狠搞干| 激情性爱五月天网页| 激情婷婷亚洲五月| 色色色com| 五月天久久www| 五月天久久色| 久久婷婷五月综合色丁香| 9久热精品在线视频| 色婷五月天亚洲| 蜜桃人妻无码AV天堂三区| 狠狠艹狠狠艹| 思思久久99热只有频精品66| 五月天夜夜爱夜夜操| 狠狠干五月| 婷婷五月噜噜| 九色在线观看91av| 色婷婷精品视频| 热五月婷婷| 久9热在线视频| 久久精彩综合视频| 久久人妻熟女一区二区 | 五月天婷婷在线啪啪视频| 丁香五月天AV在线 | 色婷六月| 丁香婷婷激情| 九九精品在线网| 曰本aaaaaa丈片| 婷婷欧美| 丁香激情网| 欧美色色色| 九九久久五月天综合伊人| 丁香五月激情综合久久| 久久免费操| 色五月天天在线观看资源站| 日本欧美成人片AAAA| 国产精品久久久60086| 超碰色人妾| 五月婷色| 五月丁香狠狠| 成人视频一区| 婷婷影院A成人| 五月天亚洲综合网| 丁香六月AV| 九色综合网| 九九热免费视频| 欧美情月伍月天| 牛牛热这里只有jingpin| 欧美婷婷五月天| 黄网在线观看免费| 午夜成人片400| 欧美丁香婷婷五月天| 丁香五月婷婷黑人妻黄色电影院| 五月天综合在线网| 91精品久久久久久| 婷婷六月久久综合导航| 久久精品性爱视频,| 免费色婷婷| 久久综合九九| 夜夜夜夜夜骑撸| 婷婷五月激情图片| 超级碰碰一区| 99国产精品久久久久久久久久久| 日日夜夜爽| 91超级碰| 色婷婷丁香社综合| 韩日另类| 性爱视频久久| 久大香蕉| 人人爽亚洲| 九九视频免费| 久久久久久人妻| 激情播丁香| 色呦呦美女| 狠狠操狠狠色| 99性爱| 天天日综合| 激情网 五月天| 激情婷婷丁香五月天| 天堂在线观看视频| 久热9| 丰满人妻一区三区三区| 亚洲免费99| 大鸡巴伊人网| 婷婷色情 | 99热网站| 色五月激情综合| 六月亚洲婷婷6月中文字幕| 琪琪色网址| 久久久婷| 色久天| 丁香五月天激情综合| 丰满人妻一区三区三区| 九九自拍网| 超碰A V在线| 欧美性生交XXXXX无码小说| 天天噜日日噜综合无码| 九色啦蜜臀| 看国产探花操逼三级片| 五月婷丁香久久久| 五月天无码视屏播放| 伊人五月婷婷国产视频| 久久久久视剧HD| 国产AV影片| 丁香五月天堂网| 五月花激情| 婷婷97碰碰| 99这里只有精彩视频| 五月丁香六月婷婷色| 激情五月天激情网| 熟女婷婷网站一婷婷五月一丁香婷婷一婷婷激情网 | 一级黄色影片| 97色色色| 成人在线99| 久久精热| 五月婷在线| 五月丁香婷婷免费视频| 成人视频婷婷| 婷婷天天婷婷天天澡| 99亚洲色色| 天天日天天做天天操| 五月激情婷婷播播网| 激情纯色婷婷五月天在线不卡视频| 亚洲舔观看| 婷婷五月激情片| 99色热视频| 久久精品66| 色婷婷小说| 看全色黄大色大片| 夜夜操夜夜操| 99ree6| 色色亚洲99com| 潮汕成人AV片在线| 久久精99| 久久综合色五月| 五月婷婷色播| 91丁香五月| 五夜婷婷| 五月丁香拍拍激情综合| 婷激情五月| 婷婷成人五月天成人文学小说| 婷婷五月天视频亚洲| 丁香五月天之婷婷影院| 激情综合网五月婷婷| 婷婷狠狠操| 人妻AV中文系列| 午夜精品久久久久久久爽| 五月婷婷影视| 久久免费丁香| 91精品久久久久久久久久久久| 九月丁香婷婷综合| 天天噜天天爱| 中文av网站| 色婷婷中文在线| 99在线视频播放| 99爱在线免费视频| 色爱综合网| 久久丁香综合精品综合| 欧美激情伊人| 午夜色色色极品视频| 丁香婷婷六月天| 99精品大片| 情色五月天网站| 大香蕉啪啪啪| 久热9热| 亚洲中文字幕av| 噜噜狠狠| 天天天天天久久久久久| 丁香五月电影| 香蕉AV777XXX色综合一区| 色五月综合激情| 五月色色网| 人与禽A片啪啪| 99热很操老逼| 夜夜躁狠狠| 婷婷王月天影院| 五月天激情影院| 国产AV熟妇人震精品一品二区| 日韩美女在线视频19| 婷婷丁香色五月亚洲| 色五月色综合| 激情久久久| 97碰碰久久| 九九碰九九爱97| 丁香六月成人网| 亚洲综合五月天婷婷丁香| 亚洲日韩操B| 亚洲精品网址| 六月五月久久丁香| 9九色首页| 97精品人人A片免费看| 懂色av蜜臀av粉嫩av永陈冠希| 中文人妻主播久久| 大香蕉伊人99| 毛片蕉地一二| 成人网站免费sxj| 超碰色色综合| av一区二区电影免费在线观看| 91一起操| 色色五月天网站| 色五月婷婷91在线| 久久99成人性爱高清视频| 久久综合九九| 亚洲小视频免费观看| 五月综合丁香婷婷| 99热性色| 热久精品| 婷婷五月综合色中文字幕| 99.色| 国产片XXXXA片国语对白| 大香蕉久久伊人婷婷五月丁香| 天天干一干| 五月婷中文娱乐综合| 玖久精品视频9| 国产3p露脸普通话对白| 天天舔天天摸天天射| 激情五月天婷婷| 开心激情站| 伊人色综合影院视频| 婷婷五月天在线观看| 九九热99久久99| 超碰熟女拍拍| 日韩美女在线视频19| 五月天天天色| 丁香九月激情久久| 天堂久久性| 九九热婷婷| 涩婷婷五月天在线精品视频| 日韩在线一级| 精品久久9| 久99综合婷婷| 综合色播| 99久久66| 免费看成人AA片无码视频吃奶| 欧美精品久久久久久视频观看| 色情综合| 777丁香六月青青草婷婷综合久月| 色一情一乱一伦一区二区三区| 色婷婷在线视频久| 婷婷五月激情欧美大胆视频| 999影院成人在线影院| 婷婷伊人綜合中文| 91久久色| www.99色| 国产肥白大熟妇BBBB视频| 99精品7| 大香蕉伊然在亚洲90| 五月丁香六月在线| 婷婷五月综合久久中文字幕| 九九色综合| 婷婷激情丁香五月天综合| 国产毛片欧美毛片久久久| 六月色色婷婷| 久久9RE热视频精品98| 九九色综合网| 亚洲综合色网站| 色五月丁香com| 色婷婷丁香| 五月丁香大相交| 久久天天| 五月天色网站| WWW.久久久久久久| 五月婷婷丁香六月| 日日爱激情| 五月丁香六月婷婷啪啪| 中文字幕按摩做爰| 五月色影院| 婷婷五月天色色| 九九视频在线观看视频6| 九九视频这里只有精品| 激情婷婷五月天| 精品亚洲国产成AV人片传媒| 综合婷婷五月天| 久热视频A.| 123日本不卡在线| 色婷婷19| 婷婷五月天第四色| 久久东京热婷婷五月| 99婷婷| 丁香五月成人社区| 国产xxxxx在线观看| 大香蕉福利导航| 久久九九爽| 热久久视频99| 五月婷婷六月天| 五月婷婷啪啪啪啪| 亚洲国产成人综合| 丁香九月婷婷色| 色婷婷导航| 区欧美日韩成人| 久久人人看| 欧美成人精品一区二区 | 99精品无码视频| 99热97美女| 天天干天天爽| 婷婷欧美| 高清无码中文字幕aVDV| 中文字幕视频在线播放| 狠狠色丁香久久综合婷婷亚洲成人福利| 亚洲人妻av| 激情五月丁香六月| 69五月天视频| 91色久| 色婷亚洲| 百度一下国产精品A| 五月丁香六月婷婷网| 日日操日日撸| 深爱激情av| 国产亚洲色婷婷99精品| 五月丁香综合成人社区| 色色五月天 亚洲| 色婷婷久久| 另类精品视频在线观看| 五月伊人婷婷| 天天拍久久| 91婷婷丁香五月天免费视频网站| 99热资源在线| 丁香婷婷久久综合在线| 人人艹艹艹| 91丨九色丨国产打屁股| 大香蕉综合网| 五月天色色婷婷| 午夜av网| 亚洲一区二区 成人网站戴套| 丰满少妇猛烈A片免费看观看| 淫视馆aV二区一区| 99热碰碰热| 天天干天天爽| 婷婷五月婷婷| 天天插天天插天天插天天插| 天天爽夜夜爽天天爽夜夜爽| 天天干-天天日| 亚洲色色在线| 激情婷婷五月亚洲| 激情图片亚洲| 人人爽天天莫| 99热最新精品| 久久99这里只有精品| 亚洲中文字幕AV| 任你日视频| 插逼综合网| 人人操女人| 婷婷五月天丁香社区| 九九热在线视频观看免费10| 婷婷五月欧美AA片免费| 在线观看欧美3区| 黄色av网站在线免费播放| 天天激情站| 999热在线观看视频| 婷婷色色综合| 美女被操一区二区| 亚洲综合碰| 日韩久久日| 91伦| av线电影| 久99久精品视频| 丁香六月激情| 五月大香蕉| 日韩中文欧美| 草美女在线观看视频在线播放| 99热在线里有精品| 午夜不卡成人一区二区| 5月丁香六月婷婷| 五月 婷婷 成人| 激情五月天com| 久久综合首页| 天天干狠狠| 九九在线视频| 99re8热精品免费视频| 碰久久精品w| 九9九9无码| 日本色婷婷| 激情六月婷婷| 久九男女天堂| 丁香青青五月天| 狠狠干综合网| 婷婷六月激情小说网| va中文资源在线观看| 激情五月婷婷综合网| 五月激情婷婷开心| 国产激情在线| 色丁香五月婷婷| 九九综合影音先锋| 操人精品| 五月丁香婷婷网网网网| 激情黄色小说五月天| 五月丁香六月婷婷欧美综合| 久久久久激情| 四虎国产精品永久在线国在线| 玖玖九九超碰| 99在线视频资源| 久久婷婷丁香五月一二三| 夜夜操狠狠操天天操| 五月天开心婷婷激情网站 | 呦呦视频无码播放| 美国十月色婷婷在线观看| 5月丁香啪啪啪| 成人国产欧美大片一区| 碰人人操| 性 色 婷婷| 这里只有精品2| 五月婷婷影| 色综合99无码| 丁香婷婷五月六月久久| 色五月天中文字幕| 五月天成人综合| 久久婷婷热| 欧美日韩精品一区二区三区钱| 9久久精品| 婷婷五月丁香综合人妻| 婷婷久久网| 久爱综合| 91九色首页| 激情五月婷婷色播网| 九九综合九九| 六月五月天婷婷涩播在线| 色五婷婷| 欧美激情-区二区三区| 五月丁香激情综合| 99在线免费视频播放| 永久无码色| 激情五月天开心总和网| 99热在线观看| 1024婷婷综合久久五月天| 激情丁香网| 色999亚洲人成色| 婷婷狠狠香蕉综合| 五月激情丁香久久综合网| 九九热精品视频| 成人精品一区日本无码网 | 国产99久久久国产精品免费看| 婷婷五月天久久综合88| www.日韩艹| 91精品婷婷国产综合久久| 97碰 在线视频观看| 五月丁香网av| 婷婷五月丁香综合激情| 久草婷| 99热这只有| 色玖玖综合网| 亚洲成人无码片| 天天干天天干天天干天天干天天干天天 | 香蕉视频91| 狠狠干激情五月| 久久久五月天| 久久精品夜色噜噜亚洲a∨| 思思热热久久| 91久热| 最新色色五月天| 婷婷五月天免费视频| 久久caop| 草美女在线观看视频在线播放 | 日日夜夜天天| www.超碰在线| 五月丁香激情综合啪啪| 久久五月天丁香花| 色婷婷狠狠久久综合五月| 丁香六月婷婷久久综合| 任你爽视频| 伊人www22综合色| 无码九九九九| 人人爽欧美婷婷久久久五月丁香| 国产真实乱了老女人视频| 热99这里只是精品| 亚洲AV成人在线| 欧美色色色色色色色色色色| 五月丁香六月婷婷欧美综合| 天天肏视奸| 五月天色在线| 免费看欧美成人A片无码| 色五月涩涩婷婷蜜桃| 99性视频| 九九99免费视频| 色色丁香婷婷综合| 丁香九月综合| 久久婷.com| 九九99九九99九九99视频网| 狠狠狠狠狠狠色| 91丨九色丨熟女丰满| 99热精品在线| 人妻aV在线| 91大神操美女| 大香蕉久艹| 天天色宗合| 亚洲区,视频区,视频区免费| 5月丁香啪啪啪| 9+1视频网址| 久久性视频| 人妻系列久久久久久久久久久| 99久久99久久综合| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 99色视频| 激情五月婷婷啪啪| 五月天丁香久久综合| 天天天天色天天天天天干| 丁香九色不卡aaa | 丁香五月大片| 激情五月天天| 2025色婷婷| 日亚二欧美| 综合色五月| 久久激情视频99| 五月色综合| 久久机只有这里精品| 99碰碰。| 深爱婷婷网| 另类图片激情五月| 九九無妻| 亚洲综合色丁香婷婷六月| 99爱在线| 欧美 日韩 成人| 120分钟婬片免费看| 99这里只有精品| 伊人色欲五月天| 五月婷婷精品| 亚洲丁香花色| 色欲日日躁| 欧美碰碰| 99久久久免费| 婷婷久久国产视频| 国产综合A片| 亚洲AV综合网| 秋霞午夜理论| 五月丁香狠狠爱婷婷综合| 性爱久久| 五月婷婷丁香啪啪| 婷婷影视久久| 久久精品夜色噜噜亚洲a∨| 人妻狠狠操| www,99热在线观看| 亚洲综合视频网| 开心深爱五月天| 婷婷五月另类网站| 91美女被操| 99ri视频在线观看| 五月婷婷影| WWW.五月天9999| 禁片二区| AV人人操| 亚洲视频伍月婷婷| 婷婷综合激情| 大香蕉婷婷婷| 五月婷婷天| 26uuuuuuuu国产| 一起草Av| 国产亚洲AV人片在线| 色婷婷六月天| 久久丁香五月婷婷| AV在线大香蕉| 色综合色香蕉网| 色综合久久44| 97色婷婷五月天| 男人天堂99| 99婷五月| 狠狠干无码| 丁香六月成人| 丁香五月 综合| 狠狠爱夜夜| 亚洲精品久久久无码| 五月婷婷丁香啪啪| 婷婷色五月天综合网| PORNY九色9l自拍视频成人| 成人在线观看精品| 色一情一乱一乱一区91Av| 日本 @ va 免费| 99 热| 天天干,天天操,天天射| 一级操逼大片| 丁香五月香蕉| 久热这里只有精品6| 婷婷深爱五月天在线| 97人人操人人| 欧美日韩一区二区三区四区| 91超碰人人操| 日本欧美国产| 99色 色| 伊人大香五月天| 亚洲网站999| 久9草在线观看视频| 久碰视频| 久久99久久久久久| 日日噜狠狠色综合久| 思思热性操 | 国产在线黄色| 五月天激情小说欧美激情| 深爱激情五月天色婷婷| 婷婷99中文字幕| 91久草五月天婷婷| 午夜无码熟熟妇丰满人妻| 超碰国产在线| 97色97干| XX色综合| 五月丁香龟婷婷| 五月丁香婷婷成人伊人网| 九九99久久| 五月丁香色婷婷久久| 久久99免费视频网站| 超级碰碰97在线| 中文字幕成人| 青草激情综合| 五月天久久婷婷| 欧洲色色| 婷婷五月天色播| 丁香成人色情五月天| 91dy.av| 丁香桃色综合网| 五月激情婷婷图片基地| 色婷婷综合久久久久| 1024成人在线观看| 色原狠狠综合| 五月色丁香婷婷综合| www.韩日视频| 色色色com| 黄色中文字目| 精品少妇人妻AV无码专区偷人| 日韩成人电影AV| 婷婷亚洲综合| 五月天成人综合| 亚洲热视频在线| 日日爽日日| 中文字幕成人| 这里只有精品2| 开心激情网在线| 日韩成人精品中文字幕| 99色色网| 色播五月| 亚洲综合婷婷| 五月丁香啪啪啪| 深爱激情网噜噜色| 五月丁花色综合网| 激情五月丁香激情综合网| 五月丁香婷中文| 五月天狠狠干| 婷婷色激情五月天| 日韩1区2区| 七七九色| 久久色区| 婷婷六月激情| h在线看免费版在线看| 免费做A爰片77777| 91男人操女人视频| 色婷婷中文| 色播色丁香五月| 亚洲综合在线网站| 香蕉久久国产av一区二区| 狼友视频在线观看18| 99久热| 日本精品。999| 9999热这里只有精品| 激情婷婷啪啪| 亚洲成人无码网站| 亚洲综合在线视频| 亚洲人妻av伦理| 超PEN精品在线| 久久人视频| www.久久久久久久| 五月天天天操天天爽夜夜操| 婷婷狠狠五月综合| 亚洲99精品欧美一区| 991精品在线视频| 久久久久久久人妻| 国产免费性爱| 99少妇精品| 操碰97| 丁香激情六月天婷婷| 色婷婷丁香五月在线观看| 五月丁香婷婷综合久久| 欧美日韩91| 狠狠色综合图片| 亚洲色图45p| 国内裸舞二区| 五月婷婷综合精品| 久久婷婷综| 超碰v| 4399欧美另类视频| 九九热亚洲中文在线观看免费| 色小说五月婷婷| 日日爽夜夜爽| 91chinese在线| 亚洲 成人 电影av在线观看| 大香蕉综合在线| 五月天婷婷伊人| 久久婷婷亚洲| 久碰视频| 99视频在线观看视频| 丁香六月激情| 丁香五月激情综合网激情五月| 五月丁香花婷婷玉莉AV| 在线观看亚洲视频影院| 9+1视频网址| 婷婷五月色花丁香社区| 996热| 色色色欧美色色| 欧美婷婷丁香五月社区| 丰满少妇猛烈A片免费看观看| 久久香蕉婷婷| 天天日天天插天天操| 五月亚洲| www.狠狠操| 在线观看免费狠狠色丁香香综合| 色婷婷丁香五月在线| 五月婷婷丁香五月| 怡红院AV亚洲一区二区三区H| 色婷婷97| 影音先锋自拍网| 人人澡玖玖一| 激情五月婷婷丁香综合网| 99久久婷婷国产综合精品草原| www.夜夜爱.com| 婷婷激情中文综合| 五月天.com| 大地9中文在线观看免费高清| 激情五月,激情综合网| 5月婷婷六月丁香| 九九操操| 五月丁香婷婷综合网色欲| 久久亚洲网| 黄色三级日本| 99色在线视频观看| 天天干,噜噜色,狠狠色| 丁香五月天黄色片| 九九综合88| 九九亚洲小视频| 天天色天天日| 六月丁香婷婷色狠狠久久| 五月婷婷香蕉视频| 色私五月婷婷| 婷婷中文字幕网站| 日韩 欧美 国产 一区 二区| 久久偷拍综合五月天| 国产精品99久久久久久久女警| 色综合大香蕉| 99热这里只有精品2| 99色爱| 亚洲视频a| 九色91视频| 在线综合91| 五月丁香六月花| 精品一二三区久久AAA片| 中文字幕成人| 亚洲天堂啪啪| 五月天大香蕉AV| 狠狠色丁香久久婷婷综合五月| 九九热视频在线观看| www色色com| 男人天堂99| 婷婷五月丁香超碰| 久久美女五月天| 亚洲日比视频| 呦呦视频无码播放| 日本人妻伦在线中文字幕| 婷香五月网在线| 夜夜干夜夜操| 超碰99在线观看| 97人人看| 非洲一级AV| 天天干天天做| 99久久久久久久| 永久精品| 色婷婷综合在线| 国产三级秋霞| 日噜噜色| 狠狠色综合久久| 久久五月丁香综合| 婷婷五月天成人综合网| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 国产午夜成人AV在线播放| www.五月天婷婷.com| 综合色播| 99久久久国产大片区| 伊人五月综合网| 色色综合成人网| 日本啪啪天堂| 九九激情综合| 九久9精品| 激情婷婷六月天| 这里只精品| 99无码精品| 婷婷激情蜜桃玖玖丁香| 丁香五月五月婷婷欧美大香蕉| 五月天婷婷色小说| 色婷婷五月天av在线| 伊人AV五月婷| 欧美日韩国产一区二区| 激情 婷婷| 91色综合| 99热精品在线| 开心五月激情站| 色婷丁香91| 日本颜色视频人人爱| www.无码com| 色色丁香婷婷综合| 婷婷在线播放av| 五月综合激情婷婷六月色窝| 99热这里只有精品23| 大鸡巴伊人网| 99色在线观看视频| 色色五月婷婷| 亚洲欧洲中文日韩久久AV乱码| 九九热这里只有精品9| 亚洲视频久久| 99热亚洲| 五月天婷婷黄色视频| 1024在线一区| 五月婷婷婷婷| 激情五月婷| 五月婷婷啪啪| 五月婷婷福利| 在线观看996精品| 五月婷婷六月丁香在线| 综合狠狠干| www.久久色.com| www.99久久久| 亚洲婷婷丁香五月天激情小说 | 激情婷婷六月天| 26UUU精品一区二区c〇m| 青青艹b| 色五月激情婷婷| 婷婷激情鹿城五月天| 久久一级免费黄色片| 婷婷五月av| 欧美黑人巨大猛烈cuckold| 五月天堂色色| 国产色色视频| 99免费视频在线观看爱| 九九99九九99| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 综合在线丁香五月| 丁香五月天婷婷91| 五月丁香影院| 人人妻久久妻| 色性综合| 激情超碰网| 五月丁香六月婷婷久久| 日韩久久这里只有精品| 婷婷月综合| 影音先锋自拍网| 天天搡日日搡aaaaⅩ| www.五月激情红色| 日韩综合天堂| 超碰成人影视|