用途:在 apps/kimi-code/src/tui 内编写或修改 kimi-code 终端界面(TUI)时使用。动笔前应先阅读 apps/kimi-code/AGENTS.md,获取常驻架构地图、模块边界与硬性约束(如可打印键解码、禁止 chalk 命名颜色等);本技能侧重操作层面的架构定位、功能路由、测试放置、主题机制与对话框规范。列表对话框、选择器、输入框、状态/开关列表的交互与视觉规则以本目录 DESIGN.md 为准,提交前需走完其自检清单。
主要能力与架构:KimiTUI 是协调器,串联状态、布局、会话与对话框,把重逻辑委托给 controllers。kimi-tui.ts 持有状态、启停顺序、布局/编辑器接线、用户输入入口、发送与排队、会话生命周期及斜杠命令分发;tui-state.ts 是唯一全局 UI 状态;controllers/ 按职责切分(session-event-handler、streaming-ui、session-replay、tasks-browser、editor-keyboard、auth-flow);commands/ 负责斜杠命令的声明、解析、排序与动态技能命令生成;components/ 按 UI 类型分 chrome、dialogs、editor、media、markdown、messages、panes;reverse-rpc/ 将 SDK 审批/提问回调适配为 UI 面板数据并回传;theme/ 是颜色唯一来源;utils/ 存放依赖 TUI 状态的工具,与 UI 无关的通用工具放 src/utils/。
使用方式(功能落点):CLI 参数放 src/cli/commands.ts 与 options.ts,经 run-shell.ts 传入 TUI;CLI 子命令放 src/cli/sub/,仅非交互,通过 @moonshot-ai/kimi-code-sdk 访问核心;斜杠命令在 commands/ 声明解析并在 KimiTUI 处理器段挂执行入口;技能派生命令接入 buildSkillSlashCommands 或技能命令映射,不硬编码单一技能;新增消息类型在 types.ts 定义形状、加 components/messages/ 组件并在 transcript builder 注册;工具结果展示扩展 tool-renderers/registry.ts;弹窗/选择器放 components/dialogs/ 经 mountEditorReplacement 挂载;SDK 事件在 session-event-handler.ts 的 handleEvent 加分发与 handleXxx;流式渲染改 streaming-ui.ts;配置项读写与 schema 在 config.ts,持久化统一走 saveTuiConfig,组件不得自行写配置文件。测试就近扩展已有测试文件,不新建通用测试。
主题机制:主题集中于 src/tui/theme/,colors.ts 的 ColorPalette 是颜色令牌唯一来源;新增、改名或删除令牌时须同步 theme-schema.json、中英文自定义主题文档的令牌表以及内置技能 custom-theme.md。应用流程为 ThemeSelectorComponent → handleThemeCommand → applyThemeChoice,真正应用在 KimiTUI.applyTheme,更新 state.theme 与 state.appState.theme 并通知组件刷新调色板,再经 saveTuiConfig 持久化。
限制与提交要求:颜色硬规则(禁用 chalk 命名颜色、对比度、禁止模块顶层缓存样式函数、新增颜色前先加令牌)由守卫强制执行,细节见 AGENTS.md;可打印键比较须用 printableChar(),颜色须用 chalk.hex(colors.<token>),均受 CI 守卫约束。提交前对改动文件运行 lint/format/test,对话框相关走完 DESIGN.md 自检清单。资料未提供具体版本号、兼容范围与授权信息。