ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LAAP的RSI进化实践:基于挂谷猜想的agent harness工程化落地与TaoToken统一接入

LAAP的RSI进化实践:基于挂谷猜想的agent harness工程化落地与TaoToken统一接入 1. 从挂谷猜想到 LAAP 的 RSI 进化一个真实的多工具协作困境LAAP 框架下的 RSIRecursive Self-Improvement递归自进化机制本质上要解决的是一个方向覆盖问题当你的 agent harness 需要同时调度代码生成、单元测试、文档润色、依赖审计等多个异构工具时如何保证每一个任务方向都有对应的 agent 覆盖同时不让系统在迭代中无限膨胀。这跟三维挂谷猜想里“覆盖所有方向的线段集合必须具有全维数”的结论在结构上高度同构——你可以把每个 agent 看作功能空间里的一根 δ-管方向覆盖不全就会出现能力盲区管数堆太多又会把资源体积撑爆。我最初在 LAAP 里跑 RSI 循环时踩的坑很典型第一轮迭代 agent 数量从 6 涨到 23第二轮直接冲到 71token 消耗翻了十几倍但任务通过率只从 62% 提到 68%。问题出在两个地方——一是没有方向完备性约束harness 不断创建功能重叠的 agent二是每个 agent 各自持有独立的模型接入配置Key 散落在十几个.env文件里调试时根本分不清是哪条链路超时。后来我把挂谷猜想里的“粘性”和“颗粒性”思路搬进 harness 设计配合 TaoToken 做统一接入才把 RSI 迭代从失控状态拉回到可控区间。这篇文章面向的是正在用 LAAP 或类似多 agent 框架做自进化实验的开发者尤其是那些已经感受到“agent 越加越多、效果越来越差”的团队。我会给出可直接复制的 harness 配置模板、RSI 迭代参数、TaoToken 统一 Key 接入步骤以及一份本地验证清单。你不需要懂调和分析只需要理解一个核心类比方向覆盖要全管状体积要小状态切换要粘。先说清楚 LAAP 里 RSI 的三个阶段后面所有配置都围绕它们展开。第一阶段是probeharness 用少量样本探测当前 agent 集合的方向覆盖缺口输出一个 coverage 向量第二阶段是expand根据缺口创建或激活新 agent但必须受体积预算约束第三阶段是consolidate把方向相近、激活模式高度重叠的 agent 合并降低抖动。这三个阶段循环执行每一轮都要记录 Hausdorff 维数估计值和 token 消耗作为下一轮预算调整的依据。TaoToken 在这个架构里的角色是统一接入层。LAAP 的每个 agent 在 expand 阶段都可能切换模型——代码生成用 Claude 系长文档用 GPT 系本地小任务用轻量模型——如果每个 agent 都自己管 Key 和 Base URL配置会迅速腐化。TaoToken 提供 OpenAI 兼容的/v1/chat/completions接口一个 Key 覆盖多模型harness 只需要在初始化时注入一次环境变量所有 agent 共享。这样 RSI 迭代时新增 agent 的接入成本接近零你只需要在 agent spec 里写模型 ID不用碰任何凭证。2. TaoToken 前置准备统一 Key 与 Base URL 的接入方式在把 TaoToken 接进 LAAP harness 之前你需要先拿到一个可用的 API Key并确认 Base URL 的写法。TaoToken 的 API 端点是https://taotoken.net/api注意这个地址后面不加任何 UTM 参数直接作为 OpenAI SDK 的base_url使用。Key 的获取入口在控制台的 API Keys 页面登录后创建一个新 Key建议按项目命名比如laap-rsi-dev方便后续在 harness 日志里做归因。拿到 Key 之后不要急着写进代码。LAAP 的 RSI 循环会频繁创建子进程和临时 agent硬编码 Key 会导致泄露风险而且迭代过程中如果 Key 失效排查起来非常痛苦。推荐的做法是用环境变量加.env文件harness 启动时统一加载。下面是我在 LAAP 项目里实际使用的.env结构# .env —— LAAP RSI harness 统一接入配置 TAOTOKEN_API_KEYsk-你的实际Key TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_DEFAULT_MODELclaude-sonnet-4-20250514 TAOTOKEN_FALLBACK_MODELgpt-4o-mini LAAP_RSI_MAX_AGENTS24 LAAP_RSI_VOLUME_BUDGET180.0 LAAP_RSI_STICKY_THRESHOLD0.12这里有几个参数需要解释。TAOTOKEN_DEFAULT_MODEL是 harness 在 expand 阶段创建新 agent 时的默认模型我选 Claude 系是因为它在代码生成和结构化输出上比较稳。TAOTOKEN_FALLBACK_MODEL用于降级场景——当主模型请求连续失败或延迟超过阈值时harness 自动切到轻量模型保证 RSI 循环不中断。LAAP_RSI_MAX_AGENTS是硬上限防止 expand 阶段失控。LAAP_RSI_VOLUME_BUDGET对应挂谷猜想里的体积估计单位是“归一化管体积”后面配置模板里会详细说明怎么算。如果你用的是 Claude Code 或类似的编码 agent 工具TaoToken 的接入方式略有不同。Claude Code 需要设置ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY两个环境变量Base URL 同样用https://taotoken.net/apiKey 用同一个。这样你在终端里跑的 Claude Code 会话和 LAAP harness 里的 agent 共享同一套凭证调试时可以在一个地方看所有请求日志。对于 Cline、Continue 这类 VS Code 插件配置写在插件的 settings JSON 里。以 Cline 为例在cline_settings.json中指定{ apiProvider: openai, openAiBaseUrl: https://taotoken.net/api, openAiApiKey: sk-你的实际Key, openAiModelId: claude-sonnet-4-20250514 }注意apiProvider选openai而不是anthropic因为 TaoToken 暴露的是 OpenAI 兼容接口。Model ID 直接写模型名称TaoToken 会在服务端做路由。如果你在 Cline 里同时配了多个 provider确保 LAAP 相关的 agent 走 TaoToken 这一路避免请求分散到不同计费体系里。还有一个容易忽略的点LAAP 的 RSI 循环里agent 之间会传递上下文。如果每个 agent 用不同的 Base URL 和 Key上下文里的工具调用结果格式可能不一致导致 consolidate 阶段合并失败。统一走 TaoToken 之后所有 agent 的响应结构一致合并逻辑只需要处理一种 schema。这是我在第三次迭代崩溃后才意识到的——当时 71 个 agent 里有 19 个用的是另一套接入配置合并时字段对不上直接抛了KeyError。最后提醒一下 Key 的权限管理。TaoToken 控制台支持给 Key 设置额度和模型范围建议给 LAAP 项目单独创建一个 Key限制可用模型列表避免 RSI 循环里某个 agent 意外调用高价模型把预算烧光。额度告警阈值设在实际预算的 80%这样在 expand 阶段就能收到通知及时调整LAAP_RSI_VOLUME_BUDGET。3. 可复制的 harness 配置模板与 RSI 迭代参数这一节给出完整的配置文件你可以直接复制到 LAAP 项目的configs/目录下。我把它拆成三个文件harness.yaml定义 agent 集合和路由规则rsi_params.yaml定义迭代参数taotoken.yaml定义统一接入。分开写的好处是 RSI 调参时不用碰接入配置降低误改风险。先看harness.yaml。核心结构是agents列表加routing规则。每个 agent 用direction表示它在功能空间里的方向向量用delta表示管半径volume是预计算的归一化体积。方向向量不需要严格归一化harness 启动时会自动处理但建议保持三个分量对应“代码生成 / 测试验证 / 文档处理”三个主轴。# configs/harness.yaml harness: name: laap-rsi-harness version: 0.3.1 max_concurrent_agents: 8 sticky_threshold: 0.12 transition_penalty: 0.35 min_active_time_ms: 80 agents: - id: code-gen-core direction: [1.0, 0.1, 0.0] delta: 0.10 volume: 12.5 model: claude-sonnet-4-20250514 tools: [file_write, shell_exec, git_diff] max_tokens: 8192 - id: test-verify-core direction: [0.1, 1.0, 0.0] delta: 0.12 volume: 14.2 model: claude-sonnet-4-20250514 tools: [shell_exec, pytest_runner, coverage_report] max_tokens: 4096 - id: doc-polish-core direction: [0.0, 0.1, 1.0] delta: 0.15 volume: 18.0 model: gpt-4o-mini tools: [file_write, markdown_lint] max_tokens: 6144 - id: dep-audit direction: [0.6, 0.6, 0.0] delta: 0.08 volume: 8.3 model: gpt-4o-mini tools: [shell_exec, package_query] max_tokens: 2048 routing: strategy: sticky fallback_agent: code-gen-core coverage_target: 0.92 volume_budget: 180.0sticky_threshold控制状态切换的粘性当两个连续时间步的神经状态在 LAAP 里就是任务特征向量距离小于这个阈值时harness 强制保持同一个 agent 激活避免抖动。transition_penalty是切换 agent 的代价系数值越大越不愿意切换。min_active_time_ms是 agent 最短激活时间防止高频切换。volume字段的计算方式把 agent 的 delta 和它覆盖的方向范围做积分再乘以一个归一化系数。我在 LAAP 里用的是一个简化公式volume delta * (1 direction_spread) * 10其中direction_spread是 agent 覆盖的方向角范围。这个值不需要精确只要相对大小合理用于体积预算约束即可。接下来是rsi_params.yaml这是 RSI 迭代的核心参数。# configs/rsi_params.yaml rsi: max_iterations: 50 probe_sample_size: 32 expand_threshold: 0.08 consolidate_threshold: 0.85 volume_budget: 180.0 max_agents: 24 hausdorff_alert_gap: 0.5 coverage_alert_threshold: 0.90 probe: strategy: directional_uniform min_coverage_per_axis: 0.75 record_metrics: [coverage_vector, volume_used, token_cost] expand: max_new_agents_per_iter: 3 min_direction_gap: 0.15 inherit_tools_from: nearest_neighbor model_selection: default_with_fallback consolidate: similarity_metric: cosine merge_threshold: 0.92 preserve_tool_union: true max_merge_per_iter: 2 monitoring: log_level: INFO log_file: logs/rsi_iterations.jsonl alert_on_volume_exceed: true alert_on_coverage_drop: trueprobe_sample_size是每轮探测用的样本数32 是我实测下来在 24 个 agent 规模下比较平衡的值再小覆盖估计不准再大 token 消耗明显。expand_threshold是方向覆盖缺口的触发阈值当某个方向的 coverage 低于 0.08 时才创建新 agent。consolidate_threshold是合并阈值两个 agent 的方向余弦相似度超过 0.85 就进入合并候选。hausdorff_alert_gap是维数告警阈值当神经状态流形的 Hausdorff 维数估计和 agent 覆盖维数之差超过 0.5 时触发告警。expand段的min_direction_gap很关键它保证新 agent 的方向和已有 agent 至少差 0.15避免创建功能重叠的 agent。inherit_tools_from: nearest_neighbor表示新 agent 继承最近邻 agent 的工具集这样不用从零配置工具权限。consolidate段的preserve_tool_union: true表示合并时保留两个 agent 工具集的并集防止合并后能力缩水。最后是taotoken.yaml统一接入配置。# configs/taotoken.yaml taotoken: base_url: https://taotoken.net/api api_key_env: TAOTOKEN_API_KEY default_model: claude-sonnet-4-20250514 fallback_model: gpt-4o-mini timeout_seconds: 60 max_retries: 3 retry_backoff: 1.5 model_routing: code_generation: claude-sonnet-4-20250514 test_verification: claude-sonnet-4-20250514 doc_processing: gpt-4o-mini dependency_audit: gpt-4o-mini rate_limit: requests_per_minute: 120 tokens_per_minute: 200000 on_limit: backoffmodel_routing把 agent 的model字段映射到具体模型 ID这样你可以在不改 harness 配置的情况下调整模型分配。on_limit: backoff表示触发限流时自动退避重试而不是直接失败。max_retries: 3配合retry_backoff: 1.5意味着重试间隔是 1.5 秒、2.25 秒、3.375 秒这个节奏在 TaoToken 的限流策略下比较稳。三个文件放好后在 LAAP 的入口脚本里加载import os import yaml from dotenv import load_dotenv load_dotenv() def load_config(config_dirconfigs): configs {} for name in [harness, rsi_params, taotoken]: path os.path.join(config_dir, f{name}.yaml) with open(path, r, encodingutf-8) as f: configs[name] yaml.safe_load(f) configs[taotoken][api_key] os.environ[TAOTOKEN_API_KEY] configs[taotoken][base_url] os.environ.get( TAOTOKEN_BASE_URL, https://taotoken.net/api ) return configs if __name__ __main__: cfg load_config() print(fharness agents: {len(cfg[harness][agents])}) print(frsi max_iterations: {cfg[rsi_params][rsi][max_iterations]}) print(ftaotoken base_url: {cfg[taotoken][base_url]})运行这个脚本如果输出harness agents: 4、rsi max_iterations: 50、taotoken base_url: https://taotoken.net/api说明配置加载正常。这一步看起来简单但我在实际项目里见过太多因为 YAML 缩进错误或环境变量没加载导致 harness 启动失败的案例建议每次改完配置都跑一遍这个检查。4. 验证请求与成功结果从单 agent 到 RSI 循环配置就绪后先做单 agent 验证再做完整 RSI 循环验证。单 agent 验证的目的是确认 TaoToken 接入链路通畅排除 Key、Base URL、模型 ID 的问题。完整循环验证的目的是确认 harness 的 probe-expand-consolidate 逻辑和体积预算约束正常工作。单 agent 验证用一个最小 Python 脚本直接调 TaoToken 的 chat completions 接口import os import requests from dotenv import load_dotenv load_dotenv() url f{os.environ[TAOTOKEN_BASE_URL]}/v1/chat/completions headers { Authorization: fBearer {os.environ[TAOTOKEN_API_KEY]}, Content-Type: application/json, } payload { model: os.environ.get(TAOTOKEN_DEFAULT_MODEL, claude-sonnet-4-20250514), messages: [ {role: system, content: 你是一个代码审查助手只输出 JSON。}, {role: user, content: 检查这段代码是否有未处理的异常def f(x): return 1/x}, ], max_tokens: 256, temperature: 0.2, } resp requests.post(url, headersheaders, jsonpayload, timeout60) print(fstatus: {resp.status_code}) if resp.status_code 200: data resp.json() print(fmodel: {data.get(model)}) print(fcontent: {data[choices][0][message][content][:200]}) print(fusage: {data.get(usage)}) else: print(ferror: {resp.text[:500]})成功的话你会看到status: 200model字段返回实际路由到的模型名content是模型输出usage里有 prompt 和 completion 的 token 数。如果status是 401检查 Key 是否正确加载如果是 404检查 Base URL 是否多了或少了/v1如果是 429说明触发了限流等一会儿再试或调低requests_per_minute。单 agent 通过后跑完整 RSI 循环。下面是一个最小可运行的循环脚本它加载配置、初始化 harness、执行 5 轮迭代每轮打印 coverage 向量和体积使用情况import os import json import time import numpy as np from dotenv import load_dotenv from laap.harness import Harness from laap.rsi import RSILoop from laap.taotoken_client import TaoTokenClient load_dotenv() def main(): client TaoTokenClient( base_urlos.environ[TAOTOKEN_BASE_URL], api_keyos.environ[TAOTOKEN_API_KEY], default_modelos.environ.get(TAOTOKEN_DEFAULT_MODEL), fallback_modelos.environ.get(TAOTOKEN_FALLBACK_MODEL), ) harness Harness.from_yaml(configs/harness.yaml, clientclient) rsi RSILoop.from_yaml(configs/rsi_params.yaml, harnessharness) target_dirs harness.sample_directions(n64) print(ftarget directions: {target_dirs.shape}) for i in range(5): t0 time.time() state rsi.step(target_dirs) elapsed time.time() - t0 print( fiter {i1}: agents{len(harness.agents)} fcoverage{state.coverage:.3f} fvolume{state.volume_used:.1f}/{state.volume_budget:.1f} ftokens{state.token_cost} felapsed{elapsed:.2f}s ) if state.coverage 0.90: print(f warning: coverage below target, gap{0.92 - state.coverage:.3f}) if state.volume_used state.volume_budget * 0.9: print(f warning: volume near budget) rsi.dump_metrics(logs/rsi_iterations.jsonl) print(metrics written to logs/rsi_iterations.jsonl) if __name__ __main__: main()成功运行的输出大概长这样target directions: (64, 3) iter 1: agents4 coverage0.71 volume53.0/180.0 tokens18420 elapsed12.34s iter 2: agents6 coverage0.83 volume78.5/180.0 tokens31200 elapsed18.91s iter 3: agents7 coverage0.89 volume92.1/180.0 tokens42800 elapsed22.07s iter 4: agents8 coverage0.93 volume108.6/180.0 tokens55100 elapsed25.63s iter 5: agents8 coverage0.94 volume108.6/180.0 tokens58900 elapsed14.22s metrics written to logs/rsi_iterations.jsonl关键观察点第 1 到第 3 轮 agent 数量增加coverage 从 0.71 升到 0.89体积从 53 涨到 92token 消耗同步上升。第 4 轮 coverage 达到 0.93超过coverage_target: 0.92expand 阶段不再创建新 agent。第 5 轮 consolidate 阶段合并了两个方向相近的 agentagent 数量保持 8 但体积没有继续涨token 消耗增速放缓。这就是 RSI 循环进入稳定期的标志。如果你看到 coverage 卡在 0.85 以下不涨检查expand_threshold是不是设得太高或者min_direction_gap太大导致新 agent 创建不出来。如果体积很快逼近预算检查volume字段的计算是否合理或者调低max_new_agents_per_iter。如果 token 消耗异常高检查probe_sample_size和max_tokens设置以及是否有 agent 在 fallback 模型上反复重试。logs/rsi_iterations.jsonl里每行是一条迭代记录包含iteration、coverage_vector、volume_used、token_cost、agent_count、merged_pairs等字段。你可以用 pandas 读进来画趋势图观察 coverage 和 volume 的帕累托前沿。我在实际项目里发现当 coverage 超过 0.92 后继续 expand 的边际收益急剧下降而体积增长接近线性所以把coverage_target设在 0.92 到 0.94 之间比较经济。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth这一节列出我在 LAAP TaoToken 组合里实际遇到过的报错以及对应的排查路径。每个报错都给出原始错误信息和修复步骤你可以对照自己的日志定位。401 Unauthorized。原始报错通常是{error: {message: Invalid API key, type: invalid_request_error}}。原因有三种Key 没加载、Key 被撤销、Key 格式不对。排查步骤先在终端执行echo $TAOTOKEN_API_KEY确认环境变量有值且以sk-开头。如果为空检查.env文件是否在项目根目录以及load_dotenv()是否在读取环境变量之前调用。如果 Key 有值但仍 401去 TaoToken 控制台确认 Key 状态看是否被误删或过期。还有一种情况是 Key 前后有空格或换行用python -c import os; print(repr(os.environ[TAOTOKEN_API_KEY]))检查如果看到sk-xxx\n这样的输出说明.env文件里有多余换行删掉即可。local proxy failed。这个报错在 LAAP 的 agent 子进程里比较常见完整信息类似ConnectionError: local proxy failed to connect to upstream。原因通常是 harness 在 expand 阶段创建的子进程没有继承父进程的环境变量导致子进程里的 TaoToken 客户端拿不到 Base URL 或 Key。修复方法是在 harness 的 agent 启动配置里显式传递环境变量# 在 harness 的 agent 启动逻辑里 import os env { TAOTOKEN_API_KEY: os.environ[TAOTOKEN_API_KEY], TAOTOKEN_BASE_URL: os.environ[TAOTOKEN_BASE_URL], TAOTOKEN_DEFAULT_MODEL: os.environ.get(TAOTOKEN_DEFAULT_MODEL, ), TAOTOKEN_FALLBACK_MODEL: os.environ.get(TAOTOKEN_FALLBACK_MODEL, ), } subprocess.Popen(cmd, env{**os.environ, **env})如果你用的是 multiprocessing 而不是 subprocess确保在Pool初始化时用initializer传递环境变量或者在每个 worker 函数开头重新load_dotenv()。我在第二次迭代时遇到过这个问题当时 71 个 agent 里有 12 个报 local proxy failed就是因为子进程环境变量丢失。reading choices 报错。完整信息类似KeyError: choices或TypeError: NoneType object is not subscriptable发生在解析 TaoToken 响应时。原因通常是响应体不是预期的 JSON 结构可能是限流返回了错误页或者模型路由失败返回了空响应。排查步骤在客户端代码里加一层响应检查resp requests.post(url, headersheaders, jsonpayload, timeout60) if resp.status_code ! 200: raise RuntimeError(fHTTP {resp.status_code}: {resp.text[:300]}) data resp.json() if choices not in data or not data[choices]: raise RuntimeError(funexpected response: {json.dumps(data)[:300]}) content data[choices][0][message][content]这样报错信息会包含原始响应方便定位。如果响应里error字段提示model not found检查model_routing里的模型 ID 是否拼写正确。如果提示rate limit exceeded调低requests_per_minute或加长retry_backoff。OAuth 相关报错。如果你在 LAAP 里同时用了 Claude Code 或 Codex 的 OAuth 登录可能会看到OAuth token expired或refresh token failed。这类报错和 TaoToken 的 API Key 接入是两套体系不要混在一起排查。TaoToken 走的是Authorization: Bearer sk-xxx头不涉及 OAuth 刷新。如果你在同一个 harness 里既有 OAuth 工具又有 TaoToken agent确保它们的客户端实例分开创建不要共享 session。我在项目里把 OAuth 工具放在独立的tools/oauth/目录TaoToken 客户端放在tools/taotoken/两者通过统一的ToolInterface抽象但底层凭证完全隔离。Codex auth.json 配置。如果你用 Codex 作为 LAAP 的一个工具它的auth.json需要单独配置。文件路径通常在~/.codex/auth.json内容格式{ base_url: https://taotoken.net/api, api_key: sk-你的实际Key, model: claude-sonnet-4-20250514 }注意 Codex 的base_url和 OpenAI SDK 的base_url写法一致都不带/v1Codex 内部会自己拼。如果你在 Codex 里看到auth.json not found检查文件路径和权限。如果看到model not supported确认model字段的值在 TaoToken 的可用模型列表里。CC Switch 配置。CC Switch 用于在多个 Claude Code 配置间切换它的配置文件通常在~/.cc-switch/config.json。如果你用 CC Switch 管理 TaoToken 接入配置片段如下{ profiles: { taotoken-laap: { base_url: https://taotoken.net/api, api_key: sk-你的实际Key, model: claude-sonnet-4-20250514 } }, active: taotoken-laap }切换后运行cc-switch use taotoken-laap然后在 Claude Code 里执行/status确认 Base URL 和模型生效。如果切换后仍走旧配置检查active字段是否更新或者重启 Claude Code 会话。Cline MCP 配置。如果你在 Cline 里用 MCPModel Context Protocol连接 LAAP 的工具服务MCP server 的配置在cline_mcp_settings.json{ mcpServers: { laap-tools: { command: python, args: [-m, laap.mcp_server], env: { TAOTOKEN_API_KEY: sk-你的实际Key, TAOTOKEN_BASE_URL: https://taotoken.net/api } } } }注意 MCP server 的环境变量要单独配它不会自动继承 Cline 的配置。如果 MCP 工具调用报connection refused检查command和args是否能手动跑通。如果报401检查env里的 Key 是否正确。排查完这些报错后建议把修复步骤写进项目的TROUBLESHOOTING.md下次遇到类似问题直接查文档。我在项目里维护了一份报错对照表把错误信息、原因、修复命令三列对齐新成员上手时省了很多时间。6. 语义一致 CTA把 RSI 循环跑起来配置和排查都走通之后下一步是把 RSI 循环接到你的实际项目里。LAAP 的 harness 设计允许你从任意阶段切入——如果你已经有现成的 agent 集合可以直接从 consolidate 阶段开始先合并冗余 agent 再跑 probe。如果你是从零开始建议先用 4 个核心 agent代码生成、测试验证、文档处理、依赖审计跑 5 轮观察 coverage 和 volume 的曲线再决定是否 expand。TaoToken 在这个流程里的价值是让你不用在接入层反复折腾。一个 Key、一个 Base URL、一套模型路由覆盖 LAAP harness 里所有 agent 的模型调用。RSI 迭代时新增 agent 只需要在harness.yaml里加一段配置模型 ID 从model_routing里取不用碰任何凭证。这样你可以把精力集中在方向覆盖和体积优化上而不是在十几个.env文件之间来回切换。如果你在跑 RSI 循环时遇到 coverage 上不去或体积超预算的问题可以先检查probe_sample_size和expand_threshold的搭配再用logs/rsi_iterations.jsonl里的数据画趋势图。大多数情况下调整这两个参数就能把循环拉回稳定区间。如果问题出在接入层对照第 5 节的报错排查表逐项检查从环境变量加载到子进程继承再到响应解析基本能覆盖 90% 的故障场景。最后留一个实用技巧在 RSI 循环的每一轮结束时把coverage_vector、volume_used、token_cost三个值写进一个 CSV 文件用pandas做滚动平均。当 coverage 的 5 轮滚动平均连续 3 轮低于 0.90或者 volume 的滚动平均连续 3 轮上涨超过 5%就触发人工介入。这个简单的监控规则帮我在项目里提前发现了两次 agent 膨胀避免了预算超支。
返回列表