跳转至

会话阶段思考档位变更 SOP

1. 背景

Trae Agent 在同一轮内可能依次读取、编码、部署。默认上游思考强度为 high;本次按用户要求在明确读取阶段试用 low,进入编码/执行后保持 high。

2. 目标

代理识别会话阶段,保留 thinking enabled;仅确认只读时注入 reasoning_effort=low,编码与部署阶段 high;无法判断时 high。usage 记录实际选用档位。

3. 前置条件

确认 token-proxy 用户服务正常;备份 proxy.py 与 config.yaml;使用工程虚拟环境校验 YAML 与 Python;检查在途流式请求。现有凭据由客户端 Authorization 透传,不落入备份。

4. 影响范围

本机用户服务 token-proxy 的 ds 请求思考强度;glm-5.3* 继续跳过注入,mi 路由沿用统一注入策略。重启期间会中断在途流式回答,因此需避开在途请求。路由、凭据、已有日志不删除。

5. 分步操作

5.1 备份

改写前保存原文件并限制权限,备份台账见 backup/README.md。

mkdir -p stage-thinking-20260930/backup
cp -p proxy.py stage-thinking-20260930/backup/proxy.py.bak.20260930-233007
cp -p config.yaml stage-thinking-20260930/backup/config.yaml.bak.20260930-233007
chmod 600 stage-thinking-20260930/backup/*.bak.*

预期:备份文件存在且模式为 600;任何失败都不得继续改写。

5.2 改造请求处理

在 proxy.py 解析 messages 与工具调用名,按会话标识合并阶段。请求体只增加或覆盖 thinking、reasoning_effort、流式 usage 开关,不改 messages。工具名带 functions. 前缀时取末段;同一会话升级后不会因为后续 Read 降档。config.yaml 开启注入,收集档 low,其余 high。注意历史用户文本不能压过本轮已经发生的只读动作。实现体为 proxy.py、config.yaml。

python3 -m py_compile proxy.py
./venv/bin/python -c "import proxy; from pathlib import Path; print(proxy.load_config(Path('config.yaml'))['thinking']['stage_efforts'])"

预期:命令返回 0,阶段映射包含 collecting=low、coding/deploying/unknown=high;失败则恢复备份。

5.3 重启及健康检查(高危:打断在途回答)

确认无在途请求后重启用户服务。systemctl 刚返回 active 时监听可能尚未就绪,以健康接口为准。

systemctl --user restart token-proxy
systemctl --user is-active token-proxy
python3 -c "import urllib.request,json;print(json.load(urllib.request.urlopen('http://127.0.0.1:8788/healthz', timeout=5)))"

预期:active,健康接口返回 status=ok 和 ds/glm/mi;非零、5 秒后仍无法连接时按第 7 章回滚。

6. 验证

2026-09-30 离线验证:语法、配置解析、Read→low、SearchReplace→high、再次 Read 保持 high 均通过。重启后健康接口返回 {'status':'ok','routes':['ds','glm','mi']}。首次紧跟重启的健康探针曾出现连接拒绝,再次检查已恢复;属启动监听窗口。真实 Trae 请求的上游参数兼容性与节省金额尚待 usage 数据验证。

systemctl --user is-active token-proxy
python3 -c "import urllib.request,json;print(json.load(urllib.request.urlopen('http://127.0.0.1:8788/healthz', timeout=5)))"

正常为 active/status=ok。首批真实请求应检查 logs/usage.jsonl 的 thinking_stage、thinking_effort、status 以及 reasoning_tokens;出现 4xx 或任务返工增加时触发回滚。

7. 回滚

备份位置与原路径见 backup/README.md。恢复两个文件并重启,复查健康接口;任何校验、服务或真实请求失败均按此流程处理。

cp -p stage-thinking-20260930/backup/proxy.py.bak.20260930-233007 proxy.py
cp -p stage-thinking-20260930/backup/config.yaml.bak.20260930-233007 config.yaml
python3 -m py_compile proxy.py
systemctl --user restart token-proxy
python3 -c "import urllib.request,json;print(json.load(urllib.request.urlopen('http://127.0.0.1:8788/healthz', timeout=5)))"

预期:status=ok,原配置 thinking.inject=false;不删除既有日志。

8. 风险说明

会话标识基于首条用户输入哈希,极端重复会话可能共用阶段;未知请求维持 high。若上游拒绝思考参数,原有 4xx 兜底会按原始请求重发一次,失败时回滚。low 的节省与任务质量尚无可比实测;只在收集阶段使用,不承诺成本必降。内存阶段状态随服务重启丢失,随后由请求上下文重新判断。


来源:/home/rain/Documents/services/token_proxy/stage-thinking-20260930/SOP.md | 最后更新:2026-10-01 00:01(由 build/sync.py 同步,请勿在站点侧修改)