跳到正文
返回作品列表

Orchestra OSS:把一个功能拆成任务、派给 agent 的看板Orchestra OSS: an agent task-handoff board

年份
2026
状态
停了
结果
一句功能想法进去,任务图、依赖和给 Codex 的交接命令出来;执行那一步是四个占位

README 只说它是从一个更大的 AI 运营平台里抽出来的公开版。那个平台就是这个站上的另一条作品 DODGE AGENT——那个仓库里 orchestra 那一页到今天还引用着一个我没提交上去的看板组件,就是这个。想法是:做一个功能不该从写 issue 开始,你脑子里先有个模糊的念头,工具负责把它变成一张任务图,标好谁做、谁依赖谁,再把能开工的那几个任务打包成命令交出去。

生成计划这一步是套模板:delivery、release、support 三个模板各五个任务,按你填的功能名和一句问题描述填进去,没有模型参与。真正值得说的是交接包。commander.ts 把目标、验收标准、背景、约束和操作规则拼成一份完整的说明,再按模板渲染出一条命令,比如 codex exec "{title}: {summary}",切成命令名和参数,整包导成 JSON。往上还有多块板、跨板的待执行队列,界面中英文都有。一次干净 clone 装完依赖,npm run build 能过。

差的是最后一步:真的起一个进程。executor.ts 里四个执行器的 supportsLive 全是 false,界面上那个三档开关(preview / armed / live)拨到 live,每次都返回 unsupported_live_mode。那段占位代码自己在报错里写得很实在:No process was launched. Replace this stub with a real spawn/exec implementation. 整个 src/ 里没有一处网络请求,所有状态存在浏览器本地。我在使用指南最后一节自己写过这条边界:一个完整的原型,加上真实执行之前的那层接口。

2026 年 3 月 6 日晚上两次提交,7 日一天 39 次,8 日上午 4 次。最后两次在换方向——从看板改成对话优先,加了个先问几个问题的环节。那个环节也是写死的规则:看哪个字段是空的(问题、目标、约束、名字),挑最多三个固定问句,你答完直接写回对应的输入框。那是我意识到光有一块板子不够的时候,但改方向的力气只够写这些。

src 一共 6036 行 TypeScript,其中 4424 行挤在 orchestra-board.tsx 一个组件里,48 个 useState。package.json 里写了 lint: eslint src,但仓库里没有 eslint 配置文件,这条命令跑不起来。没有测试,没有 CI。三天里我一层一层往界面上加,因为加界面快,而且每加一层立刻就看得见;写执行引擎两样都不占。做出来的是一个特别完整的壳。