eve 扩展实战指南:`eve/extensions/code` 的编码能力、凭证代理与沙箱安全机制

发布时间:2026/10/15 20:26:18
eve 扩展实战指南:`eve/extensions/code` 的编码能力、凭证代理与沙箱安全机制 人工智能AI AgentAgent 框架后端工具调用【免费下载链接】eveThe Open Framework for Building Agents项目地址https://gitcode.com/gh_mirrors/eve28/eve点击查看免费下载eve/extensions/code是 eve 框架内置的编码扩展包其源码位于 packages/eve-code专门面向 CLI 场景下的智能体编码工作贡献了apply_patch补丁编辑原语、沙箱化grep搜索、PR 监控prwatch共享原语、调查与代码审查技能、指令片段、只读 worker 子代理以及基于 Connect 的认证钩子。本文将以 packages/eve-code/AGENTS.md 为骨架结合扩展包的 extension/ 源码与三层测试结构完整讲解该扩展的职责边界、构建发布流程、挂载配置、凭证代理机制、补丁引擎内部实现与安全模型。读完本文你将掌握如何在 eve 应用中挂载并配置该扩展、如何通过沙箱引导安装 CLI 工具链、如何理解apply_patch的验证与回滚机制以及如何用只读 worker 子代理安全地并行执行调查类任务。扩展包定位eve/code是eve/extensions/code的源码在 eve 仓库中packages/eve-code/package.json 声明的eve/code是一个private: true的工作区包它是 eve 运行时内置的eve/extensions/code扩展的唯一事实来源。其描述准确概括了职责Source of theeve/extensions/codeextension: CLI-based coding work with credential brokering, safe patches, coding skills, and a read-only worker subagent.也就是说这个扩展完整覆盖了 CLI 编码工作的四个核心能力凭证代理credential brokering在每一轮对话开始前通过 Connect 认证钩子解析 Vercel 应用令牌app token并以防火墙firewall或命令command两种方式注入沙箱安全补丁safe patchesapply_patch作为扩展唯一自有的文件编辑原语提供解析、验证、原子写入、回滚与事后诊断的完整闭环编码技能coding skillsinvestigate、review、lookup-agent-run等证据驱动的调查与审查技能只读 worker 子代理一个不拥有写入权限的协作者用于在隔离上下文中并行处理某一小片任务。扩展随eve包一起分发随包发布而不是作为独立 npm 包发布其公共入口点在 packages/eve/package.json 中声明为四个导出路径eve/extensions/code扩展本体extension/extension.ts 经构建映射到packages/eve/src/extensions/code/extension/extension.jseve/extensions/code/sandbox沙箱引导bootstrap与凭证辅助函数extension/lib/sandbox.tseve/extensions/code/toolsapply_patch与grep工具gh是废弃的再导出eve/extensions/code/prwatch供消费者自建 workflow 工具使用的 PR 监控原语。职责边界哪些内容属于这里哪些必须划走packages/eve-code/AGENTS.md 用一整节 Boundaries 明确了扩展的职责边界这是理解该包架构的关键。核心规则如下Connector UID 通过扩展配置进入。认证钩子在每一轮turn开始前解析 Vercel 应用令牌——对应实现见 extension/hooks/authenticate.ts 与 extension/lib/connect-authentication.ts。GitHub 相关内容属于eve/git。GitHub 指令、pr技能和gh工具全部归 packages/eve-giteve/extensions/git所有。本扩展中只有废弃兼容层code({ github })会通过 extension/lib/github-compat.ts内部导入eve/extensions/git/sandbox继续贡献code__gh、code__pr与 GitHub 指令除此之外严禁在此扩展中添加任何其他 GitHub 或 Pull Request 内容。非 Connect 凭证消费者可以绕过扩展配置直接从自己的沙箱生命周期中调用authenticateGitHub或authenticateVercel见 extension/lib/credentials.ts。凭证代理安全broker 的凭证不得出现在模型编写的 URL 或参数中防止令牌泄露到日志与对话上下文。使用真实 CLI优先使用真实的git、gh、vcCLI而不是自建的仓库生命周期工具。apply_patch是唯一的文件编辑原语其余写操作应交给格式化器与生成器自己输出。共享实现放在extension/lib/下文件系统路径即贡献命名空间例如extension/tools/apply_patch.ts贡献名为apply_patch的工具。计算机使用computer use属于eve/computer-use。本扩展的 extension/lib/sandbox.ts 中保留的installComputerUse、startComputerUse、COMPUTER_USE_REVALIDATION_KEY再导出均标记为deprecated且不得在此添加新代码。从源码结构看这些边界通过文件系统路径决定贡献名被强制执行tools/目录下的每个文件即一个工具skills/目录下的每个目录即一个技能subagents/下的每个目录即一个子代理。构建与发布如何从源码进入 eve 运行时AGENTS.md 明确了构建与发布约束eve 的构建流程会把本工作区的extension/目录复制到packages/eve/src/extensions/code/extension并编译进eve包。从 packages/eve/src/extensions/code/tools.ts 的入口映射可以看到公共入口声明位于 packages/eve/package.json 与packages/eve/src/extensions/code/下。不要发布eve/code这个包也不要把它加入 eve 的依赖——因为它本身依赖eveeve: workspace:*属于随主包编译的分发形态。扩展代码只允许导入公共的eve/*API如eve/extension、eve/tools、eve/hooks、eve/sandbox第三方依赖如vercel/connect、zod会被打包进 eve 的 dist。测试必须放在test/unit/、test/integration/、test/scenario/三个目录中位于被发现的扩展树之外从而避免测试文件被误编译进扩展。完成任何改动前必须依次通过类型检查typecheck、三层测试unit、integration、scenario、eve 本体构建pnpm --filter eve build、lint 与包级格式化oxlint / oxfmt。对应命令在 packages/eve-code/README.md 中给出pnpm --filter eve build pnpm --filter eve/code typecheck pnpm --filter eve/code test pnpm --filter eve/code test:scenario pnpm exec oxlint packages/eve-code pnpm exec oxfmt --check packages/eve-code值得注意的是packages/eve-code/package.json 中三个测试脚本分别使用 Node 原生node --test运行test/unit/*.test.ts、test/integration/*.test.ts与test/scenario/*.test.ts且engines.node要求24scenario 测试会创建临时文件、本地 Git 仓库并启动子进程。挂载与配置最小可用的编码扩展挂载方式非常轻量。在 agent 的扩展文件中例如本仓库自带的 packages/eve-code/agent/extensions/code.ts导入扩展工厂并传入配置// agent/extensions/code.ts import code from eve/extensions/code; export default code({ // Optional; omit to mount without Connect-backed Vercel authentication. vercel: { connector: vercel/acme-bot }, });从 extension/extension.ts 的 zod 配置 schema 可以看到全部可选配置项及其类型约束配置键子字段说明vercelconnector: string (min 1)、delivery?: firewall \| commandVercel Connect 连接器delivery默认firewall。该连接器请求的是app-subject 令牌见authenticateTurn中{ subject: { type: app } }的请求参数githubconnector、org、broker已废弃。应改为在eve/extensions/git上配置配置后本扩展仍会贡献code__gh、GitHub 指令与签名提交code__pr技能broker函数(sandbox, rules) Promisevoid顶层凭证策略合并回调让消费者把自己的网络策略与 Vercel 凭证规则合并workermodel: string (min 1)、reasoning、openaiReasoningEffort?worker 子代理的模型与推理强度默认openai/gpt-5.6-terra-fastxhigh推理reasoning的合法取值枚举为[provider-default, none, minimal, low, medium, high, xhigh]openaiReasoningEffort为[none, minimal, low, medium, high, xhigh, max]。注意两个连接器都是可选的code({})可以不带任何认证挂载worker 的openaiReasoningEffort会被透传给 OpenAI 模型的reasoningEffortprovider option见 extension/subagents/worker/agent.ts 中providerOptions.openai.reasoningEffort的组装逻辑。凭证投递方式的选择README 给出了两条投递路径的取舍firewall默认令牌不进入沙箱进程而是通过沙箱提供方的setNetworkPolicy()在网络层注入授权头。若消费者的沙箱提供方不暴露setNetworkPolicy()且未提供顶层broker回调则认证会失败credentials.ts 会抛出明确错误eve-code firewall credential delivery requires a sandbox provider with mutable network policy...。command把令牌写入 git config 或 CLI 环境文件GH_TOKEN/VERCEL_TOKEN适用于没有可变网络策略的后端。沙箱引导安装 CLI 工具链与 TypeScript 诊断消费者需要在沙箱的prepare回调中调用installCodeTooling来安装工具链packages/eve-code/README.md 给出了完整示例// agent/sandbox.ts import { defineSandbox } from eve/sandbox; import { VercelSandbox } from eve/sandbox/vercel; import { installCodeTooling } from eve/extensions/code/sandbox; export const environment VercelSandbox.environment({ prepare: async (sandbox) { await installCodeTooling(sandbox, { vercel: true }); }, }); export default defineSandbox(() environment.open());installCodeTooling的实现见 extension/lib/sandbox.ts它一次性完成写入gh包装脚本、gh-signed-commit签名提交包装、vercel/vc包装脚本vercel: true时与 TypeScript 诊断 worker 脚本若沙箱中没有gh则尝试通过apt-get必要时sudo -n apt-get安装将真实gh安装到受信路径/usr/local/lib/eve-code等再把包装脚本安装到/usr/local/bin/gh、/usr/local/bin/gh-signed-commit、/usr/local/bin/vercel、/usr/local/bin/vc以隔离环境/usr/bin/env -i HOME/root、空 npm 配置安装固定版本的typescript6.0.3供诊断 worker 使用见 extension/lib/tooling.ts 中的typescriptInstallCommand。工具链根目录为沙箱内的.eve-code/受信工具根目录为/usr/local/lib/eve-code。凭证以chmod 600权限写入.eve-code/env由包装脚本在启动时 source——ghWrapperSource还会为未注入的令牌设置占位默认值ghp_000...确保在防火墙模式下gh命令不会因空令牌报错。一个重要的工程细节eve 从沙箱文件与环境选项推导 prepared 环境代generation而不是从导入的辅助函数推导因此仅升级 eve 不会自动重建已存在的 prepared 工件。这也是 extension/lib/sandbox.ts 导出CODE_TOOLING_REVALIDATION_KEY eve-code-tooling:3:{GH_SIGNED_COMMIT_VERSION}:{TYPESCRIPT_VERSION}的原因——消费者应把它纳入自己的沙箱revalidationKey使缓存模板在工具链版本变化时能够重建。非 Connect 逃生通道对于持有 PAT、基准测试令牌或其他凭证提供方的消费者可以不配置对应连接器直接在自己的沙箱生命周期中调用从eve/extensions/code/sandbox导出的authenticateGitHub或authenticateVercel。这两个辅助函数见 extension/lib/credentials.ts支持firewall、command与broker三种选项但不会配置扩展的gh工具本身。认证钩子每轮开始前的令牌解析extension/hooks/authenticate.ts 通过 eve 的 hook 机制订阅turn.started事件import { defineHook } from eve/hooks; import extension from ../extension.ts; import { authenticateTurn } from ../lib/connect-authentication.ts; export default defineHook({ events: { async turn.started(_event, ctx) { await authenticateTurn(extension.config, () ctx.getSandbox()); }, }, });authenticateTurnextension/lib/connect-authentication.ts的逻辑是若配置了vercel先通过getToken(connector, { subject: { type: app } })从 Connect 获取 app-subject 令牌再调用authenticateVercel(sandbox, { token, delivery, broker })注入沙箱。令牌解析失败时会区分三种原因并抛出带cause的包装错误ConnectorInstallationRequiredError→ connector installation is required连接器未安装其他ConnectError→ Connect rejected the token request其余错误 → Connect token request failed。authenticateVercel在firewall模式下会把Bearer头通过网络策略注入api.vercel.com与vercel.com两个主机authenticateGitHub则注入github.com与api.github.com的Basic x-access-token头。凭证按沙箱会话对象缓存于WeakMap网络策略的更新通过 Promise 队列串行化避免并发覆盖。apply_patch唯一的文件编辑原语apply_patchextension/tools/apply_patch.ts是本扩展贡献的核心工具approval: never()表明它不需要人工审批。它的设计目标在工具描述中非常明确针对当前文件内容写小块 hunk而不是重写整个文件或通过 bash 写入。补丁格式工具支持四种文件操作格式如下*** Begin Patch *** Add File: path (every content line starts with ) *** Update File: path (optional *** Move to: new-path, followed by chunks) *** Delete File: path *** End Patch路径相对于root默认工作区根目录不得逃逸根目录生成文件lockfile、dist/、vendor-compiled/等会被拒绝——必须通过产生它们的命令来修改而不是通过补丁输入patchText上限 500,000 字符。解析器与匹配引擎解析与匹配逻辑全部位于 extension/lib/patch.ts其中几个关键实现细节值得注意严格格式校验parsePatch要求存在*** Begin Patch/*** End Patch标记Begin 之前只允许*** Environment ID:行End 之后不允许任何非空内容否则整个补丁被拒绝。hunk 匹配的容错性deriveUpdatedContent会先归一化换行\r\n/\r→\n并保留 BOM 与行尾风格匹配器对每一块依次尝试四种比较策略完全相等 → 忽略行尾空白 → 忽略首尾空白 → 归一化排版字符弯引号、省略号、不间断空格等显著提高模型生成 hunk 的命中率。unified-diff 兼容 -118,8 118,8 fn形式的 range 头会被解析数字部分不作为可搜索文本而尾部的函数上下文作为前缀提示contextHint帮助区分完全相同的代码块——因为 git 会截断该上下文所以它只是提示而非精确锚点。歧义拒绝若 hunk 在没有上下文提示时能匹配多个位置occurrences() ! 1会拒绝应用避免猜错目标。友好的失败信息匹配失败时返回当前文件最近内容的摘录带行号并给出重新读取该文件、只重写失败的 hunk的引导。上限保护单次补丁最多 100 个文件操作MAX_PATCH_FILES 100每个会话 patchRoot 通过patchLocks串行化防止同一会话内并发补丁互相踩踏。全量验证后再写入applyPatchToSandbox的核心流程是先规划plan→ 全量验证 → 逐文件提交 → 失败回滚planChanges解析所有 hunk 并生成变更计划对每个路径执行realpath校验禁止路径穿越符号链接或仓库边界assertRealPath并拒绝同一路径的重复操作claimPath。对update操作先记录所有待更新文件的previousContent并运行 TypeScript 基线诊断beforeCommit回调。逐文件提交前再次revalidateChange检查文件在验证与写入之间是否被并发修改stale write 检测。写入使用原子写atomicWrite先写同目录下的随机临时文件.{name}.eve-code-{uuid}.tmp恢复原文件模式stat -c %a/chmod再用mv -n新增文件不覆盖原子移动。任一步失败时按逆序回滚已提交的变更且回滚同样拒绝覆盖已被并发修改的文件回滚失败会附加在错误信息中。事后诊断只返回补丁引入的问题apply_patch的execute在提交完成后运行 extension/lib/diagnostics.ts 的runPostEditDiagnostics执行四类受控检查check字段枚举git-diff | syntax | typescript | whitespacegit-diff在 git 工作树内运行git diff --check检测冲突标记与尾随空白错误whitespace对新增文件或非 git 树中的变更文件逐行检查尾随空白等格式问题syntax与typescript通过独立的诊断 worker 进程extension/lib/tooling.ts 中的DIAGNOSTICS_WORKER_SOURCE以EVE_CODE_DIAGNOSTICS_REQUEST环境变量传入 base64 请求加载沙箱中固定版本的 TypeScript 编译器对最近 tsconfig/jsconfig 做语言服务诊断最多报告 50 条、每条消息截断 1000 字符。关键设计是onlyNewTypeDiagnostics(baseline, after)工具先取补丁前的基线诊断再取补丁后的诊断只返回补丁引入的新问题避免把存量错误算到这次编辑头上。输出 schema 同时返回files数组含operation: add | delete | move | update与path/previousPath方便调用方了解本次补丁的影响面。grep沙箱内容搜索grep工具extension/tools/grep.ts是快速内容搜索工具底层优先使用 ripgrep无 ripgrep 时回退到 POSIXgrepextension/lib/grep-search.ts。其输入参数与语义如下参数类型与默认值说明pattern必填字符串正则或字面量模式path可选默认工作区根搜索目录或文件建议先收窄glob可选限制文件如*.ts或*.{ts,tsx}outputModefiles_with_matches默认|content|count列出文件每文件首个命中即停/ 返回匹配行 / 返回每文件计数limit默认 50最大 200返回行数上限context可选仅content模式生效每个命中前后的上下文行数ignoreCase默认 false忽略大小写literal自动标识符类模式默认固定字符串匹配含正则元字符时走正则引擎工具描述中强调的用法节奏是先files_with_matches 收窄path/glob每文件首个命中即停确认哪些文件相关后再用content用count衡量模式命中规模后再去读。实现层面的安全与工程细节路径安全assertNoParentSegments拒绝含..的路径真实路径通过resolveInWorkspace解析并强制包含在工作区内。命令构造buildRipgrepCommand使用--hidden并排除!.git/*且遵守.gitignorePOSIX 回退不读.gitignore但同样排除.git、包含隐藏文件。资源边界命令输出最多截断 256 KiBMAX_GREP_COMMAND_BYTES单行最多 8 KiB最终返回内容预算 64 KiBMAX_GREP_RETURN_BYTES超出时返回[Output truncated. Narrow path or glob, or lower context.]提示并置truncated: true。退出码语义ripgrep 的 exit 1 表示无匹配因此只有exitCode非 0 且非 1、或 exit 1 但 stderr 非空时才视为失败被字节上限中断的管道141按成功处理。只读 worker 子代理并行调查的正确姿势扩展贡献了一个只读的 worker 子代理extension/subagents/worker/。它的定位在 agent.ts 的描述中非常清楚Another mind for one scoped slice。关键特征默认只读工具集defaultTools: false工具仅有glob、grep、read_file、write_file、web_fetch、web_search——其中read_file直接复用eve/tools/read_filewrite_file存在于工具清单中但父沙箱为只读sandbox.ts 使用defineParentSandbox()由父级代理持有写权限。模型动态配置通过defineDynamic在session.started时读取扩展配置的worker项默认openai/gpt-5.6-terra-fastxhigh推理openaiReasoningEffort透传为 OpenAI 的reasoningEffortprovider option。明确的身份边界instructions.md 规定 worker 可以搜索、阅读、比较证据、运行非变更命令但不得编辑工作区或产生外部副作用证据不在乎你的期望——每个非显然的结论都必须锚定在路径、行号、diff hunk 或命令结果上调用方保留裁决权arbiter与全部写操作。这种设计支持两种生命周期持有式keep 它并持续发送 delta让它端到端拥有某一小片与一次性spawn 后问一次就结束。隔离上下文是重点委托不能有损。技能证据驱动的调查、审查与运行查找extension/skills/下提供三个技能目录与一个动态技能investigate调查skills/investigate/SKILL.md 要求严格、证据驱动的诊断先确认问题真实且可复现若不可复现则暂停并报告从观察到的现象出发逐层向上追踪调用帧、进程、网络跳数与持久化边界在每一分支保持显式假设并尝试证伪区分观察、推断与未知证据缺失时停止而不是用猜测填补。review深度审查skills/review/SKILL.md 是安全性与正确性审计技能触发词包括 review / deep review / thermo nuclear 等把自包含的审计指令交给 worker 子代理root agent 评估结论并拥有最终裁决。必查项包括跨包与运行时副作用的全链路追踪、授权/不可信输入/凭证披露/破坏性行为/有界工作、本地构建与运行流程、feature-gate 泄漏等。所有发现必须有仓库证据在阅读 PR 讨论之前先独立审计避免被已有评论锚定。lookup-agent-run运行查找skills/lookup-agent-run/SKILL.md 强调这是查找而非诊断仅使用消费者提供的 Agent Run API、Vercel 或其他可观测性连接、仪表盘链接权限等授权证据本扩展自身不提供这些能力优先精确匹配 run ID其次关联项目/环境/标题/请求属性/创建时间无 trace 访问时必须至少两个独立信号交叉验证无法确定时问一个聚焦的问题而不是猜。pr 技能废弃skills/pr.ts 是动态技能仅当废弃的github配置存在时才贡献code__pr签名提交 PR 技能否则返回null。它从eve/extensions/git/sandbox复用prSkillDescription/prSkillMarkdown与 extension/tools/gh.ts 的动态gh工具同属一个兼容策略——code({})不贡献任何 GitHub 工具、指令或 PR 技能。指令片段编码智能体的行为守则extension/instructions.md 是注入给使用该扩展的 agent 的指令片段其中体现的设计原则与工具设计高度一致极简与行动优先简单语言、无仪式感只有丢线索的代价大于写计划时才用todo有界任务直接开始不花费模型轮次维护计划。并发执行多个只读调用相互独立时应同一响应内并发发出eve 会并发执行同一响应的调用依赖结果的工作才串行。委派识别可并行的小片交给 worker给每个 worker 自包含的问题仓库、路径/ref、约束、期望输出树是共享的所以不要复制完整源码写操作留在主代理避免 worker 竞争变更共享工作区。仓库礼仪进入 checkout 后先读根AGENTS.md默认不 rebase用apply_patch做编写编辑用grep做搜索保留既有修改禁用git reset --hard/git checkout --等破坏性命令。安全红线绝不打印凭证/令牌/.env内容不在公共环境暴露公司私有引用面向用户文本不使用 em dash。PR-watch 共享原语AGENTS.md 提到扩展共享 PR-watch 原语并指出一个架构约束eve workflow 指令是 application-only 的因此持久的prwatch/prwatch_delete包装目前位于消费者e0 消费者挂载一侧而不在本扩展内。本扩展通过eve/extensions/code/prwatch入口导出可复用的底层原语extension/lib/prwatch.tsGitHub 侧PullRequestWatchInputSchema、PrwatchDeleteInputSchema、pullRequestWatchSnapshot、initialPullRequestWatchNotificationState、advancePullRequestWatchNotification、framePullRequestWatchWake、isRetryablePullRequestWatchError、shouldRefreshPullRequestWatchToken等源自 extension/lib/prwatch-github.ts注册表侧registerPrwatchInState、completePrwatchInState、cancelPrwatchInState、deletePrwatch、prwatchKey等源自 extension/lib/prwatch-registry.ts。消费者在自己拥有的 workflow 工具中组合这些原语即可实现 PR 状态快照、通知推进、唤醒帧与令牌刷新的完整生命周期而不必在扩展内重复实现。测试分层与本地开发测试结构遵循测试不进入分发树的约束分三层覆盖不同范围对应 packages/eve-code/testunit如generated-paths.test.ts、guidelines.test.ts纯逻辑单元测试integration如connect-authentication.test.ts、credentials.test.ts、patch.test.ts、sandbox.test.ts、github-compat.test.ts、diagnostics.test.ts、prwatch-registry.test.ts、repository-root.test.ts、extension-config.test.ts验证扩展配置、凭证注入与补丁引擎与 eve 运行时集成包级集成任务只依赖 eve 的构建产物scenario如code-query-worker.test.ts、grep-search.test.ts、instructions-policy.test.ts、prwatch-github.test.ts、tool-input-schemas.test.ts、tooling-sources.test.ts、worker-manifest.test.ts创建临时文件、本地 Git 仓库并启动子进程需要 Node.js 24、Git 与 Bash但不需要模型或服务凭证。仓库根目录的集成命令会先跑框架套件因为它会重建其他包导入的运行时文件再跑其余包。另外typescript-compiler开发别名专门提供诊断 worker 测试所需的 JavaScript 编译器 API而工作区的 TypeScript 7 CLI 仍是包的类型检查器prepack会先构建扩展安装时不会在本地框架构建完成前运行扩展 CLI。结语eve/extensions/code展示了 eve 扩展体系的几个关键工程范式职责边界用文件系统路径固化tools/skills/subagents 目录即贡献名、认证与凭证通过 Connect 钩子在每轮注入且尽量不落盘firewall 网络策略优先、写入操作收敛到单一、经过全量验证与回滚保护的apply_patch原语、调查类工作交给只读 worker 并行委派而写权限始终留在主代理。无论是搭建一个带 Vercel 认证的编码 agent还是为自定义沙箱提供方适配凭证投递理解 packages/eve-code/AGENTS.md 与其 extension/ 源码都能让你在复用这套能力时既安全又高效。赞分享人工智能AI AgentAgent 框架后端工具调用【免费下载链接】eveThe Open Framework for Building Agents项目地址https://gitcode.com/gh_mirrors/eve28/eve点击查看免费下载相关推荐eve/extensions/code 深度指南apply_patch、grep、只读 Worker 与凭据代理架构eve/extensions/code 深度指南apply_patch、grep、只读 Worker 与凭据代理架构 eve/extensions/code人工智能AI AgentAgent 框架后端工具调用eve 扩展Extensions实战指南从 npx eve extension init 到 npm 发布与 monorepo 工作区挂载eve 扩展Extensions实战指南从 npx eve extension init 到 npm 发布与 monorepo 工作区挂载 本文基于 ev人工智能AI AgentAgent 框架后端工具调用eve 自修改扩展安装与迁移实战从 eve/self-modification 兼容包到 eve add eve/self-modificationeve 自修改扩展安装与迁移实战从 eve/self modification 兼容包到 eve add eve/self modification 本文以人工智能AI AgentAgent 框架后端工具调用上一篇Vant Weapp Overlay 遮罩层组件完整指南Props、插槽与源码原理深度解析下一篇Vue Macros核心宏详解defineModels、defineProps等10个实用宏完全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考