[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-eugene1g--agent-safehouse":3,"tool-eugene1g--agent-safehouse":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",148568,2,"2026-04-09T23:34:24",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108111,"2026-04-08T11:23:26",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":76,"owner_location":77,"owner_email":76,"owner_twitter":76,"owner_website":76,"owner_url":78,"languages":79,"stars":88,"forks":89,"last_commit_at":90,"license":91,"difficulty_score":32,"env_os":92,"env_gpu":93,"env_ram":93,"env_deps":94,"category_tags":98,"github_topics":99,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":106,"updated_at":107,"faqs":108,"releases":138},6165,"eugene1g\u002Fagent-safehouse","agent-safehouse","Sandbox your local AI agents so they can read\u002Fwrite only what they need","agent-safehouse 是一款专为 macOS 设计的开源工具，旨在为本地运行的 AI 编程助手构建安全的“沙盒”环境。随着 AI 代理在开发流程中的普及，它们往往需要读取或修改文件，这带来了潜在的数据泄露或误操作风险。agent-safehouse 通过严格的权限控制，确保 AI 只能访问其完成任务所必需的文件和系统资源，从而在保障安全的同时不影响开发效率。\n\n该工具特别适合经常使用 Claude、Codex 等 AI 编程助手的开发者。它采用“默认拒绝”的安全模型，即除非明确允许，否则禁止所有访问。其核心技术亮点在于利用 macOS 原生的 `sandbox-exec` 机制，结合可组合的策略配置文件，既能精准限制权限（例如仅允许读取特定配置目录而非整个家目录），又能自动处理系统路径的符号链接解析，避免配置繁琐。\n\n此外，agent-safehouse 提供了灵活的自定义选项，允许用户通过简单的脚本封装，为不同项目或团队设定个性化的安全策略。它并非追求绝对完美的防御边界，而是致力于在“最小权限原则”与实际开发便利性之间找到最佳平衡点，让开发者能更放心地将 AI 融入日常编码","agent-safehouse 是一款专为 macOS 设计的开源工具，旨在为本地运行的 AI 编程助手构建安全的“沙盒”环境。随着 AI 代理在开发流程中的普及，它们往往需要读取或修改文件，这带来了潜在的数据泄露或误操作风险。agent-safehouse 通过严格的权限控制，确保 AI 只能访问其完成任务所必需的文件和系统资源，从而在保障安全的同时不影响开发效率。\n\n该工具特别适合经常使用 Claude、Codex 等 AI 编程助手的开发者。它采用“默认拒绝”的安全模型，即除非明确允许，否则禁止所有访问。其核心技术亮点在于利用 macOS 原生的 `sandbox-exec` 机制，结合可组合的策略配置文件，既能精准限制权限（例如仅允许读取特定配置目录而非整个家目录），又能自动处理系统路径的符号链接解析，避免配置繁琐。\n\n此外，agent-safehouse 提供了灵活的自定义选项，允许用户通过简单的脚本封装，为不同项目或团队设定个性化的安全策略。它并非追求绝对完美的防御边界，而是致力于在“最小权限原则”与实际开发便利性之间找到最佳平衡点，让开发者能更放心地将 AI 融入日常编码工作流。","# Agent Safehouse\n\n[![Tests (macOS)](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Factions\u002Fworkflows\u002Ftests-macos.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Factions\u002Fworkflows\u002Ftests-macos.yml)\n[![E2E TUI Tests (macOS)](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Factions\u002Fworkflows\u002Fe2e-agent-tui-macos.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Factions\u002Fworkflows\u002Fe2e-agent-tui-macos.yml)\n[![License: Apache 2.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg)](LICENSE)\n\nSandbox your LLM coding agents on macOS so they can only access the files and integrations they actually need.\n\nAgent Safehouse uses `sandbox-exec` with composable policy profiles and a deny-first model. It includes profiles for major coding agents and app-hosted agent workflows while keeping normal development usage practical.\n\n## Install\n\nHomebrew:\n\n```bash\nbrew install eugene1g\u002Fsafehouse\u002Fagent-safehouse\n```\n\nStandalone script:\n\n```bash\nmkdir -p ~\u002F.local\u002Fbin\ncurl -fsSL https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Freleases\u002Flatest\u002Fdownload\u002Fsafehouse.sh \\\n  -o ~\u002F.local\u002Fbin\u002Fsafehouse\nchmod +x ~\u002F.local\u002Fbin\u002Fsafehouse\n```\n\n## Philosophy\n\nAgent Safehouse is designed around practical least privilege:\n\n- Start from deny-all.\n- Allow only what the agent needs to do useful work.\n- Keep developer workflows productive.\n- Make risk reduction easy by default.\n\nIt is a hardening layer, not a perfect security boundary against a determined attacker.\n\n## HOME access by default\n\n`HOME_DIR` is used to render precise home-relative rules in the assembled policy. By itself, it does not grant recursive read access to your home directory.\n\nDefault Safehouse behavior is narrower:\n\n- metadata-only traversal on `\u002F`, the path to `$HOME`, and `$HOME` itself so runtimes can probe explicitly allowed home-scoped paths\n- directory-root reads for `~\u002F.config` and `~\u002F.cache` so tools can discover XDG locations\n- a few explicit home-scoped files\u002Fdirectories from always-on profiles, such as git\u002Fssh metadata and shared agent instruction folders\n\nIn practice, `stat \"$HOME\"` can succeed while `ls \"$HOME\"` and `cat ~\u002Fsecret.txt` still fail unless a more specific rule grants that path.\n\nIf you want to remove even the default home exceptions, use `--append-profile`; appended profiles load last, so their deny rules can narrow earlier defaults.\n\n## Built-In System Path Resolution\n\nSafehouse's built-in `profiles\u002F*` modules may include macOS compatibility paths such as `\u002Fetc`, `\u002Fprivate\u002Fetc\u002Fresolv.conf`, or `\u002Fprivate\u002Fetc\u002Flocaltime`.\n\nAt policy render time, Safehouse resolves built-in absolute paths from `allow file-read*` rules and emits matching grants for the real target path when the authored path is a symlink. That keeps host-specific system files working without broadening the source profiles to recursive `\u002Fprivate\u002Fetc` access.\n\nCurrent scope is intentionally limited to built-in absolute `literal` and `subpath` read grants. User-provided path grants still normalize separately, and writable or metadata-only built-in rules are not auto-expanded by this mechanism today.\n\n## Documentation\n\n- Website: [agent-safehouse.dev](https:\u002F\u002Fagent-safehouse.dev)\n- Docs: [agent-safehouse.dev\u002Fdocs](https:\u002F\u002Fagent-safehouse.dev\u002Fdocs\u002F)\n- Policy Builder: [agent-safehouse.dev\u002Fpolicy-builder](https:\u002F\u002Fagent-safehouse.dev\u002Fpolicy-builder)\n\n## Machine-Specific Defaults\n\nIf you keep shared repos, caches, or team folders in machine-specific locations, keep those settings out of project config and put them in a shell wrapper plus a local appended profile.\n\nThis lets you define your own sane defaults once and reuse them from `claude`, `codex`, `amp`, or app launchers:\n\nPOSIX shells (`zsh` \u002F `bash`):\n\n```bash\n# ~\u002F.zshrc or ~\u002F.bashrc\nexport SAFEHOUSE_APPEND_PROFILE=\"$HOME\u002F.config\u002Fagent-safehouse\u002Flocal-overrides.sb\"\n\nsafe() {\n  safehouse \\\n    --add-dirs-ro=\"$HOME\u002Fserver\" \\\n    --append-profile=\"$SAFEHOUSE_APPEND_PROFILE\" \\\n    \"$@\"\n}\n\nsafe-claude() { safe claude --dangerously-skip-permissions \"$@\" }\n```\n\n`fish`:\n\n```fish\n# ~\u002F.config\u002Ffish\u002Fconfig.fish\nset -gx SAFEHOUSE_APPEND_PROFILE \"$HOME\u002F.config\u002Fagent-safehouse\u002Flocal-overrides.sb\"\n\nfunction safe\n    safehouse \\\n      --add-dirs-ro=\"$HOME\u002Fserver\" \\\n      --append-profile=\"$SAFEHOUSE_APPEND_PROFILE\" \\\n      $argv\nend\n\nfunction safe-claude\n    safe claude --dangerously-skip-permissions $argv\nend\n```\n\nExample machine-local policy file:\n\n```scheme\n;; ~\u002F.config\u002Fagent-safehouse\u002Flocal-overrides.sb\n;; Host-specific exceptions that should not live in shared repo config.\n(allow file-read*\n  (home-literal \"\u002F.gitignore_global\")\n  (home-subpath \"\u002FLibrary\u002FApplication Support\u002FCleanShot\u002Fmedia\")\n  (subpath \"\u002FVolumes\u002FShared\u002FEngineering\")\n)\n```\n\nUse `--add-dirs-ro` or `--add-dirs` for normal shared-folder access, and keep `--append-profile` for machine-local policy exceptions or final deny\u002Fallow overrides. That pattern is useful when the repo is shared but each developer machine has different local mount points.\n\nGit worktrees are auto-detected at launch when the selected workdir itself is a Git worktree root: that worktree gets the shared Git metadata access it needs when its common dir lives outside the selected workdir, and the other existing linked worktrees for that repo become readable by default for cross-tree inspection. That snapshot does not update for already-running processes, so if you create worktrees under a stable parent such as `~\u002Fworktrees`, prefer adding that root explicitly with `--add-dirs-ro`.\n\nAll detailed documentation (setup, usage, options, architecture, testing, debugging, and investigations) lives in the VitePress docs site.\n","# 代理安全屋\n\n[![测试（macOS）](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Factions\u002Fworkflows\u002Ftests-macos.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Factions\u002Fworkflows\u002Ftests-macos.yml)\n[![端到端 TUI 测试（macOS）](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Factions\u002Fworkflows\u002Fe2e-agent-tui-macos.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Factions\u002Fworkflows\u002Fe2e-agent-tui-macos.yml)\n[![许可证：Apache 2.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg)](LICENSE)\n\n在 macOS 上为您的 LLM 编码代理创建沙箱环境，使其仅能访问实际所需的文件和集成。\n\nAgent Safehouse 使用 `sandbox-exec` 结合可组合的策略配置文件，并采用“默认拒绝”模型。它包含针对主流编码代理及应用托管代理工作流的配置文件，同时确保常规开发使用依然便捷高效。\n\n## 安装\n\nHomebrew：\n\n```bash\nbrew install eugene1g\u002Fsafehouse\u002Fagent-safehouse\n```\n\n独立脚本：\n\n```bash\nmkdir -p ~\u002F.local\u002Fbin\ncurl -fsSL https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Freleases\u002Flatest\u002Fdownload\u002Fsafehouse.sh \\\n  -o ~\u002F.local\u002Fbin\u002Fsafehouse\nchmod +x ~\u002F.local\u002Fbin\u002Fsafehouse\n```\n\n## 理念\n\nAgent Safehouse 的设计基于实用的最小权限原则：\n\n- 从“全部拒绝”开始。\n- 仅允许代理完成有用工作所需的权限。\n- 保持开发者工作流程的高效性。\n- 默认情况下轻松降低风险。\n\n它是一个加固层，而非能够抵御蓄意攻击者的完美安全边界。\n\n## 默认 HOME 目录访问权限\n\n`HOME_DIR` 用于在组装的策略中生成精确的、相对于主目录的规则。但仅凭这一点，并不会授予对您主目录的递归读取权限。\n\nSafehouse 的默认行为更为严格：\n\n- 对 `\u002F`、`$HOME` 路径以及 `$HOME` 本身仅允许元数据级别的遍历，以便运行时可以探测明确允许的主目录范围路径。\n- 允许读取 `~\u002F.config` 和 `~\u002F.cache` 目录的根目录内容，以便工具能够发现 XDG 位置。\n- 从始终启用的配置文件中，明确允许访问少数几个与主目录相关的文件或目录，例如 Git\u002FSSH 元数据以及共享的代理指令文件夹。\n\n实际上，即使执行 `stat \"$HOME\"` 成功，`ls \"$HOME\"` 和 `cat ~\u002Fsecret.txt` 仍会失败，除非有更具体的规则明确授予该路径的访问权限。\n\n如果您希望移除甚至这些默认的主目录例外情况，可以使用 `--append-profile` 参数；附加的配置文件会最后加载，因此其拒绝规则可以进一步缩小先前的默认设置。\n\n## 内置系统路径解析\n\nSafehouse 内置的 `profiles\u002F*` 模块可能包含 macOS 兼容路径，如 `\u002Fetc`、`\u002Fprivate\u002Fetc\u002Fresolv.conf` 或 `\u002Fprivate\u002Fetc\u002Flocaltime`。\n\n在策略渲染时，Safehouse 会解析来自 `allow file-read*` 规则的内置绝对路径，并在作者指定的路径为符号链接时，发出指向真实目标路径的匹配授权。这样可以在不放宽源配置文件对 `\u002Fprivate\u002Fetc` 的递归访问权限的情况下，使特定于主机的系统文件正常工作。\n\n目前的范围有意限制在内置的绝对路径的 `literal` 和 `subpath` 读取授权上。用户提供的路径授权仍将单独规范化，而写入或仅限元数据的内置规则目前并不会通过此机制自动扩展。\n\n## 文档\n\n- 官网：[agent-safehouse.dev](https:\u002F\u002Fagent-safehouse.dev)\n- 文档：[agent-safehouse.dev\u002Fdocs](https:\u002F\u002Fagent-safehouse.dev\u002Fdocs\u002F)\n- 策略生成器：[agent-safehouse.dev\u002Fpolicy-builder](https:\u002F\u002Fagent-safehouse.dev\u002Fpolicy-builder)\n\n## 机器特定的默认设置\n\n如果您将共享仓库、缓存或团队文件夹存放在特定于机器的位置，请勿将其配置放入项目配置中，而是将其置于 shell 包装器和本地附加的配置文件中。\n\n这样您可以一次性定义自己的合理默认值，并在 `claude`、`codex`、`amp` 或应用程序启动器中重复使用：\n\nPOSIX shell（`zsh` \u002F `bash`）：\n\n```bash\n# ~\u002F.zshrc 或 ~\u002F.bashrc\nexport SAFEHOUSE_APPEND_PROFILE=\"$HOME\u002F.config\u002Fagent-safehouse\u002Flocal-overrides.sb\"\n\nsafe() {\n  safehouse \\\n    --add-dirs-ro=\"$HOME\u002Fserver\" \\\n    --append-profile=\"$SAFEHOUSE_APPEND_PROFILE\" \\\n    \"$@\"\n}\n\nsafe-claude() { safe claude --dangerously-skip-permissions \"$@\" }\n```\n\n`fish`：\n\n```fish\n# ~\u002F.config\u002Ffish\u002Fconfig.fish\nset -gx SAFEHOUSE_APPEND_PROFILE \"$HOME\u002F.config\u002Fagent-safehouse\u002Flocal-overrides.sb\"\n\nfunction safe\n    safehouse \\\n      --add-dirs-ro=\"$HOME\u002Fserver\" \\\n      --append-profile=\"$SAFEHOUSE_APPEND_PROFILE\" \\\n      $argv\nend\n\nfunction safe-claude\n    safe claude --dangerously-skip-permissions $argv\nend\n```\n\n示例机器本地策略文件：\n\n```scheme\n;; ~\u002F.config\u002Fagent-safehouse\u002Flocal-overrides.sb\n;; 主机特定的例外情况，不应存在于共享仓库的配置中。\n(allow file-read*\n  (home-literal \"\u002F.gitignore_global\")\n  (home-subpath \"\u002FLibrary\u002FApplication Support\u002FCleanShot\u002Fmedia\")\n  (subpath \"\u002FVolumes\u002FShared\u002FEngineering\")\n)\n```\n\n对于正常的共享文件夹访问，使用 `--add-dirs-ro` 或 `--add-dirs`；而 `--append-profile` 则用于机器本地的策略例外或最终的拒绝\u002F允许覆盖。当仓库被共享，但每台开发机器的本地挂载点不同时，这种模式非常有用。\n\nGit 工作树会在启动时自动检测：如果所选工作目录本身就是 Git 工作树的根目录，则该工作树将获得其所需的共享 Git 元数据访问权限，即使其共同目录位于所选工作目录之外。同时，该仓库的其他现有关联工作树也会默认变为可读，便于跨工作树检查。不过，这一快照不会更新给已经运行的进程。因此，如果您在稳定的父目录下创建工作树，例如 `~\u002Fworktrees`，建议显式使用 `--add-dirs-ro` 添加该根目录。\n\n所有详细文档（安装、使用、选项、架构、测试、调试和调查）均收录在 VitePress 文档站点中。","# Agent Safehouse 快速上手指南\n\nAgent Safehouse 是一款专为 macOS 设计的沙盒工具，用于限制 LLM 编程助手（如 Claude Code、Codex 等）的文件访问权限。它采用“默认拒绝”模型，确保 AI 代理只能访问其工作所需的特定文件和集成，从而在保障开发效率的同时降低安全风险。\n\n## 环境准备\n\n- **操作系统**：macOS\n- **前置依赖**：\n  - 系统内置的 `sandbox-exec` 工具（macOS 自带，无需额外安装）\n  - 包管理器 Homebrew（推荐用于安装）或基础的 Shell 环境（bash\u002Fzsh\u002Ffish）\n\n## 安装步骤\n\n你可以选择通过 Homebrew 或直接下载脚本进行安装。\n\n### 方式一：使用 Homebrew（推荐）\n\n```bash\nbrew install eugene1g\u002Fsafehouse\u002Fagent-safehouse\n```\n\n### 方式二：独立脚本安装\n\n如果你不想使用 Homebrew，可以手动下载可执行脚本：\n\n```bash\nmkdir -p ~\u002F.local\u002Fbin\ncurl -fsSL https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Freleases\u002Flatest\u002Fdownload\u002Fsafehouse.sh \\\n  -o ~\u002F.local\u002Fbin\u002Fsafehouse\nchmod +x ~\u002F.local\u002Fbin\u002Fsafehouse\n```\n\n> **提示**：请确保 `~\u002F.local\u002Fbin` 已添加到你的 `$PATH` 环境变量中，以便直接在终端运行 `safehouse` 命令。\n\n## 基本使用\n\nAgent Safehouse 的核心用法是在启动 AI 代理命令前加上 `safehouse` 前缀。它会自动加载针对主流编程助手的预设策略配置文件。\n\n### 最简单的使用示例\n\n假设你正在使用 `claude` 命令（例如 Claude Code CLI），只需在其前方加上 `safehouse`：\n\n```bash\nsafehouse claude --dangerously-skip-permissions\n```\n\n**工作原理**：\n- 该命令会启动一个沙盒环境。\n- 默认情况下，AI 代理无法读取你的主目录（`$HOME`）中的文件，除非策略明确允许。\n- 它仅允许访问必要的元数据（如 Git\u002FSSH 配置）和特定的缓存目录，防止意外泄露敏感文件（如 `~\u002F.ssh\u002Fid_rsa` 或未授权的代码库）。\n\n### 自定义只读访问目录\n\n如果你需要让 AI 代理访问特定的项目目录（例如 `\u002FUsers\u002Fname\u002Fprojects\u002Fmy-app`），可以使用 `--add-dirs-ro` 参数：\n\n```bash\nsafehouse \\\n  --add-dirs-ro=\"$HOME\u002Fprojects\u002Fmy-app\" \\\n  claude --dangerously-skip-permissions\n```\n\n### 进阶：配置本地别名（可选）\n\n为了方便日常使用，建议在 Shell 配置文件（如 `~\u002F.zshrc`）中添加别名：\n\n```bash\n# ~\u002F.zshrc\nalias safe-claude='safehouse claude --dangerously-skip-permissions'\n```\n\n保存并生效配置后，即可直接运行：\n\n```bash\nsafe-claude\n```\n\n这样既保持了命令的简洁性，又确保了每次运行都在安全的沙盒环境中。","资深后端开发者李明在 macOS 本地运行 Claude Code 等 AI 编程助手，让其自动重构一个包含敏感配置文件和私有密钥的遗留项目。\n\n### 没有 agent-safehouse 时\n- **权限过度开放**：AI 代理默认拥有用户主目录的完全读写权，一旦产生幻觉或遭受提示词注入，可能误删 `~\u002F.ssh` 密钥或覆盖重要的个人文档。\n- **隐私数据泄露风险**：代理可以随意遍历并读取 `~\u002FDocuments` 或 `~\u002FDownloads` 中的非项目相关文件，导致私人信息意外被发送给大模型。\n- **缺乏最小权限控制**：开发者难以精细限制 AI 仅访问当前项目目录，每次运行都像是在“裸奔”，不得不时刻盯着终端防止意外操作。\n- **系统配置被篡改**：恶意或错误的代码生成可能修改全局系统配置文件（如 `\u002Fetc\u002Fhosts` 或 shell 启动脚本），破坏开发环境稳定性。\n\n### 使用 agent-safehouse 后\n- **实施最小权限原则**：通过 `safehouse` 启动代理，默认拒绝所有访问，仅显式开放当前项目目录的读写权限，从根本上阻断对 `~\u002F.ssh` 等敏感路径的触碰。\n- **精准隔离隐私数据**：即使 AI 试图读取主目录下其他文件夹，也会因策略限制而失败，确保私人文档和缓存数据绝对安全，仅限必要的元数据探测。\n- **工作流无缝集成**：利用预置的策略模板（profiles），无需编写复杂的沙盒规则即可快速启动受保护的 AI 会话，既安全又不牺牲开发效率。\n- **防御系统级破坏**：内置的系统路径解析机制自动处理符号链接，防止代理意外修改关键系统文件，将风险严格限制在项目沙盒内。\n\nagent-safehouse 通过“默认拒绝”的沙盒机制，让本地 AI 代理在享受高效编码能力的同时，彻底告别了对敏感数据和系统环境的潜在威胁。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feugene1g_agent-safehouse_27800242.png","eugene1g","Eugene","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Feugene1g_a2d0aff4.jpg",null,"🇺🇸🇪🇺","https:\u002F\u002Fgithub.com\u002Feugene1g",[80,84],{"name":81,"color":82,"percentage":83},"Shell","#89e051",99.8,{"name":85,"color":86,"percentage":87},"JavaScript","#f1e05a",0.2,1574,59,"2026-04-10T01:35:52","Apache-2.0","macOS","未说明",{"notes":95,"python":93,"dependencies":96},"该工具专为 macOS 设计，利用系统自带的 sandbox-exec 机制运行。不支持 Linux 或 Windows。安装可通过 Homebrew 或独立脚本完成。其核心功能是为 LLM 编码代理提供沙箱环境，采用默认拒绝（deny-first）策略，仅允许访问必要的文件和集成。",[97],"sandbox-exec (macOS 系统工具)",[35,13,14],[100,101,102,103,104,105],"ai-agents","claude-code","llm","macos","sandbox","security","2026-03-27T02:49:30.150509","2026-04-10T15:54:55.919764",[109,114,119,124,129,134],{"id":110,"question_zh":111,"answer_zh":112,"source_url":113},27915,"为什么在沙盒中未启用 SSH 选项时，SSH 连接仍然可以成功？这是否意味着我的 SSH 密钥不安全？","这是因为 macOS 的安全策略（SBPL）将连接到 Unix 域套接字视为“网络出站”（network-outbound），而不是文件读取。默认策略虽然禁止读取私钥文件（如 ~\u002F.ssh\u002Fid_ed25519），但允许网络连接，因此沙盒进程可以通过 ssh-agent 套接字让代理代为签名，而无需直接读取密钥文件。\n\n为了修复此安全隐患，项目已在 v0.4.0 版本中更新了默认策略：默认情况下拒绝访问 ssh-agent 套接字，只有在使用 `--enable ssh` 参数时才会显式允许。建议升级到最新版本以确保凭据安全。\n相关策略代码示例：\n(deny network-outbound (remote unix-socket (path-regex #\"^\u002FUsers\u002F.*\u002F\\.ssh\u002Fagent\u002F\")))","https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F36",{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},27916,"如何在 Safehouse 中运行 agent-browser 或 Playwright？之前遇到崩溃或被拒绝的问题。","该问题已在 v0.4.0 版本中解决。维护者进行了大规模重构并增加了测试，确保 agent-browser 和 Playwright 可以正常工作。\n\n如果您仍在使用旧版本，请升级到 v0.4.0 或更高版本。对于 Homebrew 用户，新版本即将发布；在此之前，您可以直接使用主分支（main）中的 `dist\u002F` 文件来运行，通常能解决之前的段错误（seg fault）或操作被拒绝的问题。","https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F25",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},27917,"在 Mac Silicon 上运行 `make` 命令失败，提示找不到开发者工具（No developer tools were found），如何解决？","这是因为默认沙盒策略阻止了 `make` 访问 Xcode 命令行工具所需的路径。您可以通过追加自定义策略文件来解决此问题。\n\n创建一个名为 `makefile.sb` 的文件，内容如下：\n(allow file-read* (subpath \"\u002FLibrary\u002FDeveloper\u002FCommandLineTools\"))\n(allow file-read-data (literal \"\u002Fvar\u002Fdb\u002Fxcode_select_link\"))\n(allow process-exec (subpath \"\u002FLibrary\u002FDeveloper\u002FCommandLineTools\"))\n\n然后运行命令时添加该配置：\nsafehouse --append-profile=\".\u002Fmakefile.sb\" \u003Cyour-command>\n\n此外，最新的 PR #21 已经将常见的命令行工具（CLT）添加到默认支持列表中，升级最新版本可能无需手动配置即可直接使用 `make`。","https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F18",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},27918,"在 Safehouse 中运行 Java (Temurin\u002FOpenJDK) 时失败，报错“Unable to locate a Java Runtime”或多个 sandbox denials，如何修复？","这是由于默认策略缺少对 JVM 启动所需的关键路径和系统调用的授权。具体问题包括无法读取 `\u002FLibrary` 元数据、禁止 `sysctl-write`、以及缺少对 `com.apple.bsd.dirhelper` 等服务的查找权限。\n\n该问题已在 v0.3.1 版本中修复。维护者更新了 `system-runtime.sb` 和 `java.sb` 配置文件，增加了对 `\u002FLibrary` 的元数据读取权限、允许 `sysctl-write kern.grade_cputype`（Apple Silicon 必需），并开放了必要的 mach-lookup 权限。\n\n解决方案：请将 Safehouse 升级到 v0.3.1 或更高版本。升级后，Java 开发命令即可正常运行，无需额外覆盖配置。","https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F10",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},27919,"使用 Homebrew 安装的 `pi` (pi-coding-agent) 在 Safehouse 中运行报错，如何处理？","当使用 Homebrew 安装 `pi` 而不是全局 npm 安装时，可能会因为沙盒策略限制访问 Homebrew 的 Cellar 路径或 Node 模块路径而报错。\n\n虽然具体的策略补丁取决于报错的具体路径（通常涉及 `\u002Fopt\u002Fhomebrew\u002FCellar` 或 `\u002Fopt\u002Fhomebrew\u002Flibexec`），但通用的解决方法是使用 `--append-profile` 参数添加允许访问 Homebrew 安装路径的策略。例如，如果报错涉及特定目录，可创建自定义 .sb 文件添加 `(allow file-read* (subpath \"\u002Fopt\u002Fhomebrew\"))` 等规则。\n\n建议查看完整的报错日志中的 `deny` 路径，并参照项目中其他工具（如 make 或 java）的配置方式，通过 `--append-profile` 动态注入允许规则。如果这是普遍问题，建议在 GitHub 上提交 Issue 以便维护者将其加入默认支持列表。","https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F13",{"id":135,"question_zh":136,"answer_zh":137,"source_url":128},27920,"Safehouse 更新后，之前有效的自定义配置是否需要调整？如何确认新功能已生效？","随着版本的迭代（如 v0.3.1 和 v0.4.0），许多原本需要手动配置的功能（如 Java 支持、SSH 代理控制、Playwright 支持）已被集成到默认策略中。\n\n1. 对于 Java 用户：在 v0.3.1+ 中，您可以移除之前用于修复 JVM 的自定义覆盖命令，因为默认配置已包含所需权限。\n2. 对于 SSH 用户：在 v0.4.0+ 中，默认行为变得更严格（默认禁止 ssh-agent），如果您需要使用 SSH，必须显式添加 `--enable ssh` 标志。\n3. 验证方法：运行您的常规命令，如果不再报错且无需额外参数，说明新默认策略已生效。如果有疑问，可以检查发布的 Release 说明或尝试移除旧的 `--append-profile` 参数看是否依然工作。",[139,144,149,154,159,164,169,174,179,184,189,194],{"id":140,"version":141,"summary_zh":142,"released_at":143},188854,"v0.9.0","## [0.9.0] - 2026-03-27\n\n### 功能\n\n- 新增了一个可选的 `--enable=cloud-storage` 集成，为 FileProvider 和 FileCoordination 提供了 macOS 云存储挂载点（位于 `~\u002FLibrary\u002FCloudStorage` 下）所需的 Mach 查找权限，从而使针对 Google Drive、Dropbox、iCloud Drive、OneDrive 等由 FileProvider 支持的路径的显式授权能够按预期工作。\n\n### 杂项\n\n- 为新的 `cloud-storage` 集成添加了回归测试覆盖，并记录了在哪些情况下应为 FileProvider 支持的 macOS 云存储路径启用该功能。\n\n### 感谢\n\n- @thegalexc 在 [#73](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fpull\u002F73) 中添加了 FileProvider XPC 的 `cloud-storage` 集成。\n\n### 沙盒配置文件变更\n\n- [`cloud-storage.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.8.0...v0.9.0#diff-af9e3f2e414fe4097cda7de9bd3a1f3868c42c7dd70ae3cbe0b77eea1e42c5c8): 添加了可选的 FileProvider 和 FileCoordination Mach 查找权限，以便 `--add-dirs` 和 `--add-dirs-ro` 授权能够作用于 macOS 云存储挂载点，而无需将访问权限扩大到用户已授予权限之外的路径。\n","2026-03-27T22:01:10",{"id":145,"version":146,"summary_zh":147,"released_at":148},188855,"v0.8.0","### 功能\n\n- 增加了显式的 `--enable=keychain` 支持，以便基于插件的辅助流程（包括 `opencode-claude-auth`）能够在没有内置 Safehouse 配置文件自动检测到该需求时，仍可选择启用 macOS 钥匙串访问权限。\n\n### 杂项\n\n- 为显式启用钥匙串功能添加了回归测试覆盖以及 `--explain` 和打包相关的断言，并记录了在插件驱动的身份验证流程中何时应使用 `--enable=keychain`。\n\n### 感谢\n\n- @ChristianKniep 在 [#71](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F71) 中指出了本次发布修复的基于插件的 OpenCode 钥匙串访问缺失问题。\n\n### 沙盒配置文件变更\n\n- [`keychain.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.7.0...v0.8.0#diff-a2a140b0b9d2a0c8819f343d379ecafb454d0f47b8b565b18a93a0b7d7bddaae)：使钥匙串集成可以由用户显式启用，同时保留对声明其为依赖项的配置文件的自动注入功能。","2026-03-27T08:47:52",{"id":150,"version":151,"summary_zh":152,"released_at":153},188856,"v0.7.0","### 升级说明\n\n- 无特别说明。\n\n### 功能改进\n\n- `chromium-headless` 现在支持 macOS 上的官方 Google Chrome 浏览器，通过允许 `com.google.Chrome.*` Mach 服务以及无头模式启动所需的 Crashpad 作用域状态来实现。\n\n### 问题修复\n\n- `shell-init` 现在可以正确解析 Homebrew 安装的补全符号链接，这些链接会指向 GUI 应用程序包的 `Contents\u002FResources` 路径，从而避免 zsh 的 `compinit` 输出大量“操作不允许”的错误信息，同时无需授予对整个应用包的读取权限。\n\n### 其他工作\n\n- 增加了对 Homebrew GUI 应用补全符号链接的回归测试覆盖，并更新了 Claude 代码端到端启动匹配器，以确保 macOS TUI 套件与当前的 Claude 欢迎界面保持一致。\n\n### 致谢\n\n- @thegalexc 在 [#70](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fpull\u002F70) 中添加了官方 Google Chrome 无头模式的支持。\n- @pingvinen 在 [#67](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F67) 中指出了本版本修复的 Homebrew GUI 补全噪音问题。\n\n### 沙盒配置文件变更\n\n- [`chromium-headless.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.6.0...v0.7.0#diff-9f6dc8d781704105880e2f6841f5783b98bf8e483bc6454f3ca1b9560c3fcdc8)：新增了官方 Google Chrome 的 Mach 端口和 Crashpad 访问权限，使无头模式下的 Chrome 能够在 `chromium-headless` 沙盒下正常启动，而不会在 rendezvous 或 Crashpad 初始化时崩溃。\n- [`shell-init.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.6.0...v0.7.0#diff-b4e8dd0043aab271dfa6bf04dec2110baca715ff9a4d6032d22f32ea88a3dd08)：允许 shell 启动流程跟随 Homebrew GUI 应用的补全符号链接进入 `Contents\u002FResources` 目录，同时将访问权限限制在补全相关的文件范围内。","2026-03-27T08:20:50",{"id":155,"version":156,"summary_zh":157,"released_at":158},188857,"v0.6.0","### 升级说明\n\n- Claude 的 VS Code 外部编辑器交接现在默认为仅复用模式。如果你依赖 `Ctrl+G` 从普通的 `safehouse -- claude ...` 会话冷启动 VS Code，请添加 `--enable=vscode`。现有的 `EDITOR` 或 `VISUAL` 值仍然具有优先权。\n\n### 功能\n\n- 为 OpenAI Codex Desktop 应用程序添加了自动配置文件选择功能，包括其应用包、应用状态路径、Electron 运行时依赖项、偏好设置域以及基于钥匙串的登录界面。\n- `safehouse --explain` 现在会报告调用的命令、配置文件的目标命令、主机和执行环境中的 `PATH` 匹配情况，以及一个可直接运行的沙盒拒绝日志提示，从而大大简化命令解析的调试过程。\n\n### 错误修复\n\n- 通过允许 `fnm_multishells` shim 使用的元数据遍历和安装根目录，以及 macOS `~\u002FLibrary\u002FApplication Support\u002Ffnm` 的布局，恢复了在 `fnm` 下的 Node\u002Fnpm 工作流。\n- Safehouse 现在会在启动和 `--explain` 时跳过过时的链接工作树管理条目，避免在遗留旧工作树元数据时出现 `realpath` 失败的情况。\n- 家目录范围的路径权限现在会解析配置文件所有路径的符号链接目标，这修复了当 `~\u002F.config\u002Fopencode` 指向由 dotfiles 管理的目录时 Opencode 的引导问题。\n- 优化了 Claude 的 VS Code 编辑器交接机制，使默认路径复用已运行的 VS Code 实例，而显式使用 `--enable=vscode` 的冷启动路径则会以隔离的 Safehouse 管理配置文件独立启动。\n\n### 日常维护\n\n- 为 Codex Desktop 应用包检测、`fnm` 多 Shell 和 App Support Node 工作流、Opencode 符号链接的 XDG 路径、过时工作树处理、`--explain` 命令解析输出，以及新的 Claude\u002FVS Code 编辑器适配模式，增加了回归测试覆盖。\n- 更新了关于 `--enable=vscode`、Claude 外部编辑器交接，以及在沙盒化模式下默认保留 `EDITOR` 和 `VISUAL` 的文档。\n\n### 致谢\n\n- @Kola50011 在 [#62](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fpull\u002F62) 中添加了 OpenAI Codex Desktop 应用程序的配置文件。\n- @wkirby 在 [#13](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F13) 中指出了本版本修复的基于 `fnm` 的 Node\u002Fnpm 解析失败问题。\n- @benjivm 在 [#61](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F61) 中指出了本版本修复的 Opencode 符号链接 XDG 路径引导失败问题。\n- @rublev 在 [#46](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F46) 中指出了本版本强化的 Claude 到 VS Code 交接行为。\n\n### 更改的沙盒配置文件\n\n- [`node.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.5.2...v0.6.0#diff-94a5c97eafdc81daa5ae1e467d55943959ac559f14c59d8c3af198e716ad311f): 添加了 `fnm` 的安装根目录和多 Shell 元数据访问权限，以便 Node 子进程的 `PATH` 解析和 npm shim 在 XDG 和 macOS App Support 布局下都能正常工作。\n- [`vscode.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.5.2...v0.6.0#diff-471f0b2ad5b04157955a47cc887440730950d6b71a0e9ff5181d66a9f95bb515): 使完整的 VS Code 桌面\u002F","2026-03-23T08:37:32",{"id":160,"version":161,"summary_zh":162,"released_at":163},188858,"v0.5.2","## [0.5.2] - 2026-03-18\n\n### 升级说明\n\n- 无特别说明。\n\n### 错误修复\n\n- 默认的 Apple 命令行工具沙盒配置文件现在包含了 `ranlib` 以及常见的编译器别名和低风险的归档与检查辅助工具，从而恢复了在沙盒内隐式调用 `ranlib` 的 `cargo build` 及其他静态归档工作流。\n\n### 日常维护\n\n- 增加了对 `ar` 归档创建和 Rust `cargo build` 静态库的执行覆盖率测试，并在 macOS 测试工作流中安装了一个稳定的 Rust 工具链，以便在 CI 中验证并重现此回归问题。\n\n### 感谢\n\n- @Sixeight 在 [#57](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F57) 中指出了导致 Rust 静态库构建失败的 `ranlib` 权限缺失问题，该问题已在本版本中修复。\n\n### 沙盒配置更新\n\n- [`apple-toolchain-core.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.5.1...v0.5.2#diff-2e94e17a0cc2897fd42614396f336402efeab2c61bf5164883c16af81389fb2b): 将 `ranlib`、常用编译器别名及相关低风险检查工具添加到经过精心挑选的 CLT 允许列表中，使静态归档构建在默认情况下即可正常运行，而无需放宽对调试工具的访问权限。\n","2026-03-18T08:15:57",{"id":165,"version":166,"summary_zh":167,"released_at":168},188859,"v0.5.1","## [0.5.1] - 2026-03-17\n\n### 升级说明\n\n- 无特别说明。\n\n### 错误修复\n\n- 内置的绝对 `file-read*` 路径现在能够解析 macOS 兼容性符号链接，例如 `\u002Fprivate\u002Fetc\u002Fresolv.conf` 和 `\u002Fprivate\u002Fetc\u002Flocaltime`，同时明确保留 `xcode-select` 指针符号链接，以防止默认沙盒无意中继承特定主机上的完整 Xcode 套件。\n- `--enable=lldb` 现在支持带有版本号的完整 Xcode 应用程序包，以及在某些主机上 LLDB 需要加载的 Apple 私有开发者框架；这些主机并非仅使用命令行工具，而是依赖于 Xcode 提供的开发者资源。\n- Bundler 现在可以读取位于 `\u002FLibrary\u002FRuby\u002FGems` 的 macOS 系统默认 gemspec 目录，从而恢复了沙盒内诸如 `bundle --version` 等只读命令的功能。\n\n### 维护工作\n\n- 新增了针对内置符号链接目标渲染、`xcode-select` 指针例外情况、基于 Xcode 的主机上 LLDB 的支持、Bundler 系统 gem 读取，以及文件符号链接 CLI 授权等方面的回归测试覆盖。\n- 清晰化了 README 文件及策略\u002F分发相关文档中关于内置路径解析及其当前适用范围的内容。\n\n### 致谢\n\n- @technicalpickles 在 [#54](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F54) 中指出了本版本修复的内置符号链接解析漏洞。\n\n### 沙盒配置文件变更\n\n- [`ruby.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.5.0...v0.5.1#diff-e6c5527826f7eeab06d5ebadd9b3a6be91aa1b5c88874d651f9a60f758a1554e)：新增对 `\u002FLibrary\u002FRuby\u002FGems` 的只读访问权限，使 Bundler 能够枚举 macOS 默认 gem，而无需对系统 Ruby 状态进行写入操作。\n- [`lldb.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.5.0...v0.5.1#diff-9b1a1aee4fcd6c90b56db204faf4c05fcb1bec258503143aeb2c87d53b6dfdbd)：扩大了 LLDB 的 Xcode 只读访问范围，纳入了版本化的应用程序包和当主机选择完整 Xcode 安装时所需的私有开发者框架。","2026-03-17T22:07:01",{"id":170,"version":171,"summary_zh":172,"released_at":173},188860,"v0.5.0","### 升级说明\n\n- Safehouse 现在会将默认的工作目录固定为调用时所在的目录，而不是向上追溯到最近的 Git 仓库根目录。这样可以避免在从大型代码库中的深层嵌套文件夹或用户主目录下的 Git 树中启动时，意外扩大访问范围。如果你有意在嵌套目录下启动时需要更广泛的仓库访问权限，可以通过 `--add-dirs=\u002Fpath\u002Fto\u002Frepo` 或 `--add-dirs-ro=\u002Fpath\u002Fto\u002Frepo` 显式授予。\n\n### 功能更新\n\n- 新增了一个可复用的 `microphone` 可选集成，支持通过 TCC、CoreAudio、CMIO 以及 Apple HDA 输入路径进行麦克风采集。\n- Claude Code 现在会自动引入这一共享的麦克风集成来实现语音模式，而不再直接在代理配置中嵌入麦克风权限。\n\n### 问题修复\n\n- 不包含实际仓库元数据的祖先 `.git` 目录不会再扩大默认的工作目录范围。\n\n### 其他改进\n\n- 增加了针对调用作用域工作目录行为、嵌套链接工作树启动、受信 `.safehouse` 发现、麦克风集成以及 PATH 检测的回归测试覆盖。\n- 清晰化了文档和机器可读包装器的相关说明，使默认工作目录的约定与运行时行为保持一致。\n\n### 致谢\n\n- 感谢 @schmijos 在 [#52](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F52) 中指出并报告了本版本修复的默认工作目录自动上溯问题。\n\n### 沙盒配置变更\n\n- [`10-system-runtime.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.4.0...v0.5.0#diff-c27b7abd9dcf3cd976d593264e5d14dcfc2e10422b3dcdebb8bb9dbee4d611c8): 增加了对 `~\u002F.local\u002Fbin` 的窄范围遍历和列出权限，以便 PATH 检测能够找到用户安装的辅助工具，而无需读取其内容。\n- [`microphone.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.4.0...v0.5.0#diff-dbfccfaa1929f95619d832f800692ab0400315aa6e601f0f2f2f1a6bd37fbda9): 添加了一个可复用的麦克风集成，涵盖 TCC、CoreAudio、CMIO 以及 Apple HDA 输入权限，用于支持启用语音功能的代理工作流。\n- [`claude-code.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.4.0...v0.5.0#diff-caf651f708e889ca1935c3c382d551ccbed8eb81f611fab631829993fca117b7): 将 Claude Code 的语音模式切换为依赖共享的 `microphone` 集成，而非直接在配置中携带麦克风访问权限。\n\n","2026-03-17T20:32:23",{"id":175,"version":176,"summary_zh":177,"released_at":178},188861,"v0.4.0","## [0.4.0] - 2026-03-16\n\n### 升级说明\n\n- SSH 代理认证现为可选功能。如果您之前在 Safehouse 中未使用额外标志便依赖 `SSH_AUTH_SOCK`，请添加 `--enable=ssh`。\n- 打包发布的版本现在仅包含 `dist\u002Fsafehouse.sh`。如果您曾使用过 `dist\u002Fprofiles\u002F*` 或生成的 Claude 启动器命令，请切换到 `dist\u002Fsafehouse.sh`，或从源代码中重新生成所需内容。\n- 链接的 Git 工作树现在会在启动时自动检测，且同仓库的其他工作树默认可被读取。若希望更严格的单工作树可见性，可通过 `--append-profile` 的拒绝规则进一步限制，或禁用自动授予的工作目录权限，并使用显式的路径标志。\n\n### 功能改进\n\n- 默认添加了对链接工作树的支持：当有效工作目录为 Git 工作树根目录时，Safehouse 现在会为该工作树授予共享的 Git 元数据访问权限，并对同一仓库中的其他现有工作树提供只读可见性。\n- 扩展了 macOS 上 Chrome 系列浏览器的支持：`chromium-full` 现在覆盖系统 Google Chrome 的启动；`playwright-chrome` 会注入 `PLAYWRIGHT_MCP_SANDBOX=false`；而 `agent-browser` 现在依赖于 Chrome for Testing 使用的完整 Chrome 权限配置。\n- 沙盒化命令现在默认会设置 `APP_SANDBOX_CONTAINER_ID=agent-safehouse`，除非调用者或环境已设置了该值。\n\n### Bug 修复\n\n- GitHub Copilot CLI 现在可以在 `~\u002FLibrary\u002FCaches\u002Fcopilot` 下引导其启动缓存，从而使打包版启动器在首次运行时能够顺利启动。\n- SSH 代理套接字默认会被拒绝，除非设置了 `--enable=ssh`，从而弥补了一个漏洞：此前通过 `network-outbound` 仍可能实现基于代理的 SSH 认证。\n\n### 其他工作\n\n- 重构了 Shell\u002F运行时内部逻辑，将其拆分为分阶段的 CLI、策略和执行模块，并围绕单一嵌入式 `dist\u002Fsafehouse.sh` 重新构建了发布包。\n- 增加了更广泛的策略、界面、打包以及基于 tmux 的端到端测试覆盖，以验证行为并提升发布稳定性。\n- 在文档中明确了默认的 HOME 沙盒行为，包括 `HOME_DIR` 的作用以及基础策略仍未授予的内容。\n\n### 致谢\n\n- @clkao 在 [#43](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fpull\u002F43) 中添加了默认的 `APP_SANDBOX_CONTAINER_ID` 注入。\n- @prabirshrestha 推动了在 [#37](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F37) 中实现的 Git 工作树支持。\n- @eikes 提出了本版本修复的 Copilot 启动失败问题，详见 [#47](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F47)。\n- @Bouke 提议在 [#11](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F11) 中编写更清晰的 HOME 行为文档。\n- @mtford90 指出了本版本解决的 Agent Browser 和 Playwright 支持方面的不足，详见 [#25](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fissues\u002F25)。\n\n### 沙盒配置文件变更\n\n- [`00-base.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fcompare\u002Fv0.3.1...v0.4.0#diff-02c38ee50d8f4793102a508750ddd9d62254a5bef2a70f857fdfdb4f9677acb9)：澄清了 `HOME_DIR` 基础配置文件的注释，以便…","2026-03-16T14:07:54",{"id":180,"version":181,"summary_zh":182,"released_at":183},188862,"v0.3.1","## [0.3.1] - 2026-03-12\n\n### Bug 修复\n\n- 默认的沙箱化执行现在会保留常见的非敏感代理、TLS 和浏览器控制相关环境变量，包括 `HTTP_PROXY`、`HTTPS_PROXY`、`NO_PROXY`，以及它们的小写形式、`NODE_EXTRA_CA_CERTS` 和 `NO_BROWSER`。\n- 加强了 Java 工具链的沙箱隔离，确保系统级别的 `\u002FLibrary\u002FJava` 运行时为只读，而用户级别的 `~\u002FLibrary\u002FJava` 安装则保持可写，从而防止意外写入全局安装的 JDK。\n\n### 沙箱配置文件变更\n\n- [`profiles\u002F30-toolchains\u002Fjava.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fblob\u002Fv0.3.1\u002Fprofiles\u002F30-toolchains\u002Fjava.sb)：将系统和用户的 Java 权限分离，使全局安装的运行时变为只读，而用户特定的 Java 状态仍可写入。\n\n","2026-03-12T16:37:42",{"id":185,"version":186,"summary_zh":187,"released_at":188},188863,"v0.3.0","## [0.3.0] - 2026-03-12\n\n### 功能\n\n- 新增 `--enable=xcode` 集成：对 Xcode 开发者根目录、应用包以及命令行工具的只读访问；对每个用户的 DerivedData、CoreSimulator、XCTestDevices 和 CoreDevice 状态的读写访问；支持 CoreSimulator 和 CoreDevice 的 mach 服务查找。在沙盒环境下启用 `xcodebuild`、`simctl` 和 `devicectl`。\n- 默认的清理环境 now 中会保留 `SDKROOT`，因此基于 Xcode SDK 的编译无需使用 `--env` 参数即可正常工作。\n- 为独立安装添加了 `safehouse update [--head]` 子命令，可从 GitHub 发布资产或最新的 `main` 构建版本进行自我更新。\n\n### 错误修复\n\n- Node 工具链配置文件 now 包含 `~\u002F.cache\u002Fpuppeteer` 路径，与 Playwright 和 Cypress 的缓存路径并列。\n\n### 其他\n\n- 更新了 NPM 文档站点的依赖项。\n- 将实时测试的拒绝模式重构为共享基础设施。\n\n### 沙盒配置文件变更\n\n- [`profiles\u002F55-integrations-optional\u002Fxcode.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fblob\u002Fv0.3.0\u002Fprofiles\u002F55-integrations-optional\u002Fxcode.sb)：新增配置文件，授予对 Xcode 开发者根目录以及按用户划分的构建和模拟器状态的访问权限。\n- [`profiles\u002F30-toolchains\u002Fnode.sb`](https:\u002F\u002Fgithub.com\u002Feugene1g\u002Fagent-safehouse\u002Fblob\u002Fv0.3.0\u002Fprofiles\u002F30-toolchains\u002Fnode.sb)：新增 Puppeteer 缓存路径 (`~\u002F.cache\u002Fpuppeteer`)。","2026-03-12T15:59:10",{"id":190,"version":191,"summary_zh":192,"released_at":193},188864,"v0.2.0","## [0.2.0] - 2026-03-11\n\n### Features\n\n- Added a standalone `safehouse update` subcommand, including `--head` support for updating from the latest `main` build when needed.\n- Added `safehouse --version` and switched standalone install and launcher docs to tagged GitHub release assets instead of `main`.\n\n### Bug Fixes\n\n- Hardened self-update failure handling so invalid assets are rejected safely, identical assets report as already up to date, replacement failures clean up temporary files, and `update` does not hijack wrapped commands after policy flags or `--`.\n- Fixed Homebrew tap packaging for `brew install --HEAD` so it installs `dist\u002Fsafehouse.sh` correctly.\n\n### Chores\n\n- Centralized project versioning in the repo-root `VERSION` file so release assets, docs, and generated artifacts stay aligned.\n- Kept the dist-regeneration workflow from running on tag pushes, so release tags do not trigger a push-back job against the tag ref.\n- Made Homebrew tap cleanup in the release flow nounset-safe under `set -u`.\n\n","2026-03-11T17:33:13",{"id":195,"version":196,"summary_zh":197,"released_at":198},188865,"v0.1.0","\n### Upgrade Notes\n\n- First tagged release.\n","2026-03-11T15:03:03"]