ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

3步让Kimi CLI成为你的业务AI代理:自定义工具开发实操

3步让Kimi CLI成为你的业务AI代理:自定义工具开发实操 3步让Kimi CLI成为你的业务AI代理自定义工具开发实操【免费下载链接】kimi-cliKimi Code CLI is your next CLI agent.项目地址: https://gitcode.com/GitHub_Trending/ki/kimi-cliKimi CLI是一款命令行AI代理内置Shell、文件读写、联网搜索等工具。当你要让AI调用内部接口或执行项目专属脚本时就得自己动手写自定义工具。这篇指南带你从一个Python函数开始把它注册进Agent配置再打包成插件分发给团队让AI代理真正干起你的业务工作。内置工具不够用时Kimi CLI自定义工具的两条路径AI代理默认带着一组固定工具但你的场景总有些缺口查内部数据库、调公司内部API、跑团队私有的构建脚本这些内置工具都覆盖不到。说白了扩展能力就两条路Python自定义工具在进程内写一个工具类注册进Agent的YAML配置。适合和代理逻辑强耦合、需要类型校验的功能完整示例在examples/custom-tools/。插件Beta一个独立目录加plugin.json工具可以是任意语言的脚本一条命令安装适合跨项目复用示例见examples/sample-plugin/。SkillSKILL.md是知识性指导AI读完后照规范行事而插件和Python工具是让AI动手做的可执行能力。想让AI多干活就用后两者。 路径选定先走依赖最轻的Python自定义工具。写出第一个Python工具自定义工具注册的最小配置先备好环境。示例目录自带一个可运行的uv项目克隆仓库后安装依赖git clone https://gitcode.com/GitHub_Trending/ki/kimi-cli cd kimi-cli/examples/custom-tools uv sync --reinstall示例的pyproject.toml把kimi-cli依赖指向了仓库根目录所以uv sync装的就是本地版本。工具类的三个必备字段工具的核心就是一个类。以示例里的ls.py为例它把列出目录内容变成了AI可调用的工具from kosong.tooling import CallableTool2, ToolOk, ToolError, ToolReturnValue from pydantic import BaseModel, Field class Params(BaseModel): directory: str Field(description要列出的目录, default.) class Ls(CallableTool2): name: str Ls description: str List files in a directory. params: type[Params] Params async def __call__(self, params: Params) - ToolReturnValue: import os try: return ToolOk(output\n.join(os.listdir(params.directory))) except Exception as e: return ToolError(output, messagestr(e), briefFailed to list files)三个字段缺一不可name是AI看到的工具名description是AI判断要不要调用它的依据写得清楚调用才准params用Pydantic声明参数类型和约束会自动转成给模型看的schema。在Agent配置文件中注册工具类写完只是躺在那里注册才真正生效。在myagent.yaml里用模块路径:类名指向它version: 1 agent: extend: default # 继承内置默认Agent tools: - kimi_cli.tools.shell:Shell - kimi_cli.tools.file:ReadFile # ...其余省略... - my_tools.ls:Ls # 你的自定义工具extend: default继承了内置Agent的系统提示词等配置tools列表就是这个Agent最终的工具集。跑一下验证uv run main.pymain.py会以print模式向AI提问What tools do you have?注册成功的话AI的回答里会出现Ls。你也可以用kimi --agent-file myagent.yaml进入交互模式直接让AI帮你列个目录看看。如果AI回答里没有Ls检查当前工作目录是否就在examples/custom-tools内、uv sync是否完成——my_tools.ls这个导入路径只在该uv项目里才能解析。工具没生效Kimi CLI自定义工具常见报错与排查清单跑通流程后你大概率还会遇到几个不声不响失效的场景挑几个高频的说。Q--agent-file报文件找不到它要的是文件路径而不是目录。另外system_prompt_path这类路径是相对于Agent文件所在目录解析的不是相对你启动kimi的位置。Quv sync直接失败示例要求Python3.13本地版本不够就装不出环境。用uv python list看一下装个匹配版本再同步。Q插件工具调用返回空两处最容易错command必须是字符串数组如[python3, scripts/greet.py]不能写成单个字符串脚本从stdin收JSON参数、结果写stdout把额外日志打到stdout会污染返回值。Q插件里的凭证过期了inject在插件安装时写入当前凭证切换提供商或重新授权后重启Kimi CLI会自动刷新不需要重装。⚠️ 最大的坑很多工具不工作其实是AI不知道有新工具。每次改完配置先用你有什么工具确认一遍能省掉一半排查时间。把自定义工具打包成插件一条命令分发给团队工具自己能跑是一回事交给同事是另一回事。插件就是一个自包含目录整个发出去就能用结构参考examples/sample-plugin/my-plugin/ ├── plugin.json # 插件声明必需 └── scripts/ # 工具脚本 └── greet.py就三层一个json声明一个脚本目录足够完整。plugin.json的最小配置{ name: my-plugin, version: 1.0.0, description: 我的自定义插件, tools: [ { name: greet, description: Generate a greeting message, command: [python3, scripts/greet.py], parameters: { type: object, properties: { name: { type: string, description: Name to greet } }, required: [name] } } ] }name只能用小写字母、数字和连字符parameters是标准JSON SchemaAI按它填参参数会原样传进你的脚本。插件脚本怎么收参数、返回值协议很简单参数从stdin进结果从stdout出Python几行就够#!/usr/bin/env python3 import json, sys params json.load(sys.stdin) # 参数从stdin进入 name params.get(name, Guest) print(json.dumps({content: fHello, {name}!})) # 结果写stdoutAI调用greet时插件运行时实际执行的就是这个脚本并替它喂入JSON参数。安装、验证与移除kimi plugin install /path/to/my-plugin # 从本地目录安装 kimi plugin list # 查看已安装插件 kimi plugin remove my-plugin # 移除也支持从ZIP文件或Git仓库直接安装插件会落在~/.kimi/plugins/下。同事拿到目录或压缩包后一条命令就能装上同一套工具。需要调用LLM接口的插件还可以用inject声明凭证注入位置细节见docs/zh/customization/plugins.md。工具跑通之后还有更多玩法在Agent文件里定义子Agent拆分任务或用MCP接入需要常驻运行的服务完整机制都在docs/zh/customization/。仓库的examples目录是最快的动手材料照着改比从头写省事得多。【免费下载链接】kimi-cliKimi Code CLI is your next CLI agent.项目地址: https://gitcode.com/GitHub_Trending/ki/kimi-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表