本仓库是对 https://github.com/Annyfee/agent-craft 的 TypeScript 复刻:
- 目标:深度梳理其 Agent 实现模式(从最小 LLM 调用、工具调用、ReAct、RAG、到 LangGraph 的白盒工作流/多智能体/MCP),并用 LangChain.js + LangGraph(@langchain/langgraph) 在 TS 中实现“机制等价”的范例。
- 原则:每个模式一个
src/*.ts文件,尽量做到“可读/可运行/可扩展”,并用大量中文注释解释与原版的映射关系。
npm install多数示例需要 LLM:
OPENAI_API_KEY:必需OPENAI_MODEL:可选,默认gpt-4o-miniOPENAI_BASE_URL:可选,用于对齐agent-craft中 “DeepSeek base_url” 这类兼容 OpenAI 协议的网关
示例:
export OPENAI_API_KEY=...
export OPENAI_MODEL=gpt-4o-mini说明:
agent-craft中并没有发现明确命名的Reflection/Plan-and-Execute范式实现。 其“规划-执行/反思修正”的能力更多通过:LangGraph 多节点工作流、Supervisor 多智能体调度、Human-in-the-Loop 审批、Graph-as-a-Tool 子图封装等组合实现。
src/01_minimal_llm.ts:最小 LLM 调用(对应m01_agent_introduction/agent-demo.py)src/02_conversation_loop.ts:手写 messages 的多轮对话循环(对应m02_llm_fundamentals/s02_conversational_agent.py)
src/03_function_calling_two_step.ts:先 tool_call → 执行工具 → 再总结(对应m03_function_calling_tools/s01_*.py/s02_*.py)
src/04_langchain_react_agent.ts:Tool-Calling Agent + AgentExecutor(对应m05_langchain_advanced/s02_general_agent.py)src/05_langchain_react_with_memory.ts:ReAct +RunnableWithMessageHistory会话记忆(对应m05_langchain_advanced/s04_memory_general_agent.py)
src/06_sql_agent.ts:用node:sqlite+ 工具调用复刻 SQL Agent 机制(对应m05_langchain_advanced/s03_sql_agent.py)
src/07_rag_tool_agent.ts:RAG chain 工具化 + ReAct + 记忆(对应m07_rag_advanced/s05_memory_rag_agent.py)
src/08_langgraph_conditional_router.ts:ReAct 白盒循环(agent→tools→agent,条件边控制)(对应m08_langgraph_basics/s03_conditional_router.py)src/09_langgraph_agent_with_memory.ts:MemorySaver+thread_id的可恢复对话线程(对应m08_langgraph_basics/s04_agent_with_memory.py)src/10_langgraph_human_approval.ts:interruptBefore=["tools"]的人工审批(对应m09_langgraph_advanced/s01_human_approval.py)src/11_langgraph_graph_as_tool.ts:子图实现重试/容错,再封装为 tool(对应m09_langgraph_advanced/s02_graph_as_a_tool.py)src/12_langgraph_multi_agent_supervisor.ts:Supervisor 调度多个专家(对应m09_langgraph_advanced/s03_multi_agent_orchestration.py)src/13_langgraph_ops_system.ts:综合样例(子图工具化 + 审批拦截)(对应m09_langgraph_advanced/s04_supervisor_agent_ops_system.py)
src/14_mcp_stdio_server.ts:MCP stdio server(对应m10_mcp_basics/s01_stdio_server.py)src/15_mcp_stdio_client.ts:spawn server 并调用 tool(概念等价m11_mcp_advanced)src/16_mcp_tools_to_langgraph.ts:MCP tools → LangChain tools → LangGraph ReAct(对应m11_mcp_advanced/mcp_main.py/s02_final_mcp_main.py)src/17_mcp_streamable_http_server.ts:MCP Streamable HTTP server(对应m10_mcp_basics/s02_streamable_http_server.py)
下面命令都在仓库根目录运行。
npm run typechecknpx tsx src/04_langchain_react_agent.ts
npm run 04npx tsx src/15_mcp_stdio_client.tsnpx tsx src/17_mcp_streamable_http_server.tssrc/_shared/env.ts:加载.env、并提供必需 env 校验src/_shared/model.ts:统一创建ChatOpenAI,支持ARK_BASE_URL对齐网关src/_shared/stdio.ts:最小 readline 封装,复刻agent-craft中大量input()交互