Repository navigation
Releases: Infinity-light/fleet-releases
Release list
Fleet 0.2.239
Fixed
- 带 Fleet 工具或 Profile 的 Claude Worker 不再往工作目录写
.mcp.json:MCP 配置改放在 Worker 自己的隔离配置目录、以 strict 模式加载。此前 Worker 退出后,这个带失效凭据、写死运行时版本的文件会留在用户项目里(如D:\TechWork\.mcp.json),之后在该目录打开的会话连不上 fleet MCP,且会覆盖用户原有的.mcp.json。 - 清理 Worker 的 worktree(自动清理与网页删除)时,不再顺着目录链接把别处的文件删空:删除前先拆掉 worktree 里的目录链接,包括
node_modules里 npm 为file:依赖建的链接(10-22 曾因此删空主检出的依赖和web/capacitor-beidou-wakeword源码)。
Fleet 0.2.237
Changed
- 实时记录入口改为收件箱旁视图栏里的图标。
Fixed
- 北斗能打开 D 盘等非系统盘上的文件:新版 Windows 11 已移除 wmic,原先的盘符识别因此只剩 C 盘,D 盘文件不会变成链接,
~/.fleet被迁到其他盘时其中的文件(如玉衡人物卡片)也打不开;现改为直接检测各盘符。
Fleet 0.2.236
Added
- 玉衡人物卡片与方向判定:北斗可按名单为联系人建卡,整理身份、与我的关系、当前处境、需求、可提供、最近动态、待跟进和沟通方式,来源是微信私聊、群发言和已标注姓名的会议记录;每条结论都附原话出处,引用不到原话的结论会被丢弃。已有卡片每 12 小时自动并入新消息。输入一个想推进的方向,玉衡判断谁契合、对方的处境与需求,以及接触渠道、开场切入点和推进步骤,并列出提到过相关话题但还没建卡的人。模型使用火山方舟(默认 DeepSeek V4.1 Flash),说明与费用估算见
docs/yuheng-people.md。
Changed
- 实时记录从天玑移到天璇,顶栏入口改为带文字标签;整理出的现场经历仍存天玑。
Fixed
- 联网搜索恢复:原默认模型
doubao-seed-2-0-lite-260215已被火山方舟下线,改用doubao-seed-2-1-lite-260915。
Fleet 0.2.235
Added
- 微信接入独立软件「Fleet 微信接入」(
wechat-connector/):把本机微信变成只读的 MCP(stdio 与 Streamable HTTP)和 RESTful API,Claude Code、Codex 等本地 Agent 不装北斗也能读取自己的微信;带 Windows 安装包(自带 Node 与 Python 运行时,按用户安装)、本机令牌与 Host/来源校验,可按白名单把会话按「会话×自然日」写入 FDE 中台。微信解析与解密直接复用天枢的同一份代码。 - 北斗可改为消费微信接入软件:
~/.fleet/config.json设tianshu.im.wechatConnector = { url, token }后,北斗按增量变更流拉取微信消息,不再自己读取微信进程与解密;未设置时仍是内置同步,行为不变。两种方式去重键相同,来回切换不会重复入库。
Fleet 0.2.234
Added
-
天玑实时转写取代飞书妙记转写:会议与当面谈话经火山流式识别实时转写(两遍识别、说话人区分、词级时间戳),音频先落盘再识别,断线或重启从最后一句确定结果续传,转写分块进入现实经验供北斗与玉衡使用。
-
Worker 可以用中文工作内容命名(任意文字的字母数字加
. _ -,最长 64 字符)。
Changed
- 派工卡默认自动通过(必答问题取第一项,锚点/租约/合同检查照常),卡片在任务未结束前保留并可拒绝;拒绝会在账本取消任务、打断持有它的 Worker 并通知其停止。
config.json设dispatchCardAutoApprove: false可恢复逐张确认。
Fixed
-
北斗主终端传大图片不再反复断开(“Host connection lost”)。图片原本以 base64 整张放进发给执行宿主的一条消息里,宿主单条上限 4 MiB;4.2 MB 的照片编码后约 5.7 MB,宿主断开控制面,重连后同一条消息又被重发、又断,循环不止。现在一条消息内嵌图片合计不超过 3 MiB,超出的图片保留路径并提示北斗用 Read 查看(Claude Code 会自行缩放大图);万一仍有超限命令,控制面本地拒绝、不再写进管道把连接打断。
-
北斗右上角重新显示实际模型,上下文监控重新显示北斗的占用百分比。
~/.fleet是指向D:\AppData-Moved\fleet-home的目录联接,Claude Code 按物理路径存会话文件,Fleet 却按字面路径去找,读不到北斗的模型与用量(Worker 的工作目录是真实路径,不受影响)。上下文监控、会话列表现在先找物理路径、再找字面路径。 -
北斗的
speak语音播报和 Edge 引擎的所有朗读重新出声。微软已停用旧的 Edge 朗读入口speech.platform.bing.com/consumer/speech/synthesize/readaloud/edge/v1,握手直接回 403,speak因此返回 “Unexpected server response: 403”。这与 Claude 登录、Fleet 鉴权都无关。node-edge-tts升到 1.2.12,它改连api.msedgeservices.com并使用新版Sec-MS-GEC令牌,本机实测重新合成成功。 -
北斗即使在 OAuth 刷新或切换 Claude 引擎后重启,也保留 Bash 与 PowerShell:启动规格始终带上本版本的天权权限策略,不再回落到宿主旧默认值。北斗主会话可以直接运行本机命令行工具(如 lark-cli),写文件与派生子代理仍然禁用。
-
选中的 Skill 能装进中文名 Worker;装配失败只让这张派工卡失败并说明原因,不再让 Fleet 崩溃。Windows 上的
fs.cpSync会把非 ASCII 路径写乱码甚至让 node.exe 直接退出,生产代码已全部换成 libuv 拷贝。重启时失败的派工卡会同时关闭对应的待处理事项。 -
签名凭据登记表接受中文 Worker 名,不再因为一个中文名租约就让北斗和所有 Worker 收到 401。
-
天玑实时转写在静音期间主动结束并在下一段音频时续上,不再被火山引擎 10 秒无音频超时打断;录音结束后录音列表会再刷新一次。
Fleet 0.2.233
Fixed
-
北斗主会话和每个 Worker 不再各占一个可见的命令行窗口。执行宿主自己没有控制台,它启动
claude.exe(以及 Codex app-server)时没有带windowsHide,Windows 11 就给每个进程开一个新的 Windows Terminal 窗口(标题 “claude”);关掉这个窗口会直接杀掉对应的会话。10-21 的修复(22a7f87)一直停在分支上没有合入。现在这些进程都以无窗口方式启动(stream-json / app-server 本来就经管道通信),会话里的 Bash、PowerShell、cmd、git、hook 和 MCP 子进程实测同样不弹窗、照常执行;宿主与控制面启动的 taskkill、git、robocopy、天枢 python 采集、IM CLI、盘符枚举、hook shim、非 ASCII 路径 MCP 包装与自重启也一并补齐。生效时机:执行宿主换到新版本之后新拉起的会话;宿主仍按原规则等全部会话空闲后自动换代,已开着的旧窗口随对应会话重启消失。 -
手机端 PDF 阅读器在 Chrome 107(用户的 Android 手机)上不再整页空白。PDF.js 6.4.299 的 worker 把每个字体交给页面时都调用
ArrayBuffer.prototype.transferToFixedLength(Chrome 114+),PDF.js 自带的 core-js 不补它;Chrome 107 上每页都因此丢掉整个绘制列表,PDF 能打开、能翻页,但画布是白的。10-22 那次修复把根因误认为Promise.try(其实 PDF.js 的 core-js 会补),而且只部署、没合入主线,10-26 起两个生产面都回到了旧版本。现在页面和 worker 共用同一份兜底(web/src/pdfCompat.ts,构建时编进 worker 的第一个 import):补transferToFixedLength/transfer、Response/Request/Blob.bytes(Chrome 132+,worker 取 CMap/标准字体/wasm 用)、ReadableStream的for await迭代(Chrome 124+),保留withResolvers/try/AbortSignal.any/URL.parse/sumPrecise。PDF.js 资源目录后缀改为兜底内容的哈希,改了兜底就自动换路径,避开 30 天 immutable 缓存;Service Worker 升到beidou-v22。新增守卫测试:PDF.js 用到 Chrome 107 没有、且既无 core-js 也无本地兜底的 API 时测试失败。同时合入 10-22 分支的阅读器改动:45 秒加载超时并给出“用系统查看器打开 / 下载 PDF”出口、顶栏常驻“原文件”、画布上限 400 万像素并封顶 2x、/api/files/serve支持单段Range。 -
北斗主会话(Claude)调用
AskUserQuestion时,网页和手机 PWA 上终于能点选并把答案交回原工具调用。根因:问题早已落进 chat.db,但控制面推给前端的question_state和回答接口都只对 Codex 放行,Claude 的问题从未到达前端,主消息流里只剩一张不能点的工具卡;用户只好打字回答,消息排在被提问卡住的回合后面,插队发送又打断了回合,工具调用以“用户拒绝”结束。10-24 的修复(d9985e7)停在分支上从未合入,0.2.230/0.2.231 都不含它。现在合入该修复并改为与 Worker 提问同一个卡片组件(选项纵向一行一个,每个选项就是一段完整内容(标题与说明连成一句,不再是短标签加一行注释);单选、多选按选项顺序以,连接、自己填写或补充说明;Worker 提问卡同步改为同样的样式),答案经 stream-json permission channel 原地交回;手机经 Hub 隧道的请求按“真人”放行(此前 Worker 页回答在手机上同样会被 403),北斗自身与其他系统身份仍被拒绝。Claude 回合结束(含打断)时控制面直接关闭该回合未答的问题,不依赖宿主是否已升级;最近取消的问题保留在卡片上显示“提问已取消”。Service Worker 升到beidou-v23。
Fleet 0.2.232
Fixed
- 0.2.231 的联网搜索在已运行的电脑上没有生效:北斗主会话的工具权限此前由常驻的执行宿主按它自己的旧版本决定,宿主跨升级不重启,所以重启北斗后仍是旧清单。现在权限随每次启动从控制面下发,升级后重启一次北斗会话即可用上 WebSearch / WebFetch,无需重启宿主或 Worker。
Fleet 0.2.231
Fixed
- 北斗主会话重新可以联网搜索:主会话恢复 WebSearch(搜索网页)和 WebFetch(打开网页读内容),查资料不必再派 Worker。Bash、写文件和自带的子代理工具仍然关闭,执行类工作照旧派给 Worker。升级后需重启一次北斗会话(原对话会续上)才生效。
Fleet 0.2.230
Added
- 派工确认卡:新建 Worker 的首个任务、以及涉及既有产物(修改/复刻/参考)、带底本或规范锚点、带待确认问题或带派单方新增约束的任务,派工前会先给你一张卡。卡上逐字保留你的原话,并列出目标项目/目录、底本、规范、不可改动边界和交付形态;不确定点用与提问相同的单选/多选/自由填写选项呈现,必答项没答完不能点「确认派工」。你确认之后才创建 Worker 或投递任务,点了「拒绝派工」则不会创建 Worker、任务直接取消。
- 合同锚点校验:声明要修改/复刻/参考既有产物时,底本与规范必须真实存在(路径或 Fleet 记录引用),否则直接拒绝派工,不再把「底本在哪」丢给 Worker 猜。答案会原样写入任务合同,并随任务一起交给 Worker。
- 「我加的」约束标记:不是从你原话中来的约束,卡上会标为「我加的」,每一条都要你明确点「允许」才会进入合同;派单方自己写「已允许」或提前替你答题都会被拒绝。
- 派工记录:任务详情可以看到派工卡、你提交的原始答案、产物类型、底本/规范、约束来源。收件箱会在新卡出现时提醒一次,确认或拒绝后自动消项。
- 交付物写权租约:任务合同可以声明具体输出路径(
deliverable_paths),同一路径同一时刻只允许一个在飞 Assignment 持有写权。第二个派工会被明确拒绝(DELIVERABLE_LEASE_HELD,并列出持有人与到期时间),不会创建任务;只有派单方显式写lease_takeover并说明理由才能接管,旧持有人和接管理由都会留档。确认卡期间由卡持有写权,你确认后转给任务合同;完成、失败、取消自动释放,崩溃或漏释放由启动对账、24 小时有效期和获取时的懒清理兜底,不会永久锁住一个路径。 - 完成指纹:
done声明可以把产物写成{path, sha256, bytes, pages?}。修改/复刻/参考既有产物时,声明了交付路径却没有 sha256 会被直接拒绝;全新产物缺指纹会产生可见警告事件。同一路径已经由别的 Assignment 交付过、内容哈希不同时拒绝(相同内容放行),字节数对不上也拒绝;旧的纯字符串产物声明保持兼容。派工卡上会显示本次占用的交付路径与显式接管信息。 - 人读交付等你看过才算完成:
artifact_class=human-readable的任务(或 Worker 主动给出消费入口的交付)在 done 后不再直接标完成,而是停在「待你验收」。done 必须带consumption_entry(工作区内真实存在、可打开的文件或 http(s) 链接;PDF 必须写页数),脚本输出、日志和测试摘要不能冒充入口。终态通知第一行固定为「打开看:<路径/链接>(N 页)」,tsc/单测等验证信息只能排在后面。任务列表里点「确认交付」才算 done;点「退回修改」会转成部分完成并保留你写的原因,同一 Worker 继续改。待验收期间不会自动续派、不计入已完成,也不会释放交付写权。 - 派工确认卡改为聊天消息流内联卡:卡片作为消息列表的最后一段随对话一起滚动,不再悬浮在聊天上方、不遮挡输入框;配色、字体、间距和圆角沿用现有对话样式。桌面和手机视口都保持输入框可见。
- 显式「自动通过」权限:用户在本次指令里明确写“自动通过”时,
send_task/spawn_agent可以携带用户原话作为一次性授权。它只跳过没有 decision_points、也没有 origin=agent(“我加的”)约束的纯确认卡;有必答项、可选问题或我加的约束时仍在消息流里弹卡。每次授权单独记账(原话、时间、卡片/任务 ID、跳过原因),同一次派工重复投递或超过 10 分钟即失效,新的一次用户指令重新生效;“不要自动通过”“自动通过吗”这类否定/疑问不算授权。锚点校验、写权租约和合同校验从不会被跳过。 - 修复类任务的前后对比:Assignment 可以声明
symptom_path(你在界面上看到问题的具体路径/路由/链接)。声明后 done 必须带symptom_reproduction,其中path必须与症状路径一致,before/after都必须非空且不同;缺失、换了路径或前后相同都会被拒绝。派工确认卡会显示「症状路径」让你先确认复现口径。
Fixed
- 派工确认卡确认后能真正拉起新 Worker。以前确认一张“新建 Worker”的卡,Worker 启动前的合同校验会把刚由你确认的答案当成派单方自答,返回
DECISION_ANSWER_NOT_AUTHORED,卡回到待确认、Worker 不会启动;现在只有带“已经过人确认”标记的启动路径允许携带答案,未经确认的派工仍会被拒绝。新增回归测试覆盖两种情况。 - 手机端 PDF 在线阅读器恢复可用。真实手机(Android 14 / Chrome 107)缺少
Promise.withResolvers和AbortSignal.any,PDF.js 6 在创建 worker 前就抛错,页面只显示“PDF 阅读器加载失败,可下载后查看”,连 worker 都不会请求;现在在加载 PDF.js 前安装这两个标准 API 的兼容实现,PDF.js worker 也套同一层兼容脚本。PWA 的 Service Worker 版本升到beidou-v19(内联派工卡、自动通过与人读验收也随这次壳更新进入手机),并让 PDF.js 资源走网络优先、只缓存成功响应,旧的坏缓存不会再挡住新 worker。 - 北斗开新对话时用当前 Beidou.md 生成的指令。以前控制面接上执行宿主里正在运行的北斗会话后,把那个会话的指令版本记成了自己的“当前版本”,之后每次开新对话都按它生成启动规格;宿主会话跨控制面重启一直活着,所以 10-19 以后新开的北斗对话全停在 10-19 的指令上,期间 Beidou.md 的修改都没有进入北斗。现在新对话按开对话那一刻的 Beidou.md 生成指令,续接的对话仍保持出生时的版本(D14)。新增回归测试:宿主上已有旧版本会话、控制面重启后开新对话,新会话的版本、宿主清单与 CLAUDE.md 都是当前版本。
Security
- 升级存在已公开漏洞、会挡住发布审计的依赖:前端 DOMPurify 3.4.17(严重);后端 body-parser 2.4.0、zod 4.6.7(均为高危),以及 fastify、fast-uri、ip-address、qs 的补丁版本。Fleet 工具的入参校验改用 zod 4 自带的 v3 接口,北斗和 Worker 拿到的工具清单与升级前逐字节一致。
Fleet 0.2.229
- 北斗把多个 Worker 提问合并进一次
AskUserQuestion转达时,副本按子问题分别收口。以前每个 Worker 提问在各自页面答完后,合并副本的下一个问题永远匹配不上(问题数量不同),整条提问一直挂着、北斗一直“忙”,挡住宿主升级;现在每答完一个 Worker 提问就只关掉对应的那个子问题,其余保持等待,全部答完后整条提问才提交。 - 执行宿主重启(宿主进程退出、令牌刷新后重启等)后,北斗续接原会话的第一条输入会带上一次当前态势简报。以前只在全新会话的首轮注入,续接后北斗按旧记忆工作,看不到新的里程碑和“原则已有新版本”提示。
- Worker 的
settings.json里写了disableAllHooks: true时,能力自报把包括高风险命令审批在内的 hook 标为缺失。以前仍报“已装上”,需要审批的 Worker 不拒绝开工;现在必需能力缺失会明确拒绝并显示“缺:高风险命令审批”。 - Profile 引用的技能找不到时照常开工,并在能力清单里标“缺失”。以前装配直接失败、Worker 开不起来。技能目录里的
SKILL.md没有 frontmatter(运行时不会装上)时,不再链入配置之家,能力清单标“未确认”,不再谎报“已装上”。