如何打造专属AI助手?Kimi CLI命令扩展全攻略
核心价值:为什么需要自定义命令扩展
在日常开发工作中,我们经常会遇到重复性高、操作繁琐的任务。比如,需要定期生成项目代码统计报告、批量处理文件格式转换,或者监控系统资源使用情况。这些任务虽然简单,但手动执行不仅耗时,还容易出错。Kimi CLI作为一款智能命令行代理,提供了强大的自定义命令扩展能力,让你可以将这些重复性工作自动化,从而专注于更有价值的创造性任务。
自定义命令扩展的核心价值在于:
- 工作流定制:根据个人或团队的工作习惯,打造专属的AI助手功能
- 效率提升:将复杂操作封装为简单命令,减少重复劳动
- 能力扩展:突破内置功能限制,集成外部服务和工具
- 无缝集成:与现有开发环境和工具链深度融合
场景化应用:从实际问题到解决方案
解决项目统计难题:代码行数统计工具
问题:作为开发团队负责人,需要定期统计项目中不同语言的代码行数,评估项目规模和开发进度。手动统计耗时且容易出错。
方案:开发一个代码行数统计工具,自动分析指定目录下的代码文件,按语言分类统计总行数、空行数和注释行数。
实施步骤:
准备开发环境
首先,确保你的开发环境已准备就绪。Kimi CLI提供了完整的自定义工具开发框架,位于examples/custom-tools目录下。
# 克隆项目仓库
git clone https://gitcode.com/GitHub_Trending/ki/kimi-cli
cd kimi-cli/examples/custom-tools
# 安装依赖
uv sync --reinstall
完成后,你将看到一个包含基本结构的工具开发框架,包括工具实现目录、配置文件和示例代码。
Kimi CLI工具开发环境设置界面 - 展示了初始化配置过程,包括API平台选择等关键步骤
实现代码统计功能
在my_tools目录下创建code_stats.py文件,实现代码统计功能:
from typing import List, Dict
from pydantic import BaseModel, Field
from kimi_cli.tools import BaseTool, tool
import os
import re
class CodeStatsInput(BaseModel):
directory: str = Field(description="要统计的目录路径")
exclude: List[str] = Field(default=[], description="要排除的文件模式")
class CodeStatsOutput(BaseModel):
total_files: int = Field(description="总文件数")
stats_by_language: Dict[str, Dict[str, int]] = Field(description="按语言统计的结果")
@tool("代码行数统计", input_model=CodeStatsInput, output_model=CodeStatsOutput)
def code_stats_tool(directory: str, exclude: List[str] = []) -> CodeStatsOutput:
"""统计指定目录下不同语言的代码行数"""
stats = {}
total_files = 0
exclude_patterns = [re.compile(pattern) for pattern in exclude]
for root, dirs, files in os.walk(directory):
for file in files:
# 检查是否需要排除该文件
if any(pattern.match(file) for pattern in exclude_patterns):
continue
# 获取文件扩展名作为语言标识
ext = os.path.splitext(file)[1].lstrip('.').lower() or 'txt'
file_path = os.path.join(root, file)
# 统计行数
try:
with open(file_path, 'r', encoding='utf-8') as f:
lines = f.readlines()
total_lines = len(lines)
empty_lines = sum(1 for line in lines if line.strip() == '')
comment_lines = sum(1 for line in lines if line.strip().startswith(('//', '#', '/*', '*')))
# 更新统计数据
if ext not in stats:
stats[ext] = {'files': 0, 'total_lines': 0, 'empty_lines': 0, 'comment_lines': 0}
stats[ext]['files'] += 1
stats[ext]['total_lines'] += total_lines
stats[ext]['empty_lines'] += empty_lines
stats[ext]['comment_lines'] += comment_lines
total_files += 1
except (UnicodeDecodeError, PermissionError):
continue # 跳过无法读取的文件
return CodeStatsOutput(total_files=total_files, stats_by_language=stats)
这段代码实现了一个基本的代码统计功能,它会递归遍历指定目录,统计不同类型文件的总行数、空行数和注释行数。代码使用了Pydantic模型定义输入输出格式,确保类型安全和自动验证。
💡 技巧提示:在开发工具时,合理设计输入输出模型非常重要。清晰的模型定义不仅能提高代码可读性,还能让Kimi CLI更好地理解工具功能,从而更智能地调用工具。
注册工具到代理配置
修改myagent.yaml文件,将自定义工具添加到工具列表:
version: 1
agent:
extend: default
tools:
- "kimi_cli.tools.file:ReadFile"
- "my_tools.code_stats:code_stats_tool" # 注册代码统计工具
这个配置告诉Kimi CLI扩展默认代理,添加我们刚刚开发的代码统计工具。这样,在对话中就可以直接调用这个工具了。
测试自定义工具
启动Kimi CLI并测试我们的代码统计工具:
uv run main.py
在交互界面中输入:
统计当前项目的代码行数,排除.git和venv目录
Kimi CLI会自动调用我们开发的code_stats_tool,并返回统计结果。
Kimi CLI代码统计工具运行效果 - 展示了在命令行界面中调用自定义工具并获取统计结果的过程
进阶实践:提升工具质量与安全性
配置权限边界:实现安全的工具调用
在开发自定义工具时,安全性是必须考虑的重要因素。特别是当工具需要访问文件系统或执行系统命令时,需要严格控制其权限范围。
Kimi CLI提供了完善的权限控制机制,通过在工具定义中添加权限声明,可以限制工具的访问范围:
@tool(
"代码行数统计",
input_model=CodeStatsInput,
output_model=CodeStatsOutput,
require_approval=True, # 需要用户确认才能执行
allowed_directories=["~/projects", "./src"] # 限制操作目录
)
def code_stats_tool(directory: str, exclude: List[str] = []) -> CodeStatsOutput:
# 工具实现代码...
上述配置添加了两个重要的安全措施:
require_approval=True:执行工具前需要用户确认,防止误操作allowed_directories:限制工具只能访问指定目录,防止敏感信息泄露
权限控制模块[src/kimi_cli/permissions/]:管理工具访问范围,确保自定义工具在安全的边界内运行。
实现工具间协作:构建工作流
单个工具往往只能解决特定问题,而将多个工具组合起来可以实现更复杂的工作流。Kimi CLI支持工具间的数据传递和协作,让你可以构建强大的自动化流程。
例如,我们可以将代码统计工具与报告生成工具结合,自动生成项目统计报告:
version: 1
agent:
extend: default
tools:
- "my_tools.code_stats:code_stats_tool"
- "my_tools.report:generate_report_tool"
skills:
- name: "项目统计报告"
steps:
- tool: "code_stats_tool"
args: { "directory": "./src", "exclude": [".git", "venv"] }
- tool: "generate_report_tool"
args: {
"title": "项目代码统计报告",
"data": "{{steps.0.output}}",
"format": "markdown"
}
这个配置定义了一个名为"项目统计报告"的技能,它会先调用代码统计工具获取数据,然后将结果传递给报告生成工具,最终生成一个Markdown格式的统计报告。
Kimi CLI多工具协作界面 - 展示了多个自定义工具协同工作,完成复杂任务的过程
实际应用案例:自动化版本发布流程
让我们看一个更复杂的实际应用案例:使用自定义命令实现自动化版本发布流程。
需求背景
开发团队需要一个自动化流程,完成以下版本发布任务:
- 运行测试套件,确保代码质量
- 统计本次版本的代码变更量
- 更新CHANGELOG.md文件
- 提交代码并打标签
- 生成发布说明
解决方案
通过开发多个自定义工具并组合使用,实现完整的版本发布流程:
- 测试运行工具:执行测试套件并返回结果
- 代码变更统计工具:分析与上一版本相比的代码变更量
- CHANGELOG更新工具:自动更新变更日志
- Git操作工具:处理代码提交和标签
- 发布说明生成工具:根据变更内容生成发布说明
这些工具可以通过技能定义组合成一个完整的工作流:
skills:
- name: "自动化版本发布"
steps:
- tool: "run_tests_tool"
args: { "test_dir": "./tests" }
if: "{{steps.0.output.success}}" # 只有测试通过才继续
- tool: "code_changes_tool"
args: { "base_version": "{{current_version}}" }
- tool: "update_changelog_tool"
args: {
"changes": "{{steps.1.output.changes}}",
"version": "{{new_version}}"
}
- tool: "git_commit_tool"
args: {
"message": "chore: release version {{new_version}}",
"files": ["CHANGELOG.md", "version.txt"]
}
- tool: "git_tag_tool"
args: { "tag": "v{{new_version}}" }
- tool: "generate_release_notes_tool"
args: { "changes": "{{steps.1.output.changes}}" }
通过这个自动化流程,团队可以将版本发布时间从原来的30分钟缩短到5分钟以内,同时减少了人为错误的可能性。
总结与扩展
Kimi CLI的自定义命令扩展功能为开发者提供了无限可能。通过本文介绍的方法,你可以根据自己的工作需求,开发各种实用工具,打造专属的AI助手。
除了本文介绍的代码统计工具和版本发布流程,你还可以开发更多类型的自定义工具,例如:
- 数据库操作工具:自动执行常见的数据库维护任务
- API测试工具:批量测试REST API并生成报告
- 文档生成工具:根据代码注释自动生成API文档
- 项目模板工具:快速创建新的项目结构
Kimi CLI的工具生态系统正在不断发展,你开发的工具不仅可以自己使用,还可以分享给其他开发者。官方文档[docs/zh/customization/skills.md]提供了更多高级技巧和最佳实践,帮助你开发更强大、更安全的自定义工具。
通过自定义命令扩展,Kimi CLI将成为你工作流程中不可或缺的智能助手,帮助你更高效、更专注地完成开发任务。现在就开始探索,打造属于你的专属AI工具集吧!
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00