本地编码智能体 · 以 Rust 构建

你的智能体,
你的方式。

一起想清楚,也一起做出来。bingo 在你的终端里工作,用你选择的模型与工具,下一步怎么走,由你决定。

开源,也为你的改造留足空间。

bingo / dev 18e5bc6

真实的 bingo 会话,由 Ghostty WebAssembly 渲染。

真实 dev 界面 · 确定性模型响应 · 不连接真实模型或服务器终端。

左右滑动,查看完整的 80 列终端。

阅读文字记录
Read the existing code
╭──────────────────────────────────────────────────────────────────────────────╮
│ ✻ Welcome to bingo!                                                          │
│                                                                              │
│   /help for help · /login codex to use a subscription                        │
│   cwd: ~/project                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

> Trim whitespace in greet(), then run the tests.

⏺ I'll read the greeting, make the small fix, and run its tests.

⏺ Read(src/greeting.py)
  ⎿       1  def greet(name):
          2      return f"Hello, {name}!"

✻ Sketching… (esc to interrupt · 1s · ↓ 0.0k tokens)
╭──────────────────────────────────────────────────────────────────────────────╮
│ > ask anything · ⏎ steers · tab queues                                       │
╰──────────────────────────────────────────────────────────────────────────────╯
⏵⏵ acceptEdits (shift+tab to cycle)    ? for shortcuts    10k/191k · fake/fake-1

Read, edit, and test
⏺ Read(src/greeting.py)
  ⎿       1  def greet(name):
          2      return f"Hello, {name}!"

⏺ Edit(src/greeting.py)
  ⎿  --- /private/tmp/bingo-mws58eo4/project/src/greeting.py
     +++ /private/tmp/bingo-mws58eo4/project/src/greeting.py
     @@ -1,2 +1,2 @@
      def greet(name):
     -    return f"Hello, {name}!"
     +    return f"Hello, {name.strip()}!"

⏺ Bash(python3 test_greeting.py)
  ⎿  $ python3 test_greeting.py
     3 tests passed.
     [Exited with code 0]

⏺ Fixed whitespace handling. All 3 tests pass.


╭──────────────────────────────────────────────────────────────────────────────╮
│ > ask anything · / for commands · ! for shell                                │
╰──────────────────────────────────────────────────────────────────────────────╯
⏵⏵ acceptEdits (shift+tab to cycle)    ? for shortcuts    10k/191k · fake/fake-1

模型,你来选。

选择提供方,随任务切换模型。不必把整套工作方式绑定在一个选择上。

选择模型提供方

在你的工作区。

操作真实的文件,使用真实的工具。会话日志保存在本地,随时接着做。

认识终端界面

决定权,在你。

用明确的权限模式,决定智能体可以做什么,什么时候需要先问你。

设定工作边界

内核小一点,可能多一点

少一些束缚,
多一些可能。

智能体应该是你能理解的工具,而不是只能相信的黑盒。bingo 让内核保持精简,让边界始终明确。

了解内部架构
插件

模型提供方 / 工具 / Skills / MCP

内核

会话 · 回合 · 权限 · 日志

界面

终端 / 无头运行 / JSON-RPC

一条有序的事件流

一个专注的内核

会话、回合、权限和日志。只做必要的基础,不让功能在内核里不断堆积。

其余一切都是插件

模型、工具与界面通过 SDK 接入。不必 fork 整个项目,也能扩展你需要的部分。

一条流,所有界面

终端、无头任务与外部客户端读取同一条有序事件流。不维护第二份事实。

接入你习惯的工作方式

把你的工具,都带上。

留下熟悉的工具,补上需要的上下文。让 bingo 来适应你。

从终端,走进你的工作流
bingo --print "review this diff"

# machine-readable, when you need it
bingo --print "review this diff" \
  --output-format stream-json
text / json / stream-json

从这里开始

下一步,由你。

从源码构建,连接模型提供方,然后在你的项目里开启会话。

Rust 1.96+ · Git · 将 ~/.cargo/bin 加入 PATH

完整安装指南
  1. 构建

    git clone https://github.com/yexrob/bingo
    cd bingo
    cargo install --path crates/bingo --locked
  2. 连接

    bingo login codex

    通过 Codex 使用 ChatGPT 订阅,或配置 API 模型提供方。 选择模型提供方 →

  3. 开始

    cd /path/to/your-project
    bingo --provider codex

小小内核,开阔天地。

在 GitHub 查看源码