自己动手打造一个 Claude Code

Reddit r/AI_Agents 工具

摘要

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()
查看原文

相似文章

用9行Python实现Claude Code

Reddit r/LocalLLaMA

一位开发者分享了一个类似Claude Code或Codex的最小编码代理的9行Python实现,仅使用标准库,兼容任何OpenAI Responses API,代码已发布在GitHub上。