99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

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
返回資訊列表
婷婷综合五月| 激情五月开心五月在线视频| www,99视频| 能看的AV网站| 色五月,婷婷大香蕉| 97色色综合| 久操操| 婷婷中文字暮| 天天色·欧美| 99日精品视频| 色综合99色| 五月丁香激情婷婷| 五月丁香色六月激情干大屄| 国产性色蜜乳| 五月婷婷无码| 9|无码久久久久久| 在线看黄色| 九九色色| 久久婷婷综合五月天| 五月婷婷色吧!| 色婷婷四色| 99操碰| 夜夜做夜夜愛| 色狠狠色| 免费人人操| 色欲色香伊人| 五月花婷婷最新| 婷婷日本色| 婷婷综合五月激情| 在线免费观看激情视频| 久久精品系列| 丁香色婷婷| 久一这里有精品国产| 婷婷五月丁香六月天亚洲综合| 激情丁香婷婷| 综合色婷婷| 深爱五月激情| 5五月综合网亚洲| 五月婷婷色综图片| 亚洲综合五月| 激情五月婷婷视频一区二区三区| 久久草大香蕉| 狠色狠色狠狠色综合网| A片试看120分钟做受视频红杏 | 五月丁香婷婷无码中文| 99在线亚洲| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 色婷婷五月天av在线| 99视频久久| 大香蕉九操| 五月丁香久久网| 激情AV| 丁香五月激情网| 一区中文字幕电影| 久久五月天黄色五月天色网址| 俺也去综合| 五月天色婷婷网| 久久五月天色婷婷| 五月丁香日本一抹本| 日韩人妻AV在线| 丁香婷婷六月天| 婷婷中文字暮| 婷婷五月天久久| 色婷婷视频综合| 丁香五月婷婷无码AV| 六月激情丁香一道本7777| 蜜臀AV在线观看| 亚洲AV成人在线| 天天舔天天| 99免费成人网| 亚洲99视频| 激情精品久久| 亚洲天天免费| 五月丁婷婷| WWW丁香五月| 大香蕉AV在线| 五月婷婷伦理| 激情网婷婷婷| 九色91视频| 伊人啪啪网| 九九家庭影院| 五月久久亚洲| www.婷婷| 亚洲黄色影视| 久草婷婷网 | 操日视频| 丁香成人五月天| 天天干天干| 激情五月天婷婷| 操久久网| AA片在线观看视频在线播放| 婷婷香蕉视频| 久久99网站| 超碰99在线观看| 国产小网站| 六月婷婷网| 都市激情亚洲| 五月激情久久综合| 日本99在线| 黄色五月婷婷| 久久色大香蕉| 婷婷99狠狠躁天天| 亚洲国产成人裸舞| 亚洲激情.com| wwwss在线观看| 色婷婷九月| 天天日日夜夜| 久久99看免费| 六月婷婷狠狠| 五月天激情影院| 亭亭玉月丁香| 在线视频激情网站| 只有久久精品免费| 日本五月婷婷| 色婷婷8| 婷婷狠狠爱| 五月久久婷婷丁香| 色色COm| 五月婷久久| 风流少妇A片一区二区蜜桃| 亚州第一A片| 色五月婷婷91在线| 91色婷婷综合久久中文字幕二区| 狠狠操狠狠做| www.色婷婷| 99精品久久久久久久久| 99久久国产成人精品| 开心五月天激情网站| 停停五月色宗合| 九月色婷婷| 婷婷综合国产| 欧美亚洲999| 婷婷色正月| 色色激情| 六月丁香啪啪啪| 巴基斯坦粉嫩无码视频| 免费无码毛片一区二区A片| 久久hd| 五月天色婷婷视频| 国外亚洲成AV人片在线观看| 综合狠狠五月婷婷| 中字幕视频在线永久在线观看免费| Av狠狠色丁香婷| CAOBIBI| 激情五月天在线观看婷婷| 99色在线观看| 亚洲精品字幕在线观看| 天天搞夜夜六| 草草夜夜操| 丁香 婷婷 激情 综合 五月| 激情第四色| 六月丁香婷婷综合狠狠爱夜夜爱| 999久久久国产精品| 青青色com久久| 激情五月丁香激情综合网| 婷婷五月天色色| 4399伦理午夜| 97碰碰人人| www.99婷婷| 欧美婷婷成人| 激情久久久久久| 久色激情| 五月丁香色婷婷久久| 开心激情网在线| 九九久久9 9在线观看| 9久久久| 182TV亚洲| 激情五月天之五月婷婷| 五月婷婷久草| 亚洲这里只有精品| 色婷婷色99国产综合精品| 国产激情av| 亚洲av无码精品色午夜| 午夜一区| 丁香色播五月天| 尤物一区二区| 久久六月综合| 丁香五月婷婷啪| 91久久综合亚洲鲁鲁五月天| 台湾综合丁香五月蜜桃| 色婷婷丁香五月| 26uuu四色| 青青草五月天| 青青草婷婷综合五月| 91热久88| 久久精品4| 99久久精品色老| 丁香五月色色| 五月丁香六月欧美| 久操福利| 日韩av变天就操逼不卡区| 天天干天天色天天干| 九九99精品视品| 五月丁香激情综合| 开心日韩丁香婷婷五月| 日熟女| 99超级碰免费视频| 综合狠狠干| 大香蕉伊然在亚洲90| 激情五月婷婷丁香| 久久人妻久久久久| 在线99精品| 激情五月天在线视频| 任你爽视频| 99re在线播放| 成人在线综合| 日本熟妇人妻在线| 色玖玖综合网| 99碰碰。| 九九热视频在线观看| 激情久久五月网| 亚洲AV永久无码影院黑人| 青青草原亚洲天堂| 中文字幕色色| 九九视频这里是精品五月| 大香焦啪啪啪| 丁香五月婷婷在线| 婷婷成人视频| 婷婷五月六月激情| 久久综合热17c| 欧美男女婷婷| 五月天天丁香婷婷| 99热婷婷| www色色色com| 五月天 婷 欧美亚洲| 婷婷日在线观看| 色五月色开心开心五月| 精品色| 五月天婷婷人妻| 蜜臀丁香黄色婷婷五月天| 婷婷五月天渟渟| 热99这就是精品视频| 久久A热| 丁香花五月天激情| 色婷婷天堂| 老师的粉嫩小又紧水又多A片视频| 久久久人妻| 天天色,天天操,天天射| 激情五月综合视频| 日韩 欧美 国产 一区 二区| 97干97色| www.婷婷亚洲基地| 丁香五月综合激情啪啪| 色播五月综合网| 日韩精品视频中文字幕| 八戒青柠影视剧在线观看| 日韩久热| 九九色综合网| 日韩在线观看亚洲| 日日插日日干| 性生活视频98791| 丁香婷婷五月综合影院| 激情丁香久久久久久| 苗黎美女四级成人版一级二级毛片| 任你爽免费视频| 五月天综合在线观看| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 99色视频| 中文字幕,综合,91| 婷婷五月天免费视频| 日本99视频| 丁香视频| 97超碰在线免费观看| 久久天堂色| 久久小说网| www.久久99| 久婷婷| 婷婷五月丁香综合| 综合99综合久久久久久久| 狠狠干,狠狠操| 五月天激情婷婷久久| 六月丁香激情综合| 精品久久久人妻| www.五月激情.com| 五月综合激情综合久| 狠狠操天天操综合| 激情五月婷在线精品| 欧美久久婷婷| 99久久婷| 国产FREESEXVIDEOS性中国| 99热这里| 狠狠色噜噜狠狠| 日本一级特黄大片AAAAA级| 国产精品视频免费看| 久久久久久97| 婷婷五月天色丁香| 日韩色色视频www| 99色视频在线| 99精品免费| 日本久久精品| 久草嫩草在线观看| 午夜丁香婷婷| 亚洲九九99精品视频在线播放| 日日懆天天懆| 人人摸人人澡人人| 大香网伊人久久综合| 欧洲电影在线观看免费版英语版| 激情五月天第四色| 激情五月丁香综合蜜桃| 丁香婷婷久久综合在线| 六月婷婷色综合| 久久色五月天| 99色在线| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 激情综合网五月婷婷| 欧美3AaAa大片| 精品久久艹| 人人射人人高潮| 涩涩五月天| 99视频这里有精品免费观看| 五月天大香蕉| 无语停婷丁香网| 久久日韩婷婷五月| 久久精品国产色| 亚洲综合五月天综合| 婷婷丁香人妻久久在线观看| 狠狠色成人影片| 丁香五月婷婷激情网| 伊人激情| 99超碰在线观看| 婷婷激情九月| 狠狠色婷婷六月激情网| 9久国产精品| 久久人妻精品| 亚洲综合在线网站| 欧美综合激情五月丁香| 久久色五月天| 天天日天天肏天天奸| 99玖玖精品| 激情图片亚洲| 一级二级色大片| 五月综合视频| 51XX午夜影福利| 久99久热只有精品国产99| 天天日天天插| 91超级碰人人操| 只有精品在线观看| 色色色色综合网| 五月综合激情啪啪啪啪啪| 丁香婷婷六月天| 六月婷婷国产| 五月婷婷六月激情| 五月亭亭六月色| rr天天操| 色在线免费观看| 男人的天堂999| 丁香六月在线| 教师性爱毛片| 五月婷庭丁香在线| 99热在线观看| 免费九九热| 综合色色婷婷| 婷婷五点亚洲| 狠狠 久久| 婷婷五月天激情综合| 人人草人人爱| 国产又色又爽又黄又免费| 综合狠久久| 五月天伊人综合| 婷婷伊人网| 激情综合五月| 五月天婷婷久久日| 五月的丁香六月的婷婷| 91碰碰| 国产午夜精品一区二区三区嫩草| 天天干天天av天天射| 久久99免费视频| 超碰人人射| 色婷婷在线影院| 激情五月婷婷综合色播小说| 99re热视频| 色色色色色色色色综合网| 伊人www22综合色| 久草xx性爱视频| 庭庭久久内射| 激情综合网五月婷婷| 五月色色色| 人人97操| 激情综合网,婷婷五月天| 99热乎| 欧日韩成人| 亚洲欧美一区二区三区四区爱爱动图| 丁香五月六月综合激情| 欧美色宗和激情| 99年操人人爽| 日韩999| 亚洲va国产va天堂va综合va| www.久久久久| 中文字幕97超级碰| 成人短视频在线免费观看| 激情五月狠狠| 超91热| 丁香婷婷少妇| 婷婷五月五月丁香| 丁香婷婷六月| 丁香综合婷婷开心激情网| 东京热伊人| 五六月婷婷| 五月婷婷丁香六月| 天天天天色天天天天天干| 青青操成人福利| 丁香五月婷老师| 日本精品干| 999热在线视频| 九九热这里只有精品7| 久久a热| 免费99情趣网视频| Caoub青青超碰| 久久色9| 五月婷婷五月天| 丁香六月婷婷综合| 99久久6| 成人一级片| 五月婷久久| 久久66精品| 亭亭玉月丁香| 国产精品电影| 久久五月天婷婷| 99久久久久| 亚洲亚洲人成综合网络| 99热热这里只精品996小说| 超碰成人电影| 99久久偷拍视频| 99A级片| 丁香婷婷免费| 欧美啪啪9| 图片区 小说区 区 亚洲五月| 色婷五月天综合网| 第四色婷婷日本| 丁香婷婷激情网站| 色色色热| 99∨VTV| 开心婷婷五月天电影院| 色哟哟www| 在线观看免费观看在线9久| 五月婷婷丁香婷婷| 久久只这里有精品| 色很很96| www,色婷婷| 最新无毒无码AV| 日韩综合久久| 丁香五月综合AV在线| 99re最新地址视频| 黄网网站在线播放| 日韩美女在线视频19| 女人高潮内射99精品| www.射伊蕉婷婷| 激情二色月| 欧洲不卡视频| 91碰九色| 精品99*| 欧美久热| 六月激情网| 久久9精品视频| 久久久久久久合一狠狠做深爱| 深夜婷婷五月丁香| 人人色性网| 日日夜夜狠狠婷婷色| 婷婷激情综合| 毛片网站谁有| 国产精品在线视频| 六月丁香婷婷尤物| 五月丁香色婷婷综合| 五月色婷婷综合丁香精品无遮挡| 五月色情婷婷开心五月天| 亚洲综合久| 五月丁香久久网| 超碰97干| 久操人妻| 日本的α片xxxwww| 色九月激情综合网| 五月天玖玖狠狠色色| 婷婷丁香五月天小说| 婷婷丁香水多多视频| 99re这里只有精品视频6| VA五月激情在线| 五月久久五月激情| 先锋资源 996| 五月丁香六月婷婷无码| 1024操逼视频| 九九亚洲| 色级停停| 大天天伊人| 久草五月天| 亚洲五月天婷婷| www.99婷婷| 国产色色在线| av免费人人| 五月丁香黄色视频| 婷婷无码视频| 久久精品99国产精品日本| 九九99久久精品| 99热九九九九| 99精品久久久久| 99精品偷自拍| 午夜婷婷久久| 人妻系列久久久久久久久久久| 久久奄也去色色网站| 色婷婷丁香五月天| 99热6这里只有精品| 五月综合久久| 丁香色影院| 五月天综合久久| 激情五月综合视频| 欧美日韩一区二区三区四区| 99re8这里只有精品99re8热视频| 99久久综合狠狠综合久久| 91操屁股| 91热er| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 99视频| 五月婷婷激情久久| 丁香婷婷久| 色狠狠综合| 人色五月天婷婷| 999影院成人在线影院| 中文字幕,综合,91| 99热这里只有精| 美欧成人视频| 色婷丨日丨天丨综合久久| 色色色色综合| 丁香五月激情久久麻豆| 亚洲操逼网| 五月深爱网| 五月丁香| 亚洲超级碰| 五月丁香啪啪拍| www,超碰| 1024在线视频| 五月婷人妻| 日韩啪| 久热精品免费视频4| 99re热在线视频| 99福利视频| 九九激情综合| 《久久综合九色综合97婷婷| www.俺去也com| 五月丁香影视| 9久热在线视频精品| 99热在线观看亚洲区| 五月天色五月| 中文字幕AV在线| 99热官网精品在线| 999热在线观看视频| 99国产er热视频| 丁香五月天婷婷激情| 香蕉97碰碰碰欧美| 成人五月天在线视频在线观看| 狠狠爱婷婷爱| 色婷婷精品视频| 久久精品亚洲热| 久久九九国产精品怡红院| 91在线操| 狠狠狠狠狠干| 亚洲视频无| 伊人AV五月婷| 2015在线中文字幕| 色色色色色色97| 久久久久久欧美精品se一二三四| 激情综合色| 五月激情婷婷综合| 99日逼视频| 狠狠狠狠狠干| 九九十99视频| 综合久久高清| 五月婷婷六月天| 97人人搞| 久久婷婷视频| 亚洲成人免费在线| 日韩抽插操逼| 国产成人精品123区免费视频| 久久色频| 蜜桃人妻无码AV天堂三区| 五月综合视频在线| 无码人妻精品一区二区蜜桃色欲 | www.夜夜操.com| 国产成人亚洲综合亚洲| 五月丁香婷婷综合视频| 五月丁香六月婷综合成人综合| 久九色| 91一起操| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 国产成人亚洲综合A∨婷婷| 伊人激情综合网| 久操婷婷| 色婷婷色久综| 婷婷五月天性爱视频| www.婷婷五月| 网色99| 亚洲九九夜夜| 丁香五月天天高清在线| 色五月婷婷自拍| 久操大香蕉| 性爱AV天堂| 99国产在线精品视频| 五月丁香六月香综合激情| 精品自拍97| 色综合五月天| 色婷五月婷婷| 久久人人添人人爽添人人片αV | 九九热精品| 五月综合六月婷婷| 欧美久久网| 99热这里都是精品| 五月婷婷丁香色播网| 百度4399有码精品V在线观看| 一区视频网站| www 五月天 com| www.玖玖婷婷在线| 日日操日日撸| 色激情五月| 色一情一乱一乱一区91| 久久久久久久久久久-久五月天婷婷| 亚洲第79页| 人人操91| 色婷婷精品视频在线播放| 久久亭亭电影| 成人电影AV在线观看| 色五月婷婷久久爱| 丁香六月激情毛片| 欧美大肥婆大肥BBBBB| 天天草天天摸| 五月丁香婷婷五月色| 日hao1区| 五月婷婷色在线| 成人精品人妻| 天天做天天摸| 五月天伊人av| 成人免费高清在线播放| caop视频| 婷婷五月天网| 欧美色频| 婷婷.com| 夜夜骑日日夜夜| 色哟哟www| 91碰免费视频| 99ri视频| 久99视频| 色久综合| 丁香五月欧美激情| 欧美色六月婷婷| 婷婷伊人久久| 伊人三级激情| 狠狠色综合久久久久| 丁香五月成人| www.99热视频| 99色热| 丁香五月婷婷成人网| 大香蕉伊人久久| 光棍影院日韩精品| 激情婷婷五月社区| 97热91| 91啪啪视频| 久久99精品九九久久久婷婷| 日本色爽| 五月天激情www| 亚洲色情一区二区三区四区| 五月天天天操天天爽夜夜操| 欧美日韩99| 99九九玖玖| 玖玖婷婷视频| 91seAV| 综合五月激情| 美女久久婷婷| 色九九中文字幕| 全部老头和老太XXXXX| 五月丁香激情综合网| 97碰在线视频| 99久久久久| 97碰久久| 99这里只有精品|v| 激情五月久久| 任你草| 五月婷婷啪啪| av九九| 激情五月婷婷| 色135综合网| 97在线观视频免费观看| 夫妇交换刺激做爰| 亚洲成人在线在线| 97超级碰人人| 夜夜爱爱亚洲| 九九99九九99九九99视频网| 亚洲网视屏| 一级黄色影片| 激情综合女人网五月播播| 亚洲成人AV在线播放| 91/九色黑人| 开心五月婷婷伊人| 五月婷婷五月天在线| 噜噜噜噜噜色| 丁香五月婷婷在线观看| 青草青青草| 99热这里只有精品2| 男人的天堂五月丁香| 九九视频这里有精品| 日屌日日操日日色| 婷婷成人视频| 久久婷婷五月丁香网| 亚洲99综合| www.91久久| 96丁香六月婷婷蜜桃综合久久| 久色资源| 天天爱天天操| 大香蕉在九| 九九Y精品热播| 激情五月婷婷她| 伊人久久综合| 久久久久久久久久8888| 久久在线视频免费观看| www日本熟妇99在线视频| 亚洲区在线| 亚洲Av成人在线观看| www.精品99| 六月激情婷婷色| 激情五月婷婷啪啪| 五月天婷婷社区| 91精品久久久久| 狠狠操综合| 91 影音先锋| 国产44页| 欧洲永久精品| 色99欧洲色19| 99精品久久久久久久婷婷| 天天爽天天干| 丁香花综合永久入口| 日韩免费99| 五月丁香手机在线| 狠狠色综合五月| 婷婷综合亚洲| 成人做爰高潮A片免费视频| 1024在线视频| 久久久久久久综合狠狠综合| 久久久精品人妻录| 午夜激情综合| 久久在线视频免费观看| 婷婷久久18| 国产超碰在线| 精品,99| www.五月婷婷久久.com| 色吧婷婷五月亚洲| 久热人妻| 九九热免费| 五月激情小说| 操婷婷久久| 天天草人人摸| 欧美丁香五月夫妻天| 欧洲色| 欧美色色色色色色| 色狠狠六月| 婷婷五月天久久| 性爱激情五月| 丁香五月1页| 婷婷播5月| 最新高清无码专区| AV在线大香蕉| xxx.色婷婷| 欧美电影在线观看| 久久婷五月天| 狠狠色五月天| 91九色超碰| 99色热| 五月激情综合网| 9久热精品在线视频| 大香蕉婷婷丁香天堂AV| 色噜噜狠狠插综合| 亚洲亚洲人成综合网络| av久热| 天天操婷婷| 91夫妻视频| 99热久久这里只有精品| 五月色网| 欧美日韩成人在线观看| 色色色色色网站| 色欧美色色色| 婷婷天天舔| 婷婷丁香人妻天天爽| 五月婷婷丁香大陆免费| 五月丁香婷婷免费视频| a免费在线| 色五月婷婷、老熟女| 中文字幕 中文字幕明步| 欧美日韩成人一区二区| 五月在线| 色婷婷最新域名 | 久久成人亚洲欧美电影| 亚洲色小说在线综合| 色无码| 久久久婷婷婷| 日本色天堂| 操九色| 五月丁香网站| 黄网在线观看免费| 日本久久精品18| 欧美操综合| 五月婷婷网五月在线| 七月丁香婷婷 色色| 五月婷婷免费视频| 开心色色五月天综合| 狠狠色无码| 激情五月成年| 日日做夜夜爱| #NAME?| 五月天婷婷在线播放| 五月色激情综合网| 婷婷六月亚洲综合| 色噜噜夜夜夜综合网| 中文AV在线播放| 色婷婷基地| 99热久| 新激情五月天色播| 4438全国最大视频成人网站在线观看| 99热这里只有精品22| 性爱网六月丁香| 色婷婷狠| 色婷婷五月天中文字幕| 久久性爱视频| 五月婷婷丁香在线视频| www久久久久| 五月丁香成人| 性爱动图国产麻豆一区二区三区| 99热在线看| 99热很操老逼| 伊人激情综合网| 中文字幕日韩成人| 色情综合| 五月丁香777| 99精品无码| 91Chinese在线| 性天天中文网| av在线资源| 久久婷婷五月天蜜桃| 成人午夜无码视频| 99热这里只有精品免费观看| 亚洲热综合网在线观看| 新99思思视频| 婷婷五月情| av狠狠操| 丁香六月啪啪| 五月婷网站| 99婷五月| 人与禽A片啪啪| 在线观看亚洲AV| 色五月激情问网站| 成人午夜天| 国产日日夜夜操| 九九热这里只有精品12| 天天爱天天操| 再綫Av免费視品| 91凹凸在线| 成人做爰高潮A片免费视频| 久久精彩免费视频| 久久只有精| 五月丁香综合久久| 丁香六月婷| 99热九九热| 久色网址| 天天肏在线| 99热这里只有精品3| 女婷久久| 97色精品视频| 丰满少妇猛烈A片免费看观看| 极品人妻VIDEOSSS人妻| 亚洲高清在线| 内射爽无广熟女亚洲| 狠狠干综合网| 六月婷婷久久| 99热在线观看| 四LLL少妇BBBB槡BBBB| 日韩人妻白浆视频系列| 五月婷免费视频| 欧美 色婷婷| 亚洲亚洲人成综合网络| 久久婷婷视频| 五月婷婷自拍视频| 9999热在线免费观看| 亚洲在线网站| www久久99com| 97久久人人| 婷婷五月丁香99| 婷婷91| 夜夜干天天操| 丁香激情五月少妇| 国产在线aaa片一区二区99| 丁香婷婷偷拍| 中文字幕在线观看视频www| 久热爱大香蕉在线蜜臀悦色| 97自拍99| 色噜噜五月天| 婷色五月| 久久奄也去色色网站| 夜色综合网| 综合色网站| 婷婷色操| 综合激情五月丁香| 182tv992tv人之初午夜免费观看| 天天做天天爱天天玩夜夜爽| 91操黄| 丁香五月婷婷亚洲色图| 成人网站在线观看视频| 噼里啪啦完整版中文在线观看| 丁香亭亭久久| 欧美婷婷综合| 五月激情综合网| 67194国产| 开心五月天激情| 丁香激情五月少妇| 中文字幕永久在线| 婷婷欧美综合| 色玖玖爱| 99久久久久久久| 久久全色| 精品综合网在线| 潘金莲AAAAAAAAAA| 丁香性爱在线视频| 丁香色色五月| 一本色道久久综合狠狠躁小说| 欧美成综合在线观看| 九月婷婷综合网| av在线免费网站 | 九九精品9| 中文网婷婷字幕婷| 色五月自偷自拍婷婷婷婷| 97se视频在线| 香蕉狠狠爱视频| ay2区| 人人干天天舔| anquye五月| 日韩一级网站| 六月丁香啪啪| AA片在线观看视频在线播放| 九月丁香久久网| 色五月婷婷综合在线| 九九黄色网| 五月婷婷色男女| 色婷婷www| 久久九九@| 九九热精品视频在线观看| 婷婷丁香大香蕉| 香焦网五月天| 婷丁香五月天| 亚洲综合激情五月| 99色热| 五月久久丁香| 26UUU欧美激情一区二区| 丁香五月自拍| m色激情网| 91精品国产91久久久久青草| 江苏少妇性BBB搡BBB爽爽爽| 久久久香港| 五月丁香六月婷婷综合在线| 五月四色婷婷| 色五月色五天色情网| 91狠狠综合久久久| 日韩一区二区A片免费观看| 亚洲第一av| 99热免费精品热久久66| 能直接看的av网站| 欧美成人精品A片免费一区99| 中国丰满熟女A片免费观| 七七色综合| 激情丁香婷婷六月天| 五月丁香黄色视频| 亚洲操B| 色综合香蕉| 成人在线精品| www激情五月天| 六月色婷婷| 婷婷综合网性| 新五月天婷婷激情电影| 超碰成人免费| 超级碰 久久9| 大波美女VA网站| 中文成人在线| 五月婷婷很很色| 97色色色色| 精品久久人妻| 免费看欧美成人A片无码| 久99视频在线观看| 婷婷色正月| 丁香五月婷婷啪啪啪| 黄色网址五月婷婷| 99热欧| 国产午夜精品一区二区| 婷婷五月天丁香综合网| 一级精品999WWW| 91啪啪网| 婷婷干五月综合在线播放| 中文av网| 操逼国产91| 激情五月丁香综合网站| 99热啪啪| 一起肏在线视频| 综合欧美五月婷婷| 少妇人妻人伦A片| 俺去也五月| 美日韩成人| 五月婷婷av| 精品久久9| 五月婷婷啪啪| 久久影视婷婷五月| 色99热| 五月美女婷婷风骚| 久久只这里有精品| 99视频内射三四| 六月丁香婷婷综合色播| www.99热这里只有精品| 超碰在线9| 殴美综合激情五月天免费视频| 九久久九精品视频| 亚洲 无码 中文字幕 中出 | 香蕉人妻AV久久久久天天| sS丁香五月婷婷| 五月丁香综合激情| 亚洲另类电影| 91男同| www.一起草av| 日韩AAAAAAAAAAA片| 久久九九经典| 人人爱人人添| 91久久九九| 婷婷综合一二三| 天堂五月婷婷| 玖玖婷婷色五月| 中文字幕人妻在线| 久操人妻| 色五月开心婷婷| 国产乱人偷精品人妻A片| 538在线| 人与禽A片啪啪| 99热99ai| 99人妻碰碰碰久久久久禁片| 性爱综合网| 日韩aaa| 开心深爱五月天| 琪琪色综合网站| 色色色色网色色网色色| 新激情综合| 色五月色五天色情网| 狠狠丁香| 精品一二三区久久AAA片| 五月综合婷婷久久在线| 日本97在线观看| 97五月天| 欧美在线视频99| 久99热| 天天操天爱综合| 成人做爰A片免费看网站找不到了| 久久这里有精品在线观看| 婷婷伊人视婷婷婷| 在线成人网站| 综合激情综合啪啪| 色丁香五月婷婷综合久久| WWW.桔色成人.COM| 婷婷五月在线综合| 日操夜操天天操不卡| 色情婷婷五月天| 天天干,天天舔| 另类五月激情| 五月天激情综合网| 色情·com| 91碰操| 九九99九九99偷拍视频免费看| 男人天堂亚洲综合| 日韩啪图| 精品婷婷| 特级片神马电影| 在线观看的av| 51精品国自产在线| 天天插天天插| 日本在线免费中文com.| 九九激情| 欧美99热| 五月婷婷AV| 久久99激情| 久久九九精彩| 婷婷香草网| 99无码| 天堂婷婷丁香六月网| 色天堂97| 亚洲成av人影院| 狠狠色狠狠| 人人草人人爱手机视频看看 | 开心五月丁香综合久久| 五月丁香婷婷啪啪综合| 亚洲无码99| 九九婷婷网五月天| 黄色99网| 91人人澡人人爽人人看| 色色色色丁香| 无码操B| 99热这里只有精品16| 色五月丁香五月激情五月激情| 97伊人综合婷婷| 五月婷婷综合网| 色婷操逼| 天天色视频| 伊人久久婷婷五月天激情四射| 综合久久久| 97超碰欧美中文字幕| 91久热| 欧美97色| 精品久久人妻| 四色女婷婷| 久久这里只有精彩| 色99在线观看| 欧美日韩五月婷婷| 婷婷在线网| 五月天色综合| 久久久精品人妻| 亚洲婷婷五月天| 欧美激情综合色丁香婷婷五月天| 色在线五月天免费| 中文字幕在线免费观看视频| 五月激情婷婷国产精品久久久久久| 亚洲丁香花五月丁香花| 五月天偷拍| 九九伊人网| 99福利导航| 天天色天天日| 5月婷婷激情网| 深爱五月最新网址| 天搞天天天天天| 五月丁香婷婷中文| 五月丁香大相交| 五月丁香激| 99久久終合| 五月激情久久| 99天堂在线观看免费视频| 五月天综合| 一级黄色影片| 九九av| 天天搞天天爽| 操一操干一干| 五月婷在线| 欧美99热| 伊人色综合网| 91超碰人人操| 国产av天堂| 操91| 国产午夜精品一区二区三区四区| 99网| 久久性爱视频| www夜夜操| 中文字幕日产A片在线看| 99热最新| 欧美精品18| 青草视频在线观看视频| 极品人妻VIDEOSSS人妻| 久久久激情| 熟女人妻一区二区三区免费看| 色婷婷在线电影| 婷婷综合| 五月婷婷色在线| 99在线免费视频播放| 久久精品99久久久久久久久| 综合网色综合| av国产精品偷| 婷婷五月激情网站| 香蕉婷婷色五月| 狠狠艹狠狠艹| 高清无码中文字幕aVDV| 婷婷五月天堂一本在线| 九九热在线视频| 26UUU欧美激情一区二区| 色播五月婷婷| 日韩一级一片内射视频4K| 超碰国产在线播放| 五月婷av| 五月婷婷与六月丁香图片激情| 激情深爱婷婷网| 婷婷性爱无码视频| 色婷婷久久综合中文久久一本| 原琪琪色影院| 婷婷五月天成人网| 人人色人人弄人人操| 99久久五月天| 亚洲综人色综网| 综合xx网| 丁香五月婷婷香| 噜噜视频| 日韩精品一区二区三区,四区,五区视频| 日韩精品在线观看9| 97九色| 秋霞电影理论| 久久99激情丁香婷婷小说网| 五月久久婷婷| 国产性爱在线| 成人网站免费在线播放| 丁香色六月婷婷| 538在线精品| 婷婷91| 七七久久婷婷| 99久久精| 五月开行婷婷色五月| 五月丁香婷婷色色| 99国产精品久久久久久久久久久| 九九人人看| 丁香五月天人体| 97欧美在线| 婷婷综合| 婷婷五月综合色拍| 久久99热 这里有精品| 色色A| 97精品人人A片免费看| 97色97干| 日本欧美国产| 人人操AV| 日韩人人操| 久久杏爱视频| 六月丁香av| 婷婷丁香激情五月天色色色| 久久综合性| 中文av网站| 亚洲第一成人无码A片| 丁香婷婷五月综合影院| 欧美成人精品一区二区 | 热的无码综合视频| 国产成人网站在线观看| 五月天社区| 婷婷综合激情五月综合| 六月丁香VA| 影音先锋91网站在线观看| 亚洲不卡| 可以看的AV| 久久久久久久人妻| 九月激情网| 99热综合| jiujiuxiangjiaowang| 婷婷六月激情小说网| 九九热re99re6在线精品| 九九99热精品| 丁香五月婷婷色情综合| 色五月激情婷婷| 九九一区| 亚洲丁香五月深爱五月| 亚洲中文字幕网| 欧美日韩五月婷婷| 久久欧洲综合网| 丰满少妇猛烈A片免费看观看 | 色色色国产| 日日影院 | 色五月av伊人| 婷婷久久五月天| 久久刺激网| 91视频五月丁香| 日韩无码性爱| 天天操天天日天天操| 中文字幕丰满孑伦无码专区| www.夜夜操.con| 久久久久久久人妻| 亚洲视频二区| 色99热| AV成人在线播放| 九九无码| 日韩无码亚欧无码| 一级操逼内射在线视频| 亚洲宗合激情| 丁香六月天婷婷开心综合| 综合激情在线视频| 天堂资源欧日浪女在线播放| 婷婷狠狠操| 影视av久久久噜噜噜噜噜三级| 丁香狠狠色婷婷| 欧美日韩成人一区二区| 97在线视频人妻九色|