[{"data":1,"prerenderedAt":411},["ShallowReactive",2],{"current-page-zh-harbor-light":3},{"id":4,"title":5,"body":6,"card_image":59,"cover":59,"description":399,"extension":400,"featured":401,"layout":402,"meta":403,"navigation":401,"og_image":404,"path":405,"seo":406,"stem":407,"tags":408},"directory/zh/dir/harbor-light.md","Harbor Light",{"type":7,"value":8,"toc":390},"minimal",[9,13,28,31,52,62,66,94,97,175,178,181,188,241,248,251,254,260,302,309,319,323,326,354,357,360,367,383,386],[10,11,5],"h1",{"id":12},"harbor-light",[14,15,16,20,21],"p",{},[17,18,19],"strong",{},"下载安装包","：",[22,23,27],"a",{"href":24,"rel":25},"https://github.com/yuanmomoya/harbor-light/releases",[26],"nofollow","GitHub Releases",[14,29,30],{},"给 Coding Agent 装上一盏状态灯。不用反复切回 Codex 或 Cursor，也能一眼看出 Agent 正在工作、等待确认，还是已经完成。",[14,32,33,34,37,38,41,42,46,47,51],{},"Harbor Light 把 ",[17,35,36],{},"Codex"," 和 ",[17,39,40],{},"Cursor"," 的实时状态变成可跨屏拖动的红黄绿悬浮窗。它按软件、项目和对话分别记账，多个任务可以同时亮灯，不会互相覆盖。当前版本 ",[43,44,45],"code",{},"0.1.0","，支持 macOS 12+ 与 Windows 10/11（x64 / ARM64）。核心用 Rust 写成，不依赖 Python 或 Swift 运行时。源码在 ",[22,48,12],{"href":49,"rel":50},"https://github.com/yuanmomoya/harbor-light",[26],"。",[14,53,55,56],{"align":54},"center","\n  ",[57,58],"img",{"src":59,"width":60,"alt":61},"/projects/harbor-light/logo.png",128,"Harbor Light Logo",[63,64,65],"h2",{"id":65},"它做什么",[67,68,69,76,82,88],"ul",{},[70,71,72,75],"li",{},[17,73,74],{},"一眼识别状态","：黄灯工作、红灯等待、绿灯完成，不用切窗口确认进度。",[70,77,78,81],{},[17,79,80],{},"多任务分开记","：同时看 Codex、Cursor 的多个项目和对话。一个任务完成，不会盖住另一个仍在跑的任务。",[70,83,84,87],{},[17,85,86],{},"轻量悬浮窗","：始终置顶、不抢焦点，可跨屏拖动并记住位置。",[70,89,90,93],{},[17,91,92],{},"装好就能用","：自动合并用户级 Codex / Cursor Hooks，并配置登录自启动。",[63,95,96],{"id":96},"灯怎么看",[98,99,100,116],"table",{},[101,102,103],"thead",{},[104,105,106,110,113],"tr",{},[107,108,109],"th",{},"状态",[107,111,112],{},"含义",[107,114,115],{},"悬浮窗",[117,118,119,131,142,153,164],"tbody",{},[104,120,121,125,128],{},[122,123,124],"td",{},"黄灯",[122,126,127],{},"Agent 正在思考或执行",[122,129,130],{},"呼吸",[104,132,133,136,139],{},[122,134,135],{},"绿灯",[122,137,138],{},"当前任务已经完成",[122,140,141],{},"弹出，大约 3 秒后回到空闲",[104,143,144,147,150],{},[122,145,146],{},"红灯",[122,148,149],{},"需要审批，或要处理错误",[122,151,152],{},"急促闪烁",[104,154,155,158,161],{},[122,156,157],{},"红灯 + 黄灯",[122,159,160],{},"一个任务在等待，其他任务仍在执行",[122,162,163],{},"同步急促闪烁",[104,165,166,169,172],{},[122,167,168],{},"空闲",[122,170,171],{},"当前没有活动任务",[122,173,174],{},"三灯低亮",[14,176,177],{},"拖动黑色胶囊即可跨屏摆放，窗口会记住位置。显示器拔掉以后，如果窗口留在屏幕外，会自动回到主屏右上方。macOS 从菜单栏图标打开菜单，Windows 右键系统托盘。两边都能看当前状态、重新安装 Hooks 或退出。macOS 菜单还可以切换开机自启。",[63,179,180],{"id":180},"怎么工作",[14,182,183,184,187],{},"Codex 和 Cursor 的 Hooks 把事件交给各自的适配器，写成 ",[43,185,186],{},"~/.harbor-light/activities/"," 下按软件分开的活动文件。Codex 还会扫描 rollout JSONL 作为兜底。悬浮窗读这些文件，聚合成一盏灯。",[98,189,190,200],{},[101,191,192],{},[104,193,194,197],{},[107,195,196],{},"同时在发生的事",[107,198,199],{},"展示",[117,201,202,210,218,226,234],{},[104,203,204,207],{},[122,205,206],{},"有等待，同时还有别的对话在工作",[122,208,209],{},"红黄同步闪烁",[104,211,212,215],{},[122,213,214],{},"只有等待",[122,216,217],{},"红灯闪烁",[104,219,220,223],{},[122,221,222],{},"没有等待，但还有工作",[122,224,225],{},"黄灯呼吸",[104,227,228,231],{},[122,229,230],{},"没有活动，但有完成且还没超时",[122,232,233],{},"绿灯弹出",[104,235,236,239],{},[122,237,238],{},"全部空闲，或完成已经超时",[122,240,174],{},[14,242,243,244,247],{},"只要还有等待或工作，已完成的绿灯就不参与组合。同一段 Codex 会话可能同时出现在 Hook、旧状态文件和 rollout 里，聚合前会按软件和会话去重，",[17,245,246],{},"Hook 优先","，所以审批时的兜底记录不会再错误点亮黄灯。",[14,249,250],{},"某个软件退出时，只清掉它自己的活动。连续 30 分钟没有新事件，活动会回到空闲。",[63,252,253],{"id":253},"下载和安装",[14,255,256,257,51],{},"安装包在 ",[22,258,27],{"href":24,"rel":259},[26],[98,261,262,272],{},[101,263,264],{},[104,265,266,269],{},[107,267,268],{},"平台",[107,270,271],{},"说明",[117,273,274,286],{},[104,275,276,279],{},[122,277,278],{},"macOS 12+",[122,280,281,282,285],{},"双击 ",[43,283,284],{},".pkg","，装到「应用程序」，并配置 Hooks 和开机自启。未签名时，按住 Control 点按安装包，选择「打开」",[104,287,288,291],{},[122,289,290],{},"Windows 10/11 x64 / ARM64",[122,292,293,294,297,298,301],{},"双击对应架构的 ",[43,295,296],{},"setup.exe","。以当前用户安装到 ",[43,299,300],{},"%LOCALAPPDATA%\\HarborLight","，不需要管理员。SmartScreen 拦截时，选「更多信息 → 仍要运行」",[14,303,304,305,308],{},"Windows 便携包解压后要先执行一次 ",[43,306,307],{},"HarborLight.exe install","，才会写入 Hooks 和登录自启动。",[14,310,311,312,315,316,51],{},"从源码安装需要 Rust。macOS 还要 Xcode Command Line Tools，在仓库里执行 ",[43,313,314],{},"make install","。Windows 还要带「使用 C++ 的桌面开发」的 MSVC Build Tools，编译后执行 ",[43,317,318],{},"harbor-light.exe install",[63,320,322],{"id":321},"hooks","Hooks",[14,324,325],{},"一键安装会合并 Codex 和 Cursor 的用户级 Hooks，不会覆盖已有条目。手动配置时，命令必须写绝对路径。",[98,327,328,338],{},[101,329,330],{},[104,331,332,335],{},[107,333,334],{},"软件",[107,336,337],{},"会点亮的状态",[117,339,340,347],{},[104,341,342,344],{},[122,343,36],{},[122,345,346],{},"开始会话、提交提示、工具调用是黄灯；请求权限是红灯；停止或会话结束是绿灯",[104,348,349,351],{},[122,350,40],{},[122,352,353],{},"提交提示是黄灯；明确要求审批，或执行出错，是红灯；正常结束是绿灯",[14,355,356],{},"Cursor 目前没有单独的审批事件。普通命令不会被当成「等待确认」，避免安装依赖这类正在执行的操作误亮红灯。用户级 Hooks 只看本地 Agent，Cloud Agent 这一版不会自动配置。",[63,358,359],{"id":359},"卸载",[14,361,362,363,366],{},"macOS 在仓库里执行 ",[43,364,365],{},"make uninstall","。Windows 可以在「设置 → 应用」里卸载，或执行：",[368,369,374],"pre",{"className":370,"code":371,"language":372,"meta":373,"style":373},"language-powershell shiki shiki-themes github-light github-dark","& \"$env:LOCALAPPDATA\\HarborLight\\HarborLight.exe\" uninstall\n","powershell","",[43,375,376],{"__ignoreMap":373},[377,378,381],"span",{"class":379,"line":380},"line",1,[377,382,371],{},[14,384,385],{},"卸载会停掉程序、去掉开机自启，并只删掉 Hooks 里本工具写入的条目。你自己的其他 Hooks 会留下。",[387,388,389],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":373,"searchDepth":391,"depth":391,"links":392},2,[393,394,395,396,397,398],{"id":65,"depth":391,"text":65},{"id":96,"depth":391,"text":96},{"id":180,"depth":391,"text":180},{"id":253,"depth":391,"text":253},{"id":321,"depth":391,"text":322},{"id":359,"depth":391,"text":359},"给 Codex 和 Cursor 装一盏状态灯。不用切回窗口，也能看出 Agent 正在工作、等待确认，还是已经完成。","md",true,"wide",{},null,"/zh/dir/harbor-light",{"title":5,"description":399},"zh/dir/harbor-light",[409,410],"桌面工具","状态灯",1791702161548]