English | 简体中文
可后台持续运行、可恢复、原生跨平台的 Rust 终端 Coding Agent。
kkagent 是一个用 Rust 实现的终端 Coding Agent,重点增强长任务运行、多会话协作、上下文恢复和本地安全控制。
- 任务不中断:按
Ctrl+B离开 TUI,独立 Agent Server 与进行中的任务继续运行;再次执行kk自动恢复现场。 - 主线不被打断:通过会话标签、
/fork和 BTW 全屏侧问工作区并行探索不同问题。 - 安全可控:提供
manual/auto/yolo/plan四种权限模式,以及系统级 Bash 沙箱。 - 原生跨平台:Rust 单二进制分发,无 Node.js 运行时依赖;支持 Windows / macOS / Linux(x86_64 / arm64)。
- 可扩展:内置 MCP、Skills、Hooks、Web UI、ACP 和插件市场,可用于交互开发、远程接入与 CI 自动化。
| 你关心的问题 | kkagent 的处理方式 |
|---|---|
| 关闭 TUI 后任务会不会中断? | 独立 Server 持续运行,重新执行 kk 自动恢复会话和进行中的任务。 |
| 同时探索多个方向会不会弄乱上下文? | 会话标签、/fork 与 BTW 侧问工作区相互隔离,主对话无需停下来。 |
| Agent 执行命令是否安全? | 四种权限模式、系统级 Bash 沙箱、隐私路径策略与审计记录共同控制风险。 |
| 长会话或意外断线后能否继续? | 会话、事件、turn 队列和后台任务写入 SQLite,支持重启、断线和压缩后的恢复。 |
| 能否接入现有开发流程? | 支持非交互模式、结构化输入输出、MCP、ACP、Web UI、插件与远程执行环境。 |
差异化能力主要集中在后台运行、会话导航和终端体验:
| 功能 | 快捷键 / 命令 | 带来的体验 |
|---|---|---|
| 会话后台 detach | Ctrl+B |
退出 TUI 而不中断整个会话;后台 turn 继续运行,再次执行 kk 自动恢复。 |
| 会话标签页 | 空输入时 Tab / ← / → · Ctrl+Shift+Tab |
在 /new、/fork 派生的会话族之间快速切换,底部常驻会话条。 |
| BTW 全屏侧问 | /btw · Ctrl+G |
从当前会话快照独立提问,不污染或阻塞主对话。 |
| Goal 目标模式 | /goal <objective> · /goal status/pause/resume/cancel |
给 Agent 一个可跨多轮持续推进的目标:footer 常驻 goal 指示器,运行中的 turn 也能即时注入新目标;可选开启独立裁判 agent 审查"完成"申报,未达标时带着缺口继续推进,防止草率收工。 |
| Todo 贴底面板 | 自动 | 任务状态常驻输入框上方,并按终端宽度自动折叠。 |
| 会话记录搜索 | Ctrl+F |
对整个 transcript 全文搜索,快速定位历史结论。 |
| Emacs 风格行编辑 | Ctrl+K / Ctrl+W / Ctrl+Y / Ctrl+Z / Ctrl+Shift+Z |
kill line / kill word / yank / undo / redo。 |
| 原生 scrollback | --no-alt-screen |
保留终端原生滚动缓冲,方便翻页、选择和复制。 |
| 强制全量重绘 | F5 |
修复 SSH / 老终端下的撕裂帧与幽灵字符。 |
| 非交互编排 | --max-turns · --input-format |
限制任务轮数,并用 stream-json 驱动 Agent。 |
| Shell 补全 | kkagent completions |
生成 bash / zsh / fish / PowerShell 补全脚本。 |
此外还支持独立 Server 生命周期管理、运行中输入排队、大段粘贴自动折叠,以及鼠标滚动、拖拽选择复制(含双击/三击按词/按行选取)。
- 运行耗时较长的 Coding Agent 任务,希望离开终端后任务仍能继续。
- 同时维护多个会话、分支或探索方向,又不希望上下文互相干扰。
- 需要明确的权限审批、系统沙箱、凭据保护和审计轨迹。
- 希望以单二进制方式部署到 Windows、macOS、Linux 或远程开发机。
- 需要通过脚本、CI、Web UI、ACP、MCP 或插件扩展 Agent 工作流。
curl --proto '=https' --tlsv1.2 -fsSL https://raw.githubusercontent.com/Ken-u/kkagent/main/install.sh | sh安装器会自动识别 macOS/Linux 与 x86_64/arm64,下载最新 Release 并校验 SHA-256。Linux 使用 musl 静态链接包(unknown-linux-musl),无需系统 OpenSSL,也不依赖发行版 glibc 版本。/usr/local/bin 可写时安装到该目录,否则自动使用 ~/.local/bin。也可指定目录或版本:
curl --proto '=https' --tlsv1.2 -fsSLO https://raw.githubusercontent.com/Ken-u/kkagent/main/install.sh
KKAGENT_INSTALL_DIR="$HOME/bin" KKAGENT_VERSION=<version> sh install.sh安装完成后会同时安装 kkagent-update,以后直接执行该命令即可升级,且会沿用原安装目录。TUI 默认每 24 小时在后台检查一次 GitHub Release;只显示提示,不会自动下载。可在配置中设置 [ui] check_updates = false 关闭。
从 GitHub Releases 下载对应平台的 tar.gz / zip,按 SHA256SUMS 校验后将 kkagent 放到 PATH 中即可。
当前发布矩阵:
| 平台 | 架构 | 产物 |
|---|---|---|
| macOS | x86_64 / arm64 | kkagent-x86_64-apple-darwin.tar.gz / kkagent-aarch64-apple-darwin.tar.gz |
| Linux (musl, 静态) | x86_64 / arm64 | kkagent-x86_64-unknown-linux-musl.tar.gz / kkagent-aarch64-unknown-linux-musl.tar.gz |
| Windows | x86_64 / arm64 | kkagent-x86_64-pc-windows-msvc.zip / kkagent-aarch64-pc-windows-msvc.zip |
irm https://raw.githubusercontent.com/Ken-u/kkagent/main/install.ps1 | iex或先下载再执行:
curl -fsSLO https://raw.githubusercontent.com/Ken-u/kkagent/main/install.ps1
.\install.ps1默认安装到 %LOCALAPPDATA%\Programs\kkagent,可通过环境变量覆盖:
$env:KKAGENT_INSTALL_DIR = "$env:USERPROFILE\bin"; .\install.ps1 -Version <version>安装完成后可执行 kkagent-update.ps1 升级,并沿用原安装目录。
kkagent 支持 Anthropic、Kimi、OpenAI / OpenAI Responses、Google Gemini 以及 OpenAI 兼容端点,可同时配置多个模型并按会话切换。
- 初始化配置(交互式向导,也可在这里完成 Kimi 托管账号登录):
kkagent init或手动创建 ~/.kkagent/config.toml:
default_model = "kimi-k2-0711-preview"
[providers.kimi]
type = "kimi"
base_url = "https://api.moonshot.cn/v1"
# 推荐:用环境变量引用密钥,避免明文提交
api_key_env = "KIMI_API_KEY"
[models."kimi-k2-0711-preview"]
provider = "kimi"
# 可选:主模型耗尽正常单步重试后切换到此模型
# fallback_model = "backup-model"
[permissions]
default_permission_mode = "manual"配置密钥更推荐通过环境变量(
api_key_env)或kkagent auth login注入,避免在配置文件中明文保存 API Key。完整字段说明见配置参考与docs/configuration.md。
- 启动 TUI:
kkagentkkagent 命令同时会以 kk 软链接的形式安装到同一目录,直接敲 kk 等价于 kkagent。
- 非交互执行单次任务:
kkagent -y -p "Read ./Cargo.toml and count workspace members"也可以简写为:
kk -y -p "Read ./Cargo.toml and count workspace members"更多用法见 docs/cli-and-tui.md。
kkagent mcp serve 把 kkagent 暴露为一个 MCP Server:网页 ChatGPT(或任何 MCP 编排方)负责决策和写计划,kkagent 在本机执行并回报结果。
# 本地 HTTP 端点(Streamable HTTP,默认 127.0.0.1:8788,Bearer 认证)
kkagent mcp serve --http
# 一条命令接入 OpenAI 生态(ChatGPT / Codex):自动拉起 tunnel-client,
# 无需公网入口
export CONTROL_PLANE_API_KEY=sk-... # OpenAI Runtime API key(Tunnels Read+Use)
kkagent mcp serve --tunnel tunnel_xxx编排方的典型工作流:write_plan 存储执行计划拿到 plan_id → delegate(plan_id) 派发异步编码任务(计划以 session plan_file_path 落盘,prompt 只带路径引用)→ get_progress 轮询 → continue_task 回答提问 / 审批动作 → get_result 收取审查摘要。另有 list_workspaces、get_context、inspect、cancel 覆盖监督全流程。
申请 tunnel、关联 ChatGPT workspace、创建 Runtime key、在 Connectors 里挂 Tunnel 的逐步说明见 docs/extensions.md § OpenAI Secure MCP Tunnel。
MCP 客户端本地直连:URL http://127.0.0.1:8788/mcp,Header Authorization: Bearer <token>(默认复用 ~/.kkagent/http_token)。完整 MCP 工具与传输说明见 docs/extensions.md#mcp-server。
- 原生 Rust:单二进制分发,无 Node.js 运行时依赖,跨平台原生支持。
- Agent 运行时:多轮对话、工具调用循环、自动上下文压缩、token 预算与 turn 预算管理。
- TUI / Server 分离:默认使用进程内 memory transport,也可通过 UDS / TCP 连接独立 Server,并用
Ctrl+B将整个会话留在后台运行。 - 安全执行:四种权限模式配合 Linux Bubblewrap、macOS Seatbelt、Windows Job Object,支持只读、限制网络与细粒度授权策略。
- 可靠恢复:会话、事件、turn 队列、后台任务与检查点持久化到
~/.kkagent/transcripts.db,支持--resume、断线重连与跨重启恢复。 - 多会话协作:会话标签、
/new、/fork、BTW 侧问、Todo 面板和 transcript 搜索共同服务长任务工作流。 - 自动化与接入:支持 headless / CI 结构化输入输出、Web UI、ACP,以及本地和 SSH 远程执行环境。
- MCP Server:
kkagent mcp serve --http把 kkagent 暴露为 MCP Server,配合--tunnel一条命令接入 ChatGPT / Codex——编排方决策与写计划(write_plan),kkagent 异步执行(delegate)并回报审查摘要。 - 可扩展工具系统:内置文件、搜索、Shell、任务、计划、Web 和媒体工具,并支持 MCP、Skills、Hooks 与插件市场;插件还可声明自定义子 Agent 类型与模型绑定。
- 可观测性:结构化日志、HTTP 审计日志和可配置 telemetry 事件。
运行时与工程实现细节
- 后台与多会话:workspace session registry 与跨目录会话恢复;子 Agent 会话页签;AgentSwarm 并行子代理(超时 / 限流恢复、可后台化);断线重连后恢复 BTW、prompt 队列、审批与 live stream。
- Goal 目标运行时:目标状态机(active/paused/blocked/complete)与 turns/tokens/wall-clock 三维预算;turn 边界自动续跑;可选完成判定裁判 agent(
[goal] judge_enabled)——独立模型通过GoalJudgetoolcall 标记 approve/reject,拒绝达到上限转 blocked,裁判故障自动 fail-open;裁决记录可在 TUI 点击 footer goal 指示器查看。 - 插件与子 Agent:插件市场多源安装(GitHub / GitBucket 兼容 forge、
tree/<ref>/<dir>子目录源);插件可声明自定义子 Agent 类型(ACP 外部 + 内部,带缓存 profile registry)与专属模型绑定;kkagent doctor提供 fail-fast / 卫生检查。 - Web UI:深色主题、Markdown 渲染、移动端侧栏、model picker、Timeline 逐轮 diff、plan review 与插件面板;支持通过
--http热挂到已运行的 Server。 - 工具系统:渐进式工具披露、MCP schema 延迟通告、未知工具 BM25 模糊建议;针对超大 workspace 的流事件合并和 transcript 布局缓存;统一后台任务面板(
/tasks+/ps)。 - LLM 工程:Anthropic / DeepSeek prompt caching 与缓存命中率统计;
compaction_model、per-model thinking effort、api_key_env、可配置重试退避、流式首 token 超时门控与跨 chunk UTF-8 重组。 - 安全与沙箱:S0–S2 隐私路径策略;声明式 toolchain sandbox profile;Once / Turn / Session / Workspace 授权范围;
shell -c绕过检测、always-approvals 持久化、凭据目录 deny 与安全审计轨迹。 - 运行时可靠性:磁盘持久化 turn 检查点;undo 跨重启与压缩存活;逐消息 transcript 持久化与孤儿 tool-use 修复;超大工具结果落盘和 trash 归档;malformed tool call 自动重试。
- 上下文与隔离:预算安全的 payload projector、
/compact自动压缩、/context分项 token 透视;无原生依赖的 bash AST tokenizer/parser;子 Agent 独立 git worktree、跨会话写冲突告警与测试命令隔离。 - 终端体验细节:剪贴板图片粘贴折叠为
[Pasted Image #n]标记;完成通知(OSC 9)附带净化后的 prompt;实验性mouse_mode = "off"兼容不支持鼠标上报的 SSH 客户端。
Workspace 包含 16 个 crate:
| Crate | 说明 |
|---|---|
kkagent |
主入口二进制,CLI / TUI 启动器。 |
kkagent-protocol |
跨 crate 的协议类型、消息与错误定义。 |
kkagent-rpc |
RPC 传输层(memory / UDS / TCP)。 |
kkagent-config |
TOML 配置加载、验证、环境变量覆盖。 |
kkagent-llm |
LLM Provider 抽象、流解析、token 计数。 |
kkagent-core |
Agent 主循环、上下文投影、权限链、计划审阅。 |
kkagent-tools |
内置工具实现与注册表。 |
kkagent-mcp |
MCP Client / Server 支持。 |
kkagent-client |
高层客户端封装。 |
kkagent-tui |
终端交互界面。 |
kkagent-di |
依赖注入容器。 |
kkagent-wire |
序列化与消息编解码。 |
kkagent-telemetry |
遥测事件与可配置上报。 |
kkagent-acp |
Agent-Client Protocol / 长连接协议实现。 |
kkagent-oauth |
OAuth / 令牌管理。 |
kkagent-kaos |
混沌与压力测试辅助。 |
| 类别 | 工具 | 说明 |
|---|---|---|
| 文件读写 | Read / Write / Edit / Glob |
读取、写入、行级编辑、批量查找。 |
| 搜索 | Grep |
正则搜索,支持上下文与多文件过滤。 |
| 执行 | Bash |
带沙箱与权限策略的命令执行,支持后台 shell。 |
| 任务管理 | TodoList / Goal / Agent / TaskOutput |
TODO 追踪、多轮目标(可选完成判定裁判)、子代理委派与后台任务管理。 |
| 交互 | AskUserQuestion / SelectTools |
用户确认、工具选择。 |
| 上下文 | Skill |
加载并执行 skill 模板。 |
| 计划 | Plan |
计划模式相关工具。 |
| 定时 | Cron(action=create/list/delete) |
调度提示词到未来执行。 |
| Web / 媒体 | Web(action=search/fetch) / ReadMediaFile |
网页搜索与抓取、媒体文件读取。 |
工具声明与权限策略由 kkagent-tools 统一管理,新增工具会自动进入权限评估流程。
| 模式 | 行为 |
|---|---|
manual |
每次写操作、Bash、危险命令都弹窗确认。 |
auto |
只读工具与低风险操作自动通过;写文件、Bash 仍需确认。 |
yolo |
全部操作自动批准,适合自动化脚本与受信环境。 |
plan |
先让 Agent 生成计划,用户审阅后再批量执行;默认只读倾向。 |
启动时通过 -y/--yolo、--auto、--plan 切换,TUI 内可用 /yolo、/auto、/plan 动态切换。详见 docs/tools-and-permissions.md。
kkagent 读取一份 TOML 配置:优先使用 --config <path>,否则读取 ~/.kkagent/config.toml。常用命令:
kkagent config show
kkagent config get sandbox.mode
kkagent config set sandbox.network false
kkagent config preset safe排障时可用 kkagent --disable-sandbox 仅对当前进程关闭 Bash OS 沙箱和资源限制;它不修改配置,只建议在受控容器或 VM 中使用。
完整配置项、Provider、Model、MCP、Hooks、插件市场说明见 docs/configuration.md。
/plugins 打开插件管理(已安装列表、市场浏览、安装/更新/启用/禁用)。默认市场用 plugin_marketplace,额外市场用 plugin_marketplaces:
plugin_marketplace = "https://plugins.example.com/marketplace.json"
plugin_marketplaces = [
"http://git.example.com/org/kk-plugins",
{ name = "team", source = "/data/kk-plugins/marketplace.json" },
]KKAGENT_PLUGIN_MARKETPLACE_URL 只覆盖默认那一项。也支持 GitHub / GitBucket 等兼容 forge 的仓库首页和 tree/<ref>/<plugin-dir> 源(安装时下 zip 并只取该子目录)。详情见 docs/extensions.md。
本项目的交互设计与运行时模型参考了 kimi-code CLI,在此表示感谢。kkagent 使用 Rust 独立实现,并未复用其代码。
git clone https://github.com/Ken-u/kkagent.git
cd kkagent
cargo build --release --workspace
./target/release/kkagent --help
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace --all-targets提交前请阅读 docs/development.md 中的提交约定与跨平台构建说明。
MIT — 详见 LICENSE。
