mcpField
Z
Zas

Zas

本地服务
zas.red文件与存储02 周前更新

关于 Zas

zas-agent 是一款 MCP 服务,让编码 Agent 与选定的 Zas 频道交换文件和笔记。它使用单独审批的 Agent 身份和按频道授权,并在上传前于设备上加密内容。

主要功能

  1. 01向频道发送笔记和文件
  2. 02列出并取回频道项目
  3. 03编辑笔记或替换已发送文件
  4. 04通过 Directo 实时传输文件
  5. 05配对并设置频道权限
  6. 06上传前在设备上加密内容

适用场景

  1. 01将编码 Agent 中的文件发送到 Zas 频道
  2. 02将频道项目取回到本地设备
  3. 03通过 Directo 实时交换文件
  4. 04将 Agent 权限限制在获批频道

MCP 相关

提供 13 个工具,供编码 Agent 在 Zas 频道中发送、接收、列出和编辑项目。配对会建立 Agent 身份,并授予其访问指定频道的权限。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"soke1556-zas-agent": {
"command": "npx",
"args": [
"-y",
"zas-agent"
]
}
}
}
启动命令npx -y zas-agent

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmzas-agent0.11.0

工具

13

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

zas-agent

一个 MCP 服务,可让编码 Agent — Claude Code、Codex 或任何支持 MCP 的工具 — 将文件和便笺发送到你的 Zas 频道,并从中读取内容。

npm CI CodeQL OpenSSF Scorecard License: MIT

什么是 Zas

Zas 可在你的设备和你选择的人之间传递内容:文件、照片、文本、代码。你在一台设备上将内容放入频道,然后在另一台设备上使用。未固定的内容会在几天后自动消失,因此之后无需整理。所有内容都会在设备上加密后再上传:数据库和对象存储接收的是加密字节,而不是文件名、内容或预览。

这个软件包让编码 Agent 能像你的其他设备一样使用频道,并拥有独立身份。你可以批准该身份,为它指定可访问的频道,也可以随时撤销。

功能

你的编码 Agent 可以使用 13 种工具。它可以将文件或便笺发送到你选择的频道,通过 Directo 实时发送或接收文件,列出频道中的内容,将某个项目下载回本地磁盘,还可以修改已发送的内容:项目标题或文本,或文件的字节内容,同时保留项目 ID。 它发送的所有内容都会先在你的设备上加密,然后才会离开设备并存入你的账户,且会在频道中标记为由该 Agent 发送。Agent 拥有独立身份,绝不会持有你的账户密钥:配对时会在此处生成密钥对,你通过 Web 应用批准该身份,此后 Agent 会签署质询以获取短期会话。

安装

先安装 Node.js LTS(22 或更高版本)和 Agent 的命令行工具。安装后重新打开终端。 在你使用 Agent 的计算机上运行以下命令。

选择你的 Agent 并完成配对。在 Windows(PowerShell 或 CMD)上:

Codex

npx.cmd -y zas-agent@latest pair --profile codex

Claude Code

npx.cmd -y zas-agent@latest pair --profile claude-code

打开显示的链接,批准频道;如果页面显示验证码,请在终端中输入。保持终端打开,直到配对完成。 然后运行对应的注册命令:

Codex

cmd /d /c codex mcp add zas "--" npx.cmd -y zas-agent@latest --profile codex

Claude Code

cmd /d /c claude mcp add zas "--" npx.cmd -y zas-agent@latest --profile claude-code

在 macOS、Linux 或 WSL 上,使用 npx 替代 npx.cmd,并省略 cmd /d /c 。请在同一环境中完成配对和注册。重启 Agent,然后让它向 Zas 发送内容。

如果命令无法识别,请安装 Node.js 或指定 Agent 的 CLI,然后重新打开终端。首次下载需要联网,可能需要几分钟。请按示例使用 @latest,以便 npm 获取已发布的软件包,而不是选择尚未构建的本地工作区。

配对的作用

zas-agent pair 会生成密钥对、注册公钥、在浏览器中打开审批页面并等待。终端会显示:

Open this page signed in to your Zas account:
  https://zas.red/agents/pair?p=...#port=53211
Fingerprint: 1a2b 3c4d 5e6f 7a8b
Waiting for approval… (expires in 10 minutes)

登录后,为 Agent 命名并勾选它可以使用的通道——默认允许发送,读取则需要单独启用——然后批准。批准本身不会创建任何内容:页面会通过 127.0.0.1(链接中的端口)将一次性认领码交给此终端,只有终端使用该代码和 Agent 持有的密钥完成认领后,Agent 才会创建。如果链接被其他人打开并获批,他们的设备上没有程序监听该端口,认领码会过期,也不会创建任何内容。

如果浏览器无法连接终端——例如在手机上打开了链接,或浏览器拒绝了本地连接——页面会显示代码,终端也会提示输入。请只在终端中输入该代码,切勿在其他地方输入:持有该代码的人可以通过另一个已启动配对的终端完成认领。传入 --no-open 或设置 ZAS_NO_OPEN=1 可让浏览器保持关闭;无论哪种方式,都会打印链接。配对在批准前有效期为 10 分钟,批准后为 5 分钟;超过时限后,请重新运行命令。

你也可以通过编码 Agent 中的 zas_pair 工具启动此流程:首次调用会返回 URL,后续调用会告知审批是否已完成;如果页面显示代码,则可通过传入 code 的调用来认领。

更新

已发布的安装默认启用自动更新。Agent 运行时,会在后台检查 npm 的 latest 稳定版,最多每天检查一次。它会将较新版本安装到单独的目录中,并验证已安装的可执行文件报告了预期版本。下次启动 Agent 时会使用该版本。请重启 MCP 连接(或编码 Agent)以应用更新;更新程序绝不会重启正在进行的传输。配对和通道授权会保留,离线或更新失败时,当前版本仍可使用。

zas-agent updates       # show the setting and any release ready to use
zas-agent updates off   # disable automatic downloads and staged launch selection
zas-agent updates on    # enable them again
zas-agent update        # check and stage a release now

如果没有全局安装,请使用 npx -y zas-agent@latest 代替 zas-agent。zas_status 也会报告正在运行的版本和暂存的更新。ZAS_AGENT_AUTO_UPDATE=0 会停用内置更新程序;1 会启用它,并覆盖已保存的设置。即使关闭了更新,仍可通过显式的 update 命令下载版本,但只有重新启用更新后才会选用该版本。若要固定安装版本,请在启动命令中指定确切版本,并停用自动更新。即使内置更新程序已关闭,文档中的 npx ...@latest 命令仍会向 npm 请求最新软件包。

更新需要 npm,并会从 https://registry.npmjs.org 安装官方 zas-agent 软件包,包括其常规依赖安装脚本和 npm 完整性检查。无需管理员权限。暂存的软件包位于 ~/.zas/agent/.updates(或 ZAS_AGENT_HOME/.updates)下;旧安装会保留,可在停止 Agent 后删除。源码检出版本和预发布构建不会自行更新。现有安装需要先升级到包含此更新程序的版本,才能使用这些控制选项。

为什么你可以信任它

这里的每一行都是事实。关于此软件包的内容,你可以在此代码库中核实。对于由 Zas 服务强制执行的属性(该服务并非开源),句子中会明确说明。

  • Agent 拥有自己的身份。 zas-agent pair 会在你的机器上生成两对密钥——用于接收频道密钥的 X25519 密钥,以及用于签署登录信息的 P-256 密钥——私钥部分永远不会离开这台机器。Agent 从不持有你的账户密钥,密钥派生服务也会拒绝为 Agent 派生账户密钥(服务端)。
  • 由你批准,并由你选择频道。 配对不会自动获批。批准页面会显示运行环境、主机和密钥指纹;在启动配对的终端使用只有批准页面收到的代码认领之前,不会创建任何内容(服务端)。他人发给你的配对链接不会在你的账户上创建任何内容。
  • 每个获准的频道对应一把密钥,其他频道则没有密钥。 每项授权都会附带一把用 Agent 的 X25519 公钥加密封装的频道密钥。对于你未授权的频道,Agent 没有可用于解密的密钥;服务端会在每次请求时检查当前授权状态(服务端)。
  • 没有密码,也没有 API 密钥。 登录时,Agent 会用签名质询换取有效期为一小时的令牌。磁盘上不会存储密码、API 密钥或刷新令牌;令牌过期后,Agent 会使用自己的 P-256 密钥重新签名。
  • 它发送的所有内容都会明确标记为其所做的工作。 每条内容都会带有 >_ Agent 标记和 Agent 名称;无论你在哪台设备上查看 Zas,频道中都会显示这些信息。
  • 你可以随时撤销它。 设置 → Agent → 选择该 Agent → 撤销。会话将停止,其刷新令牌会被撤销(服务端);下次调用工具时会返回“所有者已撤销此 Agent”。它已经发送的内容仍会保留。你也可以只移除一个频道,同时保留其他频道。
  • 内容会像应用一样,在离开你的机器之前加密。 src/shared/ 中的分块、清单和信封格式使用的模块,与 Zas Web 应用提供的模块相同。服务端存储的是密文,不会看到频道密钥、频道名称或条目明文(服务端)。
  • 源代码就在这里,发布版本也由此构建。 每个 npm 版本都通过此代码库中的 release.yml 工作流发布,并带有 npm 来源证明,因此可以将 npm 上的压缩包追溯到某次提交和工作流运行。

无法执行的操作

在发出请求之前,软件包本身就会拒绝其中一些操作。标注 (服务端) 的操作由 Zas 服务强制执行。

  • 无法访问你未授权的频道。 无论是按名称还是按 ID。
  • 无法访问你加入的共享频道,除非其所有者允许。 你可以授权自己加入的频道,但在该频道所有者于 Zas 中允许此 Agent 加入之前,授权会保持 grant_pending 状态。套餐还会限制单个 Agent 可持有的这类频道数量:Free 套餐为 2 个 (服务端)。
  • 无法访问工作区频道,除非组织允许 Agent。 由组织管理的频道,或你在其工作区内创建的频道,只有在组织处于活动状态且管理员已启用 Agent 时才能授权 (服务端)。
  • 授权未允许读取时,无法读取。 read 是与 send 分开的开关;未启用时,会拒绝 zas_list_items 和 zas_get_item。
  • 无法向仅查看频道或处于 Directo 模式的频道发送并存储内容。 两种情况都会在上传任何字节之前被拒绝。处于 Directo 模式的频道需要使用 zas_send_direct,这是一种不会存储内容的实时传输。
  • 无法更改自己未发送的内容。 zas_edit_item 和 zas_replace_file 只能操作带有此 Agent 标记的内容;其他内容会被标记为 not_yours,服务端也会拒绝此类操作 (服务端)。替换操作仅供 Agent 使用:网页或移动客户端均无法执行。移除公开分享之前,不会替换带有公开分享的内容。
  • 授权未允许读取时,无法接收。 通过 Directo 接收会将文件写入此机器,因此 zas_receive_direct 与列出内容一样,需要启用 read 开关。它也只会在工具调用期间运行:Agent 不会监视你的频道,因此不会在未经请求时接收任何内容。
  • 无法访问允许列表之外的内容。 API 会拒绝 Agent 访问未列入简短明确列表的所有路由;Firestore 规则会拒绝 Agent 访问你的账户文档、设备,以及没有有效读取授权的任何频道 (服务端)。
  • 受服务端速率限制,使用独立的限流桶;密钥派生额度计入你的账户,因此 10 个 Agent 不会让你的个人额度消耗变成 10 倍 (服务端)。
  • Agent 数量上限由你的套餐或组织规定 (服务端)。
  • 文件最大为 5 GiB,但实际限制通常更低:Agent 会将文件读入内存以计算哈希,因此机器的内存才是真正的上限。
错误代码说明

Agent 只会返回一组固定代码。服务端路由返回的任何不在此集合中的内容都会归并为 upload_failed 或 network,因此原始服务端字符串绝不会显示在终端中。

代码含义
not_paired此 Agent 尚未配对。
unsafe_endpoint端点或模拟器配置可能会泄露凭据。
identity_permissions密钥文件并非仅限其所有者访问。
secret_store_failed操作系统密钥存储无法保存或打开此配置文件。
invalid_voprf_configuration服务器选定的加密密钥没有有效的本地固定值。
invalid_voprf_proof加密服务响应未通过验证。
identity_corrupt磁盘上的身份文件已损坏。
agent_revoked所有者已撤销此 Agent。
agent_forbidden只有账户所有者才能执行此操作。
grant_missing此 Agent 无权访问该频道。
grant_pending该频道属于其他人,其所有者尚未允许此 Agent 访问。
send_forbidden此 Agent 无法向该频道发送内容。
read_forbidden此 Agent 无法读取该频道。
direct_mode该频道处于 Directo 模式。
not_direct_mode该频道未处于 Directo 模式。
not_claimed十分钟内无人接收文件;文件传输邀请已撤回。
no_offer呼叫等待期间,没有人通过 Directo 提供文件。
offer_taken另一台设备先接收了该文件。
direct_cancelled对方已取消文件传输邀请。
direct_failedDirecto 传输过程中失败。
direct_not_failed该任务不是一个在传输过程中失败的 Directo 传输任务。
file_changed自发出 Directo 邀请以来,文件已发生变化。
webrtc_unavailable无法在此机器上加载 WebRTC 引擎。
fallback_unavailable目前无法可靠地传送内容。
key_stale频道密钥已更改;所有者打开 Zas 即可刷新密钥。
quota_exceeded账户已达到存储空间上限。
plan_inactive组织的套餐未激活,因此已暂停向其频道发送内容;所有者或账单管理员可重新激活套餐。
rate_limited连续发送次数过多。
file_too_big文件超出套餐限制。
duplicate该项目已在频道中。
not_found该项目不在频道中。
not_yours该项目并非由此 Agent 发送;它只能修改自己发送的项目。
stale此 Agent 处理该项目期间,项目已发生变化;请重新读取并重试。
not_a_note该项目是文件,不是笔记;只能更改其标题。
not_a_file该项目是笔记,不是文件。
item_shared该项目已公开分享;所有者需先取消分享。
invalid_cap该文件已不可用。
write_failed无法写入下载目标位置。
pairing_expired配对已过期;请重新配对。
pairing_cancelled所有者已取消配对。
claim_mismatch代码不匹配。
pairing_not_approved尚无人批准此配对。
pairing_claimed此配对已被认领;请重新配对。
agent_limit账户无法再添加 Agent;所有者可前往 Settings → Agents 删除一个。
grant_limit套餐允许每个 Agent 访问的频道数少于此次配对授予的数量。
foreign_limit套餐允许此 Agent 访问的他人频道数少于此次配对请求的数量。
feature_disabled此账户尚未启用 Agent。
upload_failed上传失败。
oprf_failed准备文件时,Zas 未能正确响应。
network无法连接到 Zas。
sign_in_failedZas 未接受此 Agent 会话。
bad_signatureZas 拒绝了此 Agent 的签名;请重新配对。
missing_token缺少会话令牌;请重新配对 Agent。
internalAgent 内部发生错误。

每个代码都会返回一句英文句子,而不是堆栈跟踪。

工具

工具功能
zas_status说明此 Agent 是否已与 Zas 账户配对,并列出它可以发送到或读取的所有者频道。
zas_pair将此 Agent 与 Zas 账户配对。首次调用会返回供所有者打开的 URL;之后调用会说明所有者是否已批准。如果页面显示代码,调用时传入 code 即可认领。如果配置文件已配对,批准操作会替换旧 Agent。
zas_send_file将此机器上的文件发送到所有者的某个频道。返回条目 ID;如果上传耗时超过一分钟,则返回作业 ID。
zas_send_note将便笺发送到所有者的某个频道,可以是纯文本,也可以是带语言标记的代码片段。
zas_send_direct通过 Directo 发送文件:以实时设备对设备的方式传输到 Directo 模式下的频道。不会存储任何内容。所有者需在十分钟内于另一台设备上按下 Receive;调用会返回结果,或在一分钟后返回作业 ID。
zas_send_direct_fallbackDirecto 发送过程中失败后,通过可靠传送方式发送同一文件:在此机器上加密,存储在 Cloudflare R2 中,最长 24 小时,且不占用所有者的配额。这由所有者选择;模型会被告知需要询问。
zas_receive_direct将所有者通过 Directo 发送的文件接收到此机器上。等待发送请求、接收文件并将其写入磁盘。需要包含读取权限的授权,且频道必须处于 Directo 模式。返回写入路径,或在一分钟后返回作业 ID。
zas_receive_direct_fallbackDirecto 接收过程中失败后,下载发送方选择存储的加密副本,并将其解密到同一目标位置。
zas_list_items列出所有者某个频道中最新的条目。需要包含读取权限的授权。
zas_get_item获取某个条目。便笺会以文本形式返回;文件会写入磁盘。不会覆盖文件,因此返回的路径可能与请求的路径不同。
zas_edit_item修改此 Agent 发送的条目,同时保留其 ID:可修改文件或便笺的标题,也可修改便笺的文本、语言和隐私遮罩。需要包含读取和发送权限的授权。所有者的活动日志会记录此操作。
zas_replace_file用此机器上的文件替换此 Agent 发送的文件内容,同时保留条目 ID、频道中的位置和置顶状态。返回条目 ID,或在一分钟后返回作业 ID。拒绝替换便笺、共享条目以及由其他人发送的条目。
zas_jobs按时间从新到旧列出此服务启动的发送和 Directo 传输及其各自到达的阶段;也会说明如何兑换长时间发送返回的 job_id。

channel 可接受频道名称或频道 ID。名称必须与已授权的某个频道完全匹配;如果恰好只有一项授权,zas_send_file、 zas_send_note、zas_send_direct、zas_receive_direct、zas_edit_item 和 zas_replace_file 可以省略该参数。

替换操作会运行与发送相同的流程——计算哈希、派生密钥、加密, 然后按块上传或提供证明——并提交新旧两组数据以供释放。服务会在一次事务中迁移两组数据、账户存储用量和条目,因此失败时一切保持原样;两个版本都包含的块既不会上传,也不会释放。这两个工具都会先读取条目,并且只会覆盖读取到的版本:如果条目在此期间发生变化,调用会返回 stale,不会丢失任何内容。

Directo 需要原生模块 node-datachannel, 即用于 Node 的 WebRTC。npm 会为 Windows、macOS 和 Linux 安装预构建二进制文件; 首次运行 Directo 工具时才会加载该模块;如果模块无法加载,机器会返回 webrtc_unavailable。其他工具都不需要该模块。

将模型连接到账户之前,有两件事值得了解:

  • zas_send_file 和 zas_send_direct 会发送此进程能够读取的任何文件—— 包括 ~/.ssh/id_rsa 和 .env。发送机密、密钥或凭据前,请先征得所有者同意。工具描述中有说明,因此模型也能看到。
  • zas_get_item 和 zas_receive_direct 会在 dest 下写入新文件;如果省略 dest,则会写入系统临时目录。 两者都不会覆盖现有文件:如果文件名已被占用,就会添加后缀,并且它们返回的路径就是实际写入文件的路径。

这些工具接触到的所有内容都保存在你自己的账户和机器上。撤销 Agent 的授权后,所有这些工具都会停止工作。

会发送哪些信息

此软件包会报告其使用情况,因此无法接收文件等缺陷(例如某个版本的问题)不会再被忽视。默认情况下,此功能处于开启状态,你可以自行关闭:

npx -y zas-agent telemetry off     # and `on` again, and `telemetry` to see

ZAS_AGENT_TELEMETRY=0 和跨厂商的 DO_NOT_TRACK=1 都能达到相同效果,且不会写入任何内容。该设置保存在 ~/.zas/agent/settings.json 中,适用于此机器上的所有配置;重新配对不会重置它。 zas_status 始终会显示当前设置状态。

每份报告只包含以下信息,不含其他内容:运行的工具、工具是否成功、失败时的固定错误代码、耗时所属的四个区间之一,以及软件包版本。项目传输还会报告项目类别、传输方式、字节数、各阶段耗时,以及成功、失败或取消的状态,并通过每次尝试随机生成的 ID 关联这些信息。不含文件名、文件内容、路径、频道名称、错误消息或堆栈信息。

报告发送到 Zas,绝不会直接发送给分析服务。此软件包不包含分析令牌,也不会与第三方建立连接,因此你的任何地址都不会传给第三方。报告会关联到 Agent 所配对的 Zas 账户,服务器会从会话中读取该账户信息——请求中不包含账户标识符或内容标识符。配对前不会发送报告,因为在此之前报告无从归属。

报告绝不会影响任何操作:它会在响应之后发送,等待时间最多为 5 秒,只会尝试一次;如果发送失败,就会静默丢弃。

磁盘上的数据

每个配置文件对应一个目录,因此一台机器可以同时保存 Claude Code Agent 和 Codex Agent,彼此不会读取对方的密钥:

操作系统路径
macOS、Linux~/.zas/agent/<profile>/
Windows%USERPROFILE%\.zas\agent\<profile>\

配置文件元数据通过临时文件写入,再重命名到目标位置,因此即使写入过程中发生崩溃,也不会留下不完整的文件:

  • identity.json — Agent 的 uid、所有者 uid、名称,以及两组密钥对。请像备份私钥一样备份此文件,或者删除它并重新配对。
  • pending.json — 尚未认领的配对信息。配对完成、过期或取消后都会移除此文件。
  • grants.json — 对 GET /v1/agents/me 的一分钟缓存:包含哪些频道,以及每个频道对应的密封密钥。频道名称在此处仍保持加密状态。可随时删除。
  • fingerprints.json — 最近十分钟内相同发送操作所产生结果的哈希值,这样重试工具调用时无需访问网络即可返回结果。此文件只存储哈希,不存储标题或笔记的首行。可随时删除。

配置文件目录旁边还会有一个文件,位于 ~/.zas/agent/:

  • settings.json — 此机器是否报告用量,以及上方提示上次打印的时间。此设置属于机器,而非配置文件,因此一个选择适用于该机器上的所有 Agent。

私钥、轮询密钥和旧版配对码会在下次启动时从旧 JSON 文件迁移出去。只有在存储成功后,才会提交替换后的元数据。Windows 使用当前用户的 DPAPI 和不继承权限的仅所有者目录 ACL。macOS 使用 Keychain;Linux 在桌面会话和 secret-tool 均可用时通过 secret-tool 使用 Secret Service。若桌面存储已锁定或发生故障,必须先解锁或修复,然后才能重试。无桌面环境的 Linux 会在 0700 权限的目录中使用 0600 权限的文件。POSIX 系统上的密钥读取会拒绝所有者为其他用户的文件、符号链接、硬链接以及组或其他用户可访问的文件;错误信息中包含 chmod 600 修复命令。zas_status 会报告存储状态。

较旧版本的 Agent 无法读取迁移后的密钥引用;迁移后请继续安装更新后的 Agent。受操作系统保护的配置文件不能用作可移植备份。请在另一台机器上配对新的配置文件;不要复制其 JSON 文件并期望它们能用于登录。操作系统保护无法阻止已以你的用户身份运行的进程使用你的密钥。

删除目录会移除本地引用。Keychain/Secret Service 中可能仍保留 red.zas.agent 服务下的条目;丢弃配置文件时,请使用操作系统的凭据管理器移除这些条目。这不会撤销任何内容:请在 Web 应用中通过 Settings → Agents → Revoke 关闭账户端的访问。

再次配对

配对针对的是一个配置文件的密钥对,而非整台机器或程序。一个配置文件只对应一个 Agent。在已配对的配置文件中运行 zas-agent pair 会启动替换流程:终端使用旧身份为请求签名,审批页面会显示将要替换的 Agent,并自动填入其名称和频道;创建新 Agent 的同时,旧 Agent 会被撤销。旧 Agent 的条目会继续显示在 Settings → Agents 下,状态为已撤销,直到你将其移除;在此之前,它仍会占用一个名额。如果旧 Agent 已被撤销或移除,pair 会说明这一点并创建新的 Agent。

一台同时运行 Claude Code 和 Codex 的机器会有两个配置文件(claude-code 和 codex)、两个 Agent、两次审批和两个条目。撤销其中一个不会影响另一个。两个指向同一个 --profile 的程序会作为同一个 Agent 运行:密钥相同、频道相同,且只对应一个条目。

配置

设置默认值更改内容
--profile <name>claude-code此进程使用的身份目录。可包含字母、数字、.、_ 和 -,长度最多为 64 个字符,且不能以点号开头。
ZAS_AGENT_HOME~/.zas/agent配置目录所在的位置。
ZAS_AGENT_TELEMETRY未设置设为 0 可关闭此进程的使用情况报告,设为 1 可开启。此设置优先于已保存的选择。
DO_NOT_TRACK未设置设为 1 可关闭使用情况报告。仅用于关闭报告。
ZAS_WEB_BASEhttps://zas.red配对 URL 指向的 Web 应用。
ZAS_API_BASEhttps://zas.red/apiAPI。
ZAS_TOKEN_BASEhttps://zas.red/anon-token挑战和令牌路由。
ZAS_OPRF_BASEhttps://zas.red/oprf盲密钥派生服务。
ZAS_FIREBASE_PROJECTzas-me读取路径查询其 Firestore 的项目。
ZAS_ALLOW_INSECURE_DEV未设置设为 1 后,仅允许在 localhost、127.0.0.1 或 ::1 上使用 HTTP。
ZAS_VOPRF_PUBLIC_KEYS未设置由运营方提供的 JSON 映射,将密钥 ID 映射到固定的 base64 VOPRF 公钥。服务器选择模式 1 时必需。
ZAS_FIREBASE_API_KEY公开 Web 密钥用于将自定义令牌兑换为会话的密钥。

手动设置时,只有 --profile、ZAS_AGENT_HOME 和两个遥测开关值得设置。其余设置仅用于将软件包指向测试部署。

每次加载时都会验证已保存的 API、令牌和 OPRF 基础 URL。即使启用了开发标志,也会拒绝非回环 HTTP。要运行 Firebase 模拟器,请将 FIREBASE_AUTH_EMULATOR_HOST 和 FIRESTORE_EMULATOR_HOST 都设为回环主机,将 Zas 的三个服务基础 URL 都设为回环地址,将 ZAS_FIREBASE_PROJECT 设为 demo-* 项目,并设置 ZAS_ALLOW_INSECURE_DEV=1。生产配置无法使用这些模拟器。携带凭据的请求会拒绝重定向。开发时请使用单独的配置;加载旧配置前,请先修复其中不安全的基础 URL。

开发

git clone https://github.com/soke1556/zas-agent
cd zas-agent
npm ci
npm test
npm run typecheck
npm run build
node dist/cli.js --version

此仓库是 Zas 私有单体仓库中 agent/ 软件包的公开镜像。它由 scripts/export-public.mjs 生成:该脚本使用 esbuild 构建软件包,并依据构建自身的元文件决定要复制哪些内容:src/、test/、软件包文件,以及 Agent 导入的 src/shared/* 模块。这些共享模块是客户端加密和格式处理代码,包括分块器、清单、信封和密钥派生;Zas Web 应用也会发布这些模块,因此 Agent 执行的加密与应用执行的加密相同。Zas 服务端不开源。

欢迎向此仓库提交拉取请求。维护者会将被接受的更改应用回单体仓库,并在下一次导出时带到此处。请参阅 CONTRIBUTING.md。

shared-source.json 将共享模块和互操作性测试数据固定到 zas.web 的提交 46d727a870c64728b42b768950d55d7d7a575181。CI 会运行 npm run check:shared,使用上游 Git Blob ID 检测偏差。拥有私有代码库副本的维护者可以运行 npm run check:shared -- --source ../zas.web,根据实际提交验证固定版本。请在下一次导出前将这些 Agent 更改应用回单体仓库。

此版本跟进 Web 读取阶段:可以读取旧版/v1 和已认证的 v2 信封;应用写入端仍会生成 v1。VOPRF 模式由 GET /v1/agents/me 选择;模式 1 要求本地固定公钥并提供有效的批量证明,失败时不会降级。启用生产环境的 v2 写入,以及协调各客户端采用 VOPRF,仍属于独立的发布工作。

安全

请私下报告漏洞。SECURITY.md 说明了报告方式和预期流程。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。