Kotonia
ログイン今すぐ始める

Kotonia Articles

一天写出一个终端原生的 creative agent — 写给被视觉优先工具一直暴打的语言型玩家

kotonia-cli,一天写完:唯一的工具是 bash,3 秒就到手的图像生成,原生驾驭 ffmpeg。Claude Code 和 Codex 从没填上的那块品类空白。个人开发者能赢过前沿大厂的唯一战场,不是模型能力,而是给语言型用户的无损 UX。

作者 5分钟阅读
#agent#cli#独立开发#creative-coding#rust#llm
其他语言日语英语

往终端里敲了三行,等了 3 秒,这张图就落到我的硬盘上了。

我一次 GUI 也没打开。没去 Midjourney,没在 ComfyUI 里搭节点图,也没去 ChatGPT 浏览器找下载按钮。只是 export 了一个 KOTONIA_API_KEY,启动 kotonia-cli,然后用日文说了一句:「做个可爱的美少女图,存成 ./bishoujo.png」。

走到这一步花了一天。我用 Rust 从零写了一个 CLI agent,把它接进自己的 /api/v1 图像生成端点,让 agent 通过 bash 发 curl,把生成的 PNG 落到 ./bishoujo.png 里。8 个 commit,31 个单元测试,大约 2,000 行 Rust。

这套东西一跑通,我立刻有个强烈的直觉:这填上了一块没人去填的品类空白。这篇文章就是把那块空白拆开来看的过程。


1. 品类空白 — code agent 和 image gen 的交集是空的

2026 年 6 月这个时间点上,面向开发者的 agent 类产品大致分成三个聚类:

聚类代表产品能做的做不到的
Code agent (CLI / IDE)Claude Code、OpenAI Codex CLI、Cursor、Aider读 / 写 / 跑代码、shell 工具、git 操作生成图像 / 音频 / 视频。做缩略图。画分镜。
Image / video gen (GUI)Midjourney、Stable Diffusion WebUI、ComfyUI、Runway视觉成果物生成,控制力丰富,质量高碰不到 shell,碰不到 git,碰不到代码。不是会话型 agent。
Chat with image (App)ChatGPT desktop、Claude desktop、Gemini app聊天 + 图像生成,GUI 为主不是 CLI,伸不进本地 shell,没法直接操作文件

GPT 阵营里的 macOS Codex 有 GUI 图像生成可用,模型绝对品质(大概率)也比我这边强。但**「终端里完结一切 × 默认捆绑图像/音频/视频生成 × 对 shell 工具无限制访问」** 这套组合打包进一个二进制里的,我没听说过。

这就是品类空白。

2. 维恩图的正中间 — kotonia-cli 落在这里

随手列一下 kotonia-cli 提供的东西:

  • 一个工具:bash。agent 可以发任意 shell 命令
  • 三档审批模式 (all / allowlist / auto),安全边界可变
  • 默认 git worktree 沙盒,--in-place 切回直接编辑
  • 双向 REPL,会话历史跨 turn 持久
  • 会话 JSONL 写到 ~/.kotonia/sessions/<id>.jsonl--resume <id> 完整恢复
  • 多 provider (V4-Flash 本地 / Gemma 4 26B 本地 / DeepSeek API / 后续扩充)
  • 一旦 export 了 KOTONIA_API_KEY,自家 /api/v1 的图像/音频/视频生成端点自动公布到 agent 的 system prompt 里

最后这条,是把 kotonia-cli 推到上面三个聚类之外的关键。

作为 code agent 它能完整碰到 bash、git、cargo、pytest、npm。但 code agent 通常不带的「图像 / 音频 / 视频生成」入口也默认打开。也没有 GUI image gen 那种「拼节点图」的成本,自然语言指令被 agent 翻译成 curl + JSON body。

附注:「Claude Code 为啥不做图像生成?」对 Anthropic 来说这是合理的取舍。他们的算力以 GPU 为中心,捆绑图像生成会让价格模型变形。他们不会进的领域,恰好是个人开发者能拿到防御性壁垒的地方。

3. 语言优先 vs 视觉优先 — 工具的认知税

现有的视频编辑工具、图像编辑工具、设计工具,理所当然地为视觉思维者优化。抓住时间轴,堆图层,画贝塞尔曲线,用鼠标推像素。对视觉思考的人来说,这是非常自然的交互模型。

但世上有一拨数量不小的语言优先玩家。他们写、解释、争论、设计、写代码。输入输出都是文本。工程师、作者、PM、研究者、编辑、创业者 — 大量知识工作者落在这边。

这些人时不时也要做视觉成果。写完文章要做缩略图。视频生成要先打分镜。PPT 要插图。产品要做 logo 原型。

这种时候,等着语言优先玩家的是什么?

