feat(coordinator): 添加团队节点默认最大工具迭代次数配置
添加 DEFAULT_TEAM_NODE_MAX_TOOL_ITERATIONS 配置项以控制团队节点的最大工具迭代次数, 并修改 LocalAgentRunner 中的逻辑来使用此默认值当 envelope 中未指定时。 fix(runtime): 修复团队节点运行成功判断逻辑 更新运行成功判断条件,将 finish_reason 为 "max_tool_iterations_finalized" 的情况 视为运行失败,并添加对原始工具调用输出的检测,避免将其误判为成功完成。 feat(mcp): 添加团队工作流MCP工具类别支持 增加新的本地MCP工具类别 "team_workflow" 及其对应的工具创建功能, 为团队工作流提供本地工具支持。 refactor(engine): 调整AgentLoop最大工具迭代次数设置 将 AgentProfile 中的默认 max_tool_iterations 从 30 增加到 100, 同时移除 TaskExecutionPlanner 构造函数中的重复参数传递。 perf(mcp): 优化MCP连接管理避免重复连接 添加 mcp_connected 标志来跟踪MCP连接状态,确保 connect_all 只执行一次, 提高性能并避免不必要的重复连接。 refactor(skills): 移除技能团队模板相关功能 移除与技能团队模板相关的代码,包括解析、存储和处理逻辑, 简化技能记录结构和加载流程。 feat(process): 增强会话过程投影器功能 添加技能激活快照事件处理,改进团队运行完成消息显示, 并增强技能激活事件的时间戳记录功能。 refactor(tasks): 简化任务尝试编排器团队执行逻辑 移除团队执行相关代码,将所有任务统一按单步执行处理, 简化任务编排器的复杂度并提升执行效率。 fix(evidence): 修复节点证据评估中需求验证逻辑 更新节点证据评估逻辑,跳过自然语言证据需求的确定性验证, 只执行机器可读的需求验证,避免因自然语言需求导致的节点失败。
This commit is contained in:
192
docs/presentations/参考资料/参考图片-html-ppt/pixel-reference.html
Normal file
192
docs/presentations/参考资料/参考图片-html-ppt/pixel-reference.html
Normal file
@ -0,0 +1,192 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Pixel Reference 对比验收</title>
|
||||
<style>
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0;
|
||||
background: #15161c;
|
||||
color: #edf5ff;
|
||||
font-family: "Microsoft YaHei", "PingFang SC", Arial, sans-serif;
|
||||
overflow: hidden;
|
||||
}
|
||||
.toolbar {
|
||||
position: fixed;
|
||||
inset: 0 0 auto 0;
|
||||
height: 58px;
|
||||
z-index: 20;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 14px;
|
||||
padding: 10px 16px;
|
||||
background: rgba(12, 14, 20, .94);
|
||||
border-bottom: 1px solid rgba(255,255,255,.12);
|
||||
}
|
||||
button, select {
|
||||
height: 36px;
|
||||
border: 1px solid rgba(110, 190, 255, .45);
|
||||
border-radius: 8px;
|
||||
background: #202839;
|
||||
color: #eef8ff;
|
||||
padding: 0 12px;
|
||||
font-weight: 800;
|
||||
}
|
||||
input[type="range"] { width: 180px; }
|
||||
.wrap {
|
||||
position: fixed;
|
||||
inset: 58px 0 0 0;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
overflow: auto;
|
||||
}
|
||||
.canvas {
|
||||
position: relative;
|
||||
width: 1672px;
|
||||
height: 941px;
|
||||
transform-origin: center center;
|
||||
background: #020815;
|
||||
box-shadow: 0 20px 80px rgba(0,0,0,.55);
|
||||
}
|
||||
.pair {
|
||||
width: calc(1672px * 2 + 24px);
|
||||
height: 941px;
|
||||
display: grid;
|
||||
grid-template-columns: 1672px 1672px;
|
||||
gap: 24px;
|
||||
transform-origin: center center;
|
||||
}
|
||||
.pane {
|
||||
position: relative;
|
||||
background: #020815;
|
||||
box-shadow: 0 20px 80px rgba(0,0,0,.55);
|
||||
}
|
||||
.label {
|
||||
position: absolute;
|
||||
left: 12px;
|
||||
top: 12px;
|
||||
z-index: 5;
|
||||
padding: 6px 10px;
|
||||
border-radius: 6px;
|
||||
background: rgba(0,0,0,.55);
|
||||
color: #fff;
|
||||
font: 800 13px/1 Arial;
|
||||
}
|
||||
img, iframe {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
width: 1672px;
|
||||
height: 941px;
|
||||
border: 0;
|
||||
}
|
||||
.ref { z-index: 1; }
|
||||
.impl { z-index: 2; pointer-events: none; }
|
||||
.checker {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: 0;
|
||||
background:
|
||||
linear-gradient(45deg, #20232d 25%, transparent 25% 75%, #20232d 75%) 0 0/32px 32px,
|
||||
linear-gradient(45deg, #20232d 25%, transparent 25% 75%, #20232d 75%) 16px 16px/32px 32px,
|
||||
#15161c;
|
||||
}
|
||||
.hint { margin-left: auto; color: #aab4c3; font-size: 13px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="toolbar">
|
||||
<button id="prev">上一页</button>
|
||||
<select id="page"></select>
|
||||
<button id="next">下一页</button>
|
||||
<button id="mode">模式:叠加</button>
|
||||
<label>实现透明度 <input id="opacity" type="range" min="0" max="100" value="58"></label>
|
||||
<span id="readout">58%</span>
|
||||
<span class="hint">用于验收对比,最终展示页不引用整张参考图。</span>
|
||||
</div>
|
||||
<div class="wrap">
|
||||
<div id="overlayCanvas" class="canvas">
|
||||
<div class="checker"></div>
|
||||
<img id="ref" class="ref" alt="参考图">
|
||||
<iframe id="impl" class="impl" title="实现页"></iframe>
|
||||
<span class="label">Reference + Recreated Overlay</span>
|
||||
</div>
|
||||
<div id="pairCanvas" class="pair" hidden>
|
||||
<div class="pane"><span class="label">Reference</span><img id="refPair" alt="参考图"></div>
|
||||
<div class="pane"><span class="label">Recreated</span><iframe id="implPair" title="实现页"></iframe></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
const refs = [
|
||||
'../参考图片/ChatGPT Image 2026年6月25日 16_23_46.png',
|
||||
'../参考图片/ChatGPT Image 2026年6月25日 16_23_57.png',
|
||||
'../参考图片/ChatGPT Image 2026年6月25日 16_24_02.png',
|
||||
'../参考图片/ChatGPT Image 2026年6月25日 16_24_07.png',
|
||||
'../参考图片/ChatGPT Image 2026年6月25日 16_24_20.png',
|
||||
'../参考图片/ChatGPT Image 2026年6月25日 16_24_25.png',
|
||||
'../参考图片/ChatGPT Image 2026年6月25日 16_24_39.png',
|
||||
'../参考图片/ChatGPT Image 2026年6月25日 16_24_46.png',
|
||||
'../参考图片/ChatGPT Image 2026年6月25日 16_24_56.png',
|
||||
'../参考图片/ChatGPT Image 2026年6月25日 16_26_07.png'
|
||||
];
|
||||
let current = 0;
|
||||
let sideBySide = false;
|
||||
const pageSelect = document.getElementById('page');
|
||||
const overlayCanvas = document.getElementById('overlayCanvas');
|
||||
const pairCanvas = document.getElementById('pairCanvas');
|
||||
const opacity = document.getElementById('opacity');
|
||||
const readout = document.getElementById('readout');
|
||||
const mode = document.getElementById('mode');
|
||||
refs.forEach((_, i) => {
|
||||
const option = document.createElement('option');
|
||||
option.value = i;
|
||||
option.textContent = `Page ${i + 1}`;
|
||||
pageSelect.appendChild(option);
|
||||
});
|
||||
function fit() {
|
||||
const target = sideBySide ? pairCanvas : overlayCanvas;
|
||||
const width = sideBySide ? 1672 * 2 + 24 : 1672;
|
||||
const scale = Math.min((window.innerWidth - 36) / width, (window.innerHeight - 90) / 941, 1);
|
||||
target.style.transform = `scale(${scale})`;
|
||||
}
|
||||
function show(index) {
|
||||
current = Math.max(0, Math.min(refs.length - 1, index));
|
||||
pageSelect.value = current;
|
||||
const implUrl = `index.html?capture=1#/page-${current + 1}`;
|
||||
document.getElementById('ref').src = refs[current];
|
||||
document.getElementById('impl').src = implUrl;
|
||||
document.getElementById('refPair').src = refs[current];
|
||||
document.getElementById('implPair').src = implUrl;
|
||||
history.replaceState(null, '', `#/page-${current + 1}`);
|
||||
}
|
||||
function setOpacity() {
|
||||
const value = Number(opacity.value) / 100;
|
||||
document.getElementById('impl').style.opacity = value;
|
||||
readout.textContent = `${opacity.value}%`;
|
||||
}
|
||||
function toggleMode() {
|
||||
sideBySide = !sideBySide;
|
||||
overlayCanvas.hidden = sideBySide;
|
||||
pairCanvas.hidden = !sideBySide;
|
||||
mode.textContent = sideBySide ? '模式:左右' : '模式:叠加';
|
||||
fit();
|
||||
}
|
||||
document.getElementById('prev').onclick = () => show(current - 1);
|
||||
document.getElementById('next').onclick = () => show(current + 1);
|
||||
pageSelect.onchange = () => show(Number(pageSelect.value));
|
||||
opacity.oninput = setOpacity;
|
||||
mode.onclick = toggleMode;
|
||||
window.onresize = fit;
|
||||
window.onkeydown = (event) => {
|
||||
if (['ArrowDown', 'PageDown', 'ArrowRight'].includes(event.key)) show(current + 1);
|
||||
if (['ArrowUp', 'PageUp', 'ArrowLeft'].includes(event.key)) show(current - 1);
|
||||
if (event.key.toLowerCase() === 'm') toggleMode();
|
||||
};
|
||||
const match = location.hash.match(/page-(\d+)/);
|
||||
show(match ? Number(match[1]) - 1 : 0);
|
||||
setOpacity();
|
||||
fit();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user