亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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| 老女人老91妇女老热女| 手机在线播放国产福利| 伊人黄色片| 青青草一本道福利视频| 欧美少妇第一页| 久久精品国产免费观看99| 老熟女91| 十八禁黄色| 日韩ab网| 99www.bibizy香蕉资源国产一区二区三区高清| 69超碰综合| 精品黑人一区二区| 亚洲1区2区三区高清中文字幕| 色欧洲| 亚洲综合情色| 狠狠夜色午夜久久综合在线| 做爱福利视频一区二区| 草b在线| 99色热| 国产女人操逼视频| 香蕉久久AⅤ...| 伊人久日| 99re公开精品免费视频| 26uuu国产亚洲综合| 96久久久久| 日韩大香蕉精品在线视频| 蜜桃臀 后入 一区 二区 三区 在线| 色爱三区| www久久99| 成人亚欧免费视频| 岛国视频免费在线观看| 少妇高潮对白在线观看| 最新中文字幕精品在线| 午夜福利成人免费视频| 色久桃花影院在线观看| 思思热久久成人| 欧美的性爱网站免费| 精品视频一区二区| 国产强奸乱伦无码视频| 一级性爱视频免费在线| 中文字幕日韩人妻视频| 99久在线精品99re8热| 粉嫩不卡一区二区性爱| 国产精品爽爽va在线观看98| 婷婷亚洲综合| 色色无码| 久久免费看高潮毛片韩国| 日韩少妇丰满亚洲| 99re在线视频| 另类图片五月天| 本道在线| 日韩欧美加勒比| 好看的91视频| 欧美亚洲影视| 97综合久第一页| 99热欧美| 午夜精品久久一区二区| 亚洲色系另类精品国产| 国人欧美精品一区二区| 天天日少妇逼AV| 久久五月份| 熟妇人妻一区二区| 日韩精品一区,二区 九九...老司机| 亚洲高清在线se| 嗯嗯不要 视频| 91情色| 国内毛片热久久思思热| 欧美顶级黄色大片免费| 狠狠躁AV| 操老熟女AV| 67914在线兔费成人视频| 91成人无码| 亚洲欧美在线观看无码| 狼人久草| 久久骚少妇| 黑人精品欧美一区二区蜜桃| 自拍鲍鱼一区在线高清观看免费| 丝袜熟女2P| 亚洲日本天堂| 综合久久久久久久久91| 国产丝袜啪啪| 国产精品婬乱一级毛片彝族| 欧美 亚洲 制服 精品| 久久视频,这里只有精品| 久热一区二区| 天天摸天天插天天日| 青青青艹在线视频| 97精品久久| 人人插人人摸人人| 亚洲欧美九九九| 97在线公开视频| 国产特级毛片AAAAAA高潮流水| 另类在线| 亚洲激情欧美色图 | 国产精品久久久久久久黄无码| 96精品在线| 久久成人午夜狠狠| 密乳AV免费观看| 色五91| 激情内射| 欧美一级黄色18片免费看| 麻豆2区1区天美| 丝袜视频网国产90| 熟女色综合久久| 天天看少妇| 99少妇| 高清无码国产亚洲| 亚洲美腿丝袜香蕉影视欧美成人| 99国内熟女露脸视频| 热思思免费视频| 人妻少妇av在线观看| 蜜臀99999| 中国AAAAAA黄色片| 无码一区二区三区四区五区六区七区八区九区十区视频 | 中文字幕一区日韩精| 成熟熟女国产精品一区二区| 九九精品无码专区免费| 91熟女视频网| 欧美黄色片AAAAA| 99999这里都精品| 自拍视频一区在线观看| 新视频sss国产| 欧美性爱第一页久久| 久热久一区二区三区| 婷婷色香伊人| 天天干天天操天天拍| 色综合一区二区三区| 性色一线| 人人摸.人人色| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 亚洲成a人v欧美综合天堂下载| 婷婷五月丁香五月| 91bbb| juliaann精品熟女一区| 国产一区二区av综合| 97国产精品久久久久 | 国产精品丝袜久久亚洲不卡| japan日本高清乱xxxx| 91丝袜在线视频| 小视频玖玖| 国产夫妻性生活视频| 日本中文字幕在线视频 | 国产乱伦性爱AV| 人妻丰满熟妇av无码区蜜桃| 久久超碰爱| 1000部熟女视频在线观看| 日韩精品操少妇| 日本熟妇人妻一区二区三区| 可能人人看人人摸| 一区二区三区激情在线观看| 97资源亚洲| 男插女青青影院| 日韩一级片在线看| 日本黄色天堂| 亚洲性爱成人| 欧美日日人人天天| Av手机版天堂网| 蜜乳av首页| 国产成人主播| 九九黄色视频在线观看| 校园春色中文字幕AV| 久久99午夜精品一区人妻| 欧美亚洲系列| 级品肉射| 97人人爱人人做人人乐| 国产精点久久久成人| 超碰色综合| 人妻大香蕉| 国产精品91一样| 色综合天天| 美女久久久久久久久久久| 久久精品视频28| 91日韩在线| 最新av中文字幕高清| 疯操AV| 日本免费一区二| 欧美精品久久久久久久久88| 亚洲男人的天堂va亚洲男人社| 蜜桃久久久久久久| 熟女丰满人妻一区| 色综合99| 一本久久精品中文字| 91超碰人人操| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 夜夜操二区| 免费观看性欧美一级| 国产蜜臀精品一区二区尤物| 另类av综合久久| 伊人婷婷五月天| 黄色片一区二区三区四区五区 | 99热精品在线播放| 欧美麻豆成人同性GⅤ在线| 91国产操逼视频| 国产成人五月天丁香花| 亚洲人综合| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 色官网色综合| 久干9操| 国产亚洲欧美每日在线| 香蕉国产精品麻豆亚洲欧美日韩| 日语五十路和六十路亚洲国产精品| 国产白丝网站| 香蕉99秘 一区精品蜜桃臀| 久久久久久99999国产精品| 激情图片亚洲色图| 亚洲人妻熟妇三十三区| 91精品人妻偷情| 国内毛片四区| 色香网| 伊人在线大香蕉视频久久| 日韩99神马视频播放| 欧美制服另类丝袜| 日韩乱码av| 天天干,天天日| 国产亚洲禁久一区二区| 亚洲国产激情国产av| 亚洲午夜福利视频| 青草av在线| 99久久99久久综合| 亚洲人妻av| 五月丁香婷婷色| 激情五月婷婷| 鸥美插入视频| 97爱啪| K8久久久久| 91欧美网| 黄色视频高清无码网站| 精品人妻一区二区视频| 国产色精品午夜大片| 婷婷激情五月天小说网| 色999;丁香五月| 91大学精品激情戏| WWW4虎| 久久、1234| 99re6国产精品99re| 熟妇高潮精品一区二区三区下载| 国产精品久久久九九九| 熟女熟妇一区二区三四区| 成人性交午夜免费片| 欧美亚洲激情| 国产欧美精选激情视频| 欧美精品999| 超碰公开久久网| 91真人天天在线| 国产精品日日摸天天碰| 日本精品五区| 人人干人人搞人人摸| 影音先锋国产精品| 妇人噜噜| 啊啊啊啊啊啊在线观看| 国产AV久久久蜜爱影集| 日韩懂色网| 国产精品禁久久久精品| 高清国产无码av| 欧美性爱伊人| 久久九精品| 这里只有精品97| 91精品久久久| 人人喜人人妻| 欧洲亚洲人妻无码久久三区四区| 亚洲性爱乱操x| 一级性爱aaaa| 国产极品久久久| 91五十路| 成人av动漫在线观看| 97人人中文网| 欧美AB在线| 久久久久久国产无码精品| 欧美有码激情视频一区二区三区| 综合激情一一91| 亚洲欧美天堂| 日本在线一二| 夜夜嗨TV| 日本3级一区二区免费| 国产人伦精品一区二区三区 | 国产中文字幕在线点播| 国产精品国产自产拍高清AV| 成人夜夜| 日韩一区二区三区四区五区| 1204av韩国| 97亚洲精品| 五月丁香网站| 99re9| 欧美精品日韩一区二区| 日韩淫色网| 老熟女搡BBBB搡BBBB视频| 亚洲天堂综合AV| 97亚洲自在精品在线观看| a片久久久久久久久久久久 | 秋霞久久亚洲精品成人| 亚洲官网在线| 老司机福利青青草| 麻豆2区1区天美| 精品九九九九九九| 操逼日韩无码 | 九月伊人中文字幕| 免费一级视频特黄色大片| 玖玖爱一区在线| 女同女同恋久久级三级| av线电影| av天堂5| 影音资源男人日韩| 免费看一级a性色生活片久久无| 97超碰精品成| 综合自拍| 1769成人国产精品视频| 春色校园综合网| 日韩三A大片在线观看| 青青草视频久久久久| 被窝影院午夜看片无码| 玖玖爱一区在线| 精品高清一区二区三区三州| 国产精品第一页国产大屁股视频免费区i| 秋霞久久亚洲精品成人| 国产一区二区精品在线视频| 亚洲精品无码少妇久久| 亚洲高清综合网| 六六久久日韩不卡| 呦呦一区| 国产丰满少妇久久久精品影院| 久久天天艹| 亚洲资源网| 国产美女mm131爽爽爽爽| 欧美色图亚洲色,麻豆| 激情色色| 久久久精品91八戒| 超碰到97情色| 激情五月婷| 黄色无码高清黄色无码网站| 97久久久精品| 色婷婷综合网| 翔田千里爆乳巨臀无码| 91视频综合在线| 天天日夜夜爽| 久久成人午夜精品影院| 青青在线视频免费| 中文在线视频| 国产白嫩精品久久| 久久久久久AⅤ无码免费肉站| 成人一二三区| 91真人天天在线| 动漫爆乳3D奶水一区在线观看| 欧美狠狠| 欧洲一区二区| 久久久av爱| 岛国成人av在线播放网址| 亚洲综合在线第一页| 啊啊啊好舒服好爽啊啊啊视频| 国产精品久久久无码AV网站| 久久国产熟女影院| 男人综合网| 神马久久啊啊| 熟妇人妻一区二区三区| 全球成人中文在线| 精品人妻1区| 久久αⅴ| 亚洲美女高潮喷水视频| 嗯嗯啊好大| 久久精品人体| 玖玖在线视频| 探花激情视频| 一,爱啪啪,在线免费视频| 超碰97护士| 蜜臀久久99精品久久久久久成人小说| 久久久久久9999| 久久人妻丝袜一区二区三| 五月婷婷丁香中文字幕| 国产精品久久久久中文字幕| 屁屁影院一区二区三区国产| 久久久久久亚洲中文| 蜜臀99久久精品久久久懂爱| 美女诱惑久久| 91性网| 蜜桃视频啊啊啊啊| 伊人亚洲综合| 成人十八禁日韩欧美一二三| 性生活久久久久久久久久| 九九久久九九久久| 亚洲熟妇自偷自拍另欧美| 高跟丝袜AV专区国产| 亚洲乱伦图片视频| 午夜偷拍久久熟女| 不卡啪啪视频| 欧美性爱在线无码| 美女黄色一级A视频| 亚洲日本韩国在线| 99精品在线| 九九色精品| 97干在线| 中文字幕一区av| 国产 日韩 欧美 人妻 熟女 中文 69人妻精品一区二区绯色 | 337p大胆噜噜噜噜噜91Av| 色婷婷九月天天综合| 欧美一区二区三区蜜桃| 色婷婷香蕉| 国产 码在线成人网站| 亚洲超碰在线| 91欧美高清| 国产视频一区二区在线观看| 日日日啊啊啊| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 东北毛片| 久久天天艹| 乱伦图av| 一二三区在线| 求求你操操我| 青青草中日韩在线| 久操国产在线| 久久久久亚洲熟妇熟女| 尤物网址| 色九月婷婷| 日本亚洲vr欧美不卡高清专区| 国产精品白虎| 日韩色图 一区二区| 一本大道久| 极品另类| 欧美日本国产日韩激情视频| 欧美日韩91| 97超碰天天爱天天爱| 亚洲精品白丝| 97亚洲欧美| 欧美一区二区日韩三区| 一区在线观看中文字幕| 久久理论字幕视频| 另类专区加勒比| 中文字幕制服诱惑| 在线看的av| 天天日天天插| 91 综合 色| 欧美黑人熟妇精品91| WWW啪啪的com| 精品一区二区三区蜜桃臀赵总 | 校园春色五月天| 久久成年片色大黄全免费网站| 中文字幕中文字幕一区二区| 欧美AB在线观看| 色香伊人| 日韩黄片视频试看| 综合影院亚洲| 国产视频97| 99视频这有这里有精品| 国产亚洲人妻综合日韩 久久| 好舒服视频| 东京热男人天堂| 国产树林里野战在线看| 免费网站观看www在线观| 97资源站日韩| 亚洲福利中文字幕在线| 一区二区三区四区久久视1| 大香蕉视频啪啪啪啪| 久久男人精品| 丝袜内射| 张柏芝国产一区在线观看| 欧亚在线视频| 四虎影视永久在线观看精品免费网站| 情趣丝袜无码操逼视频| 啊啊啊用力在线观看| 亚洲干B| 日韩丝袜二区| 欧美人妻另类在线| 日韩国产乱子伦App| 99热aaa| A 天堂| 欧美性猛交美女自慰91| 九九九999久久久网站| 爱做久久久久久| 九9热伊人| 国产日逼视频| 人人艹亚洲| 日本超碰97日韩精品人妻| 亚洲无码视频免费在线观看网址!| www.色婷婷| 精品欧美乱码久| 99热官网| 超碰欧美97| 欧美图片偷拍| 精品久久久久久AV无码| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 福利一级版子| 新婚人妻扶着粗大强行坐下| 另类专区加勒比| caoni国产亚洲av| 久久99草| 亚洲第一在线视频| 久9精品| 色穴精品| 视频黄色国产一级| 免看60秒涩涩视频| 五月综合色| 欧美少妇色图| 传媒免费一区二区三区| 欧美性爱视频免费一区一A| 欧美,亚洲,日韩,v,天堂,手机在线观看| 亚洲制服aⅴ中文字幕| 亚洲系列欧美| 长长久久免费视频| 高清无码久操视频| 91男人天堂网| 婷婷五月天综合网| 级做a爱无码性色永久免费| 蜜屁Av| 久久老子无码午夜伦不卡| 亚洲图片欧美偷拍| 成人综合网 欧美| 艹少妇网站| 国产精品日日摸天天碰| 图色综合网| 91亚洲狠狠色| 久久久999网站| av午夜影院在线播放| 成人AV在线网站| 亚洲最大91网| 成人乱码一区二区三少妇| 超碰美女97| 农村妇女精品一区二区| 伊人久久婷婷| A 在线网址| 久久东京热久久| 欧美一级专区免费大片| 免费夜夜爱黄色视频毛片| 国产探花日韩援交| 久久久久国色αv免费观看| 97久久精品亚洲中六字幕| 国产精品久久久三级无码| 丰满人妻被猛烈进入中| 亚洲天堂另类| 国产人妻一区二区三区欧美毛片| 精品国产乱码久久久久久久久1 | 校园春色中文字幕AV| 久久麻豆一区二区| 国产家庭乱伦网址| 欧美精品久久久久久久丰满| 日逼97| 97超碰总站| Av手机版天堂网| 国产老女人久久毛| 久久九九网| 日韩欧美成人午夜福利| 97超碰超| 中国91AV| 玖玖综合视频| 欧美日本不卡| 青青草成人视频在线观看二区| 偷拍欧美综合| 99热这里只有精| 国产强上视频在线观看| 国产日产精品久久快鸭的功能介绍| 天天综合中文字幕 91| 91热色| www.高清无码诱惑一区.com | 精品视频一区二区| 熟女五十路一区二区三| 老熟女乱伦一区| 另类图片综合| 免费试看60秒| 国产v亚洲v日韩v欧美v片另类 | 99热亚洲| 天天做天天爽| 亚洲天堂区| 天天弄天天操| 国产一区96在线| 91色艳| baisiav| 91逼逼女人91| 国产视频一区二区三区久久亚洲天堂| 欧美熟妇乱码在线一区| 免费看污网站| 国产乱人妻精品入口| 久草热制服丝袜在线观看 | 久久五月天婷婷丁香中文字幕| 一本色道久久天天射天天干| 蜜乳AV免费观看| 第四色奇米影视777| 欧美探花网| 伊人久久大香线蕉无码| 亚洲天堂7777| 九九综合色| 亚洲宅男天堂| 天天摸天天碰天天添青青| 久久中日麻豆| 男女香蕉一区二区| 人妻第一页| 国产精品诱惑| 日韩极品无码B| 亚洲最大成人a毛毛片| 国产亲戚伦亲在线| 水野优香在线观看| 国产又大又粗又长视频在线| 日日干夜夜骑| 亚洲在线91| 欧美呦呦性爱| 91站街按摩店老熟女熟女| 色五月婷婷五月天| 久久亚洲天天做| 精久久久| 人妻精品视频一区二区三区| 国产操操日韩三级黄| 99久久99九九99九九九| 91在线美女| 亚洲美女黄色| 超碰成人人人爽人人爽| 国产Aα| 先锋精品av色鲁| 色天堂综合| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 永久免费av无码网站国产app| 亚洲一卡2卡3卡4卡乱码网站| 免费视频无码| 国产一| 91免费看一区二区三区| 欧美在线观看综合国产| 四虎AV影视国产精品亚洲精品| 情色五月天就去干| 日韩操逼性鲍| 无码9区| 99这里都是精品| 中文AV制服乱伦| 日韩黄色成人性爱| 啊啊啊不要好爽日韩无码一区| 大茄子熟女AV导航| 九九干| 亚洲天堂另类美腿| 黄色工厂这里只有精品| 丝袜剧情| 人人搡人人肉久久精品| 国产h小视频在线观看免费| 成人性爱高清视频免费看| 一区二区三区四区姦女| 欧美少妇色图| 天天操天天插| 四虎884| 亚洲少妇综合在线播放| 久久超碰免费的| 欧美色图片| 婷婷丁香五月综合| 亚洲中文字幕av | 色综合潮| 人人爱人人乐人人操| 色五月婷婷在线| 激情视频图片| 国产三区免费在线观看| 亚热日本熟女| 九月丁香婷婷色| 国产极品久久久| 免费国产电影一区二区| 久久久99久9| 色激情综合网站| 欧美在线官网| 久久精品| 德国一二三不卡| 国产偷人伦激情在线观看| 国产剧情一区在线观看| 一区二区影视| 日本天天吊| 91色综合| 求求你操操我| 在线看片国产精品每日更新| 综合 欧美 亚洲 日本| 99久久综合| 精品中文字幕第一页| 加勒比伊人综合| av无码精品久久久久| 91美女视频电影| 色婷婷狠狠18禁| 高清无码人妻久久久一区二区三区aⅴ| 婷婷色网| 日韩欧美性吧婷婷乱伦大香蕉| 蜜臀AV一区二区三区激情综合| 国内精品嫩模A∨私拍小视频| 校园春色亚洲欧洲| jizzjizz欧美| 综合少妇网| 国产少妇与亚洲av| 国产精品视频自拍在线| 久久久久久久六六 | 91亚洲综合在线| 夜夜操夜夜爽夜夜高潮| 人人 操人人 操人人| 久久久一区二区| 天天日天天舔天天喷天天射| A级在线视频| 少妇第一页| 久久XX| 亚洲阿v天堂在线| 亚州色国| 伊人五月天| 亚洲欧洲自拍图片专区满春格 | 国内毛片免费h片在线| 亚洲人天堂| 欧美日韩青操| 天天干美少妇一区| 欧美日产国产在线成人第一区| 97国产精品久久久久 | 狠狠91| 国产情色第一第二页在线观看| 国产67194| 无码人妻精品一区二区三区99不卡 | www.男人的天堂| 2000亚洲男人天堂| 亚洲天堂,男人| 九九精品99| 欧美一级二级三级| h色99999| 丰满少妇一区二区三区四区观看| av日韩在线观看电影| 国产大片精久久久久久| 无遮挡h肉动漫在线观看| 人妻色偷色噜| 国产伊人精品在线| 日日做夜狠狠爱欧美黑人| 久久久A∨| 97国产高清视频在线观看| 久操电影| 久久久久久久| 亚洲图片偷拍欧美| 做爱福利视频一区二区| 亚洲另类综合欧美| 天美麻花大全视频| 久久久亚洲高清不打码| 国产毛片毛片4p懂色| 99AV| 另类欧美| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 97在线公开视频| 天天日美女的B| 少妇天堂网络| 江都AV在线| 久久人人妻| 五月丁香六月激情| 色综合久久888| 亚卅熟女乱色| 首页中文字幕中文字幕免费| 2018天天干在线视频| 欧美福利视频啊啊啊啊| 九九九久久久| 免费a v| 国产日本一区二区三区蜜臀在线观看| 精品人妻一区二区三区免费视频| 亚洲激情深爱文学小说网站| 亚洲s色图| 97国产伦理| 欧洲精品欧洲精品| 秋霞福利网| 屁股久久久久久久久| 欧美国产有色电影| 亚洲日韩乱码中文无码蜜桃臀网站 | AV天黑人| 校园春色 亚洲| 亚洲AV色图| 超碰美女97| 综合久久97| 天天草天天日| 一区AV| 久久亚洲欧美中文字幕国语 | 精品久久艹| 中文字幕免费看| 一区二区三区男人的天堂| 女人爽到高潮潮喷18禁网站| 囯产操逼片| 亚洲图片欧美在线视频| 这里只有精品视频| 91丝袜美女| 白丝少妇一区二区| 亚洲。天堂。日本在线观看| 91操熟女视频| 亚洲国产97| AAAA欧美日韩| 欧美亚洲另类在线蜜桃| 婷婷五月综合在线| 蜜桃精品一区二区三区ww| 东北老女人的激情视频| 操少妞在线视频| 亚洲欧美97√| 啪啪性爱免费视频| 大香网站| 夜夜操2028| 性色中出| 精品熟妇视频一区二区| 欧美91精品国产自产| 黄片qw| 人人色人人操在线| 999久久久久久久精| 超碰97最新人妻| 色约约一区=区三区| 十八禁啪啪视频| 国产一区二区精品久久99| www.夜夜操| AV99热18这里只有精品| 九九九一二三| 免费黄色片。| 蜜臀久久一区二区| 色香伊人| 日本成熟少妇A∨网站| 91爆操视频| 一二三啪啪专区| 日日AAvv| 亚洲伊人a线观看视频| 久久婷婷视频| 美女干逼2| 午夜操一操| 日韩精品一区二区三区色欲| 日本一区二区三区欧美日韩中文字幕| 91国产伊人大香蕉| 性爱网站一区二区| 美女黄色一级A视频| 久久精品国产精品| 日产欧美电影一区二区三区| 成片免费观看视频大全| 亚洲网污污污污| 亚洲中文字幕在线视频一区二区| 操婷婷逼| 亚州色图片在线色| 国产福利电影| 精品精品精品| 超碰97伊人| 欧美午夜视频精品久久| 97超碰逼| 秋霞网无码| 亚洲激情久久| 99re99在线视频| 屁屁影院一区二区三区国产| 九九久久首页| 2019天天干| 女优免费一区二区永久| 91N综合网| 国产欧美日韩精品中文| 好看的久久不射无码影视影院| 一起草三级AV电影在线观看| 五月婷婷激情| 美女网站91| 激情综合五月丁香| 人妻蜜桃臀| 中文久久爆乳| 欧美桃色网| www.99在线| 精品无人区麻豆乱码1区2区图片| 亚洲九月丁香| 丝袜视频网国产90| 91呆哥人妻| 性欧美| 99热综合| 久草在线| 欧美亚综合色图| 人人性爱视频免费| 第二页中文字幕| 国产无码三级视频在线观看| 夜夜騷av、一區二區| ji熟女.com| 9999亚洲电影| 黄网色一区二区三区四区精品| 久久九九精品一区二区 | 超碰无码五月97| 色欲日韩欧美在线一区| 久草线上视频免费看| 国产黄色av大片网站| 日韩精彩视频| 激情久久久| 热99这里有精品综合久久 | 免费观看一区| 久久av网| 强奸乱伦中文字幕AV| 国产后入清纯| 婷婷五月成人| 五月丁香六月综合缴清无码| 超碰538| 国产一区二区三区影片| 亚洲精品人体| 久草婷婷| 亚洲图片偷拍视频区| 伊人骚琪琪亚洲天堂网站| 97国产精品国| 午夜福利在线合集| 撸无码不卡免费视频| 亚洲s在线观看| 999亚洲国产视频| 大香网伊人久久综合| 人人操人人摸超碰| 曰本熟女视频| 十八禁啪啦拍视频无遮挡| 91九九| 亚洲黄色网址| 精品国产乱码久久久久久影片| 日韩无码操逼片| 农村少妇久久久久久久| 久久e6只有精品| 91黑人无码激情在线| 97精品国产| 人人九九精| 夜夜操天天肏| 欧美精品999| 国产精品一区av在线| 中文字幕乱妇免费视频| 亚洲在高跟鞋自慰久久在色线| 亚洲操人| 人人 操人人 操人人| 色臀AV| 男女性扦B| 国产性刺激| 99精品无码| 最近2019中文字幕国语免费版| 男人的天堂2019| 涩亚洲欧洲| 精品一区二区三区四区女| 五月大香蕉| 秋霞无码av鲁丝片一区| 日产欧美电影一区二区三区| 99rre在线精品99re8| 嫩草影院永久在线制服丝袜| 无码99| 人人色人人操在线| 国产福利在线视频网站| 91精品人| 啊啊啊无码| 亚洲色图8| 91美女視頻| 精品人妻视频一区二区三区蜜桃视频| 丁香五月天激情综合| 日韩精品1区2区中文字幕| 国产精品亚洲色婷婷久久久| 色妺妺AⅤ| 国产美女高潮视频| 美女网站黄页| 亚洲综合图片在线| aaa淫乱视频| 人人色人人射人人妻| 嗯嗯嗯好爽| 激情婷婷丁香| 日本久久网| 婷婷亚洲天堂| 熟女乱伦二区| 亚洲九区| 色五月婷婷色| 2024人人操人人摸| 国模精品一区二区三区苹果色戒| 天堂无码精品国产久| 在线无码视频| 国产强奸91| 乱伦一区二区三区‘| 日韩欧美午夜一区二区| 超碰精品日韩欧美国产| 久久精品一区二区一8| 美女91在线| 久久精品熟妇丰满人妻99| 欧美天天综合网版| 久久精品28| 日本色日夜干| 欧美激情一区| 91欧美偷拍| 香蕉99秘 精品一区丁香| 麻豆亚洲Av成人无码一区精品| 天天肏美女| 亚州成人a∨| 麻豆影音天美视频| 久草精品一区| 91色伦| 综合亚洲欧美| 国产精品免费久久久久久久久久| 亚洲无码电影久久久| .精品人妻一区二区三| 日韩无码a片| www.av在线观看| 99热免费| 熟女欧美日韩综合婷婷| 亚洲综合一| 伊人网在线点播| 亚洲国产97| 日本黄大片在线观看视频| 国产精品蜜臀久久久久无码AV| yellow网站免费观看日韩高清无码| 久久99午夜精品一区人妻| 五月丁香啪啪啪| 99精品丰满人妻无| 久草在| 九久9精品| 麻豆综合一区av| 黑人精品成人一区二区三区| 亚洲少妇色| 熟女AV一区| 欧美在线电影| 欧美成年人性爱视频免费观看| 亚欧成人综合影院| 色色色欧美| 99国产精品久久久久久久成人热| 热热色色综合| 久久精品一区二区| 强奸乱伦大香蕉| 五月天伊人| 欧美 牲| 色九久| 色色色色日本| 黄页大片在线观看| 97热视频在线观看| 色99999| 国产欧美日韩在线不卡第一页 | 极品综合| 天天日日夜夜| 欧美日韩国产人人| 蜜臀无码视频在线观看 | 黑人在线91| 一级黄色视频网| 另类图片五月| 日韩成人人妻网站| 可以免费看黄片的视频| 伊人久久88国产女| 日本三级韩国三级美三级91| 精品无码一区二区三区色欲| 再深点灬舒服灬太大了好硬好爽| 啊啊啊97视频| 91亚洲网| 久久婷五月天| 国产成人精品一区| 亚洲国产成人7777| 无码9区| 五月天婷婷社区| 色婷婷激一区二区三区| 欧亚乱色熟一区二区三四区| 超碰在线免费一区二区三区| 18禁的网站在线| 樱花草社区www中国| 精品国产乱码久久久久久蜜臀| 91精品啪在线观看国产城中村| 免費人妻夜夜爽天天爽爽一区| 大香蕉日韩| 狠狠激情综合狠狠操中文字幕| 亚州综合色图| 亚洲AV无码乱码| 人妻精品综合中文字幕在线| 欧美 亚洲| 欧洲熟妇xxXx欧美老妇裸体| 欧美一二级| 亚洲精品无码成人久久久99| 欧美视频第二页| 超碰激情808| av影片在线观看不卡| 激情文学网伊人| 91爱网| 黄色大片一区二区密桃丝袜| 婷婷爽人人婷婷爽视频| 久操操| 97色在线视频| 天天添天天干电影| 成人久久久| 97精品国产97久久久久久免费| 伊人操| 熟妇人妻一区二区| www熟女乱伦com| 9 7超碰在线免费观看| 国产成人精品必看| 大香蕉欧美国产日韩高潮| 亚洲国产ⅴ高清在线观看| 东京热精品97综合网| 亚洲制服aⅴ中文字幕| 中文字幕人乱码中文字的预防方法| 欧美日韩国产另类综合| a片亚洲一本通视频| 国产第25页在线观看| 爱丝福利| 亚洲成人在线播放| 97在线观看免费视频| 亚洲五区熟女| 无码精品久久久天天影视| 免费看国产大AB| 黄片在线免费在线观看| 超碰人妻97| 欧美久久婷| 亚洲欧美综合区自拍另类 | 成人精品在线观看| 97亚洲综合影院| 一区| 任你爽视频| 青娱乐淫乱1314| 九一综合网| 看一级黄色视频| 中文字幕精品探花视频| 亚洲宗合网| 五月天婷婷综合| 秋霞一集毛片观看| 精彩久久中文| 超碰97爽| 大香蕉免费乱伦视频| 熟妇视频一区二区三区在线| 欧美色997| 色色色色电影网| 欧美亚洲自拍另类人妻| 碰超人人在线一区二区三区| 91操人视频| 国产AAAAAABBBBB| 天美传媒精品一区二区三区| 欧美亚洲激情小说| 亚洲天堂人妻熟妇视频| 天天cao在线| 欧美日韩大陆黑人少妇99| www.婷婷| 亚洲性爱免费电影| 欧美宗合色| 日日干夜夜骑| 天天干天天日天天射黄色| 激情综合网五月婷婷五月天| 91丝袜美女视频| 91热色| 级品肉射| 91熟女熟妇视频网站| 狠狠色噜噜狠狠狠狠狠色综合久久 | 黄色av网站在线播放| 日韩精品一二三| 亚洲日韩乱码中文无码蜜桃臀网站| 女优免费一区二区永久| 逼逼逼逼操操操操操操操操操午夜剧场| 激情一区二区| 国产中文字幕在线| 男人久久精品| 久久9久9久99久9久9| 大香蕉久| 午夜影美女日鸡鸡天天视频国产| 99久久精品国产系列| 国产精品农村妇女精品| 天天操美美| 精品国产72| 色婷婷综合久久久久中文一区二区| 久久婷婷精品| 欧美性爱三区二区| 国产精品女生av| 日韩欧美福利视频看看| 欧美一区二区日韩传媒搭讪精品| 久久久婷婷| 日韩人妻操B| 欧美国产日韩清纯唯美| 国产情侣自拍在线播放| 国产操逼视频在线观看| 另类图片综合| 日本色日夜干| 亚洲无码日韩电影| 久久久无码精品人妻二区| Aa东京男人的天堂| 天天摸夜夜操视频| 绑缚麻绳人妻寝取完整版| 蜜桃传媒一区二区亚洲| 情侣开房子拍 日韩无码 女的很漂亮| 午夜高清成人在线视频| 国产尤物AV尤物在线观看不卡| 日本免费人成视频播放120秒| 国产乱伦亚洲色图高清无码| 激情五月天中文字幕色| 久草新在线| 综合久久2017| 国产精品国产精品国产| 国产精品操| 91成人18| 亚洲伊人成综合成人网| 97超碰站| 亚洲**2021在线观看| 超碰在线欧美性爱激情| 夜夜操美女| 国产精品久久久久久久电影渣男| 91视频精品| 九月激情婷婷| 久久久国产亚洲精品系列| 亚洲最新a在线观看| www…国产操逼|