Kimi CLI 自定义命令实战

发布时间:2026/9/15 22:13:46

Kimi CLI 自定义命令实战 Kimi CLI 自定义命令实战【免费下载链接】kimi-cliKimi Code CLI is your next CLI agent.项目地址: https://gitcode.com/GitHub_Trending/ki/kimi-cli重复劳动是 CLI 里最常见的消耗。以扫一遍仓库统计各目录 Python 代码行数为例手动要拼好find加wc还得自己汇总结果。Kimi CLI 自定义命令的价值正在于此把这类重复操作写成一个可被模型直接调用的工具之后一句话就能触发。读完这篇你会拿到一个能跑的最小命令骨架、输入输出与报错的写法以及注册和联动的完整路径。示例在examples/custom-tools先把它跑起来git clone https://gitcode.com/GitHub_Trending/ki/kimi-cli cd kimi-cli/examples/custom-tools uv sync --reinstallpyproject.toml只声明了kimi-cli和kosong两个依赖并用tool.uv.sources把kimi-cli指向仓库根目录的本地源码所以必须在仓库内同步。一个自定义命令由三层组成工具层只有一个约定继承kosong.tooling.CallableTool2它是个泛型抽象类你只需填三个空位——name模型调用时用的命令名、description告诉模型什么时候该用它、params入参的 Pydantic 模型。下面这个统计指定目录下 Python 文件总行数的命令就是全部骨架from kosong.tooling import CallableTool2, ToolError, ToolOk, ToolReturnValue from pydantic import BaseModel, Field class Params(BaseModel): root: str Field(description要统计的目录路径, default.) class CountPyLines(CallableTool2): name: str CountPyLines description: str Count total lines across all .py files under a directory. params: type[Params] Params async def __call__(self, params: Params) - ToolReturnValue: ...三层各管一件事类是命令本体Params定义它吃什么__call__定义它怎么干活。官方示例里的Ls命令也是同一套结构见 custom-tools 示例适合对照着改。输入与输出怎么写入参用 Pydantic 模型声明框架负责把模型产出的 JSON 反序列化成对象。两个细节值得留意Field(description...)里写的文字就是模型看到的参数说明等于契约的一部分别写含糊。default让某个参数可以省略模型在没提及时会直接用默认值。输出不需要再声明一个输出模型。__call__的返回注解固定为ToolReturnValue实际只取两种值ToolOk(output...)表示成功并把output文本回给模型ToolError表示失败。完整实现async def __call__(self, params: Params) - ToolReturnValue: import pathlib root pathlib.Path(params.root) if not root.is_dir(): return ToolError( output, messagef{root} is not a directory, brieftarget missing, ) total 0 for py_file in sorted(root.rglob(*.py)): with open(py_file, encodingutf-8) as fh: total sum(1 for _ in fh) return ToolOk(outputf{total} lines in {len(list(root.rglob(*.py)))} .py files)注意成功路径返回ToolOk失败路径返回ToolError二者互斥这是模型区分结果和报错的唯一依据。框架还有一道保险SimpleToolset在工具入册时会检查返回注解声明不对会直接抛TypeError不用等运行期才发现写错了。把命令注册进 agent写完类只是半成品模型必须认识它才算数。注册发生在 agent spec 文件里myagent.yaml 的写法是version: 1 agent: extend: default tools: - kimi_cli.tools.file:ReadFile - kimi_cli.tools.shell:Shell - my_tools.count_py:CountPyLines三个要点。extend: default表示以默认 agent 为基底tools列表是整体替换而不是追加所以你想保留的内置工具都要列出来。每一项都是模块路径:类名的字符串冒号右边必须和类名完全一致。你的命令所在包要能被导入示例工程用uv在当前目录跑天然满足这一点。入口脚本 展示了一次性调用的完整链路main.py的核心部分session await Session.create(KaosPath.cwd()) instance await KimiCLI.create(session, agent_filemyagent) await instance.run_print( input_formattext, output_formattext, commandWhat tools do you have?, )先问你有哪些工具确认新命令出现在列表里再让它实际跑一次比如统计 examples 目录的 Python 行数两步就能验证注册是否生效。踩坑提示与下一步几个容易翻车的地方返回注解写错或缺失工具入册时就被TypeError拦下报的是Expected tool to return ToolReturnValue照着把注解补齐即可。参数描述太笼统。只写路径不写目录路径还是文件路径模型可能传错东西参数说明就是给模型看的把约束写进description。多个命令想联动别在单个工具里塞流程。把Glob、Grep和你自己的命令并列写进tools列表让模型先定位文件再调统计命令流程编排是模型的事工具只负责一步。想封装外部脚本或命令行程序走的是插件机制plugin.json声明和这里进程内的 Python 工具是两条路别混用。下一步可以试个小挑战把示例里的Ls抄一份改成按后缀统计某目录的文件数量只动Params和__call__三处注册行改成你的新类名。能跑通这套机制你就完全掌握了。扩展方向可继续看 skills 文档它和工具互补工具提供能力skills 提供规范。【免费下载链接】kimi-cliKimi Code CLI is your next CLI agent.项目地址: https://gitcode.com/GitHub_Trending/ki/kimi-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/15 22:13:46

Node.js版本不兼容?一文搞懂npm EBADENGINE错误的成因与修复

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 22:13:46

Java排课系统实战:教练培训资源调度与冲突检测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 22:48:53

豆包+SiteNative:打造本地化AI生产力中枢

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 22:48:53

从2021年5月35笔并购案看网络安全行业风向与从业者机遇

2021年5月份值得关注的35笔网络安全并购案,我是当成一份“行业体检报告”来看的。单月35笔相关并购,放在任何年份都算一个不小的数字。热闹归热闹,但如果不拆开看其中的买家类型、标的赛道和交易背后的真实动机,这份列表和八卦没什…

2026/9/15 22:48:53

Frida 17.6的Zymbiote注入机制解析与实战应用

1. 项目概述:Frida 17.6与Zymbiote注入机制最近在逆向工程领域,Frida 17.6版本引入的Zymbiote注入机制引起了广泛讨论。作为一名长期从事移动安全研究的工程师,我发现这个新特性彻底改变了传统Hook技术的实现方式。不同于早期版本依赖ptrace或…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/15 21:31:11

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码