feat: 最大执行步骤可配置——AI 控制台 ⚙ 配置弹窗新增「最大执行步骤」输入(1-200,默认 40),存 app_meta(agent_max_steps),Agent 线程运行时覆盖 agent.s.max_steps;此前仅环境变量 AGENT_MAX_STEPS 可改
This commit is contained in:
@@ -40,6 +40,7 @@ function openAgentConfig(){
|
||||
document.getElementById('acfg-base').value = r.api_base || 'https://api.deepseek.com';
|
||||
document.getElementById('acfg-model').value = r.model || '';
|
||||
document.getElementById('acfg-serial').value = r.default_serial || '';
|
||||
document.getElementById('acfg-steps').value = r.max_steps || 40;
|
||||
document.getElementById('acfg-key-hint').textContent =
|
||||
r.api_key_masked ? ('已配置 ' + r.api_key_masked) : '未配置';
|
||||
document.getElementById('acfg-key').value = '';
|
||||
@@ -54,6 +55,7 @@ function saveAgentConfig(){
|
||||
api_base: document.getElementById('acfg-base').value.trim(),
|
||||
model: document.getElementById('acfg-model').value.trim(),
|
||||
default_serial: document.getElementById('acfg-serial').value.trim(),
|
||||
max_steps: document.getElementById('acfg-steps').value.trim(),
|
||||
};
|
||||
const key = document.getElementById('acfg-key').value.trim();
|
||||
if(key) body.api_key = key;
|
||||
|
||||
@@ -507,6 +507,9 @@ body{background:var(--bg);font-family:var(--body);color:var(--text);font-size:14
|
||||
<input type="password" id="acfg-key" class="form-control" placeholder="留空则不修改"></div>
|
||||
<div class="form-group"><label>默认设备 serial(可选)</label>
|
||||
<input type="text" id="acfg-serial" class="form-control" placeholder="192.168.20.66:5555" style="font-family:monospace"></div>
|
||||
<div class="form-group"><label>最大执行步骤(1-200,默认 40)</label>
|
||||
<input type="number" id="acfg-steps" class="form-control" min="1" max="200" placeholder="40"
|
||||
title="单轮任务允许的最大工具调用轮数;超限会收尾总结(防死循环)"></div>
|
||||
<div style="display:flex;justify-content:flex-end;gap:8px;margin-top:6px">
|
||||
<button class="btn" onclick="closeAgentConfig()">取消</button>
|
||||
<button class="btn btn-primary" onclick="saveAgentConfig()">保存</button>
|
||||
|
||||
+6
-1
@@ -35,7 +35,8 @@ bp = Blueprint("agent", __name__)
|
||||
_CFG_KEYS = {"api_base": "agent_api_base",
|
||||
"model": "agent_model",
|
||||
"api_key": "agent_api_key",
|
||||
"default_serial": "agent_default_serial"}
|
||||
"default_serial": "agent_default_serial",
|
||||
"max_steps": "agent_max_steps"}
|
||||
|
||||
# ---------- 运行状态(单实例 + 事件队列) ----------
|
||||
_run = {"id": None, "state": "idle", "prompt": "", "serial": "",
|
||||
@@ -614,6 +615,10 @@ def _agent_thread(run_id, prompt, serial, cfg):
|
||||
agent.s.model = cfg.get("model") or agent.s.model
|
||||
agent.s.api_key = cfg.get("api_key") or agent.s.api_key
|
||||
agent.s.default_serial = cfg.get("default_serial") or agent.s.default_serial
|
||||
try:
|
||||
agent.s.max_steps = max(1, min(200, int(cfg.get("max_steps") or 40)))
|
||||
except (TypeError, ValueError):
|
||||
pass # 非法值用默认 40
|
||||
|
||||
with _lock:
|
||||
history = list(_run.get("history") or [])
|
||||
|
||||
Reference in New Issue
Block a user