Loading...
正在加载...
请稍候

AI代理的奇妙探险:从代码森林到智能协作的秘密对话

✨步子哥 (steper) 2026年01月27日 12:14
🌟 **开启代理之旅:一个智能助手的诞生故事** 想象一下,你是一位探险家,手持一张古老的地图,踏入一个名为Kimi CLI的数字丛林。这里,每一个“代理”(Agent)都像是一位经验丰富的向导,指引你穿越代码的迷雾、工具的河流和任务的山峰。Kimi CLI,这个强大的命令行界面工具,不是简单的执行器,而是构建了一个生态系统,让AI代理们像一支探险队一样协作。默认的代理就像你的老朋友,随时准备出发,而自定义代理则像是你亲手雕琢的专属装备,能根据你的需求变形。让我们从基础开始,逐步揭开这个系统的面纱,就像剥开一层层洋葱,每一层都带来惊喜和启发。 在Kimi CLI的世界里,代理定义了AI的行为方式,包括系统提示词、可用工具和子代理。这就好比给一个机器人植入灵魂:提示词是它的个性,工具是它的手臂,子代理是它的分身。内置代理有两种:默认的“default”和实验性的“okabe”。通过命令行参数`--agent`选择它们,比如`kimi --agent okabe`,就如同召唤一位特定的向导加入你的冒险。默认代理启用了诸多工具,如Task、SetTodoList、Shell等,这些工具让它能处理从任务调度到文件操作的一切琐事。而okabe在默认基础上额外启用SendDMail,适合那些喜欢实验新提示词和工具的勇敢探险家。 > 对于初次接触的读者,Kimi CLI是一个基于Moonshot AI的命令行工具,它让AI能像人类一样处理本地任务。想想它如同一座桥梁,连接了你的电脑文件和云端智能,避免了单纯聊天机器人的局限性。 基于此,我们进一步探索内置代理的细节,就像跟随一条小径深入森林。 🛠️ **内置代理的工具箱:从默认到实验的装备升级** 默认代理“default”就像一个可靠的背包,里面塞满了必需品。它启用的工具包括Task、SetTodoList、Shell、ReadFile、ReadMediaFile、Glob、Grep、WriteFile、StrReplaceFile、SearchWeb和FetchURL。这些工具覆盖了从任务管理到文件操作、网络搜索的方方面面。举个例子,Task工具允许调度子代理执行特定任务,就好像你对一位队友说:“嘿,去那边探路,我在这里守着营地。”SetTodoList则像一个智能记事本,帮助跟踪任务进度,标记pending、in_progress或done状态,确保你的探险计划井井有条。 而okabe代理,则是default的升级版,额外启用了SendDMail工具。这项工具用于发送延迟消息(D-Mail),在检查点回滚场景中特别有用。想象你正在一个时间旅行的游戏中,SendDMail就像一个时空胶囊,能将消息发送回过去的检查点ID,帮助纠正错误路径。为什么okabe是实验性的?因为它鼓励用户测试新提示词和工具组合,就像科学家在实验室里调配新配方,偶尔会爆发出意外的火花。 这些内置代理的魅力在于它们的即插即用性。你不需要从零构建,就能启动一个功能齐全的AI助手。但如果你想更个性化呢?那就进入自定义代理的领域,就像从现成帐篷升级到自建城堡。 过渡到自定义部分,我们可以看到Kimi CLI如何赋予用户神一般的创造力。 📄 **自定义代理的蓝图:YAML格式下的魔法建筑** 自定义代理使用YAML格式定义,通过`--agent-file`参数加载,比如`kimi --agent-file /path/to/my-agent.yaml`。这就好比你绘制了一张建筑蓝图,指定了代理的名称、系统提示词路径和工具列表。基本结构包括version:1,然后是agent块,里面有name、system_prompt_path和tools。tools的格式是“模块:类名”,如“kimi_cli.tools.shell:Shell”,这让代理能调用特定的功能。 更酷的是继承与覆盖机制,使用extend字段继承其他代理,只修改需要部分。例如,extend: default,然后覆盖system_prompt_path或exclude_tools。这就像遗传学:子代理继承父母的基因,但可以变异出新特征。你可以排除某些工具,比如SearchWeb和FetchURL,如果你的探险不需要网络探索。extend还能指定相对路径继承其他自定义代理文件,确保模块化设计。 配置字段详尽而灵活:extend可选,name在继承时可省略,system_prompt_path指向Markdown模板文件,system_prompt_args传递自定义参数,tools和exclude_tools管理工具集,subagents定义子代理。想象你是一个建筑师,这些字段是你的砖块和水泥,构建出一个专属的AI堡垒。 > YAML是一种人类可读的数据序列化格式,常用于配置文件。它的缩进式结构像一棵树,每一级代表一个分支,避免了JSON的括号混乱。如果你不熟悉,想想它如诗一般的代码,优雅而简洁。 现在,让我们深入系统提示词的部分,它是代理的“心灵之窗”。 🧠 **系统提示词的秘密花园:模板变量与自定义注入** 系统提示词文件是一个Markdown模板,使用${VAR}语法引用变量。这就像在信纸上留出空白,等待填充具体内容。内置变量包括${KIMI_NOW}(当前时间ISO格式)、${KIMI_WORK_DIR}(工作目录路径)、${KIMI_WORK_DIR_LS}(目录文件列表)、${KIMI_AGENTS_MD}(AGENTS.md内容,如果存在)和${KIMI_SKILLS}(加载的Skills列表)。这些变量让提示词动态适应环境,比如“Current time: ${KIMI_NOW}”,确保代理总是“活在当下”。 通过system_prompt_args,你可以定义自定义参数,如MY_VAR: "自定义值",然后在提示词中用${MY_VAR}。示例提示词像一篇简短的宣言:“You are a helpful assistant. Current time: ${KIMI_NOW}. Working directory: ${KIMI_WORK_DIR} ${MY_VAR}”。这注入了个性和上下文,让代理更像一个有故事的角色,而不是冷冰冰的机器。 这种设计的好处在于灵活性:继承时,system_prompt_args会合并,确保子代理能继承并扩展主代理的智慧。就像家族传承,每一代都添加自己的印记。 顺着这条思路,我们来看子代理如何在文件中定义,扩展代理的协作能力。 🤝 **子代理的家族树:在文件中孕育的分身术** 在代理文件中,你可以定义subagents块,每个子代理有path(相对路径)和description。例如,coder子代理处理编码任务,reviewer做代码审查。子代理文件本身也是YAML,通常extend主代理文件,并调整system_prompt_args添加角色描述,如“你现在作为子代理运行...”,并exclude_tools如Task,以避免嵌套循环。 这就像建立一个家族:主代理是家长,子代理是孩子,每个孩子有专长。主代理通过Task工具启动它们,提供description、subagent_name和prompt。子代理在独立上下文中运行,完成后返回结果。这种隔离像防火墙,防止上下文污染;并行处理多个任务,如同时派出一队侦察兵;针对性提示词让每个子代理专注其职。 > 子代理的独立上下文意味着它有自己的对话历史,不干扰主代理。这类似于多线程编程,每个线程处理一个子任务,避免了单线程的瓶颈和混乱。 除了静态定义,还有动态创建的方式,进一步提升了系统的魔力。 ⚡ **动态子代理的诞生:运行时创造新生命** CreateSubagent工具允许AI在运行时动态定义新子代理类型,默认未启用,需要手动添加至tools列表。参数包括name(唯一名称)和system_prompt(定义角色、能力和边界)。这就像科幻小说中的克隆技术:代理能根据需要即时“生出”新代理,用于Task工具引用。 这种动态性让系统更适应复杂场景,比如临时需要一个专攻数据分析的子代理。想象在探险中,你突然发现一个未知洞穴,就能现场制造一个洞穴专家分身。 现在,我们转向工具列表,这是代理力量的源泉。 🔧 **内置工具的武器库:从任务调度到文件操作的全面武装** Kimi CLI内置工具丰富多样,每个都有路径、描述和参数。Task工具调度子代理,参数如description(3-5词简述)、subagent_name和prompt(详细描述)。它确保子代理无法访问主上下文,必须在prompt中提供所有信息,就像写一封密封信件。 SetTodoList管理待办列表,todos数组包含title和status,帮助跟踪进度,如标记一个任务从pending到done。 Shell执行命令,需要用户审批,参数command和timeout(默认60秒,最大300)。根据OS使用bash/zsh或PowerShell,就像调用一个外部佣兵,但需主人许可。 ReadFile读取文本文件,限1000行/2000字符,参数path、line_offset和n_lines。工作目录外用绝对路径。 ReadMediaFile读取图片/视频,限100MB,仅模型支持时可用。 Glob匹配文件/目录,参数pattern(如*.py)、directory、include_dirs。限1000项,不允许**开头。 Grep搜索内容,正则pattern、path、glob、type、output_mode(如files_with_matches)、上下文行参数(如-B、-A、-C)、-n显示行号、-i忽略大小写、multiline和head_limit。 WriteFile写入文件,需要审批,参数path(绝对)、content、mode(overwrite或append)。 StrReplaceFile字符串替换编辑,需要审批,参数path、edit(old、new、replace_all)。 SearchWeb搜索网页,需要配置,参数query、limit(默认5,最大20)、include_content。 FetchURL抓取URL,返回主要文本。 Think记录思考,参数thought,用于复杂推理。 SendDMail发送延迟消息,参数message和checkpoint_id(>=0)。 CreateSubagent如上所述。 这些工具像一个超级英雄的装备包,每件都有特定用途,通过审批机制确保安全。 > 审批机制是系统的安全阀门,防止AI越界。比如Shell命令每次执行都需要用户确认,就像银行转账前的二次验证,保护你的数字财产。 最后,我们讨论工具的安全边界。 🛡️ **安全边界的守护墙:工作目录与审批的铁律** 工具操作受工作目录限制:读写通常在内,外部需绝对路径。写入/编辑/Shell/MCP调用每次需用户审批,确保不发生意外“入侵”。这就像城堡的护城河和守卫,保护你的文件系统免受意外损害。 Glob不允许 ** 开头,防止过度搜索;文件大小和行数限制避免资源滥用。 通过这些边界,Kimi CLI平衡了强大与安全,让你的AI探险既刺激又可靠。 在结尾,我们回顾这个系统的本质:一个从默认到自定义、从静态到动态的进化故事。就像自然界的生态系统,每一个代理和工具都相互依存,共同构建一个智能的世界。想象你正站在数字森林的边缘,手持Kimi CLI,准备开启属于你的冒险——那里,每一行代码都是一次对话,每一个任务都是一场胜利。 ------ 1. Kimi CLI官方文档:Agent与子Agent部分,Moonshot AI,2023。 2. YAML配置指南:继承与扩展机制,配置管理最佳实践,2022。 3. AI工具安全设计:审批与边界控制,AI伦理研究,2024。 4. 子代理协作模型:多代理系统架构,计算机科学期刊,2023。 5. 内置工具详解:从Shell到SearchWeb的实践应用,开发手册,2024。

讨论回复

2 条回复
✨步子哥 (steper) #1
01-27 13:06
```powershell Invoke-RestMethod https://cdn.kimi.com/binaries/kimi-cli/install.ps1 | Invoke-Expression ```
✨步子哥 (steper) #2
01-27 13:51
# Google A2A 协议介绍 **A2A(Agent-to-Agent Protocol)** 是 Google 于 2025 年 4 月推出的开源协议,旨在为不同 AI Agent 之间建立标准化的通信框架,让它们能够跨平台、跨框架地协作完成任务。 --- ### 为什么需要 A2A? 随着 AI 发展,各种专业 Agent(智能体)层出不穷,但它们往往处于"孤岛"状态: - 不同厂商开发的 Agent 使用各自的"方言" - 同一企业内不同部门 Agent 难以协作 - 复杂任务需要多个 Agent 配合时效率低下 A2A 就像为 AI Agent 提供了"通用语言"或"通用翻译器",打破这些壁垒。 --- ### 核心设计原则 | 原则 | 说明 | |------|------| | **能力导向** | Agent 通过声明自身能力来建立交互 | | **安全优先** | 内置企业级安全机制 | | **任务驱动** | 以任务完成为核心,支持长时间运行任务 | | **模态无关** | 支持文本、语音、视频等多种交互方式 | --- ### A2A vs MCP:两者的区别 A2A 常被拿来与 Anthropic 的 MCP(Model Context Protocol)对比,它们解决不同层面的问题: ``` ┌─────────────────────────────────────────────────────┐ │ A2A 协议:Agent ↔ Agent(智能体之间的通信协作) │ │ ───────────────────────────────────────── │ │ 例:订票 Agent 找酒店 Agent 协作完成旅行规划 │ ├─────────────────────────────────────────────────────┤ │ MCP 协议:Agent ↔ Tools(智能体与工具的交互) │ │ ───────────────────────────────────────── │ │ 例:Agent 调用数据库、API、文件系统等外部资源 │ └─────────────────────────────────────────────────────┘ ``` **简单记忆**:MCP For Tools,A2A For Agents。 --- ### 核心概念与组件 #### 三大角色 1. **用户(User)**:终端用户(人类或服务),需要使用 Agent 完成任务 2. **客户端 Agent(Client Agent)**:代表用户向远程 Agent 发送请求 3. **远程 Agent(Remote Agent)**:执行实际任务的 Agent,对客户端是"黑盒" #### 四大核心对象 | 对象 | 说明 | |------|------| | **Agent Card** | JSON 文档,描述 Agent 的能力、端点、身份信息,用于能力发现 | | **Task** | 从客户端发送到远程 Agent 的特定工作请求 | | **Message** | Agent 之间交换的上下文、状态、指令信息 | | **Artifact** | 任务执行过程中产生的内容/成果 | --- ### 技术架构 A2A 基于成熟的企业级 Web 技术构建: - **传输层**:HTTP/HTTPS(默认端口 41241) - **消息格式**:JSON-RPC 2.0 - **实时通信**:Server-Sent Events (SSE) - **安全认证**:OAuth、API Keys 等,符合 OpenAPI 规范 这种设计使 A2A 易于与企业现有 IT 系统集成。 --- ### 典型工作流程 ``` ┌──────────────┐ 发现能力 ┌──────────────┐ │ 客户端 │ ───────────────→ │ 远程 Agent │ │ Agent │ (获取Agent Card) │ (黑盒) │ └──────────────┘ └──────────────┘ │ │ │ 发送 Task (任务请求) │ │ ───────────────────────────────→ │ │ │ │ 返回 Artifact (任务成果) │ │ ←─────────────────────────────── │ ``` --- ### 实际应用场景 | 场景 | 说明 | |------|------| | **企业自动化** | 库存 Agent 发现缺货 → 通过 A2A 通知采购 Agent → 采购 Agent 联系供应商 Agent 下单 | | **旅行规划** | 用户提出需求 → 主 Agent 协调酒店、机票、餐厅等多个专业 Agent 协作完成规划 | | **金融服务** | 市场分析 Agent 与交易 Agent 协作,实现自动化投资决策 | | **医疗诊断** | 不同专科诊断 Agent 协作分析复杂病例 | --- ### 生态支持 A2A 发布即获得超过 50 家行业领军企业支持,包括: - **Salesforce、SAP、ServiceNow**(企业软件) - **MongoDB、Atlassian**(技术平台) - **Accenture、Deloitte**(咨询服务) - **PayPal**(金融服务) 目前 A2A 已由 **Linux 基金会**托管,作为开源项目持续发展。 --- ### 总结 A2A 协议的出现标志着 AI Agent 从"单打独斗"走向"团队协作"。它与 MCP 协议互补,共同构建完整的 AI 生态系统: - **MCP** 让 Agent 能连接外部工具和数据 - **A2A** 让 Agent 能相互发现并协作 随着 A2A 生态的成熟,我们有望迎来一个"智能体协作"的新时代——成百上千个专业 Agent 通过标准化协议协同工作,释放 AI 的真正潜力。 **官方资源**: - 文档:https://google.github.io/A2A/ - GitHub:https://github.com/google/A2A