Files
liqiang b119135836
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
2026-08-20 13:12:50 +00:00

73 lines
4.7 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 820 470" width="820" height="470" role="img" aria-labelledby="title desc">
<title id="title">自主 Agent 的执行循环</title>
<desc id="desc">Agent 依次思考、行动和观察,再根据退出条件决定输出最终结果或继续下一轮循环。</desc>
<defs>
<marker id="arrow-dark" markerWidth="9" markerHeight="7" refX="8" refY="3.5" orient="auto" markerUnits="userSpaceOnUse">
<polygon points="0 0, 9 3.5, 0 7" fill="#333333"/>
</marker>
<marker id="arrow-light" markerWidth="9" markerHeight="7" refX="8" refY="3.5" orient="auto" markerUnits="userSpaceOnUse">
<polygon points="0 0, 9 3.5, 0 7" fill="#777777"/>
</marker>
<style>
.sans { font-family: Arial, "Helvetica Neue", Helvetica, "PingFang SC", "Microsoft YaHei", sans-serif; }
.code { font-family: "Courier New", Courier, monospace; }
.heading { fill: #333333; font-size: 16px; font-weight: 700; }
.body { fill: #333333; font-size: 15px; }
.note { fill: #666666; font-size: 14px; }
.box { stroke: #333333; stroke-width: 2; }
.flow { fill: none; stroke: #333333; stroke-width: 2; marker-end: url(#arrow-dark); }
</style>
</defs>
<rect width="820" height="470" fill="#ffffff"/>
<!-- ReAct steps -->
<rect class="box" x="45" y="70" width="210" height="96" rx="8" fill="#e8e8e8"/>
<text class="sans heading" x="60" y="95" dominant-baseline="middle">① 思考(Reasoning</text>
<rect x="60" y="112" width="180" height="38" rx="5" fill="#ffffff" stroke="#777777"/>
<text class="code body" x="150" y="132" text-anchor="middle" dominant-baseline="middle">&quot;还需更多信息&quot;</text>
<rect class="box" x="305" y="70" width="210" height="96" rx="8" fill="#f0f0f0"/>
<text class="sans heading" x="320" y="95" dominant-baseline="middle">② 行动(Acting</text>
<rect x="320" y="112" width="180" height="38" rx="5" fill="#ffffff" stroke="#777777"/>
<text class="code body" x="410" y="132" text-anchor="middle" dominant-baseline="middle">web_search(...)</text>
<rect class="box" x="565" y="70" width="210" height="96" rx="8" fill="#f0f0f0"/>
<text class="sans heading" x="580" y="95" dominant-baseline="middle">③ 观察(Observing</text>
<rect x="580" y="112" width="180" height="38" rx="5" fill="#ffffff" stroke="#777777"/>
<text class="code body" x="670" y="132" text-anchor="middle" dominant-baseline="middle">tool_result: &quot;...&quot;</text>
<line class="flow" x1="255" y1="118" x2="302" y2="118"/>
<line class="flow" x1="515" y1="118" x2="562" y2="118"/>
<line class="flow" x1="670" y1="166" x2="670" y2="207"/>
<!-- Exit criteria feed the decision point -->
<rect x="45" y="220" width="430" height="145" rx="8" fill="#ffffff" stroke="#777777" stroke-width="2" stroke-dasharray="7 4"/>
<text class="sans heading" x="65" y="244" dominant-baseline="middle">退出条件(任一满足)</text>
<line x1="65" y1="258" x2="455" y2="258" stroke="#cccccc"/>
<text class="sans body" x="65" y="282" dominant-baseline="middle">① 任务完成</text>
<text class="sans body" x="250" y="282" dominant-baseline="middle">② 调用 final_answer</text>
<text class="sans body" x="65" y="314" dominant-baseline="middle">③ 无工具调用返回</text>
<text class="sans body" x="250" y="314" dominant-baseline="middle">④ 错误次数超限</text>
<text class="sans body" x="65" y="346" dominant-baseline="middle">⑤ 达到最大轮次</text>
<path d="M 475 260 H 587" fill="none" stroke="#777777" stroke-width="2" stroke-dasharray="6 4" marker-end="url(#arrow-light)"/>
<rect x="502" y="238" width="62" height="20" rx="3" fill="#ffffff"/>
<text class="sans note" x="533" y="248" text-anchor="middle" dominant-baseline="middle">判断依据</text>
<!-- Stop decision and branches -->
<polygon class="box" points="670,208 750,260 670,312 590,260" fill="#e2e2e2"/>
<text class="sans heading" x="670" y="252" text-anchor="middle" dominant-baseline="middle">满足退出</text>
<text class="sans heading" x="670" y="273" text-anchor="middle" dominant-baseline="middle">条件?</text>
<path class="flow" d="M 750 260 H 795 V 35 H 150 V 67"/>
<text class="sans note" x="765" y="245" dominant-baseline="middle"></text>
<rect x="360" y="43" width="120" height="22" rx="3" fill="#ffffff"/>
<text class="sans note" x="420" y="54" text-anchor="middle" dominant-baseline="middle">继续下一轮循环</text>
<line class="flow" x1="670" y1="312" x2="670" y2="379"/>
<text class="sans note" x="685" y="346" dominant-baseline="middle"></text>
<rect class="box" x="555" y="382" width="230" height="68" rx="8" fill="#d6d6d6"/>
<text class="sans heading" x="670" y="416" text-anchor="middle" dominant-baseline="middle">输出最终结果</text>
</svg>