Find a file
qer a1702a54ba
fix(chat): keep a Skill tool call inside the turn's activity fold (#146)
A Skill invocation persists the loaded skill body as a user-role message
(origin skill_activation, trigger model-tool / nested-skill) between the
tool call and its result. messagesToTurns treated it as a hard turn
boundary: it flushed the pending assistant group, then hid the message.
The turn split in two and each half rendered its own "worked Ns" fold
row, with the Skill card stranded between them.

Upstream's isAgentReplayUserTurnRecord already counts only user-slash
activations as turn anchors; mirror that here by skipping non-user-slash
skill activations the same way hidden injections are skipped, so the Skill
call folds into the same activity run as the rest of the turn.
2026-07-29 13:18:11 +08:00
.agents/skills feat(desktop): bilingual release notes and opt-in background auto-download (#87) 2026-07-23 16:20:58 +08:00
.changeset fix(chat): keep a Skill tool call inside the turn's activity fold (#146) 2026-07-29 13:18:11 +08:00
.github feat(desktop): add auto-update via CDN generic feed (#26) 2026-07-18 16:34:23 +08:00
apps fix(chat): keep a Skill tool call inside the turn's activity fold (#146) 2026-07-29 13:18:11 +08:00
docs feat(desktop): add a built-in native terminal (#132) 2026-07-29 11:47:03 +08:00
KIMI CODE LOGO feat(desktop): theme-following Dock icon, app-icon picker, v2 brand kit (#92) 2026-07-24 06:31:53 +08:00
kimi-code@16c7189bd5 chore: bump kimi-code submodule 2026-07-29 11:50:00 +08:00
packages feat(desktop): add a built-in native terminal (#132) 2026-07-29 11:47:03 +08:00
release-notes chore: add release notes for v0.0.12 2026-07-29 12:19:36 +08:00
scripts feat(desktop): add a custom Windows title bar (#123) 2026-07-27 17:23:03 +08:00
.env.example feat(desktop): add local signed macOS packaging script 2026-07-15 16:36:48 +08:00
.gitignore fix(desktop): leave full-screen before hiding the window on close (#82) 2026-07-22 21:50:21 +08:00
.gitmodules feat(desktop): migrate embedded server to v2 kap-server 2026-07-15 11:33:25 +08:00
.npmrc chore: scaffold root workspace tooling 2026-07-10 11:35:53 +08:00
.oxlintrc.json feat: bump kimi-code submodule and sync upstream web changes (#47) 2026-07-20 16:23:36 +08:00
AGENTS.md feat(desktop): add a built-in native terminal (#132) 2026-07-29 11:47:03 +08:00
LICENSE chore: initialize code-app repository 2026-07-10 11:29:38 +08:00
package.json feat(desktop): theme-following Dock icon, app-icon picker, v2 brand kit (#92) 2026-07-24 06:31:53 +08:00
pnpm-lock.yaml chore: bump kimi-code submodule 2026-07-29 11:50:00 +08:00
pnpm-workspace.yaml ci: migrate desktop packaging to GitHub Actions and add changesets release flow (#1) 2026-07-16 22:45:14 +08:00
publish-desktop-cdn.sh feat(desktop): dual-publish CDN artifacts and move version dirs under binaries/ 2026-07-28 20:51:08 +08:00
README.md feat(desktop): add a built-in native terminal (#132) 2026-07-29 11:47:03 +08:00
tsconfig.base.json chore: scaffold root workspace tooling 2026-07-10 11:35:53 +08:00
vitest.config.ts fix(desktop): serve index.html for renderer SPA routes on reload 2026-07-16 09:59:09 +00:00

code-app

Kimi Code 客户端仓库:桌面端(apps/desktop+ Web UIapps/web+ 共享包(packages/*)。 核心仓 kimi-code 以 git submodule 引入。

现状与仓库关系

  • 本仓库是 Web UI 和桌面端源码的主仓库。这两个应用此前住在 kimi-code 仓库(apps/kimi-web / apps/kimi-desktop),今后 web/desktop 的开发都在本仓库进行。
  • kimi-code 是 CLI / server / agent 的主仓库,以 submodule 钉在本仓库根目录,其 packages/* 通过 pnpm workspace 直接以源码链接进来——desktop 的 Electron 主进程会把其中的 serverkap-serveragent-core-v2 等)打包为内嵌 server。
  • web 产物分发pnpm sync:webscripts/sync-web-to-kimi-code.mjs)把 apps/web/dist 拷贝到一个 kimi-code checkout 的 apps/kimi-code/dist-web,用 KIMI_CODE_REPO 指定目标 checkout必传
  • Windows 窗口 chromedesktop 用 Window Controls Overlay 保留原生窗口按钮,并由 renderer 绘制品牌与文件/编辑/视图/帮助菜单入口。

下载

桌面端最新安装包CDN 固定入口,永远指向最新版本):

macOS · Apple Silicon

https://code.kimi.com/kimi-code/desktop/download/KimiCode-mac-arm64.dmg

macOS · Intel

https://code.kimi.com/kimi-code/desktop/download/KimiCode-mac-x64.dmg

Windows

https://code.kimi.com/kimi-code/desktop/download/KimiCode-win-x64.exe

Linux · AppImage

https://code.kimi.com/kimi-code/desktop/download/KimiCode-linux-x86_64.AppImage

Linux · deb

https://code.kimi.com/kimi-code/desktop/download/KimiCode-linux-amd64.deb

历史版本与完整产物见 GitHub Releases

快速开始

pnpm run sync      # 初始化/更新 submodule
pnpm install       # 安装依赖,并在 postinstall 下载、校验及转换缺失的共享字体
pnpm prepare:fonts # 可选;手动重新校验/准备共享字体
pnpm dev:desktop   # 桌面端renderer HMR + 默认启动内嵌 server
pnpm dev:desktop:debug  # 桌面端,并开启 Electron remote debugging端口 9222供 agent-browser 连接)
pnpm dev:web       # Web UIVite dev server/api/v1 代理到 127.0.0.1:58627

用 agent-browser 自动化桌面端

桌面端支持通过 Chrome DevTools Protocol 被外部工具控制,方便做自动化测试或 UI 操作。

  1. 安装 agent-browser

    npm i -g agent-browser && agent-browser install
    
  2. 用 debug 模式启动桌面端(默认开启 127.0.0.1:9222

    pnpm dev:desktop:debug
    
  3. 在另一个终端连接并操作:

    agent-browser connect 9222
    agent-browser snapshot -i     # 查看可交互元素
    agent-browser click @e2       # 例如点击 New Chat
    agent-browser screenshot app.png
    

更多用法见 agent-browser skills get electron

开发

  • 联调 kimi-code 的 server 改动:在你的 kimi-code 工作克隆里 pnpm dev:server,然后 KIMI_SERVER_URL=http://127.0.0.1:58627 pnpm dev:desktopdesktop 不再启动内嵌 server。完整流程见 AGENTS.md 的"双仓工作流"。
  • web 改动同步到 kimi-code:先 pnpm --filter kimi-code-web run build,再 KIMI_CODE_REPO=<kimi-code checkout 路径> pnpm sync:web
  • 升级 submodule:在 kimi-code/ 内 checkout 目标 commit然后在根目录提交 submodule 指针;新克隆或拉取后跑 pnpm run sync 对齐。
  • 常用检查pnpm testpnpm lintpnpm typecheckpnpm build
  • 更新品牌图标:设计源文件在 KIMI CODE LOGO/(设计师交付,整目录替换后跑 pnpm build:icons,重新生成 apps/desktop/build/ 图标、web favicon 与组件内联品牌标;几何约定见 scripts/build-brand-icons.mjs 头注释。macOS Tahoe 深色/玻璃图标需另在 Icon ComposerXcode 26手工制作 AppIcon.icon 放入 apps/desktop/build/,打包时自动编译嵌入;没有该文件则全平台保持 .icns 静态图标。
  • UI 设计系统:改 UI 前必读 apps/desktop/src/renderer/views/DesignSystemView.vue(应用内长按侧栏 logo 打开),样式只用 style.css 的设计 token动效除 --duration-* / --ease-* 外,含设计师导出图标动画的 --anim-* 例外,见 §02 Motion并在亮色 + 暗色下做视觉验证。细则见 AGENTS.md 的"硬约束"。
  • 主进程原生界面文案:新增用户可见字符串(托盘、通知、对话框等)要 en/zh 双语——主进程无 i18n runtimeapps/desktop/src/main/tray.ts 同款字符串表,应用语言经 kimi:locale 通道同步OS 语言兜底)。细则见 AGENTS.md 的"硬约束"。
  • 应用菜单menu.ts:编辑菜单不用 editMenu 角色而是手工拼装——原生菜单加速键会先于 renderer 截获按键;「全选」保留 CmdOrCtrl+A 加速键但经 kimi:menu-action 转发 renderer 的作用域全选(只选中中间 transcript 或注意力所在面板)。改动菜单时保持该契约,其余编辑项镜像 Electron editMenu 展开(tests/main/menu.test.ts 钉住)。
  • 文本框原生右键菜单context-menu.tsElectron 无默认编辑菜单,context-menu.tswebContentscontext-menu 事件里对可编辑字段transcript 搜索框、composer、内联重命名等弹原生菜单——macOS 带 Look UpshowDefinitionForSelection),其余编辑动词走 role + editFlags 门控;全部条目显式双语 labelrole 默认 label 只随 OS locale菜单每次右键重建切语言即时生效。安装点window.tscreateWindowinstallExternalLinkGuard 同款);明细见 apps/desktop/docs/native-todos.md
  • 内置终端terminal.tsdesktop 专属PTY 由主进程 node-pty 直接托管(不经内嵌 serverkimi:terminal-* IPC 与 renderer 的 useNativeTerminal.ts + components/terminal/ 交互;⌃` 或 View 菜单开合底部面板,多 tab终端状态按 sessionId 分桶(切 session 原样恢复,上限 10 个 session LRU 驱逐shell 解析 POSIX $SHELL / Windows pwsh→powershell→cmd退出 app、renderer 重载/崩溃时全清xterm 聚焦时原生菜单 accelerator 经 kimi:menu-terminal-focus 摘除(否则 Windows 下 Ctrl+C 到不了 PTY。明细见 apps/desktop/docs/native-todos.md
  • Windows 标题栏:使用 Window Controls Overlay 保留原生窗口按钮,左侧依次为图标随主题同向切换(浅色白底、深色深底)的完整品牌、常驻侧栏切换、文件/编辑/视图/帮助菜单及按状态出现的更新入口Windows 托盘固定使用带白色背景的完整品牌图标Sidebar 不渲染品牌 Header也不重复这些 chrome 控件。
  • 注释克制:密度对齐所在文件,不写复述代码的注释;设计决策与 bug 根因进 spec / commit message不进代码。细则见 AGENTS.md 的"硬约束"。
  • 本地打包并签名 macOS 包pnpm package:macosCI 不可用时的替代arm64凭证与流程见 apps/desktop/README.md 的"打包"一节)。

发布

桌面端发版与产物分发(不发 npm

  1. changeset:功能 PR 按 .agents/skills/changeset/SKILL.md 生成 changeset只选 kimi-code-app,早期一律 patch合入 main 后 CI 自动维护 ci: release desktop 版本 PR。

  2. 打包:合并版本 PRCI 自动打四平台签名包macOS arm64/x64、Windows、Linuxlatest*.yml 自动更新元数据)并创建 GitHub Releasetag v<version>)。完整流程见 .changeset/README.md

  3. 双语更新说明:按 .agents/skills/release-notes/SKILL.md 生成该版本的中英双语 changelog——从 apps/desktop/CHANGELOG.md 抽取中文案、翻译成英文review 后存档到 release-notes/<version>/changelog.{zh,en}.md 并提交;发布脚本会随版本目录一并上传,更新弹窗按系统语言展示(旧版本无此文件,弹窗不显示更新说明)。

  4. CDN 分发本地手动TOS 凭证限内网):

    ./publish-desktop-cdn.sh            # 拉最新 Release传产物 + 切自动更新指针 + 刷新下载入口
    ./publish-desktop-cdn.sh 0.0.3      # 指定版本rebuild / 补传 / 回滚切指针)
    ./publish-desktop-cdn.sh 0.0.3 --artifacts-only   # 只传产物,先验证再切流量
    

    产物双推两条 CDN 链路——国内 code.kimi.com/kimi-code/desktop/TOS kimi-code)与海外 code.kimi.ai/kimi-code/desktop/TOS kimi-code-oversea),内容一致:版本目录 binaries/<version>/immutable含安装包与双语更新说明 changelog.{zh,en}.md;过渡期 changelog 会同时往旧布局 <version>/ 传一份副本供未升级客户端拉取,两个版本后停)、自动更新指针 latest*.ymlno-cache、固定下载入口 download/(官网链接见上方"下载"一节)。

目录

  • apps/desktopElectron 桌面端(kimi-code-app
  • apps/web:浏览器 Web UIkimi-code-web
  • packages/*web 共享包web-core / web-i18n / web-markdown / web-ui / vite-preset字体许可证及本地生成不入 Git的两端共用字体位于 packages/web-ui/src/assets/fonts
  • scripts/prepare-fonts.mjs:下载并校验共享源字体,再转换为 Vite/Electron 使用的 WOFF2install/dev/build 会自动调用
  • KIMI CODE LOGO/ + scripts/build-brand-icons.mjs品牌设计源文件SVG/PNG及其到全部图标资源apps/desktop/build/apps/web/public/favicon.ico、组件内联品牌标)的生成脚本(pnpm build:icons
  • kimi-code/:核心仓 submoduleCLI / server / agent-core / packages
  • scripts/sync-web-to-kimi-code.mjsweb 产物同步到 kimi-code 的脚本