默认共享 cwd;显式 isolate 才创建独立 worktree
spawnAgentCore 在 isRepo 且 isolate=true 时,从当前 branch 创建 `agent/<id>` 分支与 `<harnessHome>/worktrees/<id>`。失败是 best-effort 降级而非硬失败。回收前检查 dirty 与 ahead commits;有未集成工作就保留。
Worktree 隔离与保全策略
src/main/git.tsL212-L330mainRepoRootaddWorktreeremoveWorktreeworktreeHasUnintegratedWorkworktreeIsGcSafeworktree 生命周期采用 fail-safe 数据保护。
src/main/index.tsL2631-L2667addWorktreeworktreePathsworktreeOriginsspawn 时仅在用户请求且 repo 有效时隔离。
src/main/index.tsL517-L620finalizeWorkerWorktreepreservedWorktreesteardown 会先判断未集成工作再决定 remove 或 preserve。
Git 封装是只读浏览 + 受保护 checkout;GitHub 通过 gh CLI
main/git.ts 封装 status、log、diff、branch、compare、worktree 与 checkout;checkout 在 dirty working tree 时 fail-safe 拒绝。main/github.ts 仅用 gh CLI 读取 issues 和 CI runs,不是完整 PR 协调层。
语音 orchestrator 在 Renderer;真实 OpenAI key 留在 Main
Realtime Michael 通过 Main mint 的短期 token 建立 WebRTC session,并使用工具读写 Hive;高风险动作必须语音确认。Slack/Webhook 在 Main 开本地 server,可选 localtunnel/tunnelmole 暴露公网 URL。
src/renderer/src/realtime/session.tsL1-L40RealtimeSessionOpenAIRealtimeWebRTCvoice session 明确运行在 renderer,并使用 ephemeral secret。
src/main/realtime.tsmintRealtimeTokenMain 用 write-only secret broker mint 短期 token。
src/main/realtimeActions.tsL100-L170VERBSSETTING_POLICYPENDING_TTL_MS动作按 soft/destructive 分层并限定可写设置。
src/main/slack.tsSlackServerSlack request 验签与解析留在 Main。
src/main/webhook.tsWebhookServerGeneric webhook 使用 endpoint secret 与本地 server。
本地 OTel 与外发 PostHog 是两套不同数据面
telemetry.ts 是 loopback-only OTLP collector,用于 token/cost/tool 状态和 breaker;analytics.ts 才是匿名 allowlist PostHog,受 build key、DO_NOT_TRACK 与设置三重门控。updater 只在 packaged build 使用 electron-updater,并提供 GitHub release notify fallback。
src/main/telemetry.tsL1-L30TelemetryCollectorOTLP本地 collector 不向外发送 prompt 或内容。
src/main/analytics.tsL1-L32AnalyticsEVENTSDO_NOT_TRACK外发事件由 per-event property allowlist 限制。
TELEMETRY.mdL1-L107Privacy contract隐私契约列明发送内容与三种完全禁用方式。
src/main/updater.tsL11-L36initAutoUpdater更新只在 packaged build 生效,失败降级为 release 页面通知。
为每个集成画五列:入口、认证、权限、数据、撤销
GitHub CLI、Slack loopback、公开 webhook 和 Realtime 会话使用不同信任模型。统一到一个“integration manager”不会消除这些差异。
门禁卡、客服电话和快递口都连接外部,但不能共用一把万能钥匙。