从智能体视角出发:构建Claude Code工具空间的实践与思考

   发布时间:2026-04-06 12:31 作者:杨凌霄

在智能体工具开发领域,构建动作空间始终是一项极具挑战性的任务。以Claude为例,它借助工具调用来执行操作,在Claude API中,开发者有多种方式利用原语构建工具,像bash、skills以及近期新增的代码执行功能等。这给开发者带来了诸多思考:究竟该如何为智能体设计工具?是仅依赖代码执行或bash这类单一工具,还是为智能体可能遇到的每个用例都配备一个工具?面对50个工具的情况又该如何处理?

为了深入理解模型的思维,不妨将自己想象成面对一道难题的解题者。比如面对一道复杂的数学题,选择何种工具解题取决于自身技术水平。纸张是最基础的选择,但手动计算会受到诸多限制;计算器能提升效率,但需要掌握高级操作;计算机功能强大且速度快,可前提是要懂得如何编写和执行代码。这一思路为智能体工具设计提供了有益框架,即要根据智能体的能力提供合适的工具。不过,确定智能体的能力并非易事,需要开发者集中精力,仔细研读智能体的输出,不断进行实验,尝试从智能体的角度看待问题。

在构建Claude Code的过程中,开发者积累了不少经验。其中,改进AskUserQuestion工具就是重要一环。在构建该工具时,目标是提升Claude的提问能力,也就是通常所说的启发能力。虽然Claude本身能够直接提问,但回答这些问题往往会耗费过多时间。为了降低这种交流摩擦,增加用户与Claude之间的交流带宽,开发者进行了多次尝试。

最初,开发者尝试向ExitPlanTool添加参数,在计划旁边罗列一系列问题。虽然这是最容易实现的方案,但却让Claude感到困惑。因为同时要求制定计划和提出相关问题,一旦用户回答与计划内容冲突,Claude就难以处理,甚至可能需要两次调用ExitPlanTool。于是,开发者转而尝试修改Claude的输出指令,采用稍作修改的markdown格式提问,例如要求输出带有括号中替代选项的要点问题列表,然后解析并格式化显示在用户界面上。尽管Claude能够较好地输出这种格式,但并不稳定,有时会附加额外句子、省略选项或采用完全不同的格式。最终,开发者决定创建一个AskUserQuestion工具,Claude可在任何时候调用,尤其在计划模式期间会被特别提示。当工具触发时,会显示一个模态框展示问题,并阻止智能体循环,直到用户回答。这个工具不仅能提示Claude进行结构化输出,确保为用户提供多个选项,还为用户提供了组合使用的方法,比如可在代理式SDK中调用或在技能中引用。而且,Claude似乎很乐意调用这个工具,输出效果良好。不过,这并非Claude Code中启发能力的最终形式,因为适用于一个模型的方法未必适用于其他模型。

随着模型的发展,工具也需要不断更新。以任务和待办事项工具为例,Claude Code首次发布时,为了让模型保持正常运行,开发者为Claude提供了TodoWrite工具,用于编写或更新待办事项并展示给用户。但即便如此,Claude仍时常忘记职责。为此,开发者每5个回合插入系统提醒,提醒Claude其目标。然而,随着模型改进,它们不再需要频繁提醒待办事项列表,反而觉得其存在是限制。例如,Opus 4.5在使用子智能体方面表现出色,但子智能体如何在共享待办事项列表中进行协调成为新问题。鉴于此,开发者用任务工具取代了TodoWrite工具。待办事项主要用于保持模型正常运行,而任务工具则侧重于帮助智能体相互沟通。任务可以包含依赖关系,在子智能体之间共享更新,模型还能对其进行更改和删除。由此可见,随着模型功能增强,曾经需要的工具可能会成为限制,开发者需要不断回顾对工具需求的假设。这也凸显了坚持支持功能配置文件相似的模型的重要性。

在智能体工具中,搜索工具对Claude至关重要,它能帮助Claude构建自身上下文。Claude Code首次推出时,采用RAG向量数据库查找Claude的上下文。虽然RAG功能强大且速度快,但需要索引和设置,在不同环境中可能不稳定。更重要的是,Claude被动接受上下文,而非主动寻找。后来,开发者为Claude提供了Grep工具,使其能够搜索代码库并自行构建上下文。随着Claude越来越聪明,在合适的工具辅助下,它构建环境的能力不断提升。引入智能体技能后,开发者正式定义了渐进式披露概念,允许智能体通过探索逐步发现相关上下文。Claude可以读取技能文件,这些文件又能引用其他模型可递归读取的文件。技能的一个常见用途是为Claude添加更多搜索功能,如告知其如何使用API或查询数据库。在一年时间里,Claude从无法自主构建上下文,发展到能够在多层文件中进行嵌套搜索,精准找到所需上下文。如今,渐进式披露成为在不添加工具的情况下为Claude添加新功能的常用技术。

以Claude Code指南智能体为例,Claude Code目前拥有约20个工具,开发者不断思考是否需要保留所有工具,因为添加新工具会增加模型的选择难度。例如,开发者发现Claude对Claude Code的使用方法了解不足,若将所有信息放在系统提示中,虽能解决问题,但考虑到用户很少询问相关信息,这会增加上下文冗余,干扰Claude Code编写代码的主要工作。于是,开发者尝试渐进式披露方法,先给Claude一个文档链接,让其下载搜索信息。虽然有效,但Claude会将大量结果放入上下文以寻找正确答案,而实际只需答案本身。为此,开发者构建了Claude Code指南子智能体,当用户询问Claude自身相关问题时,Claude会被提示调用该子智能体。子智能体有关于如何搜索文档以及返回内容的详细说明。尽管这一方案并非完美,Claude有时仍会感到困惑,但在回答如何设置自身等问题时,表现比以前好很多。通过这种方式,开发者在不添加工具的情况下,丰富了Claude的动作空间。

为模型设计工具并非遵循严格规则的科学,更像是一门艺术,它取决于所使用的模型、智能体的目标以及所处环境。开发者需要不断进行实验,仔细研读成果,勇于尝试新事物,学会从智能体的角度看待问题。

 
 
更多>同类内容
全站最新
热门内容
 
智快科技微信账号
微信群

微信扫一扫
加微信拉群
电动汽车群
科技数码群