LobsterAI 代码深潜 v2(硬核机制图)

本页只做代码机制:A) Execution Modes 状态机,B) Permission 事件时序,C) Memory 生命周期。函数名和文件都按仓库真实实现标注。

A. Execution Modes:runClaudeCode() 状态机图

runClaudeCode() 检查 cwd/附件越界 hasActiveSandboxVm ? continueSandboxTurn() executionMode=local? runClaudeCodeLocal() ensureSandboxReady() sandbox模式失败 => 报错终止 auto失败 => fallback local prepare mounts/env runClaudeCodeInSandbox() VM活着则保留session供续跑 yes no yes no not ready+sandbox not ready+auto ready
代码锚点: src/main/libs/coworkRunner.tsrunClaudeCoderunClaudeCodeLocalrunClaudeCodeInSandboxcontinueSandboxTurn

B. Permission System:事件时序图(local & sandbox)

Claude SDK/VMCoworkRunnerRenderer ModalUserResponse Channel tool call / permission_request emit permissionRequest 展示 CoworkPermissionModal allow / deny ipc: cowork:permission:respond 写回响应(文件模式或virtio-serial) 继续执行/拒绝返回 local:canUseTool 回调走内存通道;sandbox:permission_request JSON + responsesDir/serial 回包。 策略前置:enforceToolSafetyPolicy()/denyBlockedBuiltinWebTool() 在弹窗前可直接 deny。
代码锚点: enforceToolSafetyPolicyrequestSafetyApprovalcanUseToolwriteSandboxPermissionResponseipcMain.handle('cowork:permission:respond')

C. Memory System:提取-评审-写库 生命周期图

用户回合结束 extractTurnMemoryChanges() judgeMemoryCandidate() accepted ? 显式规则:记住/忘记隐式规则:画像/偏好 过滤:问句/闲聊/过程命令guardLevel阈值 reject -> skipped createOrReviveUserMemory()addMemorySource() status: createdor updated markOrphanImplicitMemoriesStale():隐式记忆若无active source -> staledelete动作走 scoreDeleteMatch() 找最相近目标并 deleteUserMemory() accept
代码锚点: coworkMemoryExtractor.ts(规则提取)、coworkMemoryJudge.ts(评审)、coworkStore.ts#applyTurnMemoryUpdates(写库+回收)。

关键实现结论(直接给你可用判断)

如果你要,我下一版直接做“单次请求逐行调用栈”(附关键源码片段 + 注释),会更接近代码审计文档。