Skip to content

Repository files navigation

TurnCoder

AI 每次写出一批按DAG组织的工具调用。系统按图执行,不逐条问 AI。

别的 Agent 做完一步就调模型问「接下来呢」。这里 AI 一次写出带条件分支的多步计划:「编辑这个文件;成功了跑测试;测试过了提交代码」。系统自动推进,失败时中断重规划。像 CPU 的分支预测,假设大概率成功的路径并提前安排好后续全部动作。不为每个工具调用返回单独调用一次模型确认。

打开电脑,让编程 Agent 帮忙实现一个功能。界面上它开始不停地跳,每隔几秒冒出一个命令。每次只蹦出一句话,有时连话都不说就直接调一个工具。你也不知道它到底在干什么,只看到它一直在转。打开计费日志一看:几分钟内调了几十次模型,平均每分钟五次。每次调用输入几十万 token,输出不到一百个。钱烧在哪了?

烧在重复输入上。AI 的费用主要是输入 token,每次调用都要把完整的对话上下文重新送一遍。你的总费用 = 上下文长度 × 调用次数,两者相乘。输出 token 只是零头。就算缓存命中让输入单价降到几十分之一,乘以上百次调用照样是大数字。更讽刺的是,每次输入的大头甚至不是你的对话内容,而是 Agent 框架自带的几万字系统提示词,其中不少段落存在的目的就是防着你、限制你、替你做主。

不只是贵,质量也在下降。你去看那些 Agent 的调用日志会发现,大部分回复里模型完全没有思考过程。它看到工具返回之后直接开口说话,跳过了思维链。同一道题,你直接问模型,它会认真想一想然后给你正确答案。但如果你把题目放在文件里让它读,它拿到文件内容之后往往不思考就开始回答,结果就答错了。高频循环把模型训练成了条件反射:看到结果就立刻反应,不停下来想。没有思考的操作注定低质量,容易想当然,容易幻觉,做着做着就莫名其妙搞出问题来。

这里的做法是让 AI 每次深度思考,一口气规划好接下来很多步。一次回复写出十几个工具调用,有些立即执行,有些等前序步骤成功了才自动触发。类似机器人领域的动作分块,一次输出多步动作序列。系统按 DAG 的依赖关系推进执行,不为每个中间确认重新调用模型。同样的功能别人循环两百次,这里三十次。每次都带完整思维链,每次都是深度规划而非条件反射。频率低了,质量高了,成本低了,速度反而快了。

✨ 这是什么

它看起来就是一个聊天软件。你输入文字,选一个模型,按发送,收到回复。跟你最早用 ChatGPT 网页版时一模一样的体验,唯一区别是 AI 现在能直接读你的文件、改你的代码、跑你的命令、帮你搜网页。文件内容和终端报错再也用不着手动复制粘贴了。

对话就是 Agent 的全部。上下文由气泡组成,用户消息、AI 回复、思考过程和工具结果各自是一个气泡,全部摊开在界面上。你可以编辑任何一个气泡,隐藏、概括、折叠、删除,下一次发送给模型的上下文就是当前所有可见气泡的组合。所见即所得。

🎯 为什么做这个

现有的编程 Agent 越来越像一个自作主张的黑盒。它们替用户隐藏上下文,用内部协议封装工具调用,高频自动循环。你想看 AI 实际收到了什么?得抓包。想改 AI 说过的话?功能被锁死。想让它停在某一步自己检查?框架自动串起工具调用链,轮不到你插手。

这个项目把方向反过来。

你看得到 AI 看到的一切。你改得了 AI 说过的一切。你掌握自动化的程度:可以精确到每一个工具调用都手动审批,也可以让 AI 完全自主地连续执行几十步。系统的核心操作是「发送」,一次发送等于一次 API 调用等于一份完整上下文。托管模式下 AI 自动连续发送指定步数,推荐的默认用法就是让它自己跑着,每隔几十分钟用手机看一眼进展,需要的时候介入指点一下。遇到棘手情况也可以随时切回手动模式一条一条指挥。

🧩 设计要点

透明且可编辑。 点开任何气泡就能看到那次请求的完整原始上下文。AI 的回复、工具的参数和返回值都可以直接编辑。对云端 API 来说每次请求都是无状态的,你改了什么它就信什么。AI 触发道德审查拒绝你了?直接删掉拒绝那句话,下一轮它会以为自己同意过了然后继续干活。上下文完全在你手里。

AI 只在说话,执行是另一件事。 工具调用不是 AI 的能力,是系统对 AI 输出的翻译。AI 写出一段文本,系统从中解析出工具调用,然后在本地执行。AI 写完的瞬间它的工作就结束了,剩下的事跟它无关。这意味着整个过程是回合制的,充满稳态:AI 输出完毕后你可以不执行、可以只执行一部分、可以编辑后再执行。每个工具调用是原子的,但工具调用之间系统随时可以停下来。没有跟现实时间绑定的启发式逻辑,没有隐藏的自动推进,一切等你决定。

模型自由切换。 支持 20+ 提供商。用 Claude 分析问题,下一轮换 GPT 写代码,再让 Gemini 做检查。同一对话里混用多个模型让它们互相接续,也可以对同一份上下文同时发给多个模型比较结果。切换模型就是换个下拉选项。

全量读入。 读文件就读全文。编辑之后直接把整个更新后的文件放回上下文。AI 永远在最新最完整的信息上工作,省掉了反复搜索关键词、逐段试探、在脑中拼凑差异的低效循环。

面向按次计费设计。 一次调用价格固定,跟上下文多长、AI 想多久都无关。所以每次发送尽量充实:读更多、想更久、一次做完更多事。AI 可以在一次回复里写出十几个工具调用,它们按计划串行执行,整个过程 AI 不需要介入,等全部执行完了再一次性看所有结果。经过充分思考后一口气规划的十件事,每件犯错的概率都比匆忙的高频试探低得多。加上每次网络通讯都可能等十秒才来第一个字,低频意味着这种延迟开销被摊薄到最少。频率低但每次质量高,往往以更低的总成本更快地把事情做完。深度思考模式可以让模型花更长时间推理,按次计费让这变得合算。

完全本地执行,彻底解耦。 文件在你电脑上读写,命令在你 shell 里跑,搜索用你自己的网络。工具全是本地代码实现,搜索就直接调 Google API,抓网页就用 Playwright。整个系统跟模型提供商完全解耦,换模型换提供商对项目零影响。Agent 像一个普通用户一样操作你的系统,权限隔离是操作系统层面的事,想限制它的能力就给它一个受限用户组、一个独立工作区或者一个沙箱,这由你在 OS 层面决定。

手机和语音。 前后端分离架构天然适配远程访问。后端跑在电脑或服务器上,手机浏览器打开就能操作。一次发送可以承载一大段口语化意图,天然适配第三方语音输入。你可以躺沙发上用手机语音说出需求,等 AI 跑完工具,看一眼结果,再语音下一句。

多会话并行。 每个会话有自己的历史、模型、上下文和托管状态。底部标签页切换,时间线看板观察全局进度,子会话可以把子任务委托给独立对话完成后返回。多个任务同时无人值守地推进,你每隔几十分钟巡视一圈就行,只在真正需要判断时介入。工具调用支持后台等待,AI 可以直接 sleep 几个小时,比如启动一个训练任务后每隔一小时自动检查有没有崩溃。配环境、跑实验、等安装完成这些需要漫长等待的事情,可以在你睡觉的时候由 AI 自动处理。

AI 风格过滤。 本地后处理去掉模型输出中令人窒息的套路表达,删多余标点,替换生僻词,抹平机器味。规则可定制,原始内容随时可恢复。

🆚 跟现有工具的区别

Claude Code 和 OpenCode 也在你电脑上跑,但它们本质是高频自动循环的终端 Agent,每次读几行文件就急着调模型,工具调用封在你看不到的协议里。你想看原始数据得抓包,想编辑 AI 的回复做不到。

Codex 在云端隔离环境运行,安全但受限于云端能提供的东西。

这个项目是另一种路线:完全透明的多会话工作台。AI 说的每一个字摊在气泡里,工具调用就是 AI 文本中的标记你直接看到,你决定每一步是否继续。低频深度规划取代高频碎片循环:AI 每次回复规划多步,工具按依赖关系自动推进,不为中间结果重新调用模型。你可以同时维护多个长期对话各自有模型和状态,在它们之间切换就像切换浏览器标签。

🚀 快速开始

python app.py

打开浏览器访问 http://localhost:5001

技术栈:Python / Flask / WebSocket 后端,原生 JavaScript 前端。无需 Node.js 构建,无需 Docker,无需数据库。

📱 适合谁

想要完全掌控 AI 工作过程的开发者。看清每次请求的完整上下文,自由编辑模型回复,在多个模型间随时切换,让工具在自己设备上执行,用手机远程操控 Agent,同时管理多个长期任务,让模型每次都读更多、想更久、做更完整的工作。

About

A transparent, controllable local AI coding workbench. You see and edit every bubble in the context. Turn-based, multi-model, per-call optimized, mobile-friendly.一个透明、可控的本地AI编码工作台。您可以查看并编辑上下文中的每一个气泡。支持回合制、多模型、逐次调用优化,并兼容移动设备。

Resources

Stars

14 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages