[{"data":1,"prerenderedAt":394},["ShallowReactive",2],{"lab-/labs/wenjian":3},{"id":4,"title":5,"author":6,"body":7,"category":168,"date":379,"description":380,"extension":381,"featured":382,"home_position":383,"image":384,"meta":385,"navigation":382,"order":367,"path":386,"seo":387,"status":388,"stem":389,"tags":390,"__hash__":393},"content/labs/WenJian.md","WenJian","sibuchen",{"type":8,"value":9,"toc":366},"minimark",[10,17,22,27,32,53,57,60,63,74,78,83,229,233,261,265,299,303,355],[11,12,13],"blockquote",{},[14,15,16],"p",{},"PS：“问”代表推理与探询，“剑”代表行动与决断。WenJian (问剑) 如侠客行走江湖，每遇迷障，先凝神“问”道于心（Reason），随即挥“剑”破局（Action）。剑出必有回响（Observation），回响再引剑招，往复之间，迷雾散尽 🗡~",[18,19,21],"h1",{"id":20},"前置知识reactreasoning-and-acting","前置知识：ReAct（Reasoning and Acting）",[11,23,24],{},[14,25,26],{},"推理使得行动更具有目的性，而行动则为推理提供了事实依据。",[28,29,31],"h2",{"id":30},"react过程","ReAct过程",[33,34,35,39,42,45],"ol",{},[36,37,38],"li",{},"Thought（思考）：内心独白。分析当前情况 分解任务 制定下一步计划 / 反思上一步结果。执行Search函数 传入参数\"sibuchen\"",[36,40,41],{},"Action（行动）：具体动作。调用外部工具 / 输出。Search(\"sibuchen\")",[36,43,44],{},"Observation（观察）：环境变化。从外部工具返回的结果。\"计科学生\"",[36,46,47,48],{},"循环 上下文增加 直到Action=输出\nReAct 范式中的“思考-行动-观察”协同循环图解：\n",[49,50],"img",{"alt":51,"src":52},"","/assets/WenJian/ReAct%20%E8%8C%83%E5%BC%8F%E4%B8%AD%E7%9A%84%E2%80%9C%E6%80%9D%E8%80%83-%E8%A1%8C%E5%8A%A8-%E8%A7%82%E5%AF%9F%E2%80%9D%E5%8D%8F%E5%90%8C%E5%BE%AA%E7%8E%AF.png",[28,54,56],{"id":55},"react场景","ReAct场景",[14,58,59],{},"需要调用外部工具API的场景：查询实时信息、搜索专业知识、使用专业工具（计算器、代码解释器）、操作数据库、调用第三方服务API",[28,61,62],{"id":62},"tools的三要素",[33,64,65,68,71],{},[36,66,67],{},"名称：一个简洁、唯一的标识符，供智能体在Action中调用",[36,69,70],{},"描述：一段清晰的自然语言描述，说明这个工具的用途。最为关键。LLM依赖此描述来判断何时调用此工具",[36,72,73],{},"执行逻辑：真正执行的函数/方法",[28,75,77],{"id":76},"wenjian-vs-nova","WenJian VS Nova",[79,80,82],"h3",{"id":81},"️-核心差异-differences","🛠️ 核心差异 (Differences)",[84,85,86,100],"table",{},[87,88,89],"thead",{},[90,91,92,97],"tr",{},[93,94,96],"th",{"align":95},"left","模块",[93,98,99],{"align":95},"WenJian 进阶实现",[101,102,103,122,160],"tbody",{},[90,104,105,115],{},[106,107,108],"td",{"align":95},[109,110,111],"strong",{},[112,113,114],"code",{},"config/settings.py",[106,116,117,118,121],{"align":95},"1. 完善的 ",[109,119,120],{},"配置检查"," 验证机制",[90,123,124,131],{},[106,125,126],{"align":95},[109,127,128],{},[112,129,130],{},"llm/client.py",[106,132,133,134,137,138,141,142,145,146,148,149,152,153,155,156,159],{"align":95},"1. ",[109,135,136],{},"自动读取"," setting 配置文件 (无需手动传参) ",[139,140],"br",{}," 2. 严密的 ",[109,143,144],{},"超时控制"," ",[139,147],{}," 3. ",[109,150,151],{},"强制熔断"," 机制 (严防模型幻觉) ",[139,154],{}," 4. ",[109,157,158],{},"流式响应"," 及其异常保护处理",[90,161,162,170],{},[106,163,164],{"align":95},[109,165,166,169],{},[112,167,168],{},"agent"," 核心逻辑",[106,171,133,172,175,176,178,179,182,183,148,185,188,189,155,191,194,195,197,198,201,202,204,205,145,208,210,211,214,215,217,218,221,222,224,225,228],{"align":95},[109,173,174],{},"动态工具箱"," (Prompt 实时注入) ",[139,177],{}," 2. ",[109,180,181],{},"单样本 (One-shot)"," 引导逻辑 ",[139,184],{},[109,186,187],{},"工具执行器 (Executor)"," 统一管理 ",[139,190],{},[109,192,193],{},"工厂模式 (Factory)"," 实现配置与逻辑深度解耦 ",[139,196],{}," 5. 支持运行时 ",[109,199,200],{},"动态注册/修改"," 工具 ",[139,203],{}," 6. 规范的 ",[109,206,207],{},"LLM 输出解析器",[139,209],{}," 7. ",[109,212,213],{},"提示词模板拆分"," (System + User 分离响应) ",[139,216],{}," 8. ",[109,219,220],{},"三重熔断"," 安全架构 (Prompt + Client + Core) ",[139,223],{}," 9. 极其清晰的 ",[109,226,227],{},"ReAct 状态机与记忆"," 链路",[79,230,232],{"id":231},"共同基因-similarities","🤝 共同基因 (Similarities)",[234,235,236,243,249,255],"ul",{},[36,237,238,239,242],{},"✅ ",[109,240,241],{},"核心范式",": 均遵循标准 ReAct 推理闭环逻辑",[36,244,238,245,248],{},[109,246,247],{},"容错能力",": 内置标准循环计数 (容错机制 i=5)",[36,250,238,251,254],{},[109,252,253],{},"输出净化",": 自动截断多余的冗余 Thought-Action 对",[36,256,238,257,260],{},[109,258,259],{},"记忆溯源",": 完整支持多轮历史对话上下文记忆",[28,262,264],{"id":263},"react的优势","ReAct的优势",[33,266,267,275,282,292],{},[36,268,269,270],{},"思考（易产生幻觉）+ 行动（易缺乏规划）=  ",[271,272,274],"span",{"style":273},"color:#d83931","相互影响",[36,276,277,278,281],{},"形成”Thought + Action + Observation“链条  -- ",[271,279,280],{"style":273},"Agent所有行为公开透明"," -- 高可解释性 -- 有助于 理解、信任、调试 Agent",[36,283,284,287,288,291],{},[271,285,286],{"style":273},"动态规划与纠错"," -- 没用一次性生成完整计划 而是 ",[271,289,290],{"style":273},"” 走一步，看一步 “"," 每一步的 Observation 都会影响下一步的 Thought 和 Action ，可以实现Agent自我调优。例如，在 WenJian 查询 ” 张雪峰怎么了？“ 时，它认为 Observation 的结果可能是谣言 于是再执行了相同的 Action 并细化了搜索参数。",[36,293,294,295,298],{},"Agent = LLM + Tools + History + Core  --  实现了",[271,296,297],{"style":273},"LLM（亚符号）与外部Tools（符号）的深度结合"," 有效避免了LLM幻觉（例如 计算 解析 搜索任务）",[28,300,302],{"id":301},"react的劣势","ReAct的劣势",[33,304,305,319,329,346],{},[36,306,307,310,311,314,315],{},[271,308,309],{"style":273},"过度依赖LLM ，LLM的逻辑推理能力直接影响 Thought 的有效/正确规划，LLM的指令遵循能力与格式化输出能力直接影响 Action 的有效性。","这就是为什么 WenJian 要在 core 中实现对各自可能错误的”驳回“。甚至",[271,312,313],{"style":273}," Agent 的效果会受到 LLM 训练时的数据集影响","，例如 WenJian 在搜索 ”张雪峰怎么了？“ 时，LLM 出现了 ”2026是未来时间，该消息是谣言“ 的误判。",[271,316,318],{"style":317},"color:#4f81bd","--  尝试不同的模型/参数",[36,320,321,324,325,328],{},[271,322,323],{"style":273},"执行效率低下","，每次 Thought 只规划一步（Action），每次得到 Observation 才进行下一次 Thought 。一个任务需要",[271,326,327],{"style":273},"多次执行串行的ReAct循环，需要多次调用 LLM ","，需要消耗大量的时间。",[36,330,331,334,335,338,339,342,343],{},[271,332,333],{"style":273},"提示词的脆弱性，整个机制建立在一个精选设计的提示词模板上，模板中任何一个微小的变化，设置是用词的差异，都会影响 LLM 的行为。","例如，在prompt中去掉对Observation的描述（\"你当前正处于一个 ",[109,336,337],{},"Thought -> Action -> Observation"," 的闭环决策链中\"） 可以大幅度降低幻觉。另外，",[271,340,341],{"style":273},"由于 Thought 中心化堆积在一个 LLM 中，导致在处理复杂的任务时提示词容易失效，LLM 出现越权行为。","例如 WenJian 在处理 ” 邵阳有哪些好玩的地方？“时本意是想先搜索邵阳的热门景点，再搜索各个景点的具体介绍与推荐，但是由于上下文的堆砌，导致 LLM 直接幻想出了 Observation 的内容，并自我迭代”Thought + Action + Observation“链条。",[271,344,345],{"style":317},"--  为promot添加少样本",[36,347,348,351,352],{},[271,349,350],{"style":273},"不适合需要规划的长期任务，步进式决策模式使得 Agent 缺乏一个全局的、长远的规划，容易造成绕远路/原地打转的循环当中。","例如 WenJian 在处理 ”张雪峰怎么了？“ 时，出现时间的误判后就执着于搜索 ” 张雪峰社交媒体账号头像的颜色 “ 在无关的搜索中陷入了死循环。",[271,353,354],{"style":317},"--  打印完整 ReAct 流程进行分析",[18,356,358,359],{"id":357},"源码地址github","源码地址：",[360,361,365],"a",{"href":362,"rel":363},"https://github.com/sibuchen/WenJian--ReActAgent",[364],"nofollow","Github",{"title":51,"searchDepth":367,"depth":367,"links":368},2,[369,370,371,372,377,378],{"id":30,"depth":367,"text":31},{"id":55,"depth":367,"text":56},{"id":62,"depth":367,"text":62},{"id":76,"depth":367,"text":77,"children":373},[374,376],{"id":81,"depth":375,"text":82},3,{"id":231,"depth":375,"text":232},{"id":263,"depth":367,"text":264},{"id":301,"depth":367,"text":302},"2026-03-25","WenJian (问剑) 是一个高度解耦、易于扩展的轻量级 AIAgent 框架。它基于经典的 ReAct (Reason + Action) 范式实现，允许大语言模型（LLM）在解决复杂问题时，通过“思考（Thought）- 行动（Action）- 观察（Observation）”的循环，自主调用外部工具获取信息并得出最终结论。","md",true,4,null,{},"/labs/wenjian",{"title":5,"description":380},"ARCHIVED","labs/WenJian",[391,392,6],"AIAgent","ReAct","ALLdwd0GY86jhyyPXbtjOtxgNokfK0gNnS3dIKjgmdo",1774960320917]