穿越时空的密语:91小黄书的另类文学之旅

核心内容摘要

兄妹蕉谈:从青涩懵懂到心有灵犀,一段成长的温暖絮语_1
揭秘“52g我爱搞g52”最新版本更新:全新体验,尽在这一刻!

星空璀璨,天美启航:一场跨越时空的文化盛宴即将拉开帷幕

❝该系列文章基于github.com/shareAI-lab/learn-claude-code写就该仓库以大道至简的风格剖析了Claude Code的核心原理值得大家学习。

由于该仓库是基于Python语言为方便.NET开发者学习我已经将代码基于.NET 10的dotnet file重写源码已上传至github源码地址见文末。

v0: Bash 就是一切 - 最简 Agent 的哲学❝本文是 Learn Claude Code (C# 版) 系列的

对应代码文件v0_bash_agent.cs。

核心问题构建了各种复杂的 Agent 系统后我们追问一个根本问题Agent 的本质是什么答案令人惊讶地简单一个工具 一个循环 完整的 Agent 能力。

为什么 Bash 就够了Unix 哲学说一切皆文件一切皆可管道。

Bash 是通往这个世界的大门你需要Bash 命令读取文件cat,head,tail,grep写入文件echo ... file,cat EOF file搜索find,grep,rg,ls执行python,npm,dotnet, 任何命令子代理dotnet run v0_bash_agent.cs task最后一行是关键洞察通过 bash 调用自身实现子代理代码解析唯一的工具定义var bashTool new Tool { Name bash, Description 执行 shell 命令。

常用模式: - 读取: cat/head/tail, grep/find/rg/ls, wc -l - 写入: echo content file, sed -i s/old/new/g file - 子代理: dotnet run v0_bash_agent.cs 任务描述 , InputSchema new InputSchema { Type object, Properties new Dictionarystring, JsonElement { [command] JsonDocument.Parse({type: string}).RootElement }, Required [command] } };工具定义就是告诉模型你可以做什么。

注意Description中包含了使用模式——这是在教模型如何使用工具。

核心 Agent 循环async Taskstring ChatAsync(string prompt, ListMessage? history null) { history ?? []; history.Add(prompt.AsUserMessage()); while (true) { //

调用模型 var response await client.CreateMessageAsync(modelId, history, tools); //

添加助手消息到历史 history.Add(response.AsRequestMessage()); //

如果没有工具调用完成 if (response.StopReason ! StopReason.ToolUse) return ExtractText(response); //

执行工具并添加结果 var results await ExecuteToolsAsync(response); history.Add(results); } }这就是所有 Agent 的核心模式调用模型- 带上历史消息和可用工具检查是否需要工具-StopReason.ToolUse表示模型想调用工具执行工具- 运行模型请求的命令继续循环- 把结果反馈给模型直到它认为任务完成子代理机制v0 最精妙的设计是通过 bash 实现子代理主 Agent |-- bash: dotnet run v0_bash_agent.cs 分析架构 |-- 子 Agent (隔离进程干净历史) |-- bash: find . -name *.cs |-- bash: cat src/Program.cs |-- 通过 stdout 返回摘要进程隔离 上下文隔离子进程有自己的消息历史不会污染父 Agent 的上下文。

这是一个简单但强大的设计。

系统提示的艺术var systemPrompt $ 你是一个位于 {workDir} 的 CLI agent。

使用 bash 命令解决问题。

规则: - 行动优先简短解释。

- 读取文件: cat, grep, find, rg, ls, head, tail - 写入文件: echo ... file, sed -i, 或 cat EOF file - 子代理: 对于复杂子任务生成子代理: dotnet run v0_bash_agent.cs 探索 src/ 并

总结架构 何时使用子代理: - 任务需要读取很多文件隔离探索过程 - 任务独立且自包含 - 你想避免用中间细节污染当前对话 ;系统提示做了几件事定义身份- 你是一个 CLI agent提供上下文- 当前工作目录教授模式- 怎么读文件、写文件引导策略- 何时使用子代理关键洞察

极简主义的力量v0 证明了一个反直觉的观点一个工具可以做一切。

不需要专门的read_file、write_file工具。

cat、echo就够了。

但这种极简主义有代价——模型需要更多 tokens 来思考怎么用 bash 完成任务。

模型即决策者代码只做两件事提供工具bash运行循环所有决策都由模型做调用什么命令、以什么顺序、何时停止。

递归的优雅子代理不是新概念只是递归。

v0_bash_agent.cs调用自己就像函数调用自己一样自然。

运行示例# 交互式模式 dotnet run v0_bash_agent.cs 列出当前目录的 cs 文件 $ ls *.cs v0_bash_agent.cs v1_basic_agent.cs ... 分析 v0_bash_agent.cs 的结构 $ head -50 v0_bash_agent.cs ...# 子代理模式 dotnet run v0_bash_agent.cs 探索 src/ 并

总结架构从 v0 到 v1v0 证明了最简可行性但在实际使用中有局限效率- 用 bash 读文件比专用工具慢需要更多 tokens安全- 没有路径检查可能逃逸工作目录可读性-echo ... file不如write_file直观v1 将引入专用工具read_file、write_file、edit_file在保持核心循环不变的前提下优化这些方面。

总结v0 的哲学❝Bash 就是一切。

一个工具 一个循环 完整的 Agent。

这不是最实用的设计但它揭示了 Agent 的本质:模型是 80%代码是 20%。

四川少女b站2025创作者现状视频-四川少女b站2025创作者现状视频应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123