免费国产精品自在自线-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
返回資訊列表
人妻AV在线| 99热超碰人| 9l视频自拍9l九色成人| 99丁香五月婷婷在线| 殴美激情综合网| 26uuuu精品一区二区| 色婷亚洲| 婷婷丁香黄色| 天天激情站| 国産精品| 亚洲愉拍99热成人精品| 激情六月婷婷| 五月天激情电影| 天天综合色丁香| 色色影院黄大片| 风流少妇A片一区二区蜜桃| va婷婷| 五月丁香亭亭操逼| 任你日视频| 男人的天堂av俄罗斯热| 四季日韩AV无码综合| 综合色久| .精品久久久麻豆国产精品| 爱婷婷都市激情| 婷婷六月天亚州| 激情文学 综合 色| 五月丁香综合网色欲| bukadeavzaixian| 久9热| 激情久久肏屄视频| 婷婷金品综合视频| 色色色综合| 91超碰九色| 在线观看中文字幕| 久久这里只有精品热在99| 五月天伊人手机在线播放AV| 另类综合国产| 婷婷五月天欧美| 99re这里有精品手机在线| 精品五月视频婷婷在线观看| 日本色噜| 秋霞电影理论| 深爱婷婷丁香五月激情| 五月丁香激情综合网| 婷婷五月天熟妇| 五月天欧美 另类小说| 美女亚洲五月丁香| 深爱五月中文字幕| 色丁香影院| 丁香六月无码| 99精品无码| 六月婷婷开心| 婷婷色中文字幕| 99久久久久久www| 这里有精品2| 99热6色| 天天天日天天天干| 五月天播播中文字幕| 欧美成人性爱网| 精品色色色| 六月亭亭久久综合激情| 五月婷婷六月丁香综合在线| 99热国产精品| 午夜69成人做爰视频| 国产毛片精品一区二区色欲黄A片| 97人人草| 琪琪色综合网站| 天天日天天肏天天奸| 激情五月婷婷| 天天综合网~91综合网| 婷婷久久国产视频| 激情五月天综合婷婷网| 99热这里只有精品3| 亚洲综合网 665566| 婷婷色在线播放| 玖玖在线| 天天干、天天日日| 丁香午夜天| 婷婷伊人| 婷婷玖玖五月天| 色婷网| 五月天婷婷黄色视频| 热九九在线| 99热国内| 国产97色在线 | 日韩| 99久在线观看| 国产成人AV不卡| 色吊丝99| 99热成人精品| 99热丁香| 91在线看片| 色99色| 婷婷六月丁香激情综合| www.日韩国产| 中文字幕av久久爽| 涩涩婷婷五月| 九月丁香| 99色干| 九九精品片一| 亚洲激情在线| 日本97在线视频| 成人色五月天| 99久久网站| 潮汕成人AV片在线| 久久五月激情网| 五月天天视频| 六月丁香婷婷综合影院| 久久婷婷五月天激情| 强伦轩人妻一区二区电影| 精品一区二区三区四区五区六区| jiujiu热在线视频| 五月伊人网| 婷婷五月性感| 啪啪啪五月天| 99性爱| 久久精品99久久久久久| 九九在线精点品| 俺去也五月| 激情综合网五月| 91人妻视频| 99视频在线精品免费观看2| 久久99人人| 女性自慰系列第五页| 丁香五月天资源网| 91精品综合久久久五月天| 夜夜骑日日操| 丁香六月婷婷| 婷婷久久免费看| 婷婷九九| 丁香五月婷婷色| 大香蕉欧美在线| 亭亭社区五月天| 天天操天天插| 99区视频| 江苏少妇性BBB搡BBB爽爽爽| 26uuu国产精品| 超碰91在线| 九九热视频99| 婷婷六月激情| 五月天另类综合网| 99久久国产宗和精品1上映| 97色碰| 91干视频| 9.1综合网| 日韩欧美一级大黄网站| 婷婷五月天激情四射| 97色天堂| 五月丁香六月婷婷综合在线| 婷婷伊人| 99愛国产| 啪啪 综合网| 可以直接看的av| www.久操| 九九99九九99偷拍视频免费看| 丁香九月综合在线| 黄网在线免费观看| 欧美色六月婷婷| 97色吧| 五月丁香六月婷婷免费| 亚洲欧美成人在线观看| 日亚二欧美| 综合五月丁香97| 碰97久久| 色五月婷婷五月久久| 五月天丁香| 婷婷丁香六月影视| 色色影院黄大片| 思思99热| 色久婷婷网| 狠狠精品干练久久久无码中文字幕 | 亚韩精品视频1区| 五月涩涩网| 色色色色色色色五月| se影音资源在线观看| 婷婷五月六月丁香| 99视频精品在线| 婷婷激情五月天综合| 国产AV一区二区三区最新精品 | 日本啪啪天堂| 毛片九九九九九九九九18| 婷婷五月色综合| 婷五月天六| 五月丁香成人| 婷婷五月精品中文字幕| 国产亚洲99久久精品| 国色天香成人网| 五月丁香做爱视频| 欧美婷婷六月丁香综合色| 激情综合五月| 色丁香久久| 色综合爱综合| 超碰成人在线观看| 美女被肏网站在线看| 噜噜操操| 天天天摸夜夜夜玩| 婷婷五月天成人五月天| 激情婷婷五月少妇| 狼人伊人天堂| 99视频只有精品| www99在线观看视频| 亚洲综合成人网| 涩五月丁香| 91色在线| 亚洲国产黄色电影| 国产肥白大熟妇BBBB视频 | 2015超碰| 五月婷婷婷色| 欧美日本日韩| 婷婷丁香人妻天天爽| 午夜国产精品AV在线播放| 伊人婷婷大香蕉| 亚洲性爱AV在线| 婷婷色在线播放| 六月丁香激情最新更新| 99久久久国产大片| 丁香五月在线自慰| 免费在线a| 五月天激情视频| 五月天激情网站| 天天射天天射一道本日本社区 | 五月丁香啪| 色综合9| 色婷婷色99国产综合精品| 丁香六月婷婷姐网| 激情五月色综合国产精品| 99这里只有精品视频免费| 亚洲情欲久久| 大香蕉懂9| 日韩综合成人| 激情五月天天| 婷婷丁香激情五月天色色色| 日本精品人妻无码77777| 丁香婷婷久久 | 99久久久| 国产成人网址| 婷婷精品| 99久久婷婷| 99视频超级精品| 五月婷婷九| 97操在线| 色色婷婷婷丁香五月天| 日hao1区| 六月丁香色色| 九九色影院| 97自拍99| 婷婷五月丁香啪啪| 色婷婷基地| 欧美色99| 色五月xxx| 综合久久综合| 五月天婷婷午夜丁香| 婷婷视频网| 九九这里是免费的视频5| 婷婷五月无码| 影音先锋色婷婷| 人伦30P| 丁香婷婷综合激情五月色| 亚洲天堂玖玖| 九九色欲网| 丁香五月手机在线| 夜夜爽天天| 日日干日日色| 六月丁香成人网| 日日舔夜夜操| 99综合自拍| 亚洲在线综合| 少妇大叫太大太粗太爽了A片| 网站免费一站二站| 激情久久伊人| 五月婷婷六月丁香首页| 这里只有精品免费在线视频| 丁香伊人综合| 色综合色| 嫩草AV久久伊人妇女超级A| 九色在线五月婷婷网址| 日本一毛片| 久久人人妻| 亚洲综合五月天婷婷丁香| 五月天丁香| 婷婷六月色| 婷婷在线视频| 99热97美女| 六月激情网| 久操大香蕉| 婷婷六月丁香开心深深爱| 天天日日天天| 人妻久久久久久| 99热超碰| 99草在线免费观看视频| 国产成人网| 永久99免费视频网站| 色婷婷激情视频| 色色 亚洲| 婷婷97碰碰| 婷丁香久综合| 久久机热/这里只有精品| 午夜激情综合| 婷婷五月精品| 激情美女五月天| 天天草天天日| 亚洲超碰在线| 久久精彩视频99| 99啪啪视频| 五月丁香好婷婷A片网| 五月天激情久久| AV性爱在线| 九一娱乐在线观看视频| 丁香婷婷六月婷婷六月婷婷六月婷婷| 丁香五月婷婷色情综合| 爱久久小说下载网| 天天操天天爱天天日| 思思久热| 国产午夜精品一区二区三区四区| 九九99九九99九九99视频网| 91wwmm导航| 丁香色婷婷| 丁香婷婷综合喷| 激情深爱综合| 五月丁香成人网| 国产女生爱爱AA| 欧美天天爽| 婷婷 丁香 精品| 99久久国产宗和精品1上映| 六月婷婷青青青视频| 3p日韩网站视频| 婷婷五月激情图片| 亚洲色夜| 天天干天天爽| 久久婷婷东京热大香樵| 骚。com| 五月婷婷激情网| 日本97在线视频| 五月久久丁香| 久久R激情| 五月网激情| 午夜成人综合| 精品久久婷婷| 久操热| 激情六月日韩| www.久操| 开心五月网| 亚洲视频综合网| 五月天亚洲最大成人| 久久草大香蕉| 天天艹天天综合网| 婷婷狠狠操| 99热9999| 色综合色色| 五月婷婷激情性爱| 九九99精品视频在线观看| 久久玖玖综合| 99精品久久久久久久婷婷| 激情淫乱男女| 五月天丁香成人社| 久久xxxx| 91chinese在线| 99re热精品视频国| 亚洲字幕AV一区二区三区四区| 激情五月天综合网站网站网站| 激情综合亚洲| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 久色88| 狠狠草狠狠草| 大香蕉久久草| 六月婷婷色综合| 久久99热这里只有| 超碰人妻公开在线| 亚洲色另类| 香蕉久久国产av一区二区| 亚洲性天天| 中文AV网| 久久久人人人妻丝丝丝| 超碰在线网站| 五月丁香六月婷综合成人综合| 8区视频在线| 九月激情网| 五月天另类小说亚洲| 99久在线精品99re8热| 在线视频色五月| 五月丁香六月激情| 激情五月天小说| 99日视频在线| 久操大香蕉| 五月天色婷婷av| 操精品9| 五月婷婷丁香网| 99在线视频免费| 国产成人综合网| 99er免费在线观看| 亚洲欧美国产A片免费观看| 亭亭色网| 婷婷激情五月综合丁| 日韩婷久| 9久久精品| 嫩BBB槡BBBB搡BBBB视频| 超级久久久| 超碰chaompinm| 色噜噜,噜噜色| 婷婷综合久久综合| WWW.婷婷| 久久九九免费视频| 狠狠va| 婷婷五月天渟渟| 琪琪色五月天| 欧美久久婷婷| 久久五月天精品视频| 东京热五月婷婷| 九九热精品99| 深爱五月亚洲| 九九热精品| 欧美成综合在线观看| 91久久久久久久久久久| 五月好婷婷| 五月丁香婷婷色色| 日本少妇AA一级特黄大片| 综合网激情| 六月婷婷久久大全| 九九久久9 9在线观看| 五月婷婷啪啪综合网| 国产精品久久久99视频| 亚洲国产成人在线| 五月天怕怕| 涩涩五月天| 开心五月网 | 射久久丁香五月| 激情又色又爽又黄的A片 | 国产成人网址| 99爱这里只有精品免费视频| www.五月丁香| 夜夜干夜夜操| 涩婷婷五月天| 俺也去综合| 丁香五月婷婷深爱综合激情| 超级碰碰碰97免费| 超碰99热在线观看| 夜色.cnm| 91狼友视频在线观看| www.色婷婷| 99在线视频精品| 狠狠干无码| 婷婷一本和五月丁香| 激情综合久久| 国产67194| 久久在线大香蕉| 青青草原亚洲久| 亚洲婷婷五月天| 天天骑天天操| 色婷婷狠狠| 超碰精品在线| 免费AV播放| 99超级碰碰| 人。妻久久| 久99热| 三级大香蕉网| 国产99久9在线| 性爱激情久久| 人妻五月天激情开心网| 亚洲色图日韩网址| 9福利性视频欧美| 在线99精品| 热99久| 伊人狠狠色婷婷综合丁香一区| 超碰在线资源| 狠狠色噜噜狠狠| 91艹人| 欧美精产国品一二三区| 五月婷婷欧美| 激情综合网婷婷久久| 夜夜骑操AV| 色综合色欲综合天天免费| 婷婷黄色五月天在线视频| 狠狠色丁香99| 深情五月天| 深爱激情丁香| 超碰在线看| 久久小视频| 国产精品18久久久| 日韩不卡123| 成人片在线免费看| 日韩成人免费电影| 99爱最新免费视频在线观看| 丁香久久| 激情五月小说婷婷| 操操操B| 日日操夜夜操中国无码| 婷婷五月AV| 激情久久四色| 99热官网精品在线| 五月丁香六月欧美综合网站| 激情婷婷丁香| 亚洲综合草草| 婷婷久久六月费| 天天色天天爱天天爱天天爱y| 丁XX 成人| 日本狠狠色| 伊人大综合| 啪精品| 九九热这里只有精品首页| 丁香花五月天| 天天操加勒比| 90色免费视频| 色五月天影视| 久久久精久人妻| 丁香婷婷色色| 国产成人精品一区二区三区视频 | 99精品视频免费在线播放| 婷婷狠狠久久| 日本婷婷色日| 国产精品成人AV在线观看春天| 欧美久久久中文字幕| 99九九中文字幕视频| 日韩免费乱轮网站| 久久精品亚洲热| 小视频aaa久久久| 色五月婷婷五月丁香五月| 丁香五月偷拍| 日韩精品AV一区二区三区| 天啪天啪天啪天啪| 久久er这里只有精品| 久久久久久综合五月婷婷| 综合网啪| 影音先锋自拍网| 99玖玖在线视频| 激情开心五月婷婷| 五月丁香六月婷| 爆乳熟妇一区二区三区四区| 婷婷久久久久| 丁香五月亚综合图片| 色五月婷婷五月天| 五月成人丁香av91| 欧美五月丁香在线| 欧美日朝成人| 亚洲第二AV| 综合婷婷六月| 六月丁香激情网| 一区无码| 色婷操逼| 五月激情站| 秋霞免费视频| 五月天婷婷网站888| 激情亚洲五月| 激情丁香五月天| 日韩肏屄网| 天天综合亚洲综合| 免费视频在线观看的网站| 99日逼视频| 婷婷六月色播| 日韩aⅴ视频| 欧美天天五月丁香免费观看| 色婷婷免费观看| 玖玖激情网| 九九热这里只有精品一| 婷婷97狠狠成人网站| 九九热自拍| 婷婷五月情天| 午夜九九九九九九| 青青草原福利在线| 91无码一区人妻A片蜜| 五月天快乐开心激情网| 成人丁香五月| 天天色播| 久草五月天| 五月天婷婷綜合院| 久草天堂| 99热福利| 91中文在线| 久久婷婷五月国产激情综合片| 99热精品观看| 伊人网碰碰| 天天热夜夜操| 天天日色情| 五月天激情国产综合AV| 国精产品一区一区三区免费视频| 99热这里有精品2| 婷婷狠狠操| 狠狠色婷婷777| 五月伊人网| 亚洲成人在线免费| 九九久久精品| 色五月婷婷激情五月| 中文字幕丰满孑伦无码专区| 深爱激情四射| 97超碰99热99| 婷婷色在线播放| 欧美性爱中文字幕| 狠狠色丁香| 丁香婷婷六月激情文学| 五月丁香啪啪网| 激情五月婷婷伊人| 99在线看视频| 久草A片| 九九热99在线视频| 久久伦乱| 无码G高清天| 96丁香婷婷九月蜜桃综合久久| 久久66精品| 五月天色站| 大香蕉久久婷婷精品综合| 婷婷五月av| 久久婷婷五月综合| 九九热视频免费| 99热国产婷婷| 婷婷91| 丁香婷五月天| 一起肏在线视频| 丁香五月婷婷啪啪啪| 色综合色欲综合天天免费| 色色色色丁香| 五月丁香六月激情综合| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 人人操av| 欧美va国产va| 五月丁香亭亭AV女优| 999激情视频| 激情的五月婷婷蜜桃| 婷婷五月丁香图片人人操| 综合五月丁香六月婷婷| 五月丁香综合激情在线观看| 五月丁香亭亭A片| 欧美色色色色色色色| 99久热这里有精品| 日韩成人电影Av| 激情五月天婷婷五月天| 婷五月天天| 色婷小说| 五月丁香综合啪啪| 99性爱精品| 婷婷激情九月| 婷婷大香焦| 亚洲操逼网| 99色最新在线视频网站| 五月丁香六月婷婷啪啪综合| 亚洲色图在线视频| 疯狂做受XXXX高潮A片| 久久婷婷五月综合啪| 99热热九九| 欧美成人日韩| 90色免费视频| 99精品无码| 国产成人在线精品| 色五月综合激情| 婷婷五月69| 久久狠狠干| 久久婷婷免费| 韩国真做片在线观看| 欧美乱码国产一级A片| 天天在线久久综合 | 婷婷五月在线观看| 99热综合网| 丁香五月天激情网| site:jszngf.com| 久久久久久久久久91| 色综色网| 色婷婷呢狠禁久禁| 日本狠狠干| 日韩成人AV在线| 久久99大全| 婷婷五月天电影区小说区| 婷婷五月天激情在线观看 | 狠狠久综合| 婷婷丁香红五月91C| 五月丁香婷婷啪啪| 久操热| 丁香六月综合| 五月婷婷六月丁香激情| 婷婷五月天激情五月天深爱五月天| 五月天快乐开心激情网| 99色激| 好好干Av| 狠狠干五月天婷婷网| 五月大香蕉| 色婷婷中文在线| 色婷婷色综合激情91| 777久久久| 综合色视频| 亚洲天堂碰碰婷婷| 五月丁香日逼| 91av视频在线观看最新网址| 综合爱久久| 丁香五月综合激情久久潮喷| www一起操在线观看| 久久182| 五月九九综合| 精品亚洲国产成AV人片传媒| 国产毛片精品一区二区色欲黄A片| AA片在线观看视频在线播放| 日韩乱轮AV| 五月天开心色色网| 婷婷成人在线| 中文网婷婷字幕婷| 96丁香六月婷婷蜜桃综合久久| 久久婷狠狠色| 五月深情久久| 97人妻碰碰碰久久香蕉| 婷婷综合网| 99热香港| 婷婷激情丁五月| 日韩1区2区| 99热这里| 丁香五月社区| 欧洲综合一区| 六月婷色| 丁香五月六月久久综合| 五月天色官网| 色色99| 这里只有精品视频99| 爱射综合| 日韩美一级毛卡片| 色婷婷9| 精品视频这里只有精品| 99热这里只有精品13| 日日夜夜青青草| 天天做天天摸| 五月色网| 精品久久久91久久影视网| 九九色黄色| 久操福利| 五月青青草综合| 色情播放| 五月综合丁香婷婷| 香蕉AV777XXX色综合一区| 丁香五月天啪啪| 婷婷亚洲天堂| 久热精品免费视频4| 婷婷色偷拍| 99热这里只有99| 五月天深爱激情网| 九九RE视频在线精品| 中文字幕丰满乱孑伦无码专区 | 国产精品爽爽久久久久久| 99热在线播放| 一起草aV| 日日操,夜夜爽| caop在线视频| 国产黄色av| 亚洲色色色色色| 日日夜夜久| 丁香五月色情| 另类激情四射| 五月天激情网开心网| 色99网| 9999热在线观看| 五月婷婷成人网首页| 狠狠色大香蕉| 亚洲视频在线网| 久久久er热| 亚洲婷婷丁香| 色 噜噜 九月 婷婷| 五月天激情在线视频| 在线网黄| 久久99日本精品视频免费观看| 欧美va精品va老师va| ss99热| 五月天天天色| 婷婷99狠狠躁天天躁中文| 五月丁香六月婷婷视频| 99精品偷自拍| 欧美丁香婷婷天天操| 可以免费观看的av| 日韩日比视频在线| 九九一综合精品| 久激情网| 美女xx不卡| 射久久丁香五月| 精品国产AV色一区二区深夜久久| 99热这里在线精品| 精品久热| 99色在线观看视频| 97碰碰在线观看视频| 天天综合网亚洲网站| 成人丁香婷婷| 婷婷五月丁香五月天| 99色视频| caopeng超碰| 久久免片| 六月99天天婷婷激情综合| 97干欧美| 91人妻色色网| 99久热这里只有精品| 五月天丁香六月综合| 丁香五月激情婷婷| 人妻在线网站| 日韩啊啊啊| 99re视频在线| 婷婷五月天六月丁香| 丁香五月综合激情久久潮喷| 99re这里| 五月丁香毛片| 2017狠狠干| 色噜噜狠狠色综合成人网| 日韩人妻在线观看| 在线成人网址| 色色色色综合网| 欧美熟女乱又伦| 五月婷无码| 五月天国产婷婷精品视频在线| 亚洲不卡123| 婷婷五月天视频免费在线观看| 狠狠色丁香婷婷五月| 五月婷婷熟女| 国产亚洲精品人人| 婷婷91| 99热99思午夜精品| 五月停停99| 五月激情婷婷国产精品久久久久久| 99日在线观看视频| 色色婷| 久婷婷五月综合欧美| 久久伦乱| 久久久久亚洲AV成人无码电影| www.色五月| 日日操夜夜爽天天天| 久久六月婷婷| 99网99热| 另类图片激情五月天| 天天草女人| 我去色色网五雨天| 六月丁香激情综合网| 一二线视频 另类| 丁香六月欧美| 五月丁香综合啪啪啪啪啪| 日日影院 | 五月天久久网站| 99黄色在线视频精品熟女| 欧美性做爰大片免费看办公室| 婷婷丁香五月噜噜噜| 丁香五月综合首页| 思思热在线视频精品| 亚洲成人噜噜| 色婷五月天| 色色综合网。| 久久九九热视频| 五月激情久久| 激情婷婷丁香五月天小说| 精品国婬伦V无码久久久| 热五月婷婷| 啊V视频在线观看| 丰滿爆乳一区二区三区| 大香蕉五月丁香| 日本成人噜噜| 色色婷婷丁香| 九月丁香八月婷婷久久综合久97| 激情深爱五月天| 伊人五月丁香| 五月丁香综合啪啪啪啪啪| 色噜久| 99热这里有精品| 婷婷综合视频| 777精品成人a v久久| 99ri国产| 六月丁香AV| 99视频精品| 激情五月婷婷五月| 亚洲国产成人裸舞| 秋霞免费三级片| 婷婷五月网图片区| 538在线精品| site:pnnrt.com| 色婷婷亚洲精品天天综| 五月天色综合服务平台| 91热99| 9 9热这里有精品| 国产SUV精品一区二区6| 大香蕉久久久久| 五月丁香啪啪伦理电影| 五月丁香婷中文| 五月天无码| 色婷婷综合久久久久| 影音先锋五月天婷婷丁香在线观看| 婷色五月| 激情久久久| 九九热99视频| 五月婷婷六月丁香五月| 丁香五月天中文字幕| 六月香五月婷| 天天干天天日天天插| 草草操操| 色婷婷导航| 99毛片| 玖玖在线视| 第五婷婷伊人丁香| 色婷亚洲| 欧美三级视频下载| 在线综合91| 五月天大香焦| 五月丁香另类网| 538在线精品| 91无码一区人妻A片蜜| 97操操操| 玖玖爱伊人| 深爱激情丁香| 天天天久久人人人合| 婷婷五月天第三页| 新精品99| 婷婷日欧美在线观看| www.99热视频| 亚洲成人网站在线播放| 中文av网| 久久五月激情综合| 婷婷伊人综合中文字幕| 丁香六月综合激情| 欧美黄色AA片哗啦啦啦| 天天综合色| 91丨九色丨熟女高潮| 亚洲乱码日产精品BD| 国产亚洲精品AAAAAAA片| 丰满少妇猛烈A片免费看观看| 丁香五月综合| 婷婷伊人| 五月日韩中文字幕| 丁香社92视频| 在线亚洲综合网| 岛国在线观看91| 日本一区二区三区精品视频| 97色视频网| 99久久久免费| 婷婷在线观看五月天在线视频| 97深爱伊人综合| 99性感视频| 婷婷五月天美女21p| 激情五月天啪啪| 婷婷六月色| 日本人妻伦在线中文字幕| 婷婷丁香五月社区亚洲| 99资源在线| 久久九九99| 丁香网五月天| 色婷狠狠| 五月丁香好婷婷A片网| 伍月婷丁香婷| 婷婷色五月激情| 五月伊人视频在线看| 婷婷五月天亚洲丁香| 亚洲六月婷婷| 九九这里只有精品| 色五月婷婷丁香凹凸| 4399高清无码视频| 成人版视频在线观看| 丁香五月天天哦| 激情五月,激情综合网| 97人人搞| 五月天久久色| 超碰在线中文字幕| 精品无码人妻一区| 日本高清综合网五月丁香| 成年人丁香五月| 综合色七七| www.丁香五月| 亚洲av无码精品色午夜| 亚洲成人色五月婷婷综合| 色99网站| 亚洲精品无人区| 天堂色婷婷| 五月婷综合性中心| 亚洲一区二区无遮挡A片| 蜜桃五月天| 天天se在线视频| 婷婷综合五月天激情| 欧美三日本三级少妇三99| 亚洲精品字幕在线观看 | 五月丁香成年黄色| 精品一二三区视频立| 欧洲激情精品婷婷| 国产精品久久久久久久久久| 91久久综合亚洲鲁鲁五月天| 一二三区视频韩国| 激情六月综合| 夜夜爱爱亚洲| 久久开心五月婷婷| 色色色色色色色色网站| 色五月婷婷1| 狠狠色噜噜狠狠| 日韩另类| 久99热在线观看| 色播婷婷五月天| 午夜少妇在线观看视频| 久久婷婷综合国产| 激情五月,婷婷五月,丁香五月| 五月丁香色综合| 色综合久久综合中文综合网| 深爱激情AV| 在线观看中文字幕亚洲| Av在线资源| 六月色狠狠色| 久久久久9| 91九色无码日韩| 深爱激情丁香五月| 无码激情AAAAA片-区区| 99久久免费性爱视频`| 97亚洲婷婷| 第四色五月天| ww超碰在线| 狠狠色激情综合| 免费无码毛片一区二区A片| 久久9RE热视频精品98| 婷婷五月色综合| 亚洲精品又粗又大又爽A片 | 五月婷婷综合激情| 99热欧美| www.97碰碰com| 亚洲综合99| 996黄色片| WWW,婷婷,COM| 五月色亭丁香| 丁香网五月网| 婷婷五月性感| 逼逼AV| 大陆极品少妇内射AAAAAA| 狠狠色丁香久久婷婷综合五月| 久久精品只有这| 婷婷色六月| 五月婷婷天| 97亚洲精品| 丁香五月激情综合啪啪| 婷婷丁香六月天激情四射网| 熟女乱论网| 日本久久天堂| 成人五月天在线视频在线观看| 丁香五月天社区| 五月婷婷五月天激情视频| 九九热最新地址| 俺来也综合网精品一区| 色婷婷888| 日本综合久| 国产成人精品亚洲线观看| 日韩成人网站精品久久大全| 亚洲精品久久久久久久久久飞鱼 | 91九色精品熟女内射| 中文字幕+中文在线| 中文在线视频久1| 欧美大道不卡| 五月丁香激情综合啪啪| 久久久五月天| 婷婷五月天激情AV影院| 久久女人九九| 日韩综合天堂| 久久综合丁香五月| 九九99久久精品| 九九久久视频| 91视频免费后入强操| 激情五月天伊人av| 婷婷五月综合网| 亚洲色色色| 婷婷五月天激情综合| 超碰妻人人| 久热这里只有精品6| 丁香五月中文字幕| 久草热久草在线视频| 99久久er| 1024操逼视频| 激情综合网五月婷婷| 99精品爱| 五月丁香婷婷欧美色图视频五月丁香777电影 | 婷婷99| 国产伦亲子伦亲子视频观看| 日本五月天一页| 激情色色| 色欧美色色色| 99久超碰| 韩国情人在线电视剧免费观看高清版全集 | 日日躁夜夜躁狠狠久久AV| 精品无码99| 综合性爱网| 国产日产亚系列精品版优势| 五月丁香黄色视频| 2020日日干| 色狠狠色噜噜AV天堂五区| 丁香色五月天| 热99精品视频观看| 色五月色五天色情网址| 操一区| 色五月婷婷激情| 婷婷成人综合| 日本色99网站| 99re思思热在线视频| 久cao香蕉影院| 一区二区三区视频| 激情小说之五月| 久久久中文| 五月天伊人久久| 五月婷婷色| 啪啪色区| 国产五月婷| www99热| 色色五月天com| 强辱丰满人妻HD中文字幕| 婷婷久久五月天丁香| 亚洲人人操BD| 婷婷香蕉| 综合亚洲AV| www.色五月| 天天操人人干| 欧美天堂久久| 亚洲激情免费视频| 噜噜色五月| 丁香五月综合婷婷| txt五月激情四射网综合俺也来了 五月天婷婷丁香人人操91 | 永久天堂日本| 99国产精品白浆在线观看免费| 色五月激情网| 日本熟女内射| 免费成人中文字幕| 国产肥白大熟妇BBBB视频| 丁香五月成人| 五月婷婷激情| 五月婷婷丁香社区| 五月婷婷丁香五月婷婷| 国产欧美日韩性爱| 99 re视频一区| 五月丁香婷婷婷激情爱爱| 激情都市另类| 婷色五月| 久色| 五月婷丁香| 国产成人亚洲综合A∨婷婷| 日韩操逼小电影| 襙比视频| 亚洲综合新99视频| 天堂婷婷五月在线| 亚洲天堂久久| 另类天堂| 亚洲综合网区| 操91| 成人视屏在线观看| 亚洲av网址| www色综合亚洲92| 激情综合婷婷久久| 大香蕉视频婷| 久久丁香婷婷色情综合| 亚洲中文字幕AV在线| 能看的AV| 欧洲MV日韩MV国产| 丁香五月-激情综合| 国产毛片欧美毛片久久久 | 91热网址| 中文字幕丰满人妻无码专区| 狠狠色噜噜狠狠| 五月天伊人| 丁香六月婷婷| 超碰二区| 久久永久视频| 东京热免费视频| 热久久99热欧美国产亚洲| www.亚洲激情| 色狠久| 婷婷激情五月综合| 九九精品亚洲| www.久久| 泰州成人视频| 爱射综合| 五月婷婷丁香日韩在线| 老师高潮流白浆喷水的A片| 99精品综合在线| www.色九月| 色婷婷亚洲在线观看| 色五月婷婷91| 五月激情丁香五月| 99久久这里只有精品免费官网| 超碰精品手机在线| 丁香成人视频| 久热免费| 天天操天天操天天操天天操天天操 | 9 1大香蕉| 任你搞网站| 色婷婷色五月另类综合| 色五月涩涩婷婷蜜桃| 天天檫天天爽| 99久精品视频| 亚洲99热| 久久婷婷五月天丁香| www.色综合| 精品久久人妻| 日日操夜夜操不卡| 国产毛片精品一区二区色欲黄A片| 中文字幕有多少字| 婷婷中文字幕网| 《诡秘之主》在线观看| 99视频在线观看视频| 免费在线观看欧美激情xx小视频| 久久婷婷五月综合网| 日韩无码色色| 97碰在线| 538在线精品| 亚洲国产黄色电影| 99热18| 亚洲九九在线| 91久久九久久九久久九久久九久久 | 婷婷五月天色色| 97日本在线播放| 99自拍网| 色五月成人网| 色的色综合| 久久久久人妻| 婷婷在线视频| 色婷亚洲| av在线超清中文| 综合五月网| 色久综合| 五月丁香婷婷激情爱爱| 狠狠综合色网| 在线综合婷婷| www九九热| 超碰av在| 日本综合久久| 午夜丁香婷婷| 97亚洲视频在线| 99热青青草| 天天日天天爱天天噪| 91中文在线| 婷婷色色综合| 无码九九| 久久东京热婷婷五月| 五月丁香 狠狠爱| 99re热视频这里只有综合亚洲| 婷婷激情丁香六月| 婷婷五月天激情小说| 成人毛片在线免费观看| 婷五月丁香| 色色激情五月天| 吾爱AV导航| 人人干天天舔| 日韩aaaaa| 婷婷色色网站| 中文人妻主播久久| 丁香五月婷婷手机| 国产毛片精品一区二区色欲黄A片| 五月婷婷色啪| 五月婷色激情五月| 六月婷婷综合| 久久视频婷婷视频| 五月天婷婷免费视频| 色色色色色日韩午夜激情| 六月婷婷之青青草| 久久99综合| 色婷婷五月色| 99色| 国产高清视频91九九九久久久| 天天综合天天玩夜夜玩天天玩夜夜玩 | 五月婷婷 激情五月| 欧美日本免费一道免费视频| 国産精品| 影音先锋四区| 丁香五月在线自慰| 可以直接看的AV| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 亚洲精品影视| 五月天开心婷婷激情网站| AV中文网| 五婷婷六月合| 天天干夜晚夜操| 91久久婷婷| 九月婷婷综合| 99热综合网| 噜一噜在线| 色婷婷五月天偷拍| 99综合视频| 色婷婷影| 99热8| www.五月丁香| 日本婷婷五月天| 99日精品视频| 中文字幕视频在线播放| 久人操| 五月激情网站| 91婷婷丁香| 天天日夜夜|