自己动手打造一个 Claude Code
摘要
16岁的巴西开发者 Kauan 发布了 Tiny Agents——一个 Python 框架,可以轻松构建 AI 智能体运行框架,支持多供应商模型、上下文窗口管理、异步工作线程、工具执行以及可自定义的终端 UI,仅用 103 行代码就实现了一个类似 Claude Code 的助手。
大家好!我是 Kauan,一名来自巴西的 16 岁开发者,我正在开发 Tiny Agents——一个专注于让 AI 智能体运行框架变得极其容易构建的 Python 框架。我为 Hack Club 的 Terra 项目开发它,在准备周内我已经实现了两个供应商的模型支持、上下文窗口管理、异步工作线程、带有命令功能的可自定义终端 UI 以及工具执行。为了展示用它能构建什么,我搭建了一个可工作的助手,支持模型选择、可配置工具、上下文压缩、自定义命令以及完整的交互式 TUI。有趣的地方是什么?整个示例应用只有 103 行 Python 代码。这个理念是让应用代码保持简洁,而由 Tiny Agents 处理底层框架的大量基础设施,让开发者可以专注于自定义行为,而不用从零开始拼接所有组件。Github 链接在评论中。我仍在积极开发中,所以非常希望收到构建 AI 智能体的人的反馈:- 构建智能体框架的过程中,你觉得哪个部分最繁琐?- 你更倾向于这样的极简框架,还是一个开箱即用的完整方案?- 在考虑将其用于真实项目之前,你希望看到什么?以下是示例代码:import os from dotenv import load_dotenv from prompt_toolkit.patch_stdout import patch_stdout from tinyAgents import * from tinyAgents.panel import initPanel, PanelContext, Command, AsyncWorker from tinyAgents.colors import * agent_worker = AsyncWorker() load_dotenv() apiKeyNvidia = os.getenv("API_KEY_NVIDIA") apiKeyOllama = os.getenv("API_KEY_OLLAMA") profiles = { "nvidia": { "models": ["openai/gpt-oss-20b", "nvidia/nemotron-3-super-120b-a12b", "z-ai/glm-5-3-flash"], "apiKey": apiKeyNvidia, }, "cloud-ollama": { "models": ["gpt-oss:20b"], "apiKey": apiKeyOllama, } } selected = ["nvidia", "nvidia/nemotron-3-super-120b-a12b"] toolsJsonPath = os.path.join("Tools", "tools.json") toolsCallJsonPath = os.path.join("Tools", "toolsCall.json") TOOLS = loadTools(toolsJsonPath) TOOLS_HANDLERS = loadToolHandlers(toolsCallJsonPath) prePrompt = "You are a helpful agent that provides detailed answers. Use tools only when the user asks." agent = AgentHarness( profiles=profiles, selected=selected, tools=TOOLS, tool_handlers=TOOLS_HANDLERS, pre_prompt=prePrompt, worker=agent_worker, ) def echo(args: list[str], ctx: PanelContext) -> str: return " ".join(args) def clear_command(args: list[str], ctx: PanelContext) -> None: ctx.clear() def exit_command(args: list[str], ctx: PanelContext) -> None: ctx.exit() COMMANDS = [ Command("/echo", "Repeat the arguments", echo), Command("/clear", "Clear the panel", clear_command), Command("/exit", "Exit the panel", exit_command), Command("/compact", "Compact the context window", agent.compact_context), ] PANEL_CONFS = { "NAME_TEXT": f"{BOLD + BLUE}KML CODE{RESET}", "SUBNAME_TEXT": f"{ITALIC}The Tiny Agents Ultimate Framework{RESET}", "INPUT_BOX_UPPER_TEXT": f"{DIM}Try typing something{RESET}", "THINKING_TEXT": "Thinking...", "MODEL_NAME": agent.model, "MODEL_PROVIDER": agent.provider, "MODEL_OPTION": agent.model_option, "CONTEXT_WINDOW_SIZE": contextWindowSize, "CONTEXT_WINDOW_MAX": 10000, "THEME": "default", "MESSAGE_SPACING": 1, "STYLE": { "title": BOLD + BLUE, "user": BG_BLUE + WHITE, "model": WHITE, "error": RED, "separator": DIM + BLACK, "hint": DIM, "input-field": BG_BLUE + WHITE, "completion-menu": WHITE, "completion-menu.completion": WHITE, "completion-menu.completion.current": BG_BLUE + BOLD + BLUE, "scrollbar": BG_BLACK, "scrollbar.button": BG_BLACK + WHITE, }, "COMMANDS": COMMANDS, "COMMANDS_LIST": [command.name for command in COMMANDS], "MODEL_HANDLER": agent.model_handler, "MODEL_OPTIONS": agent.model_options(), "MODEL_OPTION_LABELS": agent.model_option_labels(), "MODEL_SELECT_HANDLER": agent.select_model, } panel = initPanel(PANEL_CONFS) with patch_stdout(): panel.run()
相似文章
我从零重建了一个Claude Code风格的编程代理——整个代理循环只有6行代码。20章,约5000行代码,无框架,也支持本地模型
一位开发者分享了一个20章的教程,从头重建了一个Claude Code风格的编程代理,展示了整个代理循环(约6行代码),并支持本地模型和多种LLM API。
用9行Python实现Claude Code
一位开发者分享了一个类似Claude Code或Codex的最小编码代理的9行Python实现,仅使用标准库,兼容任何OpenAI Responses API,代码已发布在GitHub上。
@hwchase17: "用 Deep Agents 构建你自己的 Claude Code" 社区的一篇好文章,展示了如何构建一个类似 Claude Code 的代理……
一篇解释如何使用 LangChain 的 Deep Agents 库构建类似 Claude Code 的编码代理的文章,涵盖了架构和实现。
我重建了Claude Code风格的终端工作流,打造了一个可定制的多提供商编码代理
一位开发者发布了一个可定制的多提供商编码代理,它复刻了Claude Code的终端工作流,允许用户集成多种AI模型。
@DanKornas: 想理解Claude Code?研究框架,而不仅仅是提示词。claude-code-from-scratch是一个Python学习…
一个Python学习仓库,通过23个渐进式会话逆向工程Claude Code风格的智能体架构,涵盖规划、子智能体、上下文管理等。