是 Premiere 那种三层时间轴用眼睛追、加轨道数、为淡入打两个 keyframe 再调贝塞尔曲线的模式;是 Unreal Engine 的 Blueprint,是 Unity 的 Visual Scripting,那种把逻辑用线和节点拼起来的 UI。对视觉系来说自然,对语言型大脑来说就是「把自己的脑子交给敌对界面」的酷刑。

实质上发生的是 模式切换税。从写代码用的语言模式,被强行切到工具要求的视觉模式。一个任务里要切很多次。脑子的资源不是流到创造里,是流到「迎合工具」里。

我今天写出来的这个 kotonia-cli,把这种税降到接近零。

  • 输入是自然语言:「不要猫,换成美少女,再来一遍。」「裁成 30 秒竖屏,加个淡入,把字幕『试过但失败了』烧成黄色。」
  • 输出是 workspace 里的文件./bishoujo.png./short.mp4./narration.wav
  • 没有模式切换:不离开终端、不打开 GUI、不去浏览器

在本地 shell 里待着,用语言去构思、用语言去指示、唯一以视觉出现的是结果这是从结构上降低创作者的认知负载。社会意义上我也认为很大:那些因为「切不过去视觉模式」而放弃了的人 — 想给规格说明配图的研究者、需要做缩略图的博主、想给邮件附音频的非工程师 — 现在能从纯文本生产出视觉成果。

4. ffmpeg 原生作为乘数

只是加了图像生成的话别家也能追。kotonia-cli 真正的差异化,是 agent 能像处理任何 shell 命令那样自然地在终端里驾驭 ffmpeg

举个例子,「裁成 30 秒竖屏视频,开头加淡入,烧上黄色字幕『试过但失败了』」会被展开成这样的链路:

  1. POST /api/v1/videos/generations 通过 curl 调用 (LTX-2、768×512、异步 job)
  2. 轮询等完成
  3. 下载
  4. ffmpeg -i in.mp4 -vf "fade=in:0:30,drawtext=...:fontcolor=yellow" out.mp4
  5. ./final.mp4 落到 workspace

agent 一个 turn 内把整条链拼出来。用户那边的键盘成本:一行 prompt。中间的 curl 也好、ffmpeg 滤镜表达式也好,全是 agent 写的。不满意?下个 turn 说「淡入再快一点」,agent 替换掉只是 ffmpeg 那一步、复跑同一个文件。

这就把 「素材生成 + 编辑」变成连续体。通常素材生成 (DALL-E / Midjourney) 和编辑 (Premiere / DaVinci) 是分开的工具,中间夹着下载 → 上传 → 时间轴放置的迁移。kotonia-cli 把这一切压缩进 shell 里的一段对话。

ffmpeg 是全球视频/音频处理的瑞士军刀,命令体系 100% 是文本,跟 agent 的契合度极高。「agent 用自然语言驾驭 ffmpeg」这个体验,默认装进一个 CLI 里发布的,我(再次说一遍)在别处没见过。

5. 怎么做的

作为 Rust 写的 CLI agent,内部其实简洁。infrastructure/execution/host.rs 负责 bash 执行,application/kotonia_agent/ 目录下放 agent loop、审批、worktree、parser、history、provider。

  • agent loop:基于分隔符。LLM 吐 <<<BASH>>>...<<<END_BASH>>><<<FINAL_ANSWER>>>...<<<END_FINAL_ANSWER>>>。原生 tool calling 是将来的事(在等 V4-Flash 的 chat_template 完善 — V4-Flash 在家本地跑的来龙去脉写在了 16 个核心久违地全力嘶吼的那天),但分隔符方案在任意 OpenAI 兼容 backend 上都能工作。
  • 审批模型:三档可选。auto 是无人值守,allowlist 是 read-only / build / test 系列自动放行,破坏性操作 (rm -rf / git push --force) 等审批,all 是全部命令都要审批。新手用 all,作者自己用 auto,同一个 CLI 同时覆盖两边。
  • 默认 worktreegit worktree add /tmp/kotonia-agent-<uuid> 隔离开。出事不会动到主 checkout。--in-place 也支持直接编辑 cwd。
  • 会话 JSONL~/.kotonia/sessions/<id>.jsonl 写入元数据 + 全部消息 + bash 观测 + turn 标记。--resume <id> 完整回放。长会话快撞 context 上限之前,可以分进程接着跑。

然后是这篇文章的主角,/api/v1 的 B1 集成

# 只要 export 这个 key,agent 的 system prompt 自动多出这四个端点。
# 用户那边一行代码都不用改。
export KOTONIA_API_KEY=kotonia_xxxx
kotonia-cli "做个可爱的美少女图,存成 ./bishoujo.png"

实现 30 行。kotonia 那边 /api/v1/{images,audio,videos}/generations 的 curl 调用 shape,被作为「教学样例」追加到 system prompt 的末尾。把 tool calling 改成原生 (B2 方案) 要 200 行,但走 bash 通道 30 行就到同样的 capability density。agent 把 jq | base64 -d > ./out.png 拼出来是 LLM 的标配能力,相信这点,集成就能保持这么轻。

图像生成本身的底层 (HiDream-O1-Image 以 8bit fp 常驻、写实系 LoRA + 3-stage caption 把质量拉上去的过程) 写在了 用 3-stage caption 打破 under-fit 天花板。开头那张 bishoujo.png 的品质,是这层基础在撑。

(仓库现在是闭源的;CLI 部分会单独切出来做独立 OSS。准备好了另外宣告。)

6. 战略含义 — 个人开发者能侧翼 Anthropic / OpenAI 的唯一战场

像我开头说的,code agent 市场被 Claude Code / OpenAI Codex 压制着。比模型性能,个人开发者没希望。比基础设施规模的价格也不可能 (DeepSeek API ~$0.27/M tokens,本地 GPU 自托管同一个调用是 200 倍成本)。「我能在本地跑 V4-Flash 那就出自己的 API 卖」这条路是陷阱,我让 Fable 5 对这套战略做敌对评审,被指出了四个洞 — 写在了另一篇 (AI 让我「别再写技术文章了」的那件事)。

那剩下能拼的是什么?「给语言优先用户的无损 UX」 是前沿大厂从结构上不会优先做的领域。他们的主收入源 (B2B 开发者 API) 面向的是已经活在 code IDE 或 GUI 里的用户 — Claude 通过 Cursor、GPT 通过 VSCode 插件、图像生成通过 ChatGPT 浏览器。外面已经默认有 GUI 的前提下,磨「用自然语言在 CLI 里完结一切」的体验的动力就不强。

从个人开发者这边看,这块空缺正好能磨成 「在 CLI 里完结的 creative agent」。差异化轴:

  1. CLI completeness:一次 GUI 都不用开
  2. 生成工具捆绑:图像 / 音频 / 视频默认带,不用额外注册 (一把钥匙全覆盖)
  3. ffmpeg multiplier:素材生成 + 编辑在同一个 shell 内是连续体
  4. 语言优先用户契合:脑子不用交给视觉模式,纯文本完结
  5. 本地 shell 自由度:agent 能跑 cargo build / git fetch / curl / ffmpeg / 任何东西;没有 E2B 那种隔离沙盒的限制

把这一套作为一个 CLI 端出来,正在用 Claude Code 的语言优先用户 (= 选了「不离开终端」工作流的人 ≒ 用户群里相当大的一块) 不再需要为了缩略图或者分镜而单独打开别的工具

顺便说一下,「个人开发者从 compound knowledge 起飞」这种感觉最近在另一个语境里也写成了文章 (个人开发者的累积资产第一次开始复利的那一天)。kotonia-cli 一天能完成,本质上是同样的结构续集 — 过去几个月的 memory / 设计决策 / 已有 /api/v1 通过 agent 第一次被全部 leverage 了。

社会影响层面我也认真觉得很大。那些因为「切不过去视觉模式」而搁置的创造力,现在能从纯文本翻译成视觉成果。

7. 接下来要做的

  • 在 kotonia 这边加 /api/v1/chat/completions — 这样用户不需要单独的 DeepSeek API 鉴权。一把 kotonia key 把 agent loop 的 LLM 那一段也一起包了。打算把 Gemma 4 26B Uncensored (爆速 + 高并发;Agentic Index 11 中等,但通用效率任务完全在包络里) 做成 OpenAI 兼容的多路复用。
  • system prompt 加 ffmpeg 例子 — agent 能用一行 prompt 处理「加淡入」「烧字幕」「混 BGM」之类的事。
  • 分发形态 — 现在只能从仓库 build。cargo install 和 GitHub Releases 二进制分发是下一步,从 Linux x86_64 起,macOS / Windows 等 CI 完善后再开。
  • 逆向反哺 /chat/studio — 把 CLI 这边磨好的 agent loop 反过来填到 Web 端。Web 那边同样做「无损 UX」的经验,跟之前把语音 LLM 延迟从 600ms 压到 22ms (voice-first-local-llm) 的延伸来想。「选了 X-first 就把其他所有屏幕/层都按这个砍掉」的设计原则,creative-cli 同样适用。

看上去这篇文章只是生成了一张 bishoujo.png。但我觉得未来半年里 「把『语言 ↔ 视觉』之间的转换成本压到多接近零」 会直接成为个人开发者的核心产品命题。这个确信今天一天里成型,所以想把它留下来。

Kotonia 将语音 AI、AI 聊天、图像生成和团队协作整合到一个 AI 工作区中。

试用 Kotonia