AB
AiBoss站
project

uncut - 无界面、无损上下文的轻量编码代理执行器

uncut 是 Balanov 维护的 MIT 许可编码代理执行器,以单个静态二进制、四个工具和纯 stdin/stdout 运行,面向 shell 管道、CI 任务与容器场景。项目自述不做上下文压缩、不截断文件与命令输出,也不提供 TUI 与遥测。

uncut 是一个无界面(headless)的编码代理执行器(coding agent harness),由 Balanov 维护,采用 MIT 许可证。它的定位很明确:不做终端界面,不做遥测,也不在背后悄悄裁剪上下文,而是把一次编码代理会话压缩成「一个二进制 + 四个工具 + 纯 stdin/stdout」。据项目自述,它适合放进 shell 管道、CI 任务、容器以及代理行为实验中,也适合想读完整实现、甚至直接 fork 改造的开发者。

维护者与状态

项目仓库为 Balanov/uncut,维护者是 Balanov。仓库创建于 2026-11-01,最后一次提交在 2026-11-02,最新正式版本为 v0.1.1,发布于 2026-11-01。截至 2026-11-02,仓库星标数为 241。从时间线看,这是一个非常年轻的项目,版本号仍处于 0.1.x 阶段,接口与行为在后续版本中发生变化的可能性需要使用者自行评估。

主要能力

以下能力均来自项目 README 的自述,属于维护者的描述而非第三方评测结论。

  • 默认无损。 项目称不对提示词、已存消息、文件内容和命令输出做截断、摘要、剪枝或滑动窗口处理;每次模型调用都会发送完整对话。当提供方因输出上限截断响应时,uncut 以错误退出,而不是把半截答案当作成功结果。
  • 仅无界面模式。 最终文本输出到 stdout;加上 --json 后改为输出结构化的 NDJSON 事件流,包含 user、assistant、assistant_meta、tool 以及最后的 done 或 error 记录。
  • 体积小、可移植。 据项目说明,它是一个静态链接的 Go 二进制,无需运行时,也没有第三方 Go 依赖;README 称其为约 7 MB 的单个静态二进制。
  • 提供方中立。 支持 OpenAI 兼容的 Chat Completions 端点,包括本地服务;项目称曾用本地 Ollama 上的 qwen3:8b 做过冒烟测试。
  • 可续接会话。 可选的追加式 JSONL 会话文件会保留每条消息与工具结果,新消息在每一步后追加并同步;遇到无效或不完整记录时显式报错,而不是丢弃记录强行加载。
  • 易于 fork。 README 称实现约为 837 行 Go 代码,包含四个工具、一种提供方协议和一个代理循环。

四个内置工具分别是:read_file 读取完整 UTF-8 文本文件;write_file 写入完整文件内容并创建父目录;replace 精确替换一处匹配,零处或多处匹配都会失败;run_command 返回退出码与完整的 stdout/stderr 合并输出。文件路径必须位于工作区内。

使用入口

仓库地址:Balanov/uncut。

据 README,安装方式包括从 release 下载对应平台的二进制(Linux、macOS、Windows,amd64 与 arm64),或用 Go 1.26+ 执行 go install github.com/Balanov/uncut/cmd/uncut@latest,也可以克隆仓库后本地构建。基本用法是设置 UNCUT_API_KEY 与 UNCUT_MODEL,再以提示词作为参数运行:

export UNCUT_API_KEY="your-api-key"
export UNCUT_MODEL="your-model-id"
uncut "Inspect this repository and fix the failing tests"

使用 OpenAI 兼容服务时还需设置 UNCUT_BASE_URL。它也可以直接接入 Unix 管道,例如把 git diff 或测试日志通过 stdin 传入,管道内容会原样追加到提示词后。常用参数包括 --cwd、--session、--max-steps(默认 32)、--max-tokens、--request-timeout(默认 10 分钟)、--no-agents 与 --json。工作区根目录下的 AGENTS.md 会被完整读入并加入系统提示。

许可与限制

许可证为 MIT。项目自述的已知限制与边界包括:

  • 不是沙箱。 README 明确写道,模型可以以当前操作系统用户的权限执行 shell 命令,文件工具的工作区检查并不能约束 shell 命令能访问什么;不建议在未隔离的环境中运行不可信任务。
  • 不扩展上下文窗口。 「无损」指 uncut 自身不截断、不摘要、不改写合法的 UTF-8 内容,但它无法控制提供方一侧的处理;超出上下文或输出上限时,提供方可能拒绝或截断,uncut 会把这种失败暴露出来。
  • 仅文本与工具调用。 使用非流式 Chat Completions,不支持图像;二进制文件和非法 UTF-8 会被显式拒绝。
  • 平台差异。 部分 Windows 工具可能输出 UTF-16 或代码页编码,uncut 会拒绝而非猜测转换,建议让命令输出 UTF-8。
  • 会话文件可能含敏感内容。 会话中可能包含源码、命令输出与密钥,需要妥善存放,避免误提交。
  • 二进制尚未代码签名。 SmartScreen 或 Gatekeeper 可能告警,README 建议先校验 SHA-256 校验和。

此外,项目没有审批弹窗、自动提交、自动重试或隐藏的恢复循环,退出码用于区分成功、提供方或 I/O 错误、命令行用法错误、输出被截断以及达到步数上限等情形。README 还提供了一个基于 Python 3 的验证脚本,用于检查无损传输、会话续接、编辑、截断失败与非法 UTF-8 处理等行为;项目说明这些是传输层测试,不是模型质量基准。