《Kimi Code CLI 详解》第7-8章:UI层设计与配置扩展机制

1. Wire 协议的设计可以应用到哪些其他场景? 2. 如果你要设计一个新的 UI(如语音界面),需要考虑哪些因素? 3. 配置系统的分层模型有什么优缺点?

目录
  1. 《Kimi Code CLI 详解》第7-8章
  2. 第七章:用户界面与交互层
  3. 多 UI 架构的设计理念
  4. Wire 协议:UI 与核心的契约
  5. Shell UI:沉浸式终端体验
  6. ACP:IDE 集成的桥梁
  7. 第八章:配置系统与扩展机制
  8. 配置的分层模型
  9. Agent 规范系统
  10. Skill 系统:轻量级扩展
  11. MCP 扩展:开放工具生态
  12. 自定义工具开发
  13. 讨论话题

《Kimi Code CLI 详解》第7-8章

第七章:用户界面与交互层

多 UI 架构的设计理念

Kimi Code CLI 支持多种用户界面模式:

场景UI 模式原因
日常开发Shell快速、高效、沉浸式
CI/CDPrint非交互式、可脚本化
IDE 集成ACP标准化协议、跨编辑器
远程访问Web跨平台、无需安装

Wire 协议:UI 与核心的契约

┌─────────────┐      Wire 协议      ┌─────────────┐
│   UI 层     │ ◄─────────────────► │  核心层     │
│  (Shell/    │                     │ (KimiSoul)  │
│   Print/ACP)│                     │             │
└─────────────┘                     └─────────────┘

消息类型:

  • 控制事件:TurnBegin, StepBegin, TurnEnd
  • 内容事件:TextPart, ToolCall, ToolResult
  • 请求:ApprovalRequest, ToolCallRequest

Shell UI:沉浸式终端体验

实时渲染 LLM 输出和工具执行结果:

async def _execute(self, user_input: str):
    async for msg in self._soul.run(user_input, cancel_event):
        await self._render(msg)

async def _render(self, msg: WireMessage):
    match msg:
        case TextPart(text=text):
            self._console.print(text, end="")
        case ToolCall():
            self._show_tool_call(msg)
        case ApprovalRequest():
            await self._handle_approval(msg)

ACP:IDE 集成的桥梁

ACP(Agent Client Protocol)是开放的协议标准:

// Zed 配置
{
  "agent_servers": {
    "Kimi Code CLI": {
      "command": "kimi",
      "args": ["acp"]
    }
  }
}


第八章:配置系统与扩展机制

配置的分层模型

优先级(高 → 低)
命令行参数 → 环境变量 → 用户配置 → 项目配置 → 默认值

Agent 规范系统

支持继承机制:

agent:
  extend: default                    # 继承 default agent
  name: MyCustomAgent
  system_prompt_path: ./prompt.txt   # 覆盖系统提示词
  tools:
    - kimi_cli.tools.shell:Shell
  subagents:
    coder:
      path: ./agents/coder.yaml
      description: A coding agent

Skill 系统:轻量级扩展

Skill 是包含 SKILL.md 的目录:

---
name: gen-changelog
description: Generate changelog from git commits
type: standard
---

# Generate Changelog

1. Get commits since last tag
2. Categorize by type (feat, fix, docs)
3. Format according to Keep a Changelog

自动注册为斜杠命令:/skill:gen-changelog

MCP 扩展:开放工具生态

# 添加 MCP 服务器
kimi mcp add --transport stdio my-server -- npx my-mcp-server
kimi mcp add --transport http my-server https://api.example.com/mcp

# 查看已添加的服务器
kimi mcp list

自定义工具开发

class MyCustomTool(CallableTool):
    def __init__(self, config: Config):
        super().__init__(
            name="my_tool",
            description="Does something useful",
            parameters={...}
        )
    
    async def __call__(self, param1: str) -> ToolReturnValue:
        try:
            result = await self._process(param1)
            return ToolOk(output=result)
        except Exception as e:
            return ToolError(message=str(e))


讨论话题

1. Wire 协议的设计可以应用到哪些其他场景? 2. 如果你要设计一个新的 UI(如语音界面),需要考虑哪些因素? 3. 配置系统的分层模型有什么优缺点?

*本系列共10章,第9-10章(开发实践与未来展望)即将发布。完整内容已保存至本地 book/ 目录。*

👍 1

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens