Repository navigation
Releases: tyreseluo/OctoBuddy
Release list
OctoBuddy v0.3.2
OctoBuddy 0.3.2 puts the lifecycle under the flow graph, makes the disk map draw and answer the pointer properly, and builds on OctoSense's current main.
Download
- Macs with Apple silicon (M1 and later):
OctoBuddy-0.3.2-macos-aarch64.dmg. - Intel Macs:
OctoBuddy-0.3.2-macos-x86_64.dmg(built on Apple silicon; opened under Rosetta, not yet on an Intel Mac).
Each has its .sha256 beside it. Open the DMG and drag OctoBuddy to Applications (replace the earlier one).
The first time you open it. It is not notarized by Apple yet, so macOS stops it the first time. Open it once, then go to System Settings › Privacy & Security and choose Open Anyway. Or, in a terminal:
xattr -dr com.apple.quarantine /Applications/OctoBuddy.appChanged
- The lifecycle panel lives in the Flow view, under the graph, instead of a view of its own. Drag the line between them for more room (double-click for the default) or fold the panel to its title row. They follow each other: open an inner loop's card and the state machine lights its slice's path; click a slice in the panel and its card lights on the graph.
- OctoSense is pinned at its current main (
ffd5e488); Makepad (d653bc4) and App Hub (3863591) stay where OctoSense's main pins them.
Fixed
- The disk map showed names but no tiles, and a tile under the pointer was not the one picked when the window was scrolled: the treemap is drawn as plain quads, shaded by depth with each directory's title strip darker, names cut to fit; it is laid out again when its size changes; the pointer is taken in the canvas's own coordinates.
- Worktrees could not be picked on the disk map: their folder is found by the project's id (it was looked for by its path and folder name). An inner loop's disk tools scan the project, not its own worktree.
- The growth line's time read as a day count since 1970; it says how long ago.
- The state machine's shapes slid away from their labels once under the graph; they are drawn as quads too. A pan or zoom is kept when the same slices are passed again, and a click is taken where it shows.
- A test that every widget the code looks up is in the DSL misread names ending in a digit.
Needs
- macOS 11 or later.
git, to fetch the app templates.- For pi: Node.js and npm.
- To check and submit an app: App Hub's
hubandcard-hostbuilt (OCTOSENSE_APP_HUB), and GitHub'sgh, signed in.
Not yet
- Keeping an inner loop out of other projects' sources: Codex, pi and Claude Code read the whole disk; OctoBuddy asks them not to, and tells them when they go round in circles.
- A claim OctoBuddy has no fact for stays a ?: it does not run commands an inner loop names that are not the slice's check.
- Linux and Windows; a notarized build.
中文
OctoBuddy 0.3.2 把生命周期放到了流程图下面,修好了磁盘地图的绘制和指针命中,并跟上 OctoSense 当前的 main。
下载:
- Apple 芯片(M1 及以后)的 Mac:
OctoBuddy-0.3.2-macos-aarch64.dmg。 - Intel Mac:
OctoBuddy-0.3.2-macos-x86_64.dmg(在 Apple 芯片上构建;在 Rosetta 下打开过,还没在 Intel Mac 上跑过)。
打开 DMG,把 OctoBuddy 拖进「应用程序」,替换旧版即可。第一次打开时,到「系统设置 › 隐私与安全性」点「仍要打开」,或者运行上面那条 xattr 命令。
变更:
- 生命周期面板放进流程图页:在流程图下方,不再单独占一个视图。拖动两块之间的分隔线可以调整高度(双击恢复默认),也可以把面板收起成一行标题。两边互相联动:打开内环卡片,状态机高亮这个切片走过的路径;在面板里单击切片,流程图里它的卡片会亮起来。
- OctoSense 改钉它当前的 main(
ffd5e488);makepad(d653bc4)和 App Hub(3863591)与 OctoSense main 所钉一致,不变。
修复:
- 磁盘地图只有名字、没有色块,窗口滚动后指针下的格子也不是被选中的那个:treemap 改用普通色块绘制,按层级区分明暗、目录标题条更暗,名字按格宽截断;尺寸变化时重新排布;指针按画布自己的坐标换算。
- 磁盘地图点不了「工作树」:worktree 目录改按项目 id 查找(原来按路径和文件夹名找)。内环调用磁盘工具时扫整个项目,而不是它自己的 worktree。
- 「增长」里的时间显示成自 1970 年起的天数,改为「几分钟前」。
- 状态机的图形放进流程图页后和文字错开:同样改用色块绘制。同一组切片再次刷新时保留拖动和缩放,点击按显示位置换算。
- 检查「代码用到的每个控件都在界面定义里」的测试,把名字以数字结尾的控件误判为缺失。
需要:
- macOS 11 或更高。
- 拉取应用模板需要
git。 - 用 pi 需要 Node.js 和 npm。
- 检查和提交应用,需要编好 App Hub 的
hub和card-host(OCTOSENSE_APP_HUB),并装好 GitHub 的gh且已登录。
还没有:
- 不让 inner 去读别的项目的源码:Codex、pi 和 Claude Code 能读整个磁盘。目前 OctoBuddy 只能劝阻,并在它反复读同一段时提醒它。
- OctoBuddy 拿不到事实的声明一律是 ?:它不会去跑 inner 提到的、但不是这个切片检查的命令。
- Linux 和 Windows 的版本;经过公证的版本。
OctoBuddy v0.3.1
OctoBuddy 0.3.1 shows where the work stands and what it left behind, and sees the disk it fills. A lifecycle view draws each slice's way through its states and the project's documents from the first request on; a disk map shows what fills a project and its agents' worktrees, round after round. Agents get tools for both, and OctoBuddy can report to a hagency room.
Download
- Macs with Apple silicon (M1 and later):
OctoBuddy-0.3.1-macos-aarch64.dmg. - Intel Macs:
OctoBuddy-0.3.1-macos-x86_64.dmg(built on Apple silicon; opened under Rosetta, not yet on an Intel Mac).
Each has its .sha256 beside it. Open the DMG and drag OctoBuddy to Applications (replace the earlier one).
The first time you open it. It is not notarized by Apple yet, so macOS stops it the first time. Open it once, then go to System Settings › Privacy & Security and choose Open Anyway. Or, in a terminal:
xattr -dr com.apple.quarantine /Applications/OctoBuddy.appNew
- The lifecycle view: state machine and doc stream.
- The state machine draws every slice's path: waiting for its wave, running, reported, checked, accepted, landed, and the ways out (sent back, failed, stopped, over budget, discarded). Each node shows how many slices are there now, each edge how often it was taken: rework is the count on sent back.
- The doc stream lines up, round by round, the request, the plan, each slice's brief, its report, OctoBuddy's check, the outer loop's review, the acceptance sheet and the receipts, and the Markdown the agents wrote or changed in the repository, each version of a document as v1, v2… to read side by side.
- OctoBuddy keeps
<project>/.octobuddy/living/LIVING.md, the project's story from its first round, up to date in the background. - A new agent tool,
octobuddy_docs, lets the outer and inner loops look up earlier audits, designs and decisions instead of working them out again.
- The disk map plugin, on tobi/disktree's
disktree-core(MIT): a treemap of the project (or of the worktrees OctoBuddy made for its inner loops) by kind of data, what can be had back (build output, agent scratch) and what is worth a look. A snapshot is taken after OctoBuddy commits a slice's files (at most every 5 minutes), so it shows how the disk grew round by round. Ask the outer loop puts a question about the picked tile in the composer. Three read-only agent tools,octobuddy_disk_map,octobuddy_disk_growthandoctobuddy_disk_reclaim: they suggest how to clear space, never delete. - Reporting to a hagency room. A project can be linked to a Matrix room: a sheet made or accepted, a silent loop, a Live incident, a review request and a publish or submission read back are posted once each. A coordinator on the list can reply
accept round N(验收 第 N 轮) to confirm a sheet, the same as the button (checked against the project first). Room text never reaches an agent; the token comes from the keychain orOCTOBUDDY_MATRIX_TOKENonly. - Error codes from App Hub's gate. When
hub checknames a stable code and a one-line fix (proposed upstream in OctoSense-App-Hub#219), OctoBuddy hands the agent that fix; older tools fall back to its own hints. - A real-agent benchmark (
bench_real_inner_loops, ignored by default): real inner loops on three small tasks, then OctoBuddy's own commit, check, claims and gate. Results indocs/evidence/bench/.
Fixed
- A file with unstaged changes listed first by
git statuslost its first letter (calc.pyread asalc.py), so a slice could be accused of changing files outside its card.
Needs
- macOS 11 or later.
git, to fetch the app templates.- For pi: Node.js and npm.
- To check and submit an app: App Hub's
hubandcard-hostbuilt (OCTOSENSE_APP_HUB), and GitHub'sgh, signed in.
Not yet
- Keeping an inner loop out of other projects' sources: Codex, pi and Claude Code read the whole disk; OctoBuddy asks them not to, and tells them when they go round in circles.
- A claim OctoBuddy has no fact for stays a ?: it does not run commands an inner loop names that are not the slice's check.
- Linux and Windows; a notarized build.
中文
OctoBuddy 0.3.1 让工作走到了哪、留下了什么都看得见,也看得见它把磁盘用成了什么样。生命周期视图画出每个切片走过的状态,以及项目从第一条需求起的全部文档;磁盘地图显示项目和 agent 的 worktree 被什么占满、每一轮之后长了多少。两者都给了 agent 工具;OctoBuddy 还能向 hagency 房间汇报。
下载:
- Apple 芯片(M1 及以后)的 Mac:
OctoBuddy-0.3.1-macos-aarch64.dmg。 - Intel Mac:
OctoBuddy-0.3.1-macos-x86_64.dmg(在 Apple 芯片上构建;在 Rosetta 下打开过,还没在 Intel Mac 上跑过)。
打开 DMG,把 OctoBuddy 拖进「应用程序」,替换旧版即可。第一次打开时,到「系统设置 › 隐私与安全性」点「仍要打开」,或者运行上面那条 xattr 命令。
新增:
- 生命周期视图:状态机与文档流。
- 状态机画出每个切片的路径:等前一波、进行中、已报告、已检查、已接受、已合入,以及各种出口(打回修改、失败、停止、超预算、丢弃)。节点上是现在处在这里的切片数,边上是走过的次数:「打回修改」上的数字就是返工次数。
- 文档流按轮次排出需求、计划、每个切片的任务书、报告、OctoBuddy 的检查、外环审核、验收单和回执,以及 agent 在仓库里写或改的 Markdown;同一份文档的每个版本记为 v1、v2…,可以切换对照。
- OctoBuddy 在后台维护
<项目>/.octobuddy/living/LIVING.md:项目从第一轮到现在的故事。 - 新的 agent 工具
octobuddy_docs:外环和内环先查已有的审计、设计和决定,不用重新推一遍。
- 磁盘地图插件(基于 tobi/disktree 的
disktree-core,MIT):把项目(或 OctoBuddy 为内环开的 worktree)画成 treemap,按数据种类着色,标出可回收的空间(构建产物、agent 临时目录)和值得一看的大目录。OctoBuddy 每提交一次切片的改动就拍一次快照(至少间隔 5 分钟),看得到每一轮之后磁盘怎么增长。「问外环」把选中格子的问题填进输入框。三个只读 agent 工具octobuddy_disk_map、octobuddy_disk_growth、octobuddy_disk_reclaim:只建议怎么清理,从不替人删除。 - 向 hagency 房间汇报:项目可以关联一个 Matrix 房间。验收单做好或被验收、环无动静、Live 事故、审核请求、发布 / 提交的读回结果各发一次。名单里的协调人回复「验收 第 N 轮」(
accept round N)即可确认验收单,和按钮一样(确认前先核对项目没变)。房间里的文字不会交给 agent;令牌只从钥匙串或OCTOBUDDY_MATRIX_TOKEN读取。 - App Hub 准入检查的错误码:
hub check给出稳定错误码和一行修法时(已向上游提 OctoSense-App-Hub#219),OctoBuddy 直接把修法交给 agent;旧版工具退回原有提示。 - 真实 agent 基准(
bench_real_inner_loops,默认不运行):真实内环做三道小题,再走 OctoBuddy 自己的提交、检查、声明核对和验收闸。结果在docs/evidence/bench/。
修复:
git status里排第一个的未暂存文件会少掉首字母(calc.py读成alc.py),切片可能被误判改了任务卡以外的文件。
需要:
- macOS 11 或更高。
- 拉取应用模板需要
git。 - 用 pi 需要 Node.js 和 npm。
- 检查和提交应用,需要编好 App Hub 的
hub和card-host(OCTOSENSE_APP_HUB),并装好 GitHub 的gh且已登录。
还没有:
- 不让 inner 去读别的项目的源码:Codex、pi 和 Claude Code 能读整个磁盘。目前 OctoBuddy 只能劝阻,并在它反复读同一段时提醒它。
- OctoBuddy 拿不到事实的声明一律是 ?:它不会去跑 inner 提到的、但不是这个切片检查的命令。
- Linux 和 Windows 的版本;经过公证的版本。
OctoBuddy v0.3.0
OctoBuddy 0.3.0 stops taking the agents' word for it, and hands the person a sheet to accept. An inner loop's report is held against OctoBuddy's own run of its check, its commit and its files; the outer loop cannot accept work those findings say no to without an override the person sees; and every commit, publish and submission leaves a receipt that is read back. Text from anyone other than the person reaches the agents as data, never as instructions.
Download
- Macs with Apple silicon (M1 and later):
OctoBuddy-0.3.0-macos-aarch64.dmg. - Intel Macs:
OctoBuddy-0.3.0-macos-x86_64.dmg(built on Apple silicon; opened under Rosetta, not yet on an Intel Mac).
Each has its .sha256 beside it. Open the DMG and drag OctoBuddy to Applications (replace the earlier one).
The first time you open it. It is not notarized by Apple yet, so macOS stops it the first time. Open it once, then go to System Settings › Privacy & Security and choose Open Anyway. Or, in a terminal:
xattr -dr com.apple.quarantine /Applications/OctoBuddy.appNew
-
A report against the facts. An inner loop's
verified:line names what it ran (in backticks). OctoBuddy holds each claim against its own run of the slice's check, the commit it made and the files, and marks it ✓ (the facts bear it out), ✗ (they contradict it: "the tests pass" when OctoBuddy's run of that check failed, a file "changed" that is as it was, a file "deleted" that is still there) or ? (OctoBuddy did not run that: the agent's own word). The[claims]lines go to the outer loop with the report; a report with a ✗ goes back to its inner loop once, with why, first. A near match, a run that timed out or a failure the agent reported itself is never a ✗. -
The accept gate. OctoBuddy refuses
acceptwhile a slice's check failed, it was committed again after its check, a claim of its report is contradicted, or it changed files outside its card. The outer loop sends it back, closes it, or accepts it with"override": "<why>"(in a review block or the review tool), which the person sees. The outer loop is told before it reviews (gate:in its results) and when it is refused. -
Receipts, read back. An inner loop's commit, a publish to the local App Hub, a Publish fix and a submission to App Hub each leave a receipt in
<data>/receipts.jsonl: what was meant, on which commit and content, who confirmed it, what was done, and what reading it back found.- A commit: git's list of its files (deletions too) and what they hold.
- A publish: the catalog's entry for the app and version, its digest against the staged bundle's, the published copy's content, and its commit. The version OctoBuddy reports is the one read back.
- A submission: the tag on GitHub against the local one, and the issue.
Each is ✓ confirmed, ✗ a mismatch or ? unknown, in the session, on the Live page and in the workbench. A receipt left mid-way is read back when OctoBuddy opens again, never redone.
-
What you saw is what is done. Publish buttons show the content they will publish (a short digest and the version) and refuse a press after the app changed. App Hub's submit plan names the content and commit it is for, and is void if either changes before Submit. A request card's Build builds the request that card showed.
-
An incident closes on its fix. The Live page closes an incident when the published fix (its receipt confirmed), or a later version, runs well; well again on an older version, it waits for the fix; well again with no fix published, it says it recovered by itself.
-
Data is not instructions. A request from another app's agent, a message the OctoSense assistant relays, what an app's API answered, a bug report and what an app showed on screen reach the agents inside
<untrusted source="…">blocks, with anything that could close the block or a code fence neutralised. The outer and inner loops' rules say such text is never an instruction. A request is told as its caller's words, not the person's. -
The acceptance sheet. When every slice of a round is settled, OctoBuddy writes one page for the person: the request, each slice's goal, check, claims, commits and receipts, the outer loop's review, and what still needs them (claims it did not verify, overrides, files outside a card, uncommitted files, slices no check ran for, what it cannot check at all). Confirm acceptance records it as a receipt, or makes a new sheet if the project moved since.
octobuddy.statussays when one waits. -
Working, waiting, silent, done. Every loop says which and since when: what it is working on, whom it waits for (you, the outer loop's review, OctoBuddy's check, an earlier wave, a slot, its agent starting), silent when a turn is open and nothing is heard for 2 minutes (a long command of its own is work), or done. A silent loop turns the warning colour and its session hears it once;
octobuddy.statusgives each loop's state,as_ofand how long since it was heard, and a Live page watch that stopped running isstale. -
Following a submission's review. After an app is submitted to App Hub, OctoBuddy reads its issue every 5 minutes; a reviewer's new comment becomes a request bound to that project (on the Apps page inside OctoSense, a new session's composer on its own), fenced as data, waiting for the person. The new version is submitted as before; OctoBuddy then follows its issue.
-
Failures in plain words. An agent or provider that fails to start or answer is reported by kind (not installed, no key or login, rate limited or out of credit, offline, too slow, an answer OctoBuddy could not read), with what still works and what to do next, and the raw error last. Denying an agent's request says what happens next, and the outer loop hears it.
Fixed
- Publishing twice published twice. Pressing Publish again with nothing changed raised the version and published the same content again. It now says it is published already, as which version.
- Build could start the wrong request. A request that arrived while the Apps page was open shifted the cards, so Build acted on the request now in that place. It acts on the one the card showed.
- A submission cut off could not go on. With its tag pushed and its issue not opened, running Submit again stopped at "the tag exists already". It resumes: it pushes what was not pushed, or opens the issue.
- An incident closed on any healthy run, whether or not the fix was what ran.
Changed
- Makepad, App Hub and OctoSense are pinned at the revisions OctoSense's main pins now (Makepad
d653bc4, App Hub3863591, OctoSenseb9d66d0f), so OctoSense builds OctoBuddy with one App Hub.
Needs
- macOS 11 or later.
git, to fetch the app templates.- For pi: Node.js and npm.
- To check and submit an app: App Hub's
hubandcard-hostbuilt (OCTOSENSE_APP_HUB), and GitHub'sgh, signed in.
Not yet
- Keeping an inner loop out of other projects' sources: Codex, pi and Claude Code read the whole disk; OctoBuddy asks them not to, and tells them when they go round in circles.
- A claim OctoBuddy has no fact for stays a ?: it does not run commands an inner loop names that are not the slice's check.
- Linux and Windows; a notarized build.
中文
OctoBuddy 0.3.0 不再只听 agent 怎么说。inner 的汇报要对照 OctoBuddy 自己跑的检查、它做的提交和文件;这些核对说「不行」的工作,外环不写明理由(用户看得到)就验收不了;每一次提交、发布和提交审核都留回执并读回核对。来自用户以外的文字,都当作资料交给 agent,而不是指令。
下载:
- Apple 芯片(M1 及以后)的 Mac:
OctoBuddy-0.3.0-macos-aarch64.dmg。 - Intel Mac:
OctoBuddy-0.3.0-macos-x86_64.dmg(在 Apple 芯片上构建;在 Rosetta 下打开过,还没在 Intel Mac 上跑过)。
打开 DMG,把 OctoBuddy 拖进「应用程序」,替换旧版即可。第一次打开时,到「系统设置 › 隐私与安全性」点「仍要打开」,或者运行上面那条 xattr 命令。
新增:
-
汇报对照事实:inner 汇报里的
verified:写它运行了什么(命令放在反引号里)。OctoBuddy 拿每条声明去对照自己跑的这个切片的检查、它做的提交和文件,标成 ✓(事实支持)、✗(事实矛盾:说「测试通过」而 OctoBuddy 跑同一个检查失败了;说「改了」的文件原样未动;说「删了」的文件还在)或 ?(OctoBuddy 没跑这条:只是 agent 自己的说法)。[claims]几行随汇报交给外环;有 ✗ 的汇报先附上原因退回 inner 一次。命令只是近似、运行超时、agent 自己报了失败,都不会判成 ✗。 -
验收闸:切片的检查没过、检查后又提交过、汇报里的声明被驳倒、或者改了任务卡以外的文件时,OctoBuddy 拒绝
accept。外环可以退回、关掉,或者在审阅块或审阅工具里带"override": "<理由>"验收,用户会看到这条理由。外环审阅前就会在结果里看到gate:,被拒时也会收到说明。 -
回执与读回:inner 的提交、发布到本地 App Hub、发布修复版、提交到 App Hub,每一件都在
<data>/receipts.jsonl留回执:要做的是什么、基于哪个提交和内容、谁确认的、做了什么、读回发现了什么。- 提交:读回 git 记录的改动文件(含删除)和它们的内容。
- 发布:读回 catalog 里这个应用这个版本的条目,摘要与暂存包比对,读发布出去的副本内容和它记录的提交。OctoBuddy 报出的版本取自读回结果。
- 提交 App Hub:GitHub 上的 tag 与本地比对,确认 issue 存在。
每张回执是 ✓ 已核对、✗ 不一致或 ? 待核实,会话、Live 页和工作台上都会显示。停在半途的回执,下次打开 OctoBuddy 时只读回核对,绝不重做。
-
看到什么就做什么:发布按钮写明将要发布的内容(短摘要和版本),应用改动之后再点会被拒绝。App Hub 的提交计划写明它基于哪份内容和哪个提交,确认之前任一项变了,计划就作废。请求卡片的「开始做」只做卡片上显示的那条请求。
-
事故以修复版结案:Live 页上,发布的修复版(回执已核对)或更新的版本运行正常才结案;在旧版本上恢复的,等修复版运行;没有发布修复版就恢复的,照实写「自行恢复」。
-
资料不是指令:别的应用的 agent 发来的请求、OctoSense 助手转述的消息、应用 API 返回的内容、报障文字、应用屏幕上的文字,都包在
<untrusted source="…">块里交给 agent,块里能闭合这个块或代码围栏的写法都会被中和。外环和内环的规则都写明这些文字绝不是指令。请求按请求方的话转述,不当成用户本人的话。 -
验收单:一轮的切片全部落定后,OctoBuddy 给用户写一页验收单:原始请求,每个切片的目标、检查、声明核对、提交与回执、外环审阅,以及仍需用户确认的事(没核实的声明、覆盖、卡外文件、没提交的文件、没有检查的切片、它根本核对不了的部分)。确认验收 记成一张回执;项目在此之后有改动的,改为生成新的验收单。
octobuddy.status会说明有验收单在等。 -
工作中、等待、无动静、已结束:每个环都标明处在哪种状态、从什么时候起:在做什么;在等谁(你、外环审阅、OctoBuddy 检查、前一个 wave、空位、agent 启动);一轮开着却 2 分钟没有消息就是无动静(它自己在跑的长命令算工作);或已结束。无动静的环变成警示色,会话里提醒一次;
octobuddy.status给出每个环的状态、as_of和距上次消息多久,停止运行的巡检标为stale。 -
跟进提交的审核意见:应用提交到 App Hub 后,OctoBuddy 每 5 分钟读一次它的 issue;审核人的新留言会变成绑定该项目的请求(在 OctoSense 里出现在应用页,单独运行时放进一个新会话的输入框),按资料隔离,等用户决定。新版本照常提交,之后 OctoBuddy 跟进新的 issue。
-
失败说人话:agent 或供应商没能启动、没有回应时,按类说明(没装、没有 key 或没登录、限流或余额不足、断网、太慢、返回了读不懂的内容),并说明什么还能用、下一步做什么,原始错误放在最后。拒绝 agent 的请求时会说明接下来怎样,外环也会收到。
修复:
- 连按两次发布会发两次:内容没变时再按发布,会把版本号加一、把同样的内容再发一遍。现在会说明已经发布过,是哪个版本。
- 「开始做」可能做错请求:应用页开着时新来一条请求,卡片会移位,「开始做」作用到这个位置上新的那条。现在只作用于卡片上显示的那条。
- 中断的提交审核续不上:tag 已推送、issue 没开成时,再按提交会停在「tag 已存在」。现在会接着做:没推送的补推,没开的 issue 补开。
- 事故遇到任何一次正常运行就结案,不管运行的是不是修复版。
变更:
- makepad、App Hub 和 OctoSense 改钉 OctoSense main 当前的版本(makepad
d653bc4、App Hub3863591、OctoSense `b9d66...
OctoBuddy v0.2.2
OctoBuddy 0.2.2 makes the hand-off between the outer loop and its inner loops short: a task card out, a few lines back, and what an inner loop would otherwise go and read given to it. It also fixes a later wave that never started, and adds a blank app to the new-app dialog.
Download
For Macs with Apple silicon (M1 and later): OctoBuddy-0.2.2-macos-aarch64.dmg, with its .sha256 beside it. Open the DMG and drag OctoBuddy to Applications (replace the earlier one).
The first time you open it. It is not notarized by Apple yet, so macOS stops it the first time. Open it once, then go to System Settings › Privacy & Security and choose Open Anyway. Or, in a terminal:
xattr -dr com.apple.quarantine /Applications/OctoBuddy.appNew
- A short hand-off between the loops.
- The outer loop writes each slice as a task card: Goal, Files, Facts, Done when (about 15 lines; an agent-spec contract is still taken in a Rust project). It no longer writes out its estimate's table.
- With its card an inner loop gets a map of its files (what is defined where, by line), the lines the outer loop already read and lists in the slice's
read, and the project memory that bears on it. Who owns which files OctoBuddy adds from the cards; the fixed rules are about half as long. - An inner loop reports in four lines (status, what it ran, what the outer loop must decide, notes). A report over 1,200 characters is cut, with the path of the whole; OctoBuddy adds the files it changed, its check and its commit, and a
[files]line when it changed files outside its card. - A question or a block wakes the outer loop at once, before any check. The plan and send tools answer with what started, what waits for its wave and what was queued.
- The project map (
.octobuddy/knowledge/MAP.md): the project's files with what is defined where, and the work accepted so far, kept current before each request and after each accept. Both loops start from it instead of searching the project. - An inner loop that reads the same lines three times in a turn is told to go on with what it read.
- A blank app comes first in the new-app dialog: an empty page and the skeleton every app shares, asking for no permission. It is OctoBuddy's own, so it is there offline too.
Fixed
- A wave that never started. A later wave building on an earlier one's files marked the earlier one's accept as out of date, and the next wave waited for good ("waiting for wave 2 to be accepted"). A later wave of the same plan, and an app's generated
main.splash, no longer make an accept stale, a stale accept no longer holds the waves after it, and after a restart OctoBuddy looks again at the waves that wait. - An inner loop's replies show the model they ran on: its provider's mark and the model's name ("developer · claude · MiniMax-M3"), as the outer loop's do.
- An octos inner loop with no model named could not open its session.
- Inner loops are ended, not "closed"; the counts say queued apart from running.
- A new app's first commit no longer holds OctoBuddy's own
.octobuddy/files.
Needs
- A Mac with Apple silicon, macOS 11 or later.
git, to fetch the app templates.- For pi: Node.js and npm.
- To check and submit an app: App Hub's
hubandcard-hostbuilt (OCTOSENSE_APP_HUB), and GitHub'sgh, signed in.
Not yet
- Keeping an inner loop out of other projects' sources: Codex, pi and Claude Code read the whole disk; OctoBuddy asks them not to, and tells them when they go round in circles.
- Intel Macs, Linux and Windows; a notarized build.
中文
OctoBuddy 0.2.2 让外环和 inner 之间的交接变短:派出去的是一张任务卡,收回来的是几行汇报,inner 本来要自己去读的东西直接交给它。同时修好了后面的波次一直不开始的问题,新建应用对话框也多了空白应用。
下载:适用于 Apple 芯片(M1 及以后)的 Mac,下载 OctoBuddy-0.2.2-macos-aarch64.dmg。打开 DMG,把 OctoBuddy 拖进「应用程序」,替换旧版即可。第一次打开时,到「系统设置 › 隐私与安全性」点「仍要打开」,或者运行上面那条 xattr 命令。
新增:
- 内外环交接变短:
- 外环把每个切片写成任务卡:目标、负责的文件、已知事实、完成条件,大约 15 行(Rust 项目仍可写 agent-spec 合同)。回复里不再贴估算表。
- inner 拿到任务卡的同时,还会拿到三样东西:它负责的文件里定义了什么、在哪一行;外环在切片的
read里交接的已读片段;和它有关的项目记忆。谁负责哪些文件由 OctoBuddy 从任务卡生成,固定规则也缩短了一半左右。 - inner 的汇报改成四行:状态、跑了什么、需要外环决定什么、备注。超过 1,200 字会截断,并附上全文路径。改了哪些文件、检查结果和提交由 OctoBuddy 自己附上;改到任务卡以外的文件时,会多附一行
[files]。 - inner 提问或被卡住时立刻叫醒外环,不再等检查。派发工具会明确告诉外环:哪些已经开始、哪些在等自己的波次、哪些消息进了队列。
- 项目地图(
.octobuddy/knowledge/MAP.md):列出项目里的文件、每个文件定义了什么、在哪一行,以及已验收的工作。每次请求发给外环之前、每次验收之后都会更新,外环和 inner 都先读它,不用再去翻整个项目。 - inner 一轮里把同一段读了 3 次时,OctoBuddy 会提醒它用已经读到的内容接着做。
- 新建应用可以选空白应用:它排在第一个,是一个空页面,加上每个应用都有的骨架,不申请任何权限。它由 OctoBuddy 内置生成,离线也能建。
修复:
- 后面的波次一直不开始:后一波按设计会在前一波的文件上接着做,但这会把前一波的验收标成「已过期」,下一波就一直显示「等待 wave 2 被接受」。现在:
- 同一个计划里后面的波次改动前面波次的文件,不再算过期;应用由 parts 生成的
main.splash变化也不算; - 过期的验收不再挡住后面的波次;
- OctoBuddy 重启后,会重新检查还在等待的波次。
- 同一个计划里后面的波次改动前面波次的文件,不再算过期;应用由 parts 生成的
- inner 的回复显示实际用的模型:和外环一样,显示供应商图标和模型名,比如「developer · claude · MiniMax-M3」。
- 修复了没指定模型的 octos inner 打不开会话的问题。
- inner 的「关闭」改叫「结束」;计数里「排队中」和「运行中」分开显示。
- 新应用的第一次提交不再带上 OctoBuddy 自己的
.octobuddy/文件。
需要:
- Apple 芯片的 Mac,macOS 11 或更高。
- 拉取应用模板需要
git。 - 用 pi 需要 Node.js 和 npm。
- 检查和提交应用,需要编好 App Hub 的
hub和card-host(OCTOSENSE_APP_HUB),并装好 GitHub 的gh且已登录。
还没有:
- 不让 inner 去读别的项目的源码:Codex、pi 和 Claude Code 能读整个磁盘。目前 OctoBuddy 只能劝阻,并在它反复读同一段时提醒它。
- Intel Mac、Linux 和 Windows 的版本;经过公证的版本。
OctoBuddy v0.2.1
OctoBuddy 0.2.1 makes a new OctoSense app from a template in one dialog, and fixes what v0.2.0 got wrong on this computer: the terminal's font, a blank conversation, a reply's mark.
Download
For Macs with Apple silicon (M1 and later): OctoBuddy-0.2.1-macos-aarch64.dmg, with its .sha256 beside it. Open the DMG and drag OctoBuddy to Applications (replace the earlier one).
The first time you open it. It is not notarized by Apple yet, so macOS stops it the first time. Open it once, then go to System Settings › Privacy & Security and choose Open Anyway. Or, in a terminal:
xattr -dr com.apple.quarantine /Applications/OctoBuddy.appNew
- A new OctoSense app, from a template. The sidebar's + › New OctoSense app… opens a dialog: pick a template, name it (its id follows the name), choose where it goes and tick what it may do, filled in from the template. Create writes the name, id and grants into the manifest, stamps it, makes the first commit and opens it in the workbench's Preview.
- Templates that show what OctoSense gives an app, in their own repository, tyreseluo/octosense-app-templates, fetched each time the dialog opens: Sandbox starter (what the sandbox grants and refuses, its own storage, a home tile), News reader (allow-listed hosts, pictures from the web, the system web view), Weather (one host, the device's location, an offline cache) and Camera journal (camera, microphone, photo library). Each ran in App Hub's
card-hostand passeshub check. Offline and never fetched, the design flow's own template is offered. - A reply says what it ran on. An agent's reply carries its model's name and its provider's mark: "Claude Code · MiniMax-M3" with MiniMax's mark, the agent's own mark on its own sign-in.
Fixed
- The terminal's font. In the installed app the terminal drew in a proportional font, widely spaced, without emoji: it now uses the bundled JetBrains Mono (bold too), emoji and Nerd Font symbols, with LXGW WenKai for Chinese. OctoBuddy keeps its Makepad state in its own data folder (
.makepad), not the~/.makepadevery Makepad app shares. - A blank conversation. Opening a conversation could show nothing until a message was sent: each conversation now keeps where you were in it, and opens at its end otherwise.
- Settings › AI Providers is laid out again: the providers, the agents' own sign-ins and the inner loops' model in one list (no gap under one card), + Add a provider beside Reload, each card with its model, Primary or Fallback, its provider, endpoint and where its key is. The page speaks the interface's language throughout.
- Settings › Tools shares each row's width among its cards: no empty space on the right.
- Monochrome provider marks (Kimi, Z.ai, OpenAI…) show on a dark theme.
- Smaller things: the send button's corners are squarer; the sidebar's title is OctoBuddy, not "Projects".
Needs
- A Mac with Apple silicon, macOS 11 or later.
git, to fetch the app templates.- For pi: Node.js and npm.
- To check and submit an app: App Hub's
hubandcard-hostbuilt (OCTOSENSE_APP_HUB), and GitHub'sgh, signed in.
Not yet
- A mail template: no host that runs here serves the mail service to check it with.
- Intel Macs, Linux and Windows; a notarized build.
中文
OctoBuddy 0.2.1 可以在一个对话框里从模板新建 OctoSense 应用,并修好了 v0.2.0 在本机上的几个问题:终端字体、对话白屏、回复的图标。
下载:适用于 Apple 芯片(M1 及以后)的 Mac,下载 OctoBuddy-0.2.1-macos-aarch64.dmg。打开 DMG,把 OctoBuddy 拖进「应用程序」,替换旧版即可。第一次打开时,到「系统设置 › 隐私与安全性」点「仍要打开」,或者运行上面那条 xattr 命令。
新增:
-
从模板新建 OctoSense 应用:侧栏「+ › 新建 OctoSense 应用…」打开对话框,选模板、起名字(应用 ID 跟着名字生成)、选保存位置、勾选权限(按模板预先填好)。点「创建」后写好 manifest 里的名称、ID 和权限,盖 digest,做第一次提交,并在工作台预览里打开。
-
体现 OctoSense 能力的模板,单独放在 tyreseluo/octosense-app-templates,每次打开对话框时拉取最新的:
- 沙箱起步:沙箱给了什么、拒绝什么,自己的存储,主屏卡片;
- 资讯阅读:域名白名单、网络图片、系统网页视图;
- 天气:单一域名、设备定位、离线缓存;
- 相机日记:相机、麦克风、相册。
每个模板都在 App Hub 的
card-host里跑过,并通过了hub check。离线而且从没拉取过时,提供 Design Flow 自带的模板。 -
回复标明用的什么模型:Agent 的回复带上模型名和供应商图标,比如「Claude Code · MiniMax-M3」配 MiniMax 的图标;用 agent 自己的登录时仍是它自己的图标。
修复:
- 终端字体:安装版的终端原来用的是比例字体,字距很宽,emoji 也不显示。现在用自带的 JetBrains Mono(粗体也是),emoji 和 Nerd Font 符号都能显示,中文用霞鹜文楷。OctoBuddy 的 Makepad 状态放在自己的数据目录(
.makepad),不再写所有 Makepad 应用共用的~/.makepad。 - 对话白屏:打开对话时可能一片空白,要发一条消息才显示。现在每个对话记住自己的滚动位置,没记过的直接显示到最新一条。
- 设置 › AI Providers 重新排版:
- 供应商、Agent 自己的账号、Inner 用的模型放在同一个列表里,只有一张卡片时下面不再空出一大片;
- 「+ 添加供应商」放在「重新载入」旁边;
- 每张卡片写明模型、主模型还是备用、供应商、接入点和 Key 存在哪里;
- 整页文字都跟随界面语言。
- 设置 › 工具:卡片按窗口宽度分列,右侧不再留白。
- 单色供应商图标(Kimi、Z.ai、OpenAI 等)在深色主题下能看清了。
- 小改动:发送按钮的圆角更小、更方;侧栏左上角显示 OctoBuddy,不再显示「项目」。
需要:
- Apple 芯片的 Mac,macOS 11 或更高。
- 拉取应用模板需要
git。 - 用 pi 需要 Node.js 和 npm。
- 检查和提交应用,需要编好 App Hub 的
hub和card-host(OCTOSENSE_APP_HUB),并装好 GitHub 的gh且已登录。
还没有:
- 邮件模板:本机能跑的宿主都不提供邮件服务,没法验证。
- Intel Mac、Linux 和 Windows 的版本;经过公证的版本。
OctoBuddy v0.2.0
OctoBuddy 0.2.0 brings the app workbench: everything about an OctoSense app in one place beside the conversation, and a way to submit it to App Hub from this computer. It also makes the host edition its own: nothing that only OctoSense has shows here.
Download
For Macs with Apple silicon (M1 and later): OctoBuddy-0.2.0-macos-aarch64.dmg, with its .sha256 beside it. Open the DMG and drag OctoBuddy to Applications (replace the earlier one).
The first time you open it. It is not notarized by Apple yet, so macOS stops it the first time. Open it once, then go to System Settings › Privacy & Security and choose Open Anyway. Or, in a terminal:
xattr -dr com.apple.quarantine /Applications/OctoBuddy.appNew
- The app workbench. In an OctoSense app project, App · workbench opens it beside the conversation, with four tabs:
- Preview: the app running from its files, reloaded as they change.
- Files: the project's folder as a tree, and the source of the file picked.
- Permissions: the capabilities a store app can use today, each with the line the store shows; the hosts it reaches; its storage limit. Saved into the manifest.
- App Hub: what the store shows and who publishes it; Screenshots & check (a real headless run, App Hub's gate, the review packet); the review questions, answered by you or drafted by the outer loop; Submit for review…, which first lists every step and the issue it opens, then, when you confirm, signs it if asked, commits and tags it, pushes it to its repository and opens the
Submit <id> <version>issue in OctoSense-org/OctoSense-App-Hub.
- One plugin for apps. Preview and publishing are part of the OctoSense apps plugin now.
- OctoScript App Design Flow comes with OctoBuddy: its docs,
tools/octoand its template, so a machine with OctoBuddy alone can make and plan an app.
Changed
- The host edition shows only what it has. AI providers are OctoBuddy's own (set up as in Cindy): no OctoSense source, no import. The app factory and the production loop, which serve OctoSense, are not listed. Appearance's first choice follows macOS's light or dark.
Needs
- A Mac with Apple silicon, macOS 11 or later.
- For pi: Node.js and npm.
- To check and submit an app: App Hub's
hubandcard-hostbuilt (OCTOSENSE_APP_HUB), and GitHub'sgh, signed in.
Not yet
- A real App Hub submission made with it (checked up to the list of steps, on a copy).
- Intel Macs, Linux and Windows; a notarized build.
中文
OctoBuddy 0.2.0 带来了应用工作台:在对话旁边集中处理一个 OctoSense 应用的所有事情,并且可以在这台电脑上直接提交到 App Hub。宿主机版也独立出来了:只有 OctoSense 才有的东西不再显示。
下载:适用于 Apple 芯片(M1 及以后)的 Mac,下载 OctoBuddy-0.2.0-macos-aarch64.dmg。打开 DMG,把 OctoBuddy 拖进「应用程序」,替换旧版即可。第一次打开时,到「系统设置 › 隐私与安全性」点「仍要打开」,或者运行上面那条 xattr 命令。
新增:
- 应用工作台:在 OctoSense 应用项目里点「应用 · 工作台」,在对话旁边打开,有四个标签:
- 预览:从项目文件运行应用,文件一改就重新加载。
- 文件:项目文件夹的目录树,选中文件后显示源码。
- 权限:列出商店应用目前能用的能力,每项附商店里显示的说明;还可以填可访问的域名和存储上限,保存进 manifest。
- 上架:
- 填写商店展示的信息和发布者;
- 「截图并检查」:真实运行截图、跑 App Hub 的检查、生成审查包;
- 回答审查问题,可以自己写,也可以让外环起草;
- 「提交审批…」:先列出每一步和要开的 issue,你确认后才执行:按需签名、提交并打 tag、推送仓库,并在 OctoSense-org/OctoSense-App-Hub 开
Submit <id> <版本>issue。
- 应用相关功能合成一个插件:预览和发布都并入「OctoSense 应用」插件。
- 自带 OctoScript App Design Flow:文档、
tools/octo和应用模板都随 OctoBuddy 提供,只装了 OctoBuddy 也能新建和规划应用。
变化:
- 宿主机版只显示它自己有的东西:
- AI providers 只用 OctoBuddy 自己的(Cindy 那种配置),不再有「OctoSense 的」来源和导入;
- 应用工厂、生产回路这两个为 OctoSense 服务的插件不再列出;
- 外观的第一项改为跟随 macOS 的浅色或深色。
需要:
- Apple 芯片的 Mac,macOS 11 或更高。
- 用 pi 需要 Node.js 和 npm。
- 检查和提交应用,需要编好 App Hub 的
hub和card-host(OCTOSENSE_APP_HUB),并装好 GitHub 的gh且已登录。
还没有:
- 还没有用它真正提交过一次 App Hub:只在副本上验证到「列出提交步骤」这一步。
- Intel Mac、Linux 和 Windows 的版本;经过公证的版本。
OctoBuddy v0.1.1
OctoBuddy 0.1.1 fixes what the first release got wrong in a conversation's terminal, its icon and its providers.
Download
For Macs with Apple silicon (M1 and later): OctoBuddy-0.1.1-macos-aarch64.dmg, with its .sha256 beside it. Open the DMG and drag OctoBuddy to Applications (replace the earlier one).
The first time you open it. It is not notarized by Apple yet, so macOS stops it the first time. Open it once, then go to System Settings › Privacy & Security and choose Open Anyway. Or, in a terminal:
xattr -dr com.apple.quarantine /Applications/OctoBuddy.appFixed
- A blank stage. After a conversation's terminal had been open, switching to another conversation could leave the messages and the composer hidden. They show again.
- A blank terminal. In the packaged app the terminal drew no text: its fonts were not found in the package. They are now.
- A terminal that outlived its conversation. The terminal now belongs to the conversation (or inner loop) it was opened on. Picking another one, deleting that one, turning the plugin off or closing OctoBuddy ends it, and the CLI in it.
- The icon. The window's caption shows OctoBuddy's icon, and a build run from source sets it in the Dock too, not Makepad's.
New
- Claude Code and pi on more providers: MiniMax (China and international), DeepSeek, Moonshot (Kimi), Zhipu, Alibaba DashScope (Qwen) and OpenRouter, through the Anthropic-compatible endpoint each provider runs beside its own API. With MiniMax China's key, Claude Code answered on MiniMax-M3.
- Provider marks beside models in the picker, in Settings › AI Providers and its wizard, and in an inner loop's panel.
中文
OctoBuddy 0.1.1 修复了第一个版本在终端、图标和模型接入上的问题。
下载:适用于 Apple 芯片(M1 及以后)的 Mac,下载 OctoBuddy-0.1.1-macos-aarch64.dmg。打开 DMG,把 OctoBuddy 拖进「应用程序」,替换旧版即可。第一次打开时,到「系统设置 › 隐私与安全性」点「仍要打开」,或运行上面那条 xattr 命令。
修复:
- 空白界面:某个对话开过终端后,切到别的对话,消息区和输入框可能不显示。现在会正常显示。
- 终端白屏:打包版里终端显示不出文字,因为包里缺了终端用的字体。现在已经带上。
- 旧终端不关:终端现在只属于打开它的那个对话或内环。切到别的对话、删掉这个对话、关掉插件或退出 OctoBuddy 时,它都会结束,里面的 CLI 也一起结束。
- 图标:窗口标题栏显示 OctoBuddy 的图标。从源码运行时,Dock 上也是 OctoBuddy 的图标,不再是 Makepad 的。
新增:
- Claude Code 和 pi 支持更多厂商:MiniMax(国内和国际)、DeepSeek、Moonshot(Kimi)、智谱、阿里云百炼(通义千问)和 OpenRouter。走的是这几家在自家 API 旁边另外提供的 Anthropic 兼容地址。用 MiniMax 国内版的 key 实测过,Claude Code 能在 MiniMax-M3 上正常回答。
- 厂商图标:模型选择器、「设置 › AI Providers」和添加向导、内环面板里,模型旁边都会显示它所属厂商的图标。
OctoBuddy v0.1.0
OctoBuddy 0.1.0 is the first release of OctoSense's coding app with two loops, on its own, outside OctoSense. An outer loop turns a request into a plan of slices and reviews what comes back; inner loops build the slices in parallel. A plain chat talks to one agent.
Download
For Macs with Apple silicon (M1 and later): OctoBuddy-0.1.0-macos-aarch64.dmg, with its .sha256 beside it. Open the DMG and drag OctoBuddy to Applications. Intel Macs are not supported.
The first time you open it. This release is not notarized by Apple yet (there is no Developer ID for OctoBuddy), so macOS stops it the first time. Open it once, then go to System Settings › Privacy & Security and choose Open Anyway. Or, in a terminal:
xattr -dr com.apple.quarantine /Applications/OctoBuddy.appWhat it does
- Agents. Claude Code, Codex, pi and octos, for the outer loop, the inner loops and chats. OctoBuddy installs its own copy of each, at the version it was tested with, the first time one is needed. Claude Code can use your own login; every agent can use the providers you set up in Settings › AI Providers (keys stay in the macOS Keychain, behind OctoBuddy's loopback proxy).
- In a conversation. Stop, go on, steer a running turn (⌘Enter), or interrupt it and send (⇧⌘Enter). Views: chat, the flow graph of the loops, a timeline that replays the session (each wait says why; rework is marked with its cost), and a read-only live view of any loop.
- Each slice on its own agent and model, chosen by the outer loop; when one fails before doing any work, the outer loop can run it again elsewhere and tells you why.
- OctoSense apps. A project can be an OctoSense app. Every agent gets OctoBuddy's tools to look at, drive, probe and check the running app, and two digests to read first: a Splash cookbook and OctoScript App Design Flow. Preview it in OctoBuddy, then publish it to a local App Hub.
- Learning from rework. After rework, the outer loop keeps lessons that every later run starts from.
Needs
- A Mac with Apple silicon, macOS 11 or later.
- For pi: Node.js and npm.
- For OctoSense apps: a checkout of OctoScript App Design Flow beside OctoSense, or
OCTOBUDDY_DESIGN_FLOWset to it.
Not yet
- Intel Macs, Linux and Windows.
- A notarized build.
中文
OctoBuddy 0.1.0 是 OctoSense 双环编码应用的第一个独立版本,可以脱离 OctoSense 单独运行。外环把需求拆成切片并审查结果,内环并行完成各个切片;对话模式直接和一个 agent 交流。
下载:适用于 Apple 芯片(M1 及以后)的 Mac,下载 OctoBuddy-0.1.0-macos-aarch64.dmg。打开 DMG,把 OctoBuddy 拖进「应用程序」。暂不支持 Intel Mac。
第一次打开:这个版本还没有经过 Apple 公证,macOS 会拦一次。先打开一次,再到「系统设置 › 隐私与安全性」点「仍要打开」;也可以在终端运行上面那条 xattr 命令。
主要功能:
- 外环、内环和对话都可以用 Claude Code、Codex、pi、octos。
- 每个切片可以用不同的 agent 和模型;某个切片失败了,外环会换一个 agent 或模型重做。
- 时间轴写明每段等待的原因,并标出返工和它浪费的时间。
- 外环、内环都有只读的实时视图。
- 可以做 OctoSense 应用:预览、检查,再发布到本地 App Hub。
- 能从返工中总结经验,之后的每次运行都会用上。
需要:
- Apple 芯片的 Mac,macOS 11 或更高版本。
- 用 pi 需要 Node.js 和 npm。
还没有:Intel Mac、Linux 和 Windows 的版本,以及经过公证的版本。