Skip to content

Submit octobuddy 0.3.2 #97

Open
Open

Description

@tyreseluo

2026-10-14 更新为 v0.3.2:这是本次参加决赛评审的版本。下面的提交信息已改为 v0.3.2;v0.3.2 改了什么见本 issue 的最新评论,v0.3.1 和 v0.3.0 的说明见更早的评论。

提交信息

  • 应用: octobuddy(OctoBuddy,原生应用 / native module,非 bundle 应用)
  • 版本: 0.3.2
  • 仓库: https://github.com/tyreseluo/OctoBuddy
  • 标签: v0.3.2(tag 对象 0469581b6a2a9d10bf6b7d337a14e6c3f01f072e);Release:https://github.com/tyreseluo/OctoBuddy/releases/tag/v0.3.2
  • commit SHA: 668765cc3e1e6c2ccd9a35baaeabebd76d3da852
  • Bundle 路径: 不适用 —— 原生应用,无 bundle/
  • License: Apache-2.0
  • 发布者: tyreseluo;签名:不适用(原生应用随 shell 发布,不经 hub publish)
  • 平台: macOS(Apple Silicon)实测;Linux/Windows 未验证
  • 类别: developer tools / coding

集成入口(原生应用的正确路由)

按 docs/PUBLISHING.md「An app that needs new native runtime code must be integrated into a shell release」,OctoBuddy 的接入点是 OctoSense 仓库,不是 catalog.json:

  • OctoSense 集成 PR: feat(native-apps): 引入原生编码应用 OctoBuddy OctoSense#344
  • pin: native-apps.json → octosense-octobuddy = {{ git = "https://github.com/tyreseluo/OctoBuddy.git", rev = "668765c…" }}(v0.3.2)
  • 形态: 模块编入(octosense_octobuddy::OCTOBUDDY_MODULE),桌面 shell 默认启用,手机 shell 不编
  • 沙箱/存储(native-apps.json): network: any、可起进程、每 account 一份 agent 工作区

Hub Check 输出

不适用:原生应用没有 bundle,hub check 不适用。等价的集成校验(均在 PR #344 当前 head fa25e8f 上跑过,PR 已 rebase 到 OctoSense main ffd5e488):

python3 tools/native_apps.py --check   → every generated place matches native-apps.json
python3 -m unittest discover -s tools -p 'test_*.py'   → Ran 155 tests, OK
python3 tools/setup.py --check --cargo   → 退出码 0(只有一份 App Hub / makepad / octos)
cargo check --locked -p octosense(及 mobile-apps 等两种组合)   → Finished
cargo test --locked -p octosense-shell --lib -- approvals sandbox native_apps apps::   → 104 passed

OctoBuddy 仓库(v0.3.2)自身:cargo test --locked → 244 passed; 0 failed(21 ignored 为需真实 agent、真实 App Hub 或真实 GitHub 的 live 测试);GitHub CI(cargo test + 两种 feature 配置的 clippy)通过。

注:初赛时 PR #344 落后 main、有冲突且编译不过;现已 rebase 到最新 main,上面的检查全部通过,命令与结果见 PR 正文「在 PR head 复现」与「pin 移到 OctoBuddy v0.3.0」两节。

应用是什么

OctoBuddy 是双环结构的原生编码应用:外环(Lead)把一个请求规划成 1–8 个切片(任务卡:Goal / Files / Facts / Done when),inner 并行实现各切片,宿主跑检查、提交并验收;带依赖的切片按 wave 放行。四种 agent 均可驱动:Claude Code、Codex、pi、octos(OctoBuddy 自带各 agent 的受测版本)。

给系统的 agent 工具四个(native-apps.json 注册,风险与确认级别随声明):

  • octobuddy.status(read)——各项目/会话、外环与 inner 的状态、成本、等待原因
  • octobuddy.send(act,confirm: host)——向外环会话发消息,排队等待
  • octobuddy.report(act,confirm: host)——上报 OctoBuddy 构建并发布的应用的问题
  • octobuddy.request(act,confirm: host)——请求构建新的 OctoSense 应用
    另授权 terminal.run。

验证(2026-10-05,macOS / Apple Silicon,真实运行)

  • MAKEPAD_WM_TEST_APP=octobuddy ./target/release/octosense 从 OctoSense(pin a8e7023)真实运行:会话创建、项目打开、外环 Claude Code、inner octos 均正常。
  • 双环实测(临时 git 项目,外环 Claude · Opus,inner octos/GLM-5.3):外环按任务卡拆两个切片 → inner 并行实现 → 宿主跑 pytest 并提交 → 外环验收;status: question 的汇报 2 秒内唤醒外环(合批窗口为 120s);octobuddy_send 回执带 queued_as 队列 id。
  • 任务卡交接(v0.2.2 的精简):inner 首轮输入从约 10k 降到约 2.7–3k;汇报固定四行、超 1200 字截断并指向全文路径。
  • 未验证:Linux、Windows、手机 shell(按注册手机端不编,无待验证项)。

1. 应用是否完成其宣称的功能

是。宣称的「双环规划→并行实现→检查→验收」在实测中完整走通;137 个仓库测试 + 114 个 OctoSense 侧生成/校验测试通过。限制如实标注:OctoBuddy 单独运行时的「提交到 App Hub」流程(hub check、issue 材料)未做过真实提交(README 已注明 Not run yet),本 issue 是它作为原生应用的首次登记。

2. 是否收集密码、密钥或一次性验证码

不收集。各 agent 的登录态与 provider key 由宿主/系统钥匙串持有(Claude Code 读自己的 ~/.claude,其余经 OctoBuddy 的回环代理,子进程只拿占位符 key);octobuddy.* 工具的 act 类调用均 confirm: host,由人确认。

3. 网络访问

network: any:作为编码应用,需要拉取依赖、访问用户配置的 AI provider、git 远端等。无固定外联域名白名单(由使用者配置决定);octobuddy.request 声明的 data API 由请求内容指定。

4. 存储

无 bundle 存储配额概念;数据在宿主数据目录(<data>/:会话、worktree、provider profiles、lessons、agent 副本),按 account 隔离 agent 工作区。不写用户的其它目录(项目改动仅在用户打开的项目/worktree 内)。

5. 安全与破坏性

  • 进程:processes: true(需启动各 coding agent 与测试命令);终端命令经宿主审批路径。
  • 各 inner 的文件边界由任务卡 Files 约束,越界改动以 [files] 行报告外环。
  • 会话 Stop/Interrupt 语义明确;被切断的 turn 重启后从原消息重放。
  • DMG 目前 ad hoc 签名、未公证(README 已标注 Gatekeeper 处理方式);随 shell 集成发布时不涉及该渠道。

6. Agent 行为与工具

tools.json 等价物为 native-apps.json 的 agent 块(四个 octobuddy.* 工具 + generic tools 白名单 + terminal.run 授权),风险/确认级别逐工具声明;risk: act 者 confirm: host。外环/inner 的通信有派发确认信号(started/held/queued_as)与阻塞即醒,原生 subagent 不得冒充 inner 完成结果。

7. 隐私

  • 对话、代码与 provider 配置留在本机;provider key 不进子进程环境或 argv(占位符 + 回环代理加注)。
  • 无遥测/分析组件;Claude Code 由宿主配置关闭遥测与错误上报。
  • 隐私说明:PRIVACY.zh-CN.md(English):密钥存放(系统钥匙串、子进程只拿占位 key)、各 agent 的下载源与摘要、工作区与数据目录的边界、第三方 agent 自身的流量。

发布者

Tyrese Luo · https://github.com/tyreseluo

Activity

  1. ZhangHanDong commented on Oct 9, 2026

    @ZhangHanDong

    Preliminary result: shortlisted (score 80/100)

    结果:入围。总分 80/100。评审版本:tyreseluo/OctoBuddy @ v0.2.2(a8e7023;按形态拆分:独立运行 80 计入,编入 OctoSense 形态 61 供参考)。注:原生项目不能进 App Hub 商店,这不影响评分与入围。

    做得好的

    • 密钥隔离:独立运行时 keychain 账号加 ::octobuddy 后缀,与 OctoSense 同名条目互不覆盖;子进程只拿占位 key(own_providers.rs:24;claude_proxy.rs)。
    • agent 二进制供应链纪律:四种 agent 逐平台 sha512 钉死、摘要不符不落目录、npm 安装 --ignore-scripts。
    • 发布流水线先传 DMG 再发布,附校验和。

    改进建议(按重要程度)

    1. 编入 OctoSense 的 PR #344 按提交的代码编译不过(native_apps.rs:57 缺逗号,生成器 tools/native_apps.py:646 同源):先修这两处并推一个干净编译的提交;实机验证要能在 PR head 复现。
    2. 补 PRIVACY 文档(密钥存储、agent 下载源、工作区数据边界)。
    3. 编入 PR 合并前,让 CI 跑 native_apps 生成器测试与 shell 编译,防生成器回归。

    评审说明见黑客松官网「初赛入围」。

  2. changed the title [-]Submit octobuddy 0.2.2[/-] [+]Submit octobuddy 0.3.0[/+] on Oct 12, 2026
  3. tyreseluo commented on Oct 12, 2026

    @tyreseluo
    Author

    更新为 v0.3.0(复赛 / 决赛评审版本)

    • 版本:0.3.0;tag v0.3.0(tag 对象 0cddbcf6);commit f7148712517886b506c8552d3f3776ff35293a61
    • Release:https://github.com/tyreseluo/OctoBuddy/releases/tag/v0.3.0(DMG 由 main 上只改了发布 workflow 的提交 46a6f8b 构建,应用代码与 tag 相同)
      • OctoBuddy-0.3.0-macos-aarch64.dmg:sha256 c478f23ba979c76ac5f576939b54e42929497030a47c9d5a620958c0dd107394
      • OctoBuddy-0.3.0-macos-x86_64.dmg:sha256 602fed6a4f8c6aeeda6d12c2414e288fec02c30fec03d4f4e099cfb1345b875e
    • 编入 OctoSense:OctoSense#344 head 95dff53,已 rebase 到 main b9d66d0f,钉 v0.3.0,MERGEABLE;fork PR 的 CI 等维护者批准运行

    初赛意见的处理

    1. PR #344 编译不过 → 已 rebase 到最新 main 并解决 6 个冲突。生成文件全部由 tools/native_apps.py 重新生成,没有手改。test_the_generated_rust_parses 现在不靠 rustfmt 也会逐行检查字段行以逗号结尾,「少逗号」这类问题在 CI 里会直接失败。desktop.yml 的各步骤在 PR head 本地全部通过(native_apps --check、tools 155 个测试、setup.py --check --cargo、三种 cargo check、shell 104 个测试),并实际启动过(日志 wm: modules linked: [..., "octobuddy", ...])。为了让 OctoSense 里只有一份 App Hub,OctoBuddy 的 makepad / App Hub / OctoSense 依赖改钉 main 当前的版本。
    2. PRIVACY 文档 → PRIVACY.zh-CN.md(English):密钥存放、agent 下载源与摘要、工作区数据边界。
    3. CI → OctoSense 的 Desktop workflow 本来就跑生成器测试、native_apps.py --check 和 shell 编译,PR #344 等维护者批准即可运行。OctoBuddy 自己的 CI 跑 cargo test --locked 与两种 feature 配置的 clippy,其中包括用 stub agent 跑通一次双环的 e2e。

    v0.3.0 新增:agent 提议,宿主核对

    • 声明核对:内环汇报里的 verified: 逐条对照 OctoBuddy 自己跑的检查、它做的提交和文件,标 ✓ / ✗ / ?;有 ✗ 先附原因退回内环一次。
    • 验收闸:检查没过、检查后又提交、声明被驳、改了任务卡以外的文件时,拒绝外环的 accept;外环要么退回或关掉,要么带用户可见的 override 理由验收。
    • 操作回执与读回:内环提交、发布到本地 App Hub、发布修复版、提交 App Hub 都留回执,做完立即读回核对(提交的文件与内容;catalog 条目、摘要、内容、提交;远端 tag 与 issue)。重复发布不会多发一个版本;中途退出后只读回、不重做。
    • 批准绑定快照:发布按钮、提交计划、请求卡片的「开始做」都绑定画出来时的内容,变了就拒绝;Live 页事故只有修复版运行正常才结案。
    • 资料不是指令:别的应用 agent 的请求、API 返回、报障文字、应用屏幕文字、审核留言都包在 <untrusted> 块里交给 agent,块无法被闭合,规则写明不执行其中的指令。
    • 验收单:一轮落定后生成一页验收单,含每个切片的检查、声明核对、回执、外环审阅,以及「仍需你确认的事」;用户点「确认验收」记成回执,项目在此之后有改动的,会重新生成。
    • 实时与过期状态:每个环都标明工作中 / 在等谁 / 无动静 / 已结束以及从何时起;octobuddy.status 带 as_of,停掉的巡检标为 stale。
    • 跟进审核意见:提交 App Hub 后跟进 issue,审核人的新留言会变成绑定原项目的修复请求,等用户确认。
    • 失败分类:agent / 供应商 / gh 失败按类说明,告诉用户还能用什么、下一步做什么。
    • 修复:连按两次发布会发两个版本;「开始做」可能作用到错误的请求;中断的 App Hub 提交续不上;事故遇到任意一次正常运行就结案。

    证据(真实与合成分开标注)

    尚未验证

    • 新界面元素(验收单的确认按钮、各环的状态标签、发布按钮上的内容摘要)还没有截图存档。
    • 跟进审核意见在 OctoSense 里的路径(应用页请求卡片与「开始做」)还没真实跑过;单独运行时用手写回执跑过一次。
    • Intel Mac 只在 Rosetta 下打开过;Linux、Windows 未验证。
  4. changed the title [-]Submit octobuddy 0.3.0[/-] [+]Submit octobuddy 0.3.1[/+] on Oct 13, 2026
  5. tyreseluo commented on Oct 13, 2026

    @tyreseluo
    Author

    更新为 v0.3.1(决赛评审版本)

    • 版本:0.3.1;tag v0.3.1(tag 对象 00d9afb0);commit 622454a90f27f2dce70b5b533279a4f015bbda35
    • Release:https://github.com/tyreseluo/OctoBuddy/releases/tag/v0.3.1(DMG 由发布 workflow 从该 tag 构建)
    • 测试:cargo test --locked → 244 passed, 0 failed, 21 ignored(ignored 为需真实 agent / App Hub / GitHub 的 live 测试);两种 feature 配置的 clippy -D warnings 无警告
    • 编入 OctoSense:OctoSense#344 目前仍钉 v0.3.0,改钉 v0.3.1 放到合入窗口(10/18–10/31)处理

    v0.3.1 新增

    • 生命周期视图(状态机 + 活文档):对话 / 流程图 / 时间轴之外的第四个视图。
      • 状态机:画出每个切片走过的状态(等前一波 → 进行中 → 已报告 → 已检查 → 已接受 → 已合入,以及打回修改、失败、停止、超预算),边上标出走过几次(返工次数);可平移、缩放、适应,点切片高亮它的路径。
      • 文档流:按轮次串起需求、计划、任务书、报告、检查结论、审核意见、验收单,以及 agent 在仓库里写或改的 Markdown 文档(同一路径按提交分 v1 / v2…,可切换版本查看)。
      • OctoBuddy 在后台自动维护 <项目>/.octobuddy/living/LIVING.md,从第一轮到现在的项目故事。
      • 新增 agent 工具 octobuddy_docs:外环和内环先查已有的审计、设计和决定,不用从头再推一遍。
      • 状态机和文档流都从已保存的会话数据推出,不另记一份。
    • 磁盘地图插件(基于 tobi/disktree 的 disktree-core,MIT):对话旁的面板把项目、或 OctoBuddy 为该项目开的 agent worktree 画成 treemap,按数据类别着色,标出可回收空间(构建产物、agent 临时目录等)和「值得一看」的大目录。
      • OctoBuddy 每提交一次切片的改动就拍一次快照(两次至少间隔 5 分钟),显示每轮之后磁盘怎么增长。
      • 新增三个只读 agent 工具 octobuddy_disk_map / octobuddy_disk_growth / octobuddy_disk_reclaim:只建议清理命令,从不替人删东西。
      • 选中一块后可以「问外环」,问题会填进输入框,由人决定发不发。
    • hagency 房间汇报:项目可关联一个 Matrix 房间。验收单、环无动静、Live 事故、审核请求、发布 / 提交回执各发一次。名单里的协调人回复「验收 第 N 轮」,效果和点「确认验收」一样,确认前会核对项目没变。房间里的文字不会交给 agent,令牌只走钥匙串或环境变量。
      • 合成验证:127.0.0.1 上的假 Matrix 服务器;未在真实 Palpo 上跑过。
    • 真实 agent 基准(bench_real_inner_loops):用本人的 provider 跑真实内环,三道小题 × 两次 × 两轮。
      • octos 与 Claude Code 跑 MiniMax-M3:24/24 检查通过,提交回执全部 confirmed。
      • pi 跑 glm-5.3:有一轮什么都没改,6 次验收全部被验收闸拒绝。
      • Codex 跑 glm-5.3:12 次全部撞上 provider 的 429 限流。
      • 未配置 provider 的组合如实记为「没法跑」。
      • 这次真实运行没有出现被判 ✗ 的声明,✗ 的证据仍是 stub 合成的那份。
      • 证据:docs/evidence/bench
    • 上游反哺:准入检查错误码:OctoSense-App-Hub#219。hub check 的每条拒绝 / 警告都带稳定错误码和一行修复建议(53 个码,见 docs/ERROR-CODES.md),原有报告文字逐字不变。OctoBuddy 优先用这些错误码给 agent 提示修法。
    • 修复:
      • OctoBuddy 读 git 状态时会吃掉行首空格,导致第一个未暂存文件的名字少了首字母,误判切片改了任务卡以外的文件。由真实基准发现,已修并加回归测试。
      • 新增防回归测试:代码里用到的每个界面控件都必须在界面定义里存在。
  6. tyreseluo commented on Oct 14, 2026

    @tyreseluo
    Author

    参评版本 v0.3.1 补充

    参评版本仍是 v0.3.1(commit 622454a)。下面这些是人工复验界面时发现并修复的问题,先推到了 main(e6f1a07),随后已随 v0.3.2 发布(见下一条评论)。

    • 磁盘地图:
      • 只显示文字、没有色块:treemap 改用 DrawColor 绘制,按层级区分明暗,目录标题条单独着色,过长的名字截断。
      • 悬浮和点击落到别的格子:指针坐标现在会扣掉外层的滚动偏移。
      • 画布尺寸变了不重新排布:现在尺寸一变就重排。
      • 「工作树」点不动:原来按项目路径和文件夹名去找 worktree 目录,改为按项目 id 查找。
      • 内环磁盘工具扫错目录:原来扫的是内环所在的 worktree,现在扫整个项目。
      • 「增长」的时间显示成自 1970 年起的天数:改为「几分钟前」这类相对时间。
    • 生命周期并入流程图页:不再单独占一个视图,放在流程图下方,中间的分隔线可以上下拖动、也可以收起。两边联动:打开内环卡片,状态机会高亮该切片的路径;单击切片,流程图会点亮对应卡片。
    • 生命周期状态机:
      • 图形与文字错位:方框、连线、色点原先在嵌套面板里整体偏移,现在改用和文字一样的 DrawColor 绘制。
      • 拖动、缩放一刷新就复原:同一组切片再次刷新时,保留已有的拖动和缩放。
      • 滚动后点偏:点击现在也会扣掉外层滚动。
    • 防回归测试 dsl_ids 的误报:名字以数字结尾的控件曾被误报为缺失,已修复。这个测试会确认代码引用的每个控件都在界面定义里。

    验证:cargo test --locked 244 passed / 0 failed / 21 ignored;两种 feature 配置的 clippy -D warnings 均无警告;以上界面问题已由作者在 macOS(Apple Silicon)上逐项人工复验。

  7. changed the title [-]Submit octobuddy 0.3.1[/-] [+]Submit octobuddy 0.3.2[/+] on Oct 14, 2026
  8. tyreseluo commented on Oct 14, 2026

    @tyreseluo
    Author

    更新为 v0.3.2(决赛评审版本)

    • 版本:0.3.2;tag v0.3.2(tag 对象 0469581b);commit 668765cc3e1e6c2ccd9a35baaeabebd76d3da852
    • Release:https://github.com/tyreseluo/OctoBuddy/releases/tag/v0.3.2(发布说明见 RELEASE_NOTES_v0.3.2.md)
      • OctoBuddy-0.3.2-macos-aarch64.dmg:sha256 6f2bc51dc0d205f50796b804adc7bfd5ed13e2931c05f764f089bcf5069cb3b5
      • OctoBuddy-0.3.2-macos-x86_64.dmg:sha256 79d05d8e7d4d4aab2030c76039f61d56f804f31e43be952dd9292fac2522bafc
    • 编入 OctoSense:OctoSense#344 head fa25e8f,已 rebase 到 OctoSense 最新 main ffd5e488,钉 v0.3.2;OPEN、MERGEABLE;fork PR 的 CI 等维护者批准运行。PR head 上重跑的检查:native_apps.py --check、tools 155 个测试、setup.py --check --cargo、三种 cargo check、updater-ui 9 个测试、octosense-shell 104 个测试,全部通过。
    • 测试:cargo test --locked → 244 passed, 0 failed, 21 ignored;两种 feature 配置的 clippy -D warnings 无警告。

    v0.3.2 相对 v0.3.1

    • 生命周期并入流程图页:放在流程图下方,中间的分隔线可以上下拖动,也可以收起。两边联动:打开内环卡片,状态机高亮该切片的路径;单击切片,流程图点亮对应卡片。
    • 界面修复:上一条评论「参评版本 v0.3.1 补充」里列的问题都在这个版本里:
      • 磁盘地图:色块显示不出来、指针点偏、「工作树」点不动、时间显示错;
      • 状态机:图形和文字错位;
      • 防回归测试 dsl_ids:有误报。
    • 依赖:OctoSense 升到 main ffd5e488;makepad d653bc4、App Hub 3863591 与 OctoSense main 所钉一致。
    • 补齐材料:
      • 补上了 v0.3.1 缺失的发布说明(Release 页原来是空的);
      • 验证记录抬头改为 v0.3.2;
      • 贡献清单补上生命周期、磁盘地图、hagency 和真实 agent 基准。

    证据

    • 验证记录:VERIFICATION.zh-CN.md(真实 / 合成分开标注,「尚未验证」单列)。
    • 贡献与前后对照:作品让项目多了什么。
    • 界面:生命周期视图和磁盘面板由作者在 macOS(Apple Silicon)上逐项人工复验;没有自动化界面测试(有无界面的 DSL 解析测试和控件存在性测试)。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions