@milisp/keke 0.1.42 → 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 +23 -18
  2. package/README.zh-CN.md +11 -10
  3. package/package.json +7 -7
package/README.md CHANGED
@@ -2,19 +2,20 @@
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 coding agent: a ~7 MB native binary, no Node or Python
6
- runtime, with the agent surface — not just a chat box that runs a shell.
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.
7
9
 
8
10
  Subagents, MCP, skills, Claude-compatible plugins, hooks, plan mode,
9
- per-turn checkpoints, OS sandboxing, ACP (so a desktop app can drive the same
10
- session as the TUI), and multi-provider routing. Memory and repository plugins
11
- stay off until you turn them on.
11
+ per-turn checkpoints, and OS sandboxing are built in. Memory and repository
12
+ plugins stay off until you turn them on.
12
13
 
13
14
  [![asciicast](https://asciinema.org/a/1266474.svg)](https://asciinema.org/a/1266474)
14
15
 
15
16
  ## Why keke?
16
17
 
17
- - **A full agent, not a thin CLI.** Interactive TUI and `keke exec` for scripts
18
+ - **One session, every surface.** Interactive TUI and `keke exec` for scripts
18
19
  and CI, both on one session protocol. Concurrent subagents (bounded, and a
19
20
  child cannot spawn another), background shell tasks, and `/loop` for a prompt
20
21
  that comes back later. Plan mode can research and write a plan, not the repo.
@@ -23,15 +24,15 @@ stay off until you turn them on.
23
24
  any API key. Codex, Grok, Claude, OpenAI-compatible endpoints, Ollama, and
24
25
  vLLM — Chat Completions, Responses, or Anthropic Messages. Several accounts
25
26
  for one provider, picked by the directory you are in. A compatible endpoint
26
- is a few lines of `config.toml`; it does not require a new build, and
27
- `keke-core` has no vendor-specific code.
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)).
28
30
 
29
- - **Capable, but not on by default.** Skills can be disabled. Persistent memory
31
+ - **Off by default.** Skills can be disabled. Persistent memory
30
32
  is off until you set a directory. Hooks and MCP servers that ship with a
31
- repository do not run on `git clone`; a person approves their exact command
32
- lines, and nothing they add can undo a denial.
33
+ repository don't run on `git clone` (see [Safety](#safety)).
33
34
 
34
- - **Undo without touching your git history.** Each turn snapshots the working
35
+ - **Checkpoints outside your repo.** Each turn snapshots the working
35
36
  tree in a store outside your repository, so reverting the agent's edits is
36
37
  not a stash and not a commit.
37
38
 
@@ -81,15 +82,19 @@ all other settings are documented in [`docs/config.md`](docs/config.md).
81
82
 
82
83
  - **Sandboxing & approvals** — shell commands run under an OS sandbox
83
84
  (Seatbelt on macOS, Landlock + seccomp on Linux): by default they may write
84
- only inside the workspace, cannot touch `.git`, and cannot reach the
85
- network; stepping outside is reviewed each time (by the guardian in Auto mode,
86
- otherwise by you). On Windows, which has no
87
- sandbox, every command asks you instead. A repository's own config can
88
- 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
89
93
  [`docs/config.md`](docs/config.md#sandbox).
90
94
  - **Plugin trust** — repository-provided plugins (hooks, MCP servers) never
91
95
  execute on `git clone` alone; a person must approve them, keyed to their
92
- 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.
93
98
 
94
99
  ## License
95
100
 
package/README.zh-CN.md CHANGED
@@ -3,30 +3,31 @@
3
3
  [English](README.md) | [架构设计](docs/architecture.md) | [配置文档](docs/config.md) | [路线图](docs/ROADMAP.md)
4
4
 
5
5
  **keke** 是本地编码 agent:约 7 MB 的原生二进制,不需要 Node 或 Python
6
- 运行时,带的是完整的 agent 能力,而不只是一个能跑 shell 的聊天框。
6
+ 运行时。用你已经在付费的 ChatGPT 或 Grok 订阅登录,或任意 API Key,都在同一个工具里完成。
7
+ TUI、`keke exec` 和桌面应用(通过 ACP)共用同一个会话。
7
8
 
8
9
  子 agent、MCP、skills、兼容 Claude 目录结构的插件、hooks、规划模式、
9
- 按轮次的检查点、操作系统级沙箱、ACP(桌面应用与 TUI 走同一套会话),以及多供应商路由。
10
+ 按轮次的检查点和操作系统级沙箱都已内置。
10
11
  记忆和仓库自带的插件默认关闭,直到你打开它们。
11
12
 
12
13
  [![asciicast](https://asciinema.org/a/1266474.svg)](https://asciinema.org/a/1266474)
13
14
 
14
15
  ## 为什么选择 keke?
15
16
 
16
- - **完整的 agent,不是薄 CLI。** 交互式 TUI 与面向脚本和 CI 的 `keke exec`
17
+ - **一个会话,所有入口。** 交互式 TUI 与面向脚本和 CI 的 `keke exec`
17
18
  共用一套会话协议。并发子 agent(有上限,子 agent 不能再派生子 agent)、后台
18
19
  shell 任务,以及 `/loop`:一条稍后会再送回来的提示。规划模式可以调研并写下计划,但不能改仓库。
19
20
 
20
21
  - **用你已经在付的账。** 用 ChatGPT(Codex)或 Grok 订阅登录,或任意 API Key。
21
22
  Codex、Grok、Claude、OpenAI 兼容端点、Ollama、vLLM —— Chat Completions、
22
23
  Responses 或 Anthropic Messages。同一供应商可登录多个账户,按所在目录选用。
23
- 兼容端点在 `config.toml` 里写几行即可,不必重新编译;`keke-core` 不含厂商特定代码。
24
+ 兼容端点在 `config.toml` 里写几行即可,不必重新编译。引擎 crate 不能依赖任何厂商插件,
25
+ 违反时 CI 会直接失败([`scripts/check-layering.py`](scripts/check-layering.py))。
24
26
 
25
- - **能力在,但默认不自动启用。** Skills 可以禁用。持久记忆在设定目录之前是关闭的。
26
- 随仓库提供的 hooks 和 MCP 服务器不会因为 `git clone` 就执行;必须由人批准其确切的命令行,
27
- 而且它们不能把已有的拒绝改回允许。
27
+ - **默认关闭。** Skills 可以禁用。持久记忆在设定目录之前是关闭的。
28
+ 随仓库提供的 hooks 和 MCP 服务器不会因为 `git clone` 就执行(见[安全](#安全))。
28
29
 
29
- - **撤销,但不碰你的 git 历史。** 每一轮都把工作区快照存到仓库之外的存储里,
30
+ - **检查点在仓库之外。** 每一轮都把工作区快照存到仓库之外的存储里,
30
31
  回退 agent 的修改既不是 stash,也不是一次提交。
31
32
 
32
33
  ## 安装
@@ -72,8 +73,8 @@ Provider 路由、API Key、本地模型、网关、按目录账户及其他设
72
73
 
73
74
  ## 安全
74
75
 
75
- - **沙箱与审批** — shell 命令运行在操作系统级沙箱中(macOS 用 Seatbelt,Linux 用 Landlock + seccomp):默认只能写入工作区、不能改动 `.git`、不能访问网络;需要越过沙箱时每次都会询问你。Windows 没有沙箱,每条命令都会先询问你。仓库自带的配置只能收紧、不能放宽沙箱。详见 [`docs/config.md`](docs/config.md#sandbox)。
76
- - **插件信任** — 仓库自带的插件(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` 就执行;必须由人按**内容**(而非路径)批准,且它们不能把已有的拒绝改回允许。没有关闭该门禁的开关。
77
78
 
78
79
  ## 许可证
79
80
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milisp/keke",
3
- "version": "0.1.42",
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.42",
22
- "@milisp/keke-darwin-arm64": "0.1.42",
23
- "@milisp/keke-linux-x64": "0.1.42",
24
- "@milisp/keke-linux-arm64": "0.1.42",
25
- "@milisp/keke-win32-x64": "0.1.42",
26
- "@milisp/keke-win32-arm64": "0.1.42"
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",