想象一下,你请了一位叫“鹅管家”的全能助理。你随口说一句“帮我把书房那堆乱代码整理成一套能跑起来的方案”,他不会像普通顾问那样回你一份《我建议你……》的报告,而是转身去翻档案柜、抽出文件、划线修改、跑打印校准,最后把装订好的成品放在你桌上。这就是 Goose——一个开源的 AI 编程 Agent。它不满足于“生成几行代码给个建议”,而是直接浏览你的代码库、修改源码文件、执行终端命令、编写并运行测试,最后交出一份完整的代码变更方案。这种“AI 从回答者变成执行者”的模式,正是当下最热门的 Agentic Coding 方向。读完这篇文章,你会明白 Goose 的大脑如何思考、手脚如何配合、以及它和普通 AI 编程助手到底差在哪里。
理解 Goose 的价值在于:让你真正看懂 Agentic Coding 的工程本质——AI 如何从“动嘴”升级为“动手”,这对 AI 时代的一线开发者与架构师都是必备认知。
目录
可视化演示
展示Goose AI Agent工作流(理解→规划→执行→验证)、MCP工具调用框架(8种工具)与自主代码库浏览能力,动态对比Agentic Coding全流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Agent工作流:理解→规划→执行→验证 玫红为用户请求(Request) 橙色为规划(Plan) 绿色为执行与验证(Execute/Verify) Flow: Request -> Understand -> Plan -> Execute -> Verify -> Deliver Goose Agent五阶段工作流,执行阶段调用工具完成代码修改,验证后迭代或交付
初识Goose:你的开源AI编程Agent
你去咖啡馆点单,普通助手会告诉你“拿铁配方是浓缩加牛奶”,而真正能干的管家直接端上一杯做好的拿铁。Goose 就是后者。它不是一个停留在对话框里给建议的聊天机器人,而是一个“接到任务就动手”的开源 AI 编程 Agent。作为开源项目,Goose 的代码对社区透明,开发者可以自由部署、扩展、检查它的一举一动,这就像你清清楚楚知道管家用的每一瓶调料是什么牌子,而不是吃下一颗神秘药丸。
Goose 和传统 AI 代码补全助手(比如 IDE 里的自动补全插件)有本质区别。补全助手的工作方式是“你打字,它猜下一行”,本质是键盘上的预测器;而 Goose 的工作方式是“你布置任务,它跑腿办事”——它会自主地打开代码库翻找文件,判断哪里需要改,动手修改源码,再执行命令验证结果。你可以把它看成一位有独立工作流的工程师,而不是一个输入法。
从技术上看,Goose 可以概括为一个简洁的公式:它由大模型提供推理能力,由工具集提供动手能力,再由一个循环机制把两者反复串联起来,直到任务完成为止。
所以,鹅管家之所以“能办事”,不是因为它比普通助手更会聊天,而是因为它同时拥有了会思考的脑子、会干活的手脚、以及不达目的不罢休的循环节奏。理解了这三块拼图,你就掌握了 Goose 的骨架。
- LLM(推理大脑)负责理解自然语言需求、规划行动步骤的大语言模型,相当于鹅管家的“脑子”。
- Tools(工具集)Goose 可以调用的一系列外部功能,比如浏览代码、修改文件、执行命令,相当于管家的“手和脚”。
- Loop(行动循环)驱动“观察—决策—行动—再观察”不断迭代直到任务完成的工作节奏,相当于管家干活时“干一步看一眼”的闭环。
Agent架构:大脑如何调遣工具
鹅管家接手任务后,第一件事不是闷头乱翻,而是翻开自己那本《办事手册》:查档案该去哪个柜子、改文件该用哪支笔、验证结果该找哪个仪器。这本手册,在 Goose 里就是“工具调用框架”。它把每个可执行动作都登记成一张“名片”,上面写着工具的名字和用途说明,让大模型知道“我手里有这些牌可以打”。
Goose 的决策不是靠人写死的 if-else 规则,而是靠大模型根据任务内容做语义推理。当用户说“帮我找到登录超时的原因”,Goose 会在工具清单里评估:读文件更合适,还是搜索代码库更合适?为了把这种“挑选”过程讲清楚,我们可以把工具选择看作一次评分竞赛:每个工具都拿到一个分数,得分最高的那个被选中执行。
选完工具只是第一步。真正让 Agent 强大的,是它执行完动作后会观察结果,再回到“手册”前重新选下一个工具。这样一个“选牌—出牌—看牌面—再选牌”的循环,让鹅管家在处理复杂任务时不会一条路走到黑,而是像经验丰富的管家一样,边走边调整策略。
- 工具集合(F)所有可用工具组成的集合,就像管家工具箱里每一件工具的清单。
- 需求(q)用户用自然语言描述的任务目标,比如“修复登录接口空指针”。
- 评分函数 Score(f|q)计算某个工具在当前需求下有多合适,评分越高说明匹配度越好。
- 求最大值 argmax在全部工具中挑出得分最高的那个编号,作为本轮的“出手选择”。
核心能力:能翻、能改、能跑、能测
鹅管家有四项吃饭的本领:翻档案柜、改稿件、跑腿办事、验收成果。对应到 Goose 身上,就是浏览代码库、修改文件、执行命令、编写测试。这四项能力看似朴素,却是 Agent 能“闭环干活”的基础。没有浏览能力,它只能盲人摸象;没有修改能力,它只会纸上谈兵;没有执行能力,它改完不知道对不对;没有测试能力,它交付的东西没人敢接。
先说浏览代码库。Goose 能像管家翻档案一样,在项目里搜索关键字、读取指定文件、查看目录结构,快速定位到相关代码位置。再说修改文件,它不只是生成一段让你自己粘贴的代码,而是直接编辑源码,生成 diff 补丁。执行命令环节,它在终端里跑构建、跑脚本,相当于管家真的去打印机前按下了启动键。
这四项能力组合起来,就构成一个“修改—验证”的闭环公式。Goose 每次修改代码后,都会主动执行验证动作来确认改动没有破坏其他功能,就像管家改完稿件后要校对一遍才敢交给你。
所以,鹅管家干活从来不“只改不看”。改完稿件立刻用机器校验一遍格式,改完代码立刻跑测试看看有没有踩雷。这种“动手必验证”的习惯,正是 Agent 能赢得工程团队信任的关键。
- 当前状态 S_t某一时刻代码库的完整快照,相当于管家手里“现在的文件长什么样”。
- 修改决策 D_tGoose 决定要做出的具体改动,比如“把超时时间从 10 秒改成 30 秒”。
- 编辑操作 Edit把修改决策真正写进文件系统,生成代码变更。
- 验证操作 Verify通过编译、运行测试等方式检查修改后的代码是否仍然正确。
工作流程:从需求到代码变更方案
鹅管家接到“办一场家宴”的大任务,绝不会一头扎进厨房。他会先拆成一张待办清单:买菜、洗菜、备菜、炒菜、上菜,然后一项项打勾推进。Goose 的工作流程也是如此:用户用自然语言描述需求,Goose 把大任务拆解成若干子任务,逐个执行,最后汇总成一份完整的代码变更方案交给开发者审核。
这个“先拆解、再执行”的过程非常重要。一个大需求往往涉及多个文件、多个步骤,如果让模型一口气输出全部修改,很容易顾此失彼。Goose 把任务拆小以后,每一步都能调用合适的工具、验证结果、根据反馈调整下一步。子任务之间还可能存在依赖关系:比如必须先改接口定义,才能改调用方的代码。
所有子任务执行完毕后,Goose 并不会直接把改动推到生产环境。它会整理出一份清晰的代码变更方案,包括改了哪些文件、为什么改、测试结果如何,交由开发者审核后合入。这就好比鹅管家把宴席准备妥当后,要请主人尝一口、点点头,才正式开席。人工审核这个环节,是 Agent 时代“人在回路”的重要体现。
- 总任务 T用户最初提出的那个大目标,比如“重构订单模块的接口”。
- 子任务 B_i拆解后的一件件具体工作,每件都能独立执行和验证。
- 依赖箭头(→)表示必须先完成 B_i 才能开始 B_j,像炒菜前必须先切好菜。
- 任务集合所有子任务拼在一起覆盖完整需求,不多不少。
MCP协议:Agent界的万能接头暗号
鹅管家如果要去不同的政府部门办事,最头疼的是什么?每个部门的窗口不一样、表格不一样、流程不一样。如果所有部门都统一用一张工单,管家就能一次学会、处处通用。MCP(Model Context Protocol)就是 AI Agent 界的这张“统一工单”——一个开放标准,规定了大模型和外部工具、数据源之间如何互相连接和通信。
Goose 原生支持 MCP,这意味着它可以轻松接入各种各样的 MCP 服务器,比如数据库、文件系统、CI 服务、浏览器工具等等。开发者只要按照 MCP 标准实现一个 server,Goose 就能“即插即用”。这种开放性带来的生态效应是巨大的:工具作者写一次工具,所有支持 MCP 的 Agent 都能用,不再需要为每个 Agent 单独做适配。
MCP 的底层通信使用 JSON-RPC 格式,每次请求就是一条结构清晰的消息,像一张填写规范的工单:
有了 MCP 这张万能工单,鹅管家到哪个部门办事都不怵。今天接一个数据库,明天接一个 CI 系统,只要对方提供 MCP 接口,管家都能立刻上手。可以说,MCP 是 Agent 从“单兵作战”走向“生态协同”的那座桥。
- 版本号 jsonrpc表示协议版本为 2.0,相当于工单格式的版式要求。
- 请求编号 id每一次调用的唯一标识,用来把请求和响应配对。
- 方法名 method要调用哪个动作,比如“读取文件”或“执行命令”。
- 参数 params执行这个动作需要携带的具体参数。
本地部署:把管家请进家门
有些公司机密文件绝对不能带出办公室,怎么办?最稳妥的办法,是把整套办公系统搬进公司内网,让管家在自己家里干活。本地部署 Goose 正是这个思路:代码不离开企业内网,模型调用和数据传输都在可控环境内完成,从根本上满足代码隐私与合规要求。
Goose 的本地部署方案比较灵活。它可以接入部署在私有环境的开源大模型,也可以使用企业自带的 API Key 走可控通道,关键是“数据不出域”。一些对数据安全极度敏感的行业——比如金融、政务、医疗——尤其看重这一点。不过,本地部署也不是没有代价,其中最直接的约束就是模型的上下文窗口。当一个项目的代码量超过了窗口能容纳的范围,Goose 就“看不过来”了。
好在工程上也有应对之道:对大型代码库可以做检索增强,只把相关文件片段喂给模型,或者让 Goose 基于摘要信息分块处理。这就像管家虽然记不住整座图书馆,但他知道用检索目录快速找到需要的那一页。本地部署不是万能解药,而是一场“隐私安全”与“模型能力”之间的权衡,但对企业来说,这往往是值得的。
- 模型上下文上限 W_model大模型一次能接受的 token 总量,就像管家的记忆容量。
- 当前任务占用量 W_ctx这次任务已经塞进上下文的代码量和工具结果。
- 实际可用量 W_eff真正参与本次推理的信息量,取两者中的较小者。
- 取最小值 min一旦任务占用量超过模型上限,多余的代码就“挤不进脑子”。
工程实践:效率与质量的账本
鹅管家到底值不值得请?算一笔时间账就清楚了。以前人工排查一个 bug 要三天,现在鹅管家一天内给出带测试的修复方案,效率提升立竿见影。Goose 在真实工程中的价值,集中体现在效率提升、质量保障和团队协作三个维度上。
效率提升来自自动化:Goose 能同时承担代码检索、修改、命令执行这些重复性劳动,把开发者从“体力活”里解放出来。质量保障来自测试:Goose 可以自动编写单元测试、跑回归测试,对改动进行验证,显著降低低级错误漏网的概率。团队协作方面,开发者可以把 Goose 生成的变更方案直接作为 PR 草稿,审查者看到的不再是一堆零散改动,而是有上下文、有测试支撑的完整方案。
衡量这些收益,可以用两个朴素的指标:一个是时间效率比,另一个是测试通过率。
账算明白了,团队才愿意把鹅管家正式纳入日常开发流程。需要强调的是,这些收益不是自动发生的——它依赖开发者提供清晰的需求、对 Agent 的产出做认真审查,并建立合适的测试基线。鹅管家是一把好用的工具,但用得好不好,最终还是看使用者的手艺。
- 人工耗时 T_manual不使用 Agent 时,完成同样任务需要的时间。
- Agent 耗时 T_agent使用 Goose 之后,从需求到变更方案的全流程时间。
- 通过用例数 N_passAgent 生成的测试中有多少条跑通。
- 总用例数 N_total全部测试用例数量,通过率反映改动是否安全可靠。
Agentic方向:AI从顾问到执行者
从“只会建议的顾问”到“直接动手的管家”,AI 的成长路径正在经历一次质变。Agentic Coding 描绘的正是这样一个方向:让 AI 承担更完整的编程任务闭环,而人类从执行者逐步转变为管理者和审核者。在这个模式下,开发者的角色更像是“产品经理”——把需求讲清楚,然后由 Goose 这位执行工程师去落实。
这种分工并不意味着开发者的价值被削弱,而是工作重心上移。人机协同的新常态是:人类负责判断方向、定义需求、审查结果,Agent 负责搜索代码、动手修改、跑测试、出方案。Goose 的自主度有多高,可以通过一个指标来衡量:需要人工介入的步骤越少,自主度越高。但工程现实告诉我们,自主度不能无限追求。
未来的鹅管家会越来越能干,但门钥匙始终应该握在人类手里。幻觉风险、自动执行带来的意外副作用、以及高自主度下的信任问题,都是 Agentic Coding 大规模落地前必须跨过的坎。这提醒我们:AI 执行力的边界,永远需要人类的责任心来划定。
- 总执行步数 N_stepsAgent 为完成任务采取的全部行动次数。
- 人工审核步数 N_review其中需要人类确认或纠正的步骤数量。
- 自主度 α整体上 Agent 能够自行推进的程度。
- 关系解读N_review 越少,α 越接近 1,Agent 越“自作主张”。
AI 应用场景
场景一:修复遗留项目的线上 Bug
阶段:代码理解与问题定位
解决的问题:老系统依赖关系复杂,出了 Bug 后人肉翻代码就像大海捞针。传统方式要资深开发花数小时甚至数天梳理调用链。Goose 可以直接浏览代码库、搜索异常关键字、定位相关模块,再根据堆栈信息修改代码并执行测试验证,把“排查—修复—验证”压缩到小时级。
具体案例:某电商团队遇到支付回调偶发超时,开发者把线上错误堆栈交给 Goose:“根据这段堆栈找到超时根因并修复。” Goose 浏览订单模块代码,锁定重试逻辑缺陷,修改代码后自动运行单元测试,最终生成一份带测试结果的修复 PR,人工 review 后合并上线。
场景二:自动补写单元测试
阶段:测试生成与质量保障
解决的问题:项目测试覆盖率低,人工补测试枯燥且容易被排期忽略。Goose 可以读取源码、理解函数逻辑、自动生成 pytest 用例,并反复执行来修正失败的用例,相当于为团队配备了一位不知疲倦的测试实习生。
具体案例:某金融科技团队用 Goose 对工具函数目录批量补测试,开发者只输入“为 utils 目录下缺失测试的函数生成 pytest 用例并保证全部通过”。Goose 逐个读取源码、编写用例、执行调试,最终把覆盖率从 35% 提升到 70%。
场景三:跨服务接口重构
阶段:重构与迁移
解决的问题:接口从 REST 迁移到 gRPC 时,需要改动的调用点往往散落在几十个文件里,人工遗漏是常态。Goose 能够全局搜索所有调用位置,统一修改,再通过编译和测试兜底,大幅降低“改漏一处导致线上事故”的风险。
具体案例:某中台团队将内部订单服务从 HTTP 接口迁移到 gRPC,Goose 扫描全部服务代码,批量改写客户端调用配置与参数封装,随后执行构建和集成测试,整个重构在一天内完成且零遗漏。
Python 演示
# -*- coding: utf-8 -*-"""简化版 Goose Agent:根据任务评分选择工具并执行""" TOOLS = ["read", "edit", "exec", "test"]KEYWORDS = { "read": ["查找", "浏览", "统计"], "edit": ["修改", "增加", "删除"], "exec": ["运行", "执行", "部署"], "test": ["测试", "用例", "验证"],} def score_tool(task, tool): """返回任务文本中命中该工具关键词的数量""" return sum(1 for word in KEYWORDS[tool] if word in task) class Goose: """鹅管家:一个会翻代码、改文件、跑命令的智能助手""" def __init__(self): self._logs = [] # 工具调用日志 self._count = 0 # 累计调用次数 def pick_tool(self, task): """根据评分选出最合适的工具""" return max(TOOLS, key=lambda t: score_tool(task, t)) def run_tasks(self, tasks): """依次处理任务队列""" for task in tasks: tool = self.pick_tool(task) self._count += 1 self._logs.append("[%s] %s" % (tool, task)) def main(): tasks = [ "浏览一下用户模块的代码", "把超时时间修改为30秒", "执行一遍回归测试", "给支付接口补充测试用例", ] goose = Goose() goose.run_tasks(tasks) print("本轮共执行 %d 次工具调用" % goose._count) for line in goose._logs: print(line) if __name__ == "__main__": main()
TOOLS = ["read", "edit", "exec", "test"]定义 Agent 可调用的四类工具清单,对应 Goose 的核心能力。return sum(1 for word in KEYWORDS[tool] if word in task)统计任务文本中命中工具关键词的个数,作为匹配得分。return max(TOOLS, key=lambda t: score_tool(task, t))调用评分函数选出得分最高的工具,体现"argmax"决策逻辑。self._count += 1每执行一次工具调用就累加计数,用来统计工作量。self._logs.append("[%s] %s" % (tool, task))把工具名和任务内容写入日志,方便回溯 Agent 每一步行为。goose.run_tasks(tasks)把四类任务依次喂给 Agent,模拟真实开发中批量处理需求的过程。
常见误区
误区很多人都觉得 Goose 和 ChatGPT 差不多,只是把代码问题回答得更好一点,本质上还是“你说一句、它回一段”。
正解Goose 的核心身份是 Agent,而不是聊天机器人。它在对话之外还拥有工具调用闭环:能主动浏览代码库、修改文件、执行命令、编写测试。就像鹅管家不是只会告诉你“菜谱”,而是真的把菜端到你面前。
为何常见:因为大模型产品的界面看起来都是对话框,用户很容易把“能聊代码”等同于“会写代码”,忽略了背后工具闭环的存在。
误区有人以为只要把需求描述得天衣无缝,Goose 就能自动完成一切,中间不需要任何人看结果。
正解Goose 擅长的是把任务拆解后逐步执行,但它的每一步都可能受限于上下文、代码理解偏差或隐藏的业务规则。复杂变更仍然需要人工 review 关键文件、确认测试结果、把关合入。鹅管家能把菜备好,但“是否符合主人家的口味”最终还得主人点头。
为何常见:对 Agent 能力边界的过度乐观,以及把“自动执行”误解为“绝对正确”,是最容易踩的认知陷阱。
误区看到 Goose 支持 MCP,很多人以为这是 Goose 团队发明的专属接口,只有 Goose 自己能用。
正解MCP(Model Context Protocol)是一个开放的行业标准,由 Anthropic 发起并开放给整个 AI 生态。任何 Agent 工具只要实现 MCP 规范,就能接入支持 MCP 的服务器。它更像国家统一推行的“标准工单格式”,而不是某家公司的内部印章。
为何常见:因为接触 Goose 时 MCP 作为一个新名词总是和它绑定出现,容易让人误以为是绑定关系。
误区企业觉得只要把 Goose 部署到内网,就既能享受全部 AI 能力,又能保证代码不泄露,两头占便宜。
正解本地部署主要解决的是隐私和合规问题,而不是能力问题。私有模型的推理能力通常弱于云端顶级模型,且自建环境需要团队自己处理硬件、模型管理、上下文优化等一堆配置工作。这是一个权衡而非免费升级。
为何常见:因为“本地化”在安全视角听起来总是更优,人们容易忽略背后的工程代价和能力折损。
误区有人觉得 Agent 的能力完全取决于背后模型的聪明程度,只要模型足够强,不用设计什么工具调用框架也能搞定任务。
正解模型再强也只是“最强大脑”,没有工具就好比把大脑关在没有手脚的躯壳里——它无法读取代码、无法改动文件、无法验证结果。Goose 的 LLM + Tools + Loop 结构里,工具框架和循环机制与模型同等重要。
为何常见:因为大模型的自然语言能力最容易被感知,而工具调度、循环反馈这些工程机制更隐蔽,导致认知上“一强遮百丑”。
面试题
Q1. Goose 本质上是一个什么类型的工具?
- A.开源的 AI 编程 Agent(可自主调工具)← 正确答案
- B.只能做代码补全的 IDE 插件
- C.纯粹的静态代码分析器
- D.云端大模型 API 转发网关
答案:A。Goose 是开源的 AI 编程 Agent,核心特征是能自主调用工具完成任务,而不是只做补全或分析。就像鹅管家是“动手干活”而不是“给建议”。
Q2. 与传统 AI 代码补全助手相比,Goose 的关键区别在于?
- A.支持的编程语言种类更多
- B.能自主浏览改文件跑命令← 正确答案
- C.模型在本地运行速度更快
- D.上下文窗口巨大且完全免费
答案:B。Goose 与补全助手的本质区别是 Agent 式闭环:浏览代码库、修改文件、执行命令、验证测试。补全助手的定位是“预测你正在输入的下一行”,两者根本不在一个维度上。
Q3. Goose 的基本组成结构可以概括为?
- A.数据集加训练框架
- B.LLM 加 Tools 加 Loop← 正确答案
- C.前端加后端加数据库
- D.编译器加链接器加外壳
答案:B。Goose = LLM(推理大脑)+ Tools(工具集)+ Loop(行动循环)。这是 Agent 区别于普通聊天机器人的关键三元组,缺一不可。
Q4. Goose 在收到任务后决定调用哪个工具,所依据的是?
- A.按工具名称的字母顺序执行
- B.根据任务语义匹配评分选择← 正确答案
- C.随机挑选工具增加多样性
- D.固定轮询调用所有工具
答案:B。Goose 通过工具选择评分来决定出手顺序,选评分最高者执行。这就像管家看任务内容判断该翻档案还是该跑腿,而不是凭心情或按顺序。
Q5. MCP 协议在 Goose 生态中扮演的角色是?
- A.连接工具与数据源的开放标准← 正确答案
- B.一种新的编程语言规范
- C.模型训练时的数据采样算法
- D.集群中任务调度的通用协议
答案:A。MCP(Model Context Protocol)是开放的模型上下文协议,用来标准化 Agent 与外部工具、数据源的连接。它不是语言、采样算法或调度协议,而是“万能工单格式”。
Q6. Goose 的核心能力包括以下哪些?
- A.浏览检索大型代码库← 正确答案
- B.修改文件生成补丁← 正确答案
- C.执行终端命令跑构建← 正确答案
- D.训练全新大语言模型
答案:ABC。Goose 的四项核心能力是浏览、修改、执行、测试;训练大模型不在其能力范围内。这四项组合起来构成了“动手必验证”的闭环。
Q7. 企业选择本地部署 Goose 的主要动机通常是?
- A.代码隐私与合规性要求← 正确答案
- B.降低模型推理的延迟
- C.减少硬件采购的成本
- D.增大模型的参数量级
答案:A。对金融、政务等敏感行业,代码不能出内网,这是本地部署的第一驱动力。隐私合规优先于延迟和成本考量。
Q8. 当项目代码量超过模型上下文窗口时,常见的应对方式是?
- A.直接删除多余的历史文件
- B.分块检索并摘要后喂入← 正确答案
- C.调高模型采样的温度
- D.放弃使用 Agent 编程工具
答案:B。超长代码无法全部塞进模型上下文,工程上常用检索增强和摘要压缩。就像管家记不住整座图书馆,但会查目录索引,只翻出需要的页面。
Q9. Agentic Coding 大规模落地面临的挑战包括?
- A.Agent 可能产生代码幻觉← 正确答案
- B.自动执行带来的意外副作用← 正确答案
- C.高自主度需要信任与审核机制← 正确答案
- D.无法处理面向对象语言代码
答案:ABC。Agent 的错误不仅是文本错误,还会以“真实改动”的形式造成副作用,因此需要信任与审核机制兜底。它并非无法处理特定语言范式。
Q10. 关于 Agent 的自主度公式 α = 1 - N_review / N_steps,下列理解正确的是?
- A.α 接近 1 表示人工介入最少← 正确答案
- B.α 提高必须增大 N_review
- C.α 仅取决于工具的种类数
- D.α 为 0 时说明模型未参与
答案:A。自主度 α 度量的是无需人工审核的步骤占比。α 越接近 1 说明人工介入越少,但高自主度伴随更高风险,需要在信任与安全之间寻找平衡。