@milisp/keke 0.1.41 → 0.1.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +35 -16
  2. package/README.zh-CN.md +21 -12
  3. package/package.json +7 -7
package/README.md CHANGED
@@ -2,24 +2,39 @@
2
2
 
3
3
  [中文文档](README.zh-CN.md) | [Architecture](docs/architecture.md) | [Config](docs/config.md) | [Roadmap](docs/ROADMAP.md)
4
4
 
5
- **keke** is a local terminal coding agent built in Rust for zero vendor lock-in.
6
- **7 MB download · zero external runtime dependencies · instant startup.**
5
+ **keke** is a local coding agent in a ~7 MB native binary — no Node or Python
6
+ runtime. Sign in with the ChatGPT or Grok subscription you already pay for, or
7
+ bring any API key, all from one tool. The TUI, `keke exec`, and desktop apps
8
+ (over ACP) drive the same session.
9
+
10
+ Subagents, MCP, skills, Claude-compatible plugins, hooks, plan mode,
11
+ per-turn checkpoints, and OS sandboxing are built in. Memory and repository
12
+ plugins stay off until you turn them on.
7
13
 
8
14
  [![asciicast](https://asciinema.org/a/1266474.svg)](https://asciinema.org/a/1266474)
9
15
 
10
16
  ## Why keke?
11
17
 
12
- - **Use what you already pay for**
13
- Sign in with ChatGPT (Codex) or Grok subscriptions, or drop in any API key. No need to switch providers just to try a different model.
18
+ - **One session, every surface.** Interactive TUI and `keke exec` for scripts
19
+ and CI, both on one session protocol. Concurrent subagents (bounded, and a
20
+ child cannot spawn another), background shell tasks, and `/loop` for a prompt
21
+ that comes back later. Plan mode can research and write a plan, not the repo.
14
22
 
15
- - **Multi-account, per-directory routing**
16
- Log in to work and personal accounts once. keke automatically picks the right one based on the directory you’re in.
23
+ - **Use what you already pay for.** Sign in with ChatGPT (Codex) or Grok, or
24
+ any API key. Codex, Grok, Claude, OpenAI-compatible endpoints, Ollama, and
25
+ vLLM — Chat Completions, Responses, or Anthropic Messages. Several accounts
26
+ for one provider, picked by the directory you are in. A compatible endpoint
27
+ is a few lines of `config.toml`; it does not require a new build. The engine
28
+ crates cannot depend on any vendor plugin — CI fails the build if they do
29
+ ([`scripts/check-layering.py`](scripts/check-layering.py)).
17
30
 
18
- - **Script- and CI-friendly**
19
- `keke exec "..."` runs one-shot tasks non-interactively — ready for scripts and pipelines.
31
+ - **Off by default.** Skills can be disabled. Persistent memory
32
+ is off until you set a directory. Hooks and MCP servers that ship with a
33
+ repository don't run on `git clone` (see [Safety](#safety)).
20
34
 
21
- - **Vendor-isolated core**
22
- `keke-core` contains zero vendor-specific logic. Point it at any OpenAI-compatible endpoint with a few lines in `config.toml`.
35
+ - **Checkpoints outside your repo.** Each turn snapshots the working
36
+ tree in a store outside your repository, so reverting the agent's edits is
37
+ not a stash and not a commit.
23
38
 
24
39
  ## Install
25
40
 
@@ -67,15 +82,19 @@ all other settings are documented in [`docs/config.md`](docs/config.md).
67
82
 
68
83
  - **Sandboxing & approvals** — shell commands run under an OS sandbox
69
84
  (Seatbelt on macOS, Landlock + seccomp on Linux): by default they may write
70
- only inside the workspace, cannot touch `.git`, and cannot reach the
71
- network; stepping outside is reviewed each time (by the guardian in Auto mode,
72
- otherwise by you). On Windows, which has no
73
- sandbox, every command asks you instead. A repository's own config can
74
- tighten that but never loosen it. See
85
+ only inside the workspace and have no direct network access; on macOS, and
86
+ on Linux with the opt-in bubblewrap backend, domains and ports can be
87
+ approved per command. Git hooks and config are read-only
88
+ (enforced on macOS). Stepping outside is reviewed each time — by the guardian
89
+ in Auto mode, otherwise by you; `approval_policy = "never"` skips that
90
+ review. On Windows, which has no sandbox, every command asks you instead. A
91
+ repository's own config can tighten that but never loosen it. CI fails
92
+ rather than skips if the runner cannot enforce the sandbox. See
75
93
  [`docs/config.md`](docs/config.md#sandbox).
76
94
  - **Plugin trust** — repository-provided plugins (hooks, MCP servers) never
77
95
  execute on `git clone` alone; a person must approve them, keyed to their
78
- exact contents, not their path. There's no flag to turn that gate off.
96
+ exact contents, not their path, and nothing they add can undo a denial.
97
+ There's no flag to turn that gate off.
79
98
 
80
99
  ## License
81
100
 
package/README.zh-CN.md CHANGED
@@ -2,24 +2,33 @@
2
2
 
3
3
  [English](README.md) | [架构设计](docs/architecture.md) | [配置文档](docs/config.md) | [路线图](docs/ROADMAP.md)
4
4
 
5
- **keke** 是用 Rust 编写的本地终端编码 agent,目标是零厂商锁定。
6
- **下载约 7 MB · 无外部运行时依赖 · 即开即用。**
5
+ **keke** 是本地编码 agent:约 7 MB 的原生二进制,不需要 Node 或 Python
6
+ 运行时。用你已经在付费的 ChatGPT 或 Grok 订阅登录,或任意 API Key,都在同一个工具里完成。
7
+ TUI、`keke exec` 和桌面应用(通过 ACP)共用同一个会话。
8
+
9
+ 子 agent、MCP、skills、兼容 Claude 目录结构的插件、hooks、规划模式、
10
+ 按轮次的检查点和操作系统级沙箱都已内置。
11
+ 记忆和仓库自带的插件默认关闭,直到你打开它们。
7
12
 
8
13
  [![asciicast](https://asciinema.org/a/1266474.svg)](https://asciinema.org/a/1266474)
9
14
 
10
15
  ## 为什么选择 keke?
11
16
 
12
- - **用你已经在付的账**
13
- 用 ChatGPT(Codex)或 Grok 订阅登录,或直接填入任意 API Key。不必为了试另一个模型而换供应商。
17
+ - **一个会话,所有入口。** 交互式 TUI 与面向脚本和 CI 的 `keke exec`
18
+ 共用一套会话协议。并发子 agent(有上限,子 agent 不能再派生子 agent)、后台
19
+ shell 任务,以及 `/loop`:一条稍后会再送回来的提示。规划模式可以调研并写下计划,但不能改仓库。
14
20
 
15
- - **多账户、按目录路由**
16
- 工作和私人账户各登录一次。keke 会根据当前目录自动选用对应账户。
21
+ - **用你已经在付的账。** 用 ChatGPT(Codex)或 Grok 订阅登录,或任意 API Key。
22
+ Codex、Grok、Claude、OpenAI 兼容端点、Ollama、vLLM —— Chat Completions、
23
+ Responses 或 Anthropic Messages。同一供应商可登录多个账户,按所在目录选用。
24
+ 兼容端点在 `config.toml` 里写几行即可,不必重新编译。引擎 crate 不能依赖任何厂商插件,
25
+ 违反时 CI 会直接失败([`scripts/check-layering.py`](scripts/check-layering.py))。
17
26
 
18
- - **适合脚本和 CI**
19
- `keke exec "..."` 以非交互方式跑一次性任务,可直接放进脚本和流水线。
27
+ - **默认关闭。** Skills 可以禁用。持久记忆在设定目录之前是关闭的。
28
+ 随仓库提供的 hooks 和 MCP 服务器不会因为 `git clone` 就执行(见[安全](#安全))。
20
29
 
21
- - **与厂商隔离的核心**
22
- `keke-core` 不含任何厂商特定逻辑。在 `config.toml` 里写几行,即可指向任意 OpenAI 兼容端点。
30
+ - **检查点在仓库之外。** 每一轮都把工作区快照存到仓库之外的存储里,
31
+ 回退 agent 的修改既不是 stash,也不是一次提交。
23
32
 
24
33
  ## 安装
25
34
 
@@ -64,8 +73,8 @@ Provider 路由、API Key、本地模型、网关、按目录账户及其他设
64
73
 
65
74
  ## 安全
66
75
 
67
- - **沙箱与审批** — shell 命令运行在操作系统级沙箱中(macOS 用 Seatbelt,Linux 用 Landlock + seccomp):默认只能写入工作区、不能改动 `.git`、不能访问网络;需要越过沙箱时每次都会询问你。Windows 没有沙箱,每条命令都会先询问你。仓库自带的配置只能收紧、不能放宽沙箱。详见 [`docs/config.md`](docs/config.md#sandbox)。
68
- - **插件信任** — 仓库自带的插件(hooks、MCP servers)不会仅因 `git clone` 就执行;必须由人按**内容**(而非路径)批准。没有关闭该门禁的开关。
76
+ - **沙箱与审批** — shell 命令运行在操作系统级沙箱中(macOS 用 Seatbelt,Linux 用 Landlock + seccomp):默认只能写入工作区、没有直接联网能力;macOS 上,以及 Linux 启用可选的 bubblewrap 后端时,域名和端口可按命令逐次审批;Git 的 hooks 和 config 只读(macOS 上强制)。越过沙箱时每次都会审查:Auto 模式由 guardian 审查,其他模式由你确认;`approval_policy = "never"` 会跳过审查。Windows 没有沙箱,每条命令都会先询问你。仓库自带的配置只能收紧、不能放宽沙箱。运行环境无法强制执行沙箱时,CI 会失败而不是跳过。详见 [`docs/config.md`](docs/config.md#sandbox)。
77
+ - **插件信任** — 仓库自带的插件(hooks、MCP servers)不会仅因 `git clone` 就执行;必须由人按**内容**(而非路径)批准,且它们不能把已有的拒绝改回允许。没有关闭该门禁的开关。
69
78
 
70
79
  ## 许可证
71
80
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milisp/keke",
3
- "version": "0.1.41",
3
+ "version": "0.1.43",
4
4
  "description": "keke is a multi-vendor terminal coding agent.",
5
5
  "license": "Apache-2.0",
6
6
  "bin": {
@@ -18,12 +18,12 @@
18
18
  "win32"
19
19
  ],
20
20
  "optionalDependencies": {
21
- "@milisp/keke-darwin-x64": "0.1.41",
22
- "@milisp/keke-darwin-arm64": "0.1.41",
23
- "@milisp/keke-linux-x64": "0.1.41",
24
- "@milisp/keke-linux-arm64": "0.1.41",
25
- "@milisp/keke-win32-x64": "0.1.41",
26
- "@milisp/keke-win32-arm64": "0.1.41"
21
+ "@milisp/keke-darwin-x64": "0.1.43",
22
+ "@milisp/keke-darwin-arm64": "0.1.43",
23
+ "@milisp/keke-linux-x64": "0.1.43",
24
+ "@milisp/keke-linux-arm64": "0.1.43",
25
+ "@milisp/keke-win32-x64": "0.1.43",
26
+ "@milisp/keke-win32-arm64": "0.1.43"
27
27
  },
28
28
  "repository": {
29
29
  "type": "git",