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
返回資訊列表
99在线免费观看| 人妻AV在线| 色欲一区二区三区精品A片| 色色色色欧洲| 久久激情五月婷婷| www天天干| 无码色| 丁香婷婷大香蕉| 久热 91| 成人网在线视频| 婷婷狠狠操| 超级碰碰碰碰视频| 日日爽夜夜爽| 婷婷在线免费| 久久视频在线| 色色综合色视频| 任你艹| 深爱激情四射| 超碰色女人| 九九热啪啪| 国产精品成人在线| 婷婷欧美综合| se色婷婷视频| 欧美精品99久久久| 色婷婷香蕉| 激情婷婷五月天网址| 国产午夜精品AV一区二区麻豆 | 五月四色激情| 大香蕉啪啪| 91Chinese在线| 五月婷天堂视频| 超碰在线9| 五月丁香色婷婷婷基地| 天堂久久大香蕉| 色五月综合网| 亚洲激情网| 激情综合五月| 五月丁香六月婷婷久久肏| 人妻丰满精品一区二区A片| 丁香六月婷婷色XXXX| 久久婷婷五月天丁香| 丁香五月婷婷六月丁香| 岛国av电影网站| 国产五月天婷婷| 国产成人AV| 亚洲无码99| 亚洲色 视频| 婷婷色影院| 亚洲日韩一页精品发布| 不卡在线视频| 97在线精品| 激情亭亭五月| 人人爽天天爽| 97久久人人| 五月天夜夜爱夜夜操| 九九色综合网| 99乱视频| 大香蕉99| 激情丰满熟妇五月| 五月婷婷影| 免费视频舔| 日韩AV在线免费| 99综合免费视频| 中文字幕在线日亚洲9| 亚洲AV网址| 婷婷四色五月| 伊人久久丁香狠狠婷婷综合香蕉| 丁香五月婷中字在线| 丁香婷婷成年| 色综合区| 婷婷她六月天| 91精品电影18T| 色99色| 婷婷综合玖玖五月| 丁香五月婷婷影院| 操逼巨乳91| 九热久| 狼人伊人干| 欧美三级视频下载| 欧美丁香五月97色| 丁香激情婷婷网| 激情五月天婷婷五月天| 大香蕉人妻| 操操国产| 婷婷五月丁香色色| 成人资源在线| 看婷婷五月天网| 久久人妻久久久久| 久久五月天黄色五月天色网址| 丁香 婷婷 激情 综合 五月| www.丁香五月| 五月婷婷丁香六月| 99色性爰网络| 成人在线观看精品| 成人在线视频男人的天堂4399| 99久操视频| 激情中文在线| 婷婷丁香五月综合激情视频| 最近韩国日本免费高清观看| 手机在线日韩视频中文字幕| 99热的无码| www,99热| 色婷青青| 五月天色婷婷视频| 夜夜操狠狠操| 色就色94欧美setu| 好吊操这里只有精品| 久久婷婷五月天综合| www.91在线观看| 亚洲乱码精品久久久久..| 日本97在线看片| 超碰色女| 五月丁香婷婷成人网| 婷婷五月天开心激情网| 色色色色欧美| 在线观看的av| 天堂久久性| 精品久久穴| 另类视在线| 天天撸夜夜爽| 亚洲精品成人| 91人人网| 九九久久五月天| 久久精彩视频18| 国产99热在线看| 天天插天天插天天插天天插| 欧美日韩一区二区三区四区| 这里只有精品在线免费视频| 成人五月天综合网| 丁香婷在线| 成人五月天丁香婷| 婷婷综合亚洲| 婷婷久久亚洲| 久久女人天堂| 五月色影院| 婷婷丁香91| 精热在线综合网| 偷拍91九色| 五月天婷婷成人网| 开心五月婷婷六月丁香| 99久久国产宗和精品1上映| 亚洲精品成人| 五月综合视频| 伊人六月无码视频| 天堂在线伊久| 亚洲综合激情五月久久| 色婷婷啪啪啪啪啪啪| 蜜桃五月天| 偷拍91九色| 丁香熟女乱| 五月网在线| 国产毛片操B| 日本熟女一区二区| 丁香六月婷婷开心婷婷网| 五月综合缴情网| 五月婷婷黄色网址| 嫩草国产| 久久精品人妻| 伊人久久婷婷| 精品香蕉99久久久久网站| 99在线观看视频免费| 色五月天综合网| www,五月天com| 五月色综合| 婷婷久草| 国产一区二区av免费| 一个色的综合| 九九综合88| 欧美这里只有精品| 91狠狠综合久久| 99无码精品| 激情五月图| 亚洲乱码日产精品BD| 久久久久8888| 91 影音先锋| 米奇影视五月天| 欧美日本国产| 亚洲成人噜噜| 婷婷五月天丁香| 五月婷婷深深爱| 超碰97色| 九九热99热| 99热20| 色色婷| 五月婷婷伦理| 欧美性爱中文字幕| 综合AV网| www九九| 六月欧美综合色情| 丁香婷婷色| 九九综合久久| 91久久色| 婷婷五月丁香网| 五月婷激情影院| 久久综合丁香激情五月| 国产综合激情五月久久| 热久国产| 91碰免费视频| 日本色综合| 激情综合亚洲| 亚洲色综合色网| 六月婷婷中文字幕| 99.色| 91se精品国产| 婷婷亚洲综合| 天天色综合综合| 日本久久人| 超碰在线精品| 婷婷精品在线| 先锋资源91| 五月丁香综合激情| 五月丁香777| 婷婷五月天堂一本在线| 很操日本7| 久久青青日本视频| 91嫩草国产线观看亚洲一区二区| 五月婷婷在线免费观看| 婷婷情色五月天| 午夜精品777| 成人综合视频在线| 黄色91在线观看| 高清无码网址| 天天拍天天操| 天天爽天天| 婷婷五月天影视首页| 天天插天天很| 婷婷丁香五月天综合网| 再綫Av免费視品| 任你日热视频| 伊人色五月| 丁香婷婷五月香蕉91| 激情色色色| 婷婷午夜综合| 五月丁香大相交| 九九色综合九九色| 五月天开心色情网| AV在线观看网站| 97碰 在线视频观看| 色优久久| www.狠狠操| 91婷婷| 九色无码| 欧美久久婷婷| 久久婷婷精品| 深爱五月婷婷| 日本精品久久久久中文字幕| 欧亚成人A片一区二区| 天天色天天爱天天爱天天爱y| 操笔无码| 91丨九色丨东北熟女| 免费亚洲成人电影AV| 五月色亭丁香| 探花搜索结果 - 黄上黄| 日韩精品VIP| 99综合色色色| 综合精品99| 九色在线观看91av| 丁香五月婷婷黑人妻黄色电影院| 婷婷伊人五月丁香天堂网| 成人中文网| 99热这里只有精品8| 天天干夜夜谢| 风流少妇A片一区二区蜜桃| 久久五月婷| 日本欧美成人片AAAA| 99精品成人无码A片观看金桔| 热久久这里只有精品| 伊人无码高清| 丁香五月大香蕉在线99| 国产精品VA在线| 天天看夜夜看| 超碰国产AV| 类似婷婷激情综合网站| 国精产品一区二区三区| 五月婷婷在线免费| 夜夜爽天天干| 夜夜嗨一区二区三区直播内容 | 久久天堂女人| 五月丁香影院| 久久五月婷婷开心网| 丁香激激情网| 婷婷永久在线| 超碰色碰碰| 久9热插入| 天天综合久久| 深爱激情小说五月婷婷| 色停停五月,在线观看| 色久影院| 色和综合网| 婷婷丁香综合| 中文字幕日韩无码制服诱或| 噜啊噜在线| 大香蕉伊人久久| 久久XX| 99天堂在线观看免费视频| 性爱人人网| 久久九色| 国产偷人妻精品一区| 日本五月视频| 人妻啪啪啪| 综合色图婷婷| 五月丁香A片| 婷婷激情五月综合在线视频| 久久激情视频| 伊人久久大香线蕉AV最新午夜| 五月丁香福利| 蜜臀A∨在线水帘洞| 五月天艹天天| 久久人妻视频| 99黄色在线视频精品熟女| 天堂婷婷五月在线| 五月婷婷偷拍| 综合久久六月| 五月婷婷丁香av| 婷婷五月天激情网| 亚洲第一av| 五月婷婷五月丁香综合| 9久久精品| 丁香五月天堂亚洲社区| 69五月天视频| 99精品无码| 久久精品噜噜噜成人A∨色欲| wWwCom夜操wwW| 曰日爽日日操| 亚洲精品第一国产综合亚AV| 狠狠草婷婷| 久久五月激情| 欧美图片丁香五月天| 亭亭五月天黑人2014| 天天精品视频免费观看| 丁香九九九九| 久久多色| 五月天激情久久| 日日综合网| 亚洲乱码日产精品BD| 成人婷99最新| 欧美99热| 九九色热| 婷婷亚洲综合| 五月丁香爱婷婷深深| 五月天社区婷婷丁香社区| 国产九月婷婷| 亚洲99精品欧美一区| 五月天开心色情网| 熟女网站久久| 99热这里是精品| 一起肏在线视频| 天天久| 以及AA大片看看| 精品一区二区三区四区五区六区介绍 | 婷婷香蕉精品| 色综合久久88色综合中文字幕| 色播五月网| 五月丁香啪啪网| 中美日韩成人在线| 香蕉久久国产AV一区二区| 五月天丁香久久| 影音先锋91资源站| 色色五月丁香婷婷| 激情五月天综合网站网站网站| 亚洲婷婷六月天| 色色亚洲| 日日夜夜小色哥| 久久五月婷天天干| 天堂草在线看www| 久久天堂女人| 狠狠色五月| av在线免费网站 | 夜夜撸天天操| 五月婷六月| 伊久久婷婷| 综合激情在线| 亚洲操操操| 五月激情另类| 丁香五月激情五月色综合| 日韩色五月| 人人爽欧美婷婷久久久五月丁香| 婷婷丁香激情综合色情| renrencaoni| 人妻熟女一区二区AV| 色亚洲色宗合| 日韩无码91| 色你久久| 深爱五月天天| 九九自拍网| 少妇综合网| 色狠狠综合网| 久久色五月天| 国产精品大香蕉| 婷婷丁香基地在线| 色五月天丁香婷婷| 婷婷五月丁香五月| 色婷婷亚洲精品天天综| 噜综合| 久久久一级AAA| 久久这里只| 97在线刺激| 99久视频| 国产精品爽爽久久久久久| 五月丁香综合啪啪| 琪琪狠狠干| 久久伦乱| 欧美激情-区二区三区| 小泽玛利亚视频一区二区| 国产 码在线成人网站| 夜夜操少妇| 婷五月天丁香婷五月| 婷婷五月天丁香花| 丁香五月天堂| 色婷激情网| 人人插9| 国产成人精品一区二三区熟女在线| 国产三级秋霞| 伊人婷婷激情| 婷婷成人综合| 久久婷婷人人| 婷婷九九色| 国产成人网| 丁香六月色婷婷| 五月婷婷高清| 色碰碰| 成人国产网| 婷婷精品| 日韩成人中文字幕| 日日噜噜夜夜狠狠久久丁香五月| 婷婷丁香六月激情综合| 色色婷婷五月天| 碰碰碰97免费精彩视频| 超碰只有精品在线| 成人无码精品1区2区3区免费看| 六月份天丁香婷婷| 婷婷五月天黄色小说| 婷婷五月成人色综合| 777久久久| 欧美色男人网站| 亚洲1区| 超碰国产在线观看| 99综合网| 五月天激情丁香| 婷婷成人小说综合| 色五月天综合| 国产色婷婷亚洲| 99精品国产在热久久| 99日韩| 播五月,色五月,开心五月播放器| xxx.色婷婷| 我爱婷婷五月天综合88| 深爱开心五月天| 狠狠色丁香| 婷婷五月色综合| 91综合在线观看| 丁香激情综合| 五月激情婷婷偷拍| 九九久久腿| 美女婷婷激情亚洲| 五月婷婷丁香日韩在线| 99亚洲精品综合在线 | 色开心五月丁香| 一级视频网址| 色色综合院| 婷婷五月天丁香久久| 激情综合五月丁香六月婷婷| www.久操| 成人在线网站| 99久在线观看| 五月婷婷激情综合在线| 天天综合天天做天天综合| 五月婷婷五月丁香综合| 久热最新视频| 亚洲操b| 色五月在线播放| 天天做天天爱天天综合| 五月婷婷,狠狠操| 婷婷五月色激情欧美激情| 婷婷六月综合激情| 人人操91| 国产看真人毛片爱做A片 | 任你草| 99 热| 六月婷婷五月丁香首页| 六月色色婷婷| 播五月丁香三月婷婷| 婷婷在线视频| 思思热这里只有精品| 五月天社区| 成人无码精品1区2区3区免费看 | www.金莲av| 五月激情婷婷四射| 婷婷五月综合中文字幕| 国产精品丝| 五月婷网| 天天射夜夜骑| 色婷婷婷婷| 天天天天天天操| 中文字幕丰满孑伦无码专区| 狠干综合| 五月丁香综合啪啪啪啪啪| 五月天天天开心激情网| 野战毛片三一3| 久久激情综合| 91碰免费视频| 亚洲思思热久| 国产精品久久7777777精品无码| 可以免费观看的av| 中文字幕丰满孑伦无码专区| 色综合视频| www.粉嫩av.com| 六月天丁婷婷| 五月天婷婷无码| 色五月,com| 免费播放片大片| 亚洲色激婷| 丁香狠狠色婷婷久久无码视频| 97资源欧美日韩大香蕉超碰一区| 五月天开心色色网| 99视频内射三四| 日韩精品无码99| 99性视频| 色婷成人狠干| 天天拍久久| xx久久| 狠狠ri| 人妻人人操| 操操操AV| 99热热热99精品丁香| 欧美精产国品一二三区| 日本五月天一页| 日本丁香五月| 秋霞成人毛片一级A片| 五月丁香六月婷婷手机无线| 丁香五月婷婷五月| 婷婷涩涩五月天| 激情综合亚洲色婷婷五月| AA丁香综合激情| 香蕉色色网| 国产夫妻操逼内射视频| 婷婷丁香五月综合| av在线播放网址| 天天操天爱综合| 五月开心网| 九色自拍| 色丁香婷婷| 99在线一区| 成年人99热| 99精品在线| 婷婷爱爱蜜臀天天操| 五月丁香婷婷俺| 亚洲乱码日产精品BD| 色色爽爽天天| 激情婷婷五月| 91九色熟女| 丁香六月久久| 九九综合图片网| 色色哒五月婷婷六月丁香| 中文字幕无码人妻少妇免费视频| 天天肏屄夜夜爽| 爱射综合| 99精品在线播放| 青青草原亚洲天堂| 久久婷婷色| 人人操97| 婷婷五月色| 天天色图| 人妻性操逼中文字幕 国产| 九九99九九99| 色婷视频| 色五月婷婷在线| 婷婷丁香六月综合激情站| 久久性爱视频| 激情久久四色| 久久精品一区二区三区四区| 天天操九九插| 天天肏在线视频| 性色视频| 草草影院爱爱| 成人在线精品| 天堂AV三级| 国产av天堂| 国产六月婷婷| 精品99*| 开心婷婷五月中文字幕组| 99热香港| 久久与婷婷| 自拍偷窥99热| 丁香婷婷色五月| 色视五月天婷婷| 亚洲狠9| 激情六月综合| 手机在线日韩视频中文字幕| site:pnnrt.com| 亚洲AV激情五月综合网| 丝雨一区二区| 久久五月激情综合| 国产日批视频| 97成人视频| 婷婷五月色综合| 综合玖玖性爱免费视频| 久久综合久色欧美综合狠狠| 蜘蛛女侠2003满天星免费观看| 亚洲色婷婷五月天| 色婷视频| 五月天天爽| 生活片五区| 五月香婷婷| 99国产性感视频| www.久久久久久| 天天日天天摸| 天天摸色吧天天摸色吧| 久久婷婷色| 丁香8月手机综合| 六月婷婷五月丁香| 深爱网深爱综合网| 国产.亚洲.欧洲视频在线| 天天插天天射| 五月婷婷开心五月| 亚洲激情网站无码| 偷拍91九色| 99re6在线视频精品免费| 综合色播| 5月婷婷性视频| 久9视频免费播放| 天天综合精品| 9l视频自拍9l九色9l成人| 婷婷六月丁香色| 色九九七七| 少妇性按摩无码中文A片 | 密乳视频| 91蜜桃婷婷狠狠久久综合9色| www.丁香黄色五月天人与| 大香网伊人久久综合| 99亚洲色| 狠狠88综合久久久久噜噜噜| 久久人人九| 91九色PORNY肉丝在线| 日本99视频| 日日干天天爽| 五月社区婷婷激情| 天天插天天狠| 99热亚洲精品| 丁香六月青青草| 搡BBBB搡BBB搡18| 操人无码| 色色色地址| 亚洲欧美一区二区三区四区爱爱动图| 99久久a线观| 婷婷射丁香| 久久五月天激情婷婷| 成人国产欧美大片一区| 99热99色| 一起草AV| 五月天婷婷基地| 涩综合婷婷| 久99热| 99re26视频| 五月婷婷亚洲天堂激情在线| 五月婷婷啪啪| 婷婷的99视频网站| 欧美熟女99| 日本97在线| www.91AV.COM| 五月亭亭色| 亚洲韩国日产综合AV| 色婷婷性爱网| 操B无码视频国语| 四季8848精品成人免费网站| 先锋影音av色五月天资源站| 欧美性生交XXXXX无码小说| 九九热精品视频在线观看| 丁香五月电影| 99热官网| 桃色成人网| 北京熟妇搡BBBB搡BBBB| 亚洲精品V天堂中文字幕| 色色色色综合网| 夜夜综合色| 久热A| 操操操AV| 色色热| 九热免费视频| 婷婷丁香久久| 九九在线视频| 久久久天堂国产精品女人| www.91av.com| 97AV人人插人人操| 日本人人干| 中文字幕婷婷| 九九热在视频| 天天舔天天摸天天透| 激情五月丁香六月婷婷| 天天在线XXX| 9久久久久| 91操操| 欧美性做爰大片免费看办公室 | 欧美成人网99网| www.狠狠| 99日韩| 久久色六月| 欧美色色色色色色色色| 亚洲综合1024| 婷婷五月天在线观看av| 亚洲色无码| 日本激情91| 五月天激情小说| 五月丁香六月激情| 五月天久久综合| 色婷婷五月天天天天天| 久久婷婷五月天激情唯美| 色色色99| 丁香五月成人| 五月丁香婷婷综合网色欲| 亚洲综合色色| 亭亭五月激情亚洲在线| 五月丁香好婷婷A片网| 久久久婷婷| 激情五月天色色色| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 99久久久| 亚洲精级| 丁香五月天导航| 天天综合天综合| 婷婷五月丁香综合| 97色五月丁香婷婷| 久久激情五月| 九久久精品视频99| 影音先锋女人av鲁色资源网小说免费| 色色 9| 淫视馆aV二区一区| 欧洲综合一区| 九九综合视频在线观看| 五月天婷婷成人| www.99在线| 丁香婷婷超碰 | 五月天婷婷色色| av免费在线观看0| 五月五婷婷网| 六月婷婷色综合| 中文字幕在线免费看线人| 五月丁香久久呀| av免费人人| 性一交一乱一交A片久久四色| 色婷婷综合电影| 丁香伊人综合| 五月香婷婷| 操日视频| 99热免| 俺也去五月婷婷丁| 国产人妻操逼| 久久综合丁香| Caop在线| 色亚洲激情| 极骚大香蕉伊人| 久鲁鲁色网| 婷婷射综合| 免费啪啪啪网站| 婷婷五月色亚洲| 狠狠精品干练久久久无码中文字幕 | 亚洲日韩一页精品发布| 天天色天天搡| 99精品热| 久久久激情视频| 天天干天天爽| 啪精品| 色爱亚洲| www.91AV.COM| 99久久激情视频| 婷婷五月综合丁香久久| 激情综合丁| 国产黄大片在线观看画质优化| 色欲婷婷夜夜| 婷婷六月色| 丁香五月 综合| 久久婷婷亚洲| 安息电影在线观看完整版| www,天天干| 中文字幕成人| 天天操天天干天天日| 五月丁香六月综合情在线观看 | 丁香五月婷婷av| 26.uuu丁香五月婷婷| 久操干| 五月 成人 婷婷| 久久大香蕉同僚| 亚洲在线综合| 另类视频综合| 天天操夜夜操| 婷婷亚洲激情在线观看视频 | 亚洲日韩国产黑丝黑丝AVAV一区二区三区| 激情五月综合| 亚洲精品乱码久久久久久综合| 91精品久久久久久77777| 婷婷五六月丁香| 国产成人精品亚洲线观看| 26UUU亚洲欧美| 亚洲av电影在线| 婷香五月激情视频| 97干欧美| 久久久婷| 日本熟女一区二区| 亚洲免费av观看| 日本久热| 婷婷六月色丁香视频在线观看| 成人av在线网| 五月婷婷亚洲| 亚洲不卡| 亚洲国产精品VA在线看黑人| 婷婷五月天天aV| 99热高清在线| 欧美性爱五月天| 26UUU精品一区二区Com| 91久久1118| 丁香五月六月久久综合 | 色护士综合| 婷婷五月色综合| wWw色五月| 操操综合网婷婷| www.色婷婷| 久久五月天婷婷视频| 丁香88AV五月婷婷| 123草逼网| 26uuu.| 日韩操啪| 狠狠狠狠狠| 天天色,天天日,天天做| 色狠狠色| 丁香五月伊人| 色婷婷色99国产综合精品| 婷婷五月天综合蜜桃| 伊人热婷婷| 天天做天天爱| 五月天激情丁香| 色六月天天激情综合网| 熟女国产在线一区二区三区四区| 97婷婷色| 久久人妻www| 99视频超级精品| 天色色综合网| 思思99热| 日韩成人中文字幕| 特级片神马电影| www.婷婷五月天.com| 九色综合网| 丁香五月婷婷激情网| 五月天婷婷青青草| 伊人婷婷青青cao| 日韩三及成人AV片| 欧美色男人网站| 大香蕉伊人久久| 第四色五月天| 五月婷婷在线网站| 91九九| 热久69| 久9综合| 五月丁香六月婷| 天天日夜夜| 五月色网| 午夜性爱影视一区77| 丁香激情久久| 71在线精品视频一区| 操逼五月婷婷| 亚洲另类在线观看| 五月婷在线| 色色色热| 97婷婷五月天| 亚洲综合视频一下| 99热 在线观看| 久操人妻| 免费啪啪亚州视频| 激情五月婷婷她| 99久久婷婷国产综合精品| 99国产精品久久久久久久久久久| 大香蕉五月天| 婷婷五月综激情| 五月婷婷激情综合av| 亚洲色模骚货| 午夜激情五月| 26UUU精品一区二区c〇m| 狠狠久久婷五月综合色| 99综合视频在线| 狠狠操综合| 91碰视频| 五月天综合在线| 91色噜噜狠狠狠狠色综合| 夫妻超碰在线| 99热久久日本| 色婷婷久久视屏| 97在线/日本| 五月伊人婷婷999| 婷婷色基地在线看 | 丁香午月AV中文字幕| 欧美色图45678| 九九av| 综合亚洲色色| 99re在线观看视频| 五月色导航| xxx日本东京热| 九九热99精品| 性天天中文网| 激情五月天电影| 丁香在线视频| 丁香婷婷91在线观看视频| 99热亚洲| 性色五月天| 天天日夜夜| 大香蕉AV电影在线| 色婷婷第四色| 91丨九色丨熟女丰满| 国产在线黄色| 五月婷婷开心深| 夜夜爽日日躁| 婷婷丁香五月亚洲| 五夜丁香| 97香蕉碰碰人妻国产欧美| 成人做爰高潮A片免费视频| 性爱网五月婷婷| 91精品啪| 国产亚洲在线观看| 五月社区丁香| 天天综合社区| 色色色婷婷五月| 婷婷成人五月天| 东京热五月婷婷| 人人操 色| wWwCom夜操wwW| 久久婷婷五月草视频| 四色五月婷婷| 亚洲日日日| 久久久久久五月天| 99热欧美偷拍| 色爱99| 狠狠色综合精品视频在线| 欧美熟女99| CHINESE熟女老女人HD视频| 97婷婷五月丁香| 97资源碰碰| 五月丁香六月婷婷玖玖| 激情婷婷丁香| 开心激情婷婷| 午夜激情久久| 激情五月天婷婷激情| 日日夜夜综合| 五月香婷婷| 婷久久久| 婷婷亚洲日本| 婷婷色情六月| 亚洲欧美婷婷五月色综合| 97色综合视频| 久久66er久久| 停婷丁五月在线| 香蕉久久国产AV一区二区| 亚洲色婷婷久久99精品91| 天天色情站| 热99这就是精品视频| 九九色精品| 婷婷五月天久久综合88| 五月天自拍网| 五月婷婷丁香| 国产超碰av| 天天做天天爱天天爽在| 99九九视频| 68热超碰在线| 激情美女五月天| 婷婷五月天小说| 亚州在线中文字幕| 超碰碰碰碰| 另类激情综合| 97人人操人人插| 欧美大奶熟女噜噜噜噜| 久久3p| 欧美色必爱| 色五月激情五月丁香五月婷婷啪啪综合| 婷婷综合视频| 影音先锋一区二区资源站| 激情久久四色| 丁香婷婷性爱| 五月婷婷色啪| 婷婷激情五月天在线| 亚洲乱码精品久久久久..| 日韩av在线电影| 26uuu精品一区二区| 色色欧美。| 亚洲小说五月婷婷| 激情色色| 人人综合久| 丁香婷婷色五月激情综合| 亚洲偷| 深爱激情小说五月婷婷| 久久人人妻| 国产精品人妻欲求不满| 99热精品在线观看| 婷婷之玖玖| 天天天操天天天日| 六月婷婷天堂| 俺去也在线www色官网| 青草青草视频2免费观看| 九九家庭影院| 99久久久久| 97亚洲色 torrent magnet| 日本综合久久| 丁香九月激情| 欧美久热| 色五月天影视| 思思热视频在线观看| 色婷婷丁香综合中文字幕| 991精品在线视频| 大香蕉久久婷婷精品综合| 99视频只有精品| 99婷婷五月天激情| 开心婷婷五月| 人妻视频在线| 91色在线/日韩| 九九99免费理论| 久热久| 丁香五月在线伊人| 五月婷婷激情综合| 色五月五月天| 色啪久| 色婷婷五月天视频在线| 久久五月天免费网站| 婷婷激情六月| 五月婷婷综合久久| 久操热| site:wpjngj.com| 欧美日韩精品人妻狠狠躁免费视频| 亚洲欧洲自拍图片专区五月天| 屁股翘好撅高迎合跪趴| 九九热精品视频九九| 婷婷94s| 五月天色五月| 婷婷五月天黄色| 成人AV在线电影| 5月婷婷性视频| 色色六月| 亚洲综合另类| 综合丁香婷婷五月天| 国产乱妇乱子在线播视频播放网站 | 婷婷97狠狠成人网站| 开心五月深爱五月婷| 超碰在线资源| 九九久久99精品免费观看www| 这里只有精品视频222| 国产全是老熟女太爽了| 欧美啄木乌丝袜人妻系列| 五月天婷婷AV| 亚洲精品99| 亚洲人人操BD| 97色永久免费视频| 色婷婷五月天| 这里只有精品1| 亚洲五月婷婷| 成人αV视频免费观看| 久久久久久人妻| 婷婷五月天成人五月天| 超碰在线免费观看3 9| 另类小说色婷婷| 激情综合五月激情XXXX| 色噜噜狠狠狠狠色综合久欧美| 99男人的天堂| 激情五月婷婷在线区| 黄色一极大片| 欧美激情综合| 激情五月天 婷婷| 99色在线观看免费| 丁香五月天堂亚洲社区| 五月丁香成人网| 我要射综合| 五夜婷婷| 丁香亚洲色综合| 久久视频这里有精品99| 丁香婷婷激情网站| 99热99成人| 狠狠色丁香婷婷五月| 亚洲va综合va国产va中文| 狠狠色噜噜狠狠狠狠综合| 精品婷婷五月视| 欧美操逼天堂| 日韩黄色中文字幕| 色婷婷综合久久久久| 久久aaaa片一区二区| 99re99热| 九九综合网色全集| 91干婷婷| 久久伊人大香蕉| 99九九在线视频| 热成人网| 人人色性网| 色综合综合色| 色五月自偷自拍婷婷婷婷| 欧美叉叉叉BBB网站| 五月婷中文字幕| 婷婷色五月天在线观看| 五月丁香激情综合六月涩涩爱| 丁香五月91| 色色综合热| 东京热五月婷婷| 六月色色| 操91| 日本美女上人| 狠狠干夜夜干| 婷婷五月天激情AV影院| 99re思思在线视频| 超碰人人艹| 丁香五月婷婷偷拍| 午夜福利8055| 91人妻九色大屁股| 国产真实乱了老女人视频| 婷婷丁香十月| 日韩成人av在线| 一月婷婷色色| 久热这里只有| 99re思思热久久| 日韩色色视频www| 天天 青草 丝袜制服 在线| 亚洲精99| 思思网站| 99热久只有| 久久色在线视频| 色 免费网站视频| 丁香色五月 97干| 婷婷久久99| 婷婷丁香激情综合色情| 九九干视频| 九九精品热播| 激情综合色婷婷啪啪六月天| 日韩五月婷婷| 久热伊人9| 五月婷婷综合社区| 涩涩婷婷五月| 97超碰在线免费观看| 99啪啪网| 中文字幕AV网址| 激情六月婷婷| 五月婷婷激情综合| 九九热在线观看6| 午夜丁香丁香婷婷| 久久色五月天| 五月婷高清视频| 综合视频五月| 欧美草久久五月天91| 99热中文字幕久久| 亚洲精品大片| 免费视频无码| 99色干| 亚洲综合激情五月久久| 五月丁香婷婷综合| 久久视频在线视频| 国产性av| 狠狠色丁香久久综合婷婷亚洲成人福利| 大香人妻| 色狠狠综合网| 五月婷婷激情综合在线| 五月激情开心婷婷| 色噜噜婷婷| 丁香五月婷婷综合精品素人| 日本三级韩三级99久久| 99在线精品观看99| 伊人婷婷福利网| 欧美啪啪网| 一区二区三区视频| ...婷婷国产成人亚洲日韩| 99爱免费在线视频| 久久五月天婷婷| 超碰99在线观看| 久久小说网| 性爱五月婷婷| 另类天堂| 色五月丁香在线| 无码动漫av| 色色色五月婷婷| 天天肏天天舔AV| 人人97碰| hd五月婷婷在线| 99这里只有精品视频| 色五月激情五月天| 伊人五月婷| 婷婷五月激情欧美| 91婷婷五月天综合视频| 色五月播五月| 九九99精品| 激情五月瑟瑟| 国产片天天爽夜夜爽| 99r这里| 久热九九| 色噜噜狠狠狠狠色综合久欧美| 亚洲婷婷婷| 婷婷亚洲丁香五月| 色欲久久久久久综合网综合网| 91狠狠综合久久久久久| 色色综合院| 人人操Av| 久久免费精彩视频| 另类少妇人与禽zOZZ0性伦| 五月亭亭色| 中文不卡一二三区| 国产成人高清| 欧美性爱丁香五月| 99热精品在线播放| 色色色色av色色色色| 97久久超碰| 婷婷五月丁香香蕉| 激情丁香网| 99综合网| 九九美女视频| 综合狠狠干| 婷婷无码视频| av电影在线播放| 五月天久久婷婷婷| 91操片| 丁香五月成人自拍| 五月www| 激情综合五月| 奇米网大香蕉| 狠狠色综合网站| 大香蕉九九| 色噜噜夜夜夜综合网| 五月丁香婷婷激情视频| 精品夜夜澡人妻无码AV| 97色色色| 99A片| 婷婷激情综合无月| 中文字幕人妻在线| 九九热99精品| 久久五月天激情视频| 色婷婷丁香| 亚洲色综久久五月| 婷婷五月天亚洲综合| 99精品国产乱码久久久人妻| 91九色在线| 日韩欧美成人片| 亚洲色图啪啪| 99爱精品视频| 极品人妻VIDEOSSS人妻| 五月丁香久久网| 久久婷婷伊人| 综合视频久久| 五月天婷婷久久| 激情碰碰碰| 99国产小视频| 丁香婷婷天堂| yazhouzonghesese| 亚洲国产精品SUV| 亚洲人人96@| 成人片在线播放| 丁香五月天导航| 五月婷婷基地| 色啪影院| 伊人激情| 久草婷婷| 天天干天干| 日日爱678| 青青草成人网| 丁香五月激情宗合| 久热这里只有精品99re | 精热在线综合网| 中文字幕 中文字幕明步| 激情九月婷婷| 色婷婷久久| 亚洲综合字幕色色| 婷婷五月色播| 99热热九九| BBWCUCKOLD精品熟妇| 狠色狠色狠色狠色狠色网| 国产又黄又爽又色的免费| 日本五月丁香| 丁香五月婷婷社区| 国产三级秋霞| 非洲一级AV|