Goose 是什么:它到底解决什么需求,和其他 Agent 相比真正不同在哪里?
基于 Goose 官网文档和 GitHub 仓库,对 Goose 的核心需求、产品差异、优势、理念与适合处理的任务做一次详细、事实导向的解读。
Goose 是什么:它到底解决什么需求,和其他 Agent 相比真正不同在哪里?
如果只用一句话概括 Goose,它最准确的定位不是“另一个 AI 编程助手”,而是一个本地运行、开放可扩展、同时覆盖桌面、CLI 和 API 的通用型 AI Agent 平台。
官方首页给它的定义很直接:your native open source AI agent。README 里的描述也很明确:它不是只做代码,而是用于 code、workflows、research、writing、automation、data analysis 等多种任务。结合官方文档和仓库本身去看,Goose 的核心野心不是做一个“会写代码的模型外壳”,而是做一个真正能嵌入用户本地工作环境、又能接入外部工具生态的 agent runtime。
截至 2026-04-13,GitHub API 显示 aaif-goose/goose 大致为:
- 41,628 Stars
- 4,162 Forks
- 默认分支 main
- 主要语言 Rust
- License 为 Apache-2.0
这个项目已经从 block/goose 迁移到了 Linux Foundation 下的 Agentic AI Foundation(AAIF),这也让它和很多“单公司主导的 agent 产品”在治理结构上出现了明显差别。
Goose 核心在解决什么需求?
Goose 真正要解决的需求,不是“让模型回答更聪明”,而是让 AI Agent 在本地真实工作环境里可用、可控、可扩展、可迁移。
今天很多 agent 工具都有一个共同问题:它们看起来都很强,但真正落地时,往往会卡在下面几个地方:
- 只能在某个厂商模型上好用,迁移成本高
- 只能在终端里工作,离真实桌面工作流太远
- 只能做代码仓库内的事,碰到浏览器、Slack、数据库、文件系统、自动化流程就碎掉
- 工具接入方式封闭,扩展能力有限
- 安全模型过于粗暴,要么全放开,要么全拦住
- 会话可复用性差,做完一次任务难以沉淀成可重复工作流
Goose 的产品设计几乎就是围着这些痛点展开的。
它给出的回答是:
- 本地运行,天然接近你的真实环境
- 支持 Desktop、CLI、API 三种入口,不把使用场景锁死
- 支持 15+ 模型提供商,不跟单一模型绑定
- 通过 MCP 扩展外部能力,把 Agent 从“会聊天”扩展成“会调用系统和服务”
- 通过 ACP provider 复用 Claude Code、Codex、Gemini CLI 这类已有订阅
- 通过 recipes、subagents、goosehints、extensions,把一次性任务沉淀为长期工作流
所以,Goose 的核心需求不是“替你写一段代码”,而是“给你一个能长期接管不同类型任务的 agent 操作层”。
它和其他 Agent 相比,真正不同的地方是什么?
这是理解 Goose 最关键的部分。
如果把今天市面上的 agent 粗略分一下,大致可以看到几种常见路线:
- 以代码仓库操作为中心的终端 Agent
- 以聊天窗口为中心的 SaaS Agent
- 以某一家模型厂商为中心的官方代理工具
- 以自动化集成为中心的 workflow agent
Goose 和这些路线都部分重叠,但又没有完全落在其中任何一个框里。
1. 它不是“只服务代码仓库”的 Agent
很多流行 agent 的实际强项,主要集中在本地代码库:改文件、跑测试、读 git diff、修 bug。这类产品非常有价值,但它们天然带着一个边界:任务最好是“工程问题”。
Goose 明确把自己定义成 general-purpose AI agent。README 直接写了:not just for code。文档里也把 research、writing、automation、data analysis 列为典型用途。这个差别听起来像一句品牌话术,实际上影响很大。
因为一旦产品的目标不是“仓库内 coding assistant”,它的工具系统、权限系统、界面形态、扩展协议、复用机制,都会走向更通用的方向。Goose 也正是这么设计的。
2. 它不是纯终端工具,而是桌面、CLI、API 三位一体
这是 Goose 一个非常实用、但经常被低估的优势。
很多 agent 工具本质上是 CLI first。CLI 对工程师很友好,但不一定适合所有任务。另一些产品则更偏桌面或网页聊天,适合轻量交互,但不够适合自动化与脚本化。
Goose 同时提供:
- 桌面应用:适合交互式任务、配置、可视化会话
- CLI:适合开发者工作流、脚本、终端任务
- API:适合嵌入其他产品和自定义界面
仓库里的结构也体现了这一点:核心逻辑在 Rust crate 中,CLI、server、desktop UI 是分层构建的。官方还专门提供了 CUSTOM_DISTROS.md,讲如何做定制发行版,说明 Goose 从架构上就是把“多入口、多分发、多品牌形态”当成一等公民来设计的。
3. 它把 MCP 扩展放在非常核心的位置
这点和很多“自带一组固定工具”的 agent 很不一样。
Goose 文档明确说,extensions 基于 MCP(Model Context Protocol)。而且它不是把 MCP 当作一个可有可无的附加功能,而是把扩展系统当作 Goose 整个能力边界的核心组成部分。官方文档和 README 提到它可以接入 70+ extensions / MCP servers。
这意味着 Goose 的能力上限,不由产品团队自己内置了多少工具决定,而是由 MCP 生态决定。
这件事的意义很大:
- 你可以把 Goose 接到 GitHub、Slack、数据库、浏览器、内部服务、自动化系统
- 你不用等官方“什么时候支持某个工具”
- 企业内部也可以把私有 MCP server 直接接进 Goose
- Goose 更像一个 agent runtime,而不是一组静态 feature 的总和
对比之下,很多 agent 产品虽然也有工具调用,但扩展机制往往更封闭,或者更偏向“平台插件市场”而不是开放协议生态。
4. 它支持 ACP provider,这让它和很多 Agent 的成本结构不同
Goose 一个很容易被忽略、但非常聪明的设计,是对 ACP(Agent Client Protocol)provider 的支持。
官方文档里专门有 ACP Providers 一节,支持把 Claude Code、Codex、Gemini CLI 等 ACP agent 当成 provider 使用。文档给出的核心价值很直接:可以复用已有订阅,而不是一切都走单独 API 计费。
这和很多 agent 的默认逻辑不同。很多产品的思路是:你来接我的界面、我的工具、我的模型调用路径,费用也主要沿着这条路径走。
Goose 的思路则更开放:
- 你可以直接用 API key
- 也可以用现成的 Claude / ChatGPT / Gemini 订阅
- 也可以走 OpenRouter、Bedrock、Ollama、OpenAI-compatible endpoint
这让 Goose 在“模型可替换性”和“成本弹性”上明显更强。它不是让用户适应某一条模型供应链,而是让 agent 层尽量兼容不同供应链。
5. 它的可复用性设计比很多 Agent 更完整
很多 agent 的任务完成方式,本质上还是“一次对话,一次完成”。做完就做完了,沉淀不下来。
Goose 在这方面下了很多功夫,主要体现在四个概念上:
- Sessions:保留上下文和状态
- Recipes:把一次成功的任务配置沉淀成可复用模板
- Goosehints:为项目和目录注入长期上下文指令
- Subagents:把复杂任务拆给独立子代理执行
其中 recipes 特别关键。官方把它描述成把当前 session 中的工具、目标、设置打包成可复用 agent。这个思路和很多只会“记住聊天历史”的 agent 不一样,它更接近“把工作流产品化”。
这使 Goose 更适合长期重复型工作,而不是只适合临时问答。
6. 它对安全和权限的处理更像“真正可部署工具”
Goose 文档里有几层值得注意的安全设计:
- 外部 extensions 激活前会检查已知恶意包
- 有 permission mode、tool permissions、.gooseignore
- 有 adversary mode:在工具调用执行前,用独立 reviewer 检查是否应当允许
尤其 adversary mode 很有代表性。它不是简单规则匹配,而是让一个独立 agent reviewer 结合原始任务、近期消息和工具调用内容去判断是否应该 ALLOW 或 BLOCK。
这说明 Goose 的安全思路不是“完全信任主 agent”,而是承认 agent 可能被 prompt injection、上下文污染或任务漂移影响,因此用第二观察层去做约束。
这类设计,通常只会出现在那些真正把 agent 当作长期执行系统来考虑的产品里。
Goose 的核心理念是什么?
从 README、llms.txt、docs 和仓库结构看,Goose 的核心理念可以总结成四个词:
- native
- open
- extensible
- portable
展开讲就是:
- Native:Agent 不是一个远端网页玩具,而是直接进入你的本地环境和真实工作流。
- Open:它是 Apache 2.0 开源项目,还是 AAIF / Linux Foundation 生态中的项目,不是单一商业黑箱。
- Extensible:通过 MCP 扩展能力,而不是把能力写死在产品本体里。
- Portable:模型、界面、扩展、工作流都尽量避免锁定,允许迁移和重组。
这和很多 agent 的产品哲学不同。很多 agent 实际上卖的是“一个带模型的闭环体验”;Goose 更像是在提供“一个开放的 agent 基础设施层”。
它主打处理什么任务?
虽然 Goose 不只做代码,但它也不是“什么都能做所以什么都不聚焦”的产品。它最适合的任务,有明显共性:
- 需要调用本地环境和外部工具的任务
- 需要长期复用的工作流任务
- 需要模型供应商切换弹性的任务
- 需要跨桌面、终端、API 三种入口协作的任务
具体来说,官方文档和 README 指向的典型任务包括:
- 编码、改代码、执行开发任务
- 研究与资料整理
- 写作与文档工作
- 自动化操作与系统集成
- 数据分析
- 接入 GitHub、Slack、数据库等外部系统
换句话说,Goose 最擅长的不是“回答一个问题”,而是“接住一个目标,然后借助环境和工具去把目标完成”。
用户到底可以怎么用 Goose?几个更具体的使用场景
如果只说 Goose 可以做 coding、research、automation,还是太抽象。真正有帮助的是把它放进具体工作场景里看。
场景 1:把 Goose 当成本地开发搭子,而不是单纯代码补全工具
最直接的用法当然还是开发任务,但 Goose 的特点不是“补一段代码”,而是可以接住一整段开发目标。
例如,一个开发者可以这样使用它:
- 先在 CLI 或桌面里让 Goose 读取当前项目结构
- 让它分析一个 bug 可能出在哪几个模块
- 让它实际修改文件、运行测试、检查报错
- 再让它把变更总结成可读的说明
这和传统代码助手的区别在于,Goose 不是只停在“给你建议”,而是可以把“读仓库 → 改代码 → 跑命令 → 再观察结果”串成一个完整回路。
场景 2:把 Goose 接到 GitHub,做 PR、Issue 和代码审查协同
因为 Goose 强调 MCP extension,所以一个非常实际的场景是把它接到 GitHub 相关工具链。
这时用户不是单纯在本地问它“这段代码有没有问题”,而是可以把任务说得更像真实工作:
- 读取某个 PR 的上下文
- 汇总 reviewer 反馈
- 对比本地分支与远端 diff
- 生成修改建议或提交说明
- 把重复性的 review 动作沉淀成 recipe
这种用法更接近“让 agent 进入团队开发流程”,而不只是“让模型帮你解释代码”。
场景 3:让 Goose 处理跨工具的研究任务
Goose 并不把自己限制在代码领域,所以它也适合做跨工具的信息整理工作。
比如一个产品经理或研究员可以这样用:
- 让 Goose 连接浏览器相关扩展或其他外部服务
- 抓取几个公开页面、文档或 API 说明
- 把内容整理成对比表
- 继续追问:哪些差异最重要、哪些适合落地、哪些风险最大
这里 Goose 的价值不在于“会总结”,而在于它可以把搜集、整理、引用上下文、复用会话和沉淀 recipe 放进同一层里做。
场景 4:把重复流程沉淀成 recipe,而不是每次重新教一遍
这是 Goose 很值得重视的一个使用方式。
很多人第一次用 agent,最常见的问题就是:这次跑通了,下次还得重新解释一遍。Goose 的 recipes 就是为了解决这个问题。
例如,一个团队可以把下面这类流程做成 recipe:
- 拉取某类输入
- 调用固定的一组 extensions
- 使用固定 provider / model
- 按指定格式输出结果
- 必要时再调用 subagent 做并行子任务
这样 Goose 就不只是一个临时助手,而更像一个“可重复调用的任务模板执行器”。
场景 5:用 Goose 做企业内部工具入口
如果一个组织已经有很多内部系统——数据库、知识库、工单系统、内部 API——那么 Goose 的价值会更明显。
通过 MCP server,企业可以把这些内部能力接进 Goose,让用户通过一个统一 agent 层去完成原本要在多个系统里切换的动作。
一个典型的使用方式是:
- 员工在 Goose 里描述目标,而不是自己去找系统入口
- Goose 通过内部扩展读取数据或执行操作
- 结果再统一回到同一个会话里
这也是为什么 Goose 更像“agent 基础设施”,因为它适合做统一入口,而不是只做某个单点工具的 UI。
场景 6:用 subagents 处理需要隔离和并行的任务
官方文档里对 subagents 的描述很清楚:它们是独立实例,用来保持主会话干净,同时隔离复杂任务。
用户的具体用法可以非常直观:
- 一个子代理专门做代码审查
- 一个子代理专门抓文档和资料
- 一个子代理专门生成几个备选实现
- 最后主会话只接收整理后的结果
这对复杂任务尤其重要。很多 agent 一旦任务链拉长,主会话会变得很脏、很乱、很难继续。Goose 的 subagent 机制,本质上是在给复杂任务做“上下文隔离层”。
场景 7:让 Goose 复用现有订阅,降低试用门槛
还有一个很现实的使用场景:有些用户并不想再为“一个新的 agent 产品”重新建立一整套 API 计费方式。
这时候 Goose 的 ACP provider 支持就很有意义。用户可以直接把现有的 Claude Code、Codex、Gemini CLI 订阅接进 Goose,再叠加 Goose 自己的 extensions、recipes 和会话能力。
这种用法的核心价值是:用户不必在“换工具”和“换整个模型供应链”之间做绑定选择。
一个更接近真实工作的总结
如果把 Goose 放进真实工作里,它最像的不是“一个随时回答问题的机器人”,而是一个可以逐渐长成你工作入口的 agent 层。
你可以先从最简单的本地开发任务开始;再接 GitHub、文档、数据库;再把成功流程做成 recipe;最后把它变成团队或组织内部统一的任务入口。
这也是 Goose 最实际的使用路径:不是一次性“惊艳”,而是持续累积。
Goose 的优势,最终落在什么地方?
如果把它的优势浓缩成一句话,那就是:
Goose 把 Agent 从‘模型前面的一个界面’推进成了‘本地可执行、开放可扩展、跨入口复用的工作层’。
它的优势不是某一项功能特别花哨,而是整套结构非常完整:
- 本地原生,不脱离环境
- 桌面 + CLI + API 三位一体
- 15+ provider,模型切换灵活
- MCP 扩展生态足够开放
- ACP provider 让订阅复用更现实
- recipes / goosehints / sessions / subagents 让复用能力更强
- 权限与 adversary mode 让安全控制更像工程系统,而不是演示功能
- Rust 实现 + 开放治理,让它更像长期基础设施,而不是短周期产品实验
和 Claude Code / Codex / OpenCode / oh-my-openagent / OpenHands 相比,Goose 到底差在哪、强在哪?
把 Goose 放进更大的 agent 版图里看,会更容易理解它的定位。这里最重要的一点是:这些产品并不完全属于同一层。
有些是官方 coding agent,有些是开源 coding agent,有些更像 agent harness,有些已经往 SDK、Cloud、Enterprise 平台方向走。Goose 的特别之处,恰恰在于它落在这些路线的交叉点上。
先给一个简明判断
- Claude Code:最像“官方一体化 coding agent”
- Codex CLI:最像“OpenAI 官方本地 coding agent”
- OpenCode:最像“开源、终端优先、provider-agnostic 的 coding agent”
- oh-my-openagent:更像“面向强工作流和多模型编排的 agent harness / 增强层”
- OpenHands:更像“从 coding agent 向 SDK、GUI、Cloud、Enterprise 平台延展的完整开发体系”
- Goose:最像“本地优先、协议优先、桌面/CLI/API 一体的开放 agent 操作层”
1. Goose vs Claude Code
Claude Code 官方文档把它定义成 agentic coding tool,可以读代码库、改文件、跑命令,并且可用在 terminal、IDE、desktop app 和 browser。这个产品的优势很明确:Anthropic 自己做的官方体验,围绕 Claude 的编码能力展开,集成完整,产品完成度高。
Goose 和 Claude Code 的差异主要不在“能不能改代码”,而在产品哲学:
- Claude Code 更像一个官方 coding surface
- Goose 更像一个开放 agent runtime
具体来说:
- Claude Code 的强项是统一体验、官方产品打磨、直接围绕 Claude 工作
- Goose 的强项是 provider 可替换、MCP extension、ACP provider、recipes、subagents、API 化和可定制发行
所以如果用户想要的是“最直接、最顺滑、官方支持的 Claude 编码体验”,Claude Code 往往更合适;但如果用户更在意开放性、协议生态、本地工具整合、供应商切换和长期复用,Goose 的空间更大。
2. Goose vs Codex CLI
OpenAI 的 Codex 仓库 README 把 Codex CLI 定义成 lightweight coding agent that runs in your terminal。这个定位非常清楚:轻量、终端、本地、官方、coding agent。
Codex CLI 的优势在于:
- 官方 OpenAI 出品
- 终端体验直接
- 和 ChatGPT 订阅体系衔接很顺
- 作为 coding agent 的定位非常收敛
而 Goose 相比 Codex 的不同之处在于,它并不把自己限制在“轻量终端 coding agent”这一个角色里。
Goose 多出来的层次主要有:
- 桌面 + CLI + API 三入口
- MCP 扩展生态
- ACP provider 兼容别家的 agent 客户端
- recipes / goosehints / subagents 这一整套复用层
- 更明显的“基础设施 / 平台”倾向
简单说,Codex CLI 更像一个打磨很清楚的官方 coding 工具;Goose 更像一个可以把 coding 放进去、但不止服务 coding 的 agent 平台。
3. Goose vs OpenCode
OpenCode README 自己的表述是 The open source AI coding agent。它非常明确地把自己放在 coding agent 这一类里,而且它对终端体验很重视,README 甚至直接把“focus on TUI”“push the limits of what's possible in the terminal”写了出来。
OpenCode 还在 README 里专门回答了“和 Claude Code 有什么不同”,强调几点:
- 100% open source
- 不和单一 provider 绑定
- 有 out-of-the-box LSP 支持
- 强烈强调 TUI
- 采用 client/server 架构
这说明 OpenCode 的路线其实已经很强,也和 Goose 有不少重叠:都强调开放、都不想绑单一模型、都不只是一个聊天框。
但二者仍有明显区别:
- OpenCode 的中心还是“coding agent”
- Goose 的中心更像“general-purpose local agent + extension runtime”
换句话说,OpenCode 更像是“把 coding 这件事做到极深”;Goose 更像是“把 agent operating layer 做得更广、更可组合”。
如果你是重度终端开发者,强依赖 TUI、LSP 和 coding workflow,OpenCode 的吸引力会很强;如果你想要一个能接代码、研究、写作、自动化、内部系统的统一 agent 层,Goose 会更自然。
4. Goose vs oh-my-openagent
这一组比较要特别小心,因为它们其实不完全是同一层产品。
oh-my-openagent 的 GitHub 描述是 the best agent harness - previously oh-my-opencode。从 README 的表达也能看出来,它的重点不是做一个基础 agent runtime,而是做“把不同模型、不同 agent、不同工作流组织起来并调优到更能干活”的 harness。
它的价值更像:
- 多模型编排
- 更强工作流封装
- 围绕 OpenCode/其他 agent 做增强层
- 把“怎么驱动 agent 干活”这件事做到更激进
所以 Goose 和 oh-my-openagent 的区别,不只是功能差异,更是抽象层次差异:
- Goose 更像一个通用、开放、协议优先的 agent 平台
- oh-my-openagent 更像一个高强度 agent harness / orchestration layer
对普通用户来说,Goose 更像“我直接使用的 agent 系统”;对想把现有 agent 能力进一步压榨、路由、编排、强化的人来说,oh-my-openagent 更像“我叠在上面继续增强的那一层”。
5. Goose vs OpenHands
OpenHands 的定位也很有意思。它不只是一款工具,而是已经分成了多个层次:
- Software Agent SDK
- CLI
- Local GUI
- Cloud
- Enterprise
README 里甚至直接说,CLI 会让人联想到 Claude Code 或 Codex;GUI 会让人联想到 Devin 或 Jules。这说明 OpenHands 的 ambition 非常大:它不是只想做单点产品,而是希望覆盖从 agent SDK 到企业部署的一整条链。
和 OpenHands 相比,Goose 的差别主要在这里:
- OpenHands 更偏“AI-driven development 平台化”
- Goose 更偏“本地优先、协议优先、通用任务 agent 层”
OpenHands 的 SDK、GUI、Cloud、Enterprise 体系,让它更像一个面向开发组织和平台工程的完整产品家族;Goose 则更像一个轻一些、开放一些、贴近个人与团队本地工作流的 agent 基础层。
如果用户需要的是更完整的开发平台、云端和企业部署路径,OpenHands 会非常有吸引力;如果用户更看重本地环境、开放扩展、provider 灵活性和跨界面使用,Goose 更有自己的独特位置。
一张更直白的对比清单
- Claude Code更像什么:官方 coding agent核心强项:官方体验、一体化、Claude 原生能力相对 Goose 的差异:更偏 Claude 官方产品面;Goose 更开放、更协议化。
- Codex CLI更像什么:轻量终端 coding agent核心强项:OpenAI 官方、终端直接、与 ChatGPT 订阅衔接强相对 Goose 的差异:更聚焦 coding;Goose 更广、更像 agent 平台。
- OpenCode更像什么:开源终端 coding agent核心强项:开源、provider-agnostic、TUI/LSP、coding workflow 深相对 Goose 的差异:更深耕 coding;Goose 更强调通用 agent 层与协议生态。
- oh-my-openagent更像什么:agent harness / orchestration layer核心强项:多模型编排、工作流增强、强执行风格相对 Goose 的差异:更像叠在其他 agent 上的增强层;Goose 更像基础运行层。
- OpenHands更像什么:AI-driven development 平台家族核心强项:SDK、CLI、GUI、Cloud、Enterprise 全链路相对 Goose 的差异:更平台化、更偏开发组织;Goose 更本地优先、更轻、更开放。
- Goose更像什么:开放 agent 操作层核心强项:Desktop/CLI/API、MCP、ACP、recipes、subagents、provider 弹性它自己的特点:不是最“官方”、也不是最“单点极致”,但最像开放 runtime。
最终怎么选?
如果只是想要一个一句话版本,可以这么理解:
- 你想要“官方 Claude 编码体验”:看 Claude Code
- 你想要“官方 OpenAI 终端 coding agent”:看 Codex CLI
- 你想要“开源、终端优先、coding 极强”:看 OpenCode
- 你想要“更激进的编排和 harness”:看 oh-my-openagent
- 你想要“更完整的开发平台路线”:看 OpenHands
- 你想要“开放、本地、可扩展、跨入口、协议优先的 agent 层”:看 Goose
也正因为如此,Goose 最独特的地方并不是它在某一项能力上把所有人都压过去,而是它把很多关键维度——本地性、开放性、协议化扩展、provider 弹性、任务复用、界面多入口——同时放进了同一个系统里。
结论
如果你想找的是一个“帮我在仓库里改改代码”的 agent,Goose 当然可以进入候选名单,但那不是它最值得注意的地方。
它真正值得看的,是它试图解决一个更大的问题:怎样把 AI Agent 做成一个既贴近本地环境、又不被模型和平台锁死,同时还能不断扩展和沉淀工作流的基础层。
这也是 Goose 和很多其他 agent 最大的不同。它不是只在竞争“回答得更像人”,而是在竞争“谁更像一个真正能长期接管任务的开放操作层”。
在今天这个 agent 工具越来越多、但很多产品形态还很脆弱的阶段,Goose 的价值恰恰在于它没有把自己做成一个更漂亮的聊天窗口,而是把很多真正决定 agent 上限的东西——本地性、扩展性、可迁移性、安全性和复用性——提前放进了架构里。
这也是为什么 Goose 不只是一个热门项目,更像是一个正在成形的 agent 基础设施方向。
参考资料
- 官网文档:https://goose-docs.ai/
- Quickstart:https://goose-docs.ai/docs/quickstart
- Providers:https://goose-docs.ai/docs/getting-started/providers
- Using Extensions:https://goose-docs.ai/docs/getting-started/using-extensions
- Subagents:https://goose-docs.ai/docs/guides/subagents
- ACP Providers:https://goose-docs.ai/docs/guides/acp-providers
- GitHub:https://github.com/aaif-goose/goose
图片来源:Unsplash(Avinash Murugappan、Bernd Dittrich、Bluestonex)。
Comments
0 public responses
All visitors can read comments. Sign in to join the discussion.
Log in to comment