mcpField
A
agend-sh

agend-sh

本地服务
agend.sh开发工具03 周前更新

关于 agend-sh

agend-sh 为 AI Agent 提供可通过 MCP 操作的持久化、隔离 Linux 工作区,适合需要远程运行代码、操作交互式终端和分享服务预览的开发者。

主要功能

  1. 01持久化隔离 Linux 工作区
  2. 02运行命令和后台任务
  3. 03交互式终端与 REPL 会话
  4. 04在本地与远程间传输文件
  5. 05通过 HTTPS 预览公开服务
  6. 06查看 Agent 的终端活动

适用场景

  1. 01在持久化远程工作区运行代码
  2. 02操作 REPL 或终端应用
  3. 03通过 HTTPS 链接分享运行中的服务

MCP 相关

CLI 提供用于管理环境、运行命令、处理文件和公开端口的 MCP 工具。客户端可配置为通过本地 stdio 服务运行 `agend mcp`。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"agend-sh-agend-sh": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"AGEND_API_TOKEN",
"ghcr.io/agend-sh/agend-mcp@sha256:4462e2571be0e69003e1be93255e04523342e1e5aa17482ec3d63bd7506bb82f"
],
"env": {
"AGEND_API_TOKEN": "<AGEND_API_TOKEN>"
}
}
}
}
启动命令docker run -i --rm -e AGEND_API_TOKEN ghcr.io/agend-sh/agend-mcp@sha256:4462e2571be0e69003e1be93255e04523342e1e5aa17482ec3d63bd7506bb82f
需要配置的环境变量
AGEND_API_TOKEN密钥Your Agend account token. Sign in with agend login, then follow docs/mcp-registry.md to load the active account token. An Agend account and available environment quota are required.

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

安装包
ocighcr.io/agend-sh/agend-mcp@sha256:4462e2571be0e69003e1be93255e04523342e1e5aa17482ec3d63bd7506bb82f

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

agend

为你的 AI Agent 准备一台真正的计算机。

持久化 Linux 工作区。交互式终端。可分享的预览。
使用你喜欢的 MCP Agent,让它开始工作。

最新版本 CI 基于 stdio 的 MCP Linux、macOS 和 Windows

快速开始 · 交互式终端 · 连接你的 Agent · MCP 工具 · agend.sh


agend 为你的 Agent 提供一个持久化、隔离的 Linux 环境,让它通过 MCP 操控环境。 它可以运行代码、编辑文件、使用 Python REPL 和 Vim、启动服务,并提供预览 URL。你可以自行打开 Shell,也可以在 Agent 工作时查看它的交互式终端。

构建交互展示成果
运行命令和后台任务。传输文件。在远程工作区中保存项目。通过 PTY 操控 REPL 和终端应用,并在终端等待输入时收到反馈。打开浏览器预览,或使用 agend watch 镜像交互式会话。

快速开始

1. 安装

Linux / macOS

curl -fsSL https://agend.sh/i | sh

Windows · PowerShell

irm https://agend.sh/i.ps1 | iex

Homebrew · Linux / macOS

brew install agend-sh/tap/agend

脚本安装程序会验证发行版签名和压缩包的 SHA-256 校验和。Unix 安装程序会写入 /usr/local/bin,并可能提示你使用 sudo。Windows 安装程序会写入 %LOCALAPPDATA%\agend\bin,并将其添加到你的用户 PATH。所有三个平台的发行版均支持 amd64 和 arm64。

agend version
2. 登录
agend login

在浏览器中完成身份验证。若要使用电子邮件和密码创建账户:

agend signup --email [email protected]

signup 会提示你输入密码,并在成功后登录。你无需再次运行 login。

3. 创建工作区
agend env create --name my-workspace
agend ping
agend exec 'python3 --version'

创建工作区后,它会成为 CLI 命令的当前目标。工作区大小取决于你账户的默认配置。使用 agend profiles 查看可用规格、配额和休眠策略;传入返回的配置 ID,使用 agend env create --profile <profile-id> 选择其他规格。

4. 连接你的 Agent
agend config claude-code

或者配置其他客户端:

agend config codex cursor gemini

重启或重新加载客户端的 MCP 集成,然后试试这个提示词:

使用 agend 的 list_environments 查找 my-workspace。在那里启动交互式 Python REPL,计算 6 × 7,然后退出 REPL。

你的 Agent 会发现该环境,并通过 MCP 工具操控它。使用此服务需要 Agend 账户和可用的环境配额;仅有 CLI 不会提供免费的本地计算机。

agend-sh 已列入官方 MCP Registry, 名称为 io.github.agend-sh/agend-sh。如需通过 Docker 安装,请参阅 容器包和连接指南。 也可通过 Smithery 获取。 对于支持 MCPB 扩展的客户端,请参阅扩展包指南。

交互式终端

终端可以报告已进入等待输入状态。 这样,Agent 进程在操作 REPL 或终端应用时就能获得反馈。

例如,调用 shell_exec 并传入:

{
  "environment": "my-workspace",
  "command": "python3 -q",
  "interactive": true
}

响应可能如下所示:

status: awaiting_input
>>>
prompt_type: interactive
input_wait: true

通过 shell_send_raw 继续:

{
  "environment": "my-workspace",
  "input": "print('hello from agend')\n"
}
status: awaiting_input
print('hello from agend')
hello from agend
>>>
input_wait: true

然后通过 shell_send_raw 发送 exit()\n,关闭 Python。

读取响应
字段含义
status: completed命令已结束。请检查 exit_code。
status: awaiting_input交互进程仍在运行。仅凭此状态无法证明它正在等待输入。
input_wait: true收集此响应期间检测到了等待输入事件:终端读取器因输入不足而进入等待路径。
input_wait: false此响应中未检测到新事件。这不会取消先前的事件,也无法证明进程已停止等待。
status: timeout前台命令超出了时间限制。

等待输入信号是一个事件,不是持久状态查询,也不保证应用或服务已准备就绪。它取决于环境中的 guest stack 是否支持。

对于 REPL 和 TUI,请设置 interactive: true,并使用 shell_send_raw 发送后续输入。需要按 Enter 时,请包含 \n。视口尺寸变化时,请使用 shell_resize。通过应用自身的命令退出,或使用 shell_interrupt 关闭会话。每个环境只能有一个活动的交互会话;开始另一条 shell_exec 前,请先结束当前会话。

交互进程会在工具调用之间保持运行,不会因响应收集超时而被终止。工具响应完成后,断开 MCP 客户端本身不会停止进程:重新连接到同一环境即可继续操作。环境休眠、崩溃或冷重置可能会影响进程的生命周期。

查看 Agent 的工作

agend watch

Watch 会镜像所选环境的交互会话,重放保留的输出,并跟进新的更新。它不会向远程进程发送输入。按 q 或 Ctrl+C 停止查看;Agent 的会话会继续运行。

录制屏幕时:

agend watch --typing-delay 40ms

将终端尺寸调整为与远程会话一致,以准确显示内容。Watch 会跟进 Agent 的工具调用所收集的输出;这些调用之间不会轮询 guest 以获取输出。它显示交互会话,不显示普通命令输出或后台任务日志。

想亲自在环境中操作吗?

agend connect

这会打开一个支持键盘输入和终端调整大小的实时终端。运行 exit 关闭 shell。此功能要求 stdin 连接终端,并且与 MCP 共用同一个交互会话槽位,因此请先关闭 Agent 的交互应用。

分享浏览器预览

让 Agent 使用 shell_exec 启动服务:

{
  "environment": "my-workspace",
  "command": "python3 -m http.server 8080 --bind 0.0.0.0 --directory /home/agend-user/readme-demo",
  "run_in_background": true
}

请先创建 /home/agend-user/readme-demo,并将演示文件放在那里。将服务绑定到 0.0.0.0,以便隧道能够访问。

然后调用 port_expose:

{
  "environment": "my-workspace",
  "port": 8080
}

响应中包含一个公开的 HTTPS URL。请等待隧道和 DNS 可以访问。port_list 会显示活动的端口暴露;port_unexpose 会移除一项暴露。暴露端口会使该服务可从互联网访问。

若要使用由你自己的 Cloudflare 管理的域名,请运行 agend domain add example.com 注册其区域,然后向 port_expose 传入 domain: "app.example.com"。注册时会提示输入具有 Zone:DNS:Edit、Zone:Zone:Read 和 Account:Cloudflare Tunnel:Edit 权限的 Cloudflare API token;脚本可以通过 AGEND_CF_TOKEN 提供该 token。agend domain list 会返回 agend domain remove <domain-id> 所用的域名 ID。

连接你的 Agent

agend config 会检测机器上已安装的受支持客户端。写入配置前,请先预览选项:

agend config --dry-run
agend config

你也可以明确选择客户端:

客户端命令
Claude Codeagend config claude-code
Claude Desktopagend config claude-desktop
Codexagend config codex
Cursor / Windsurfagend config cursor windsurf
Gemini CLI / Antigravityagend config gemini antigravity
VS Code / Zed / JetBrainsagend config vscode zed jetbrains
Cline / Roo Codeagend config cline roo-code
OpenCode / GitHub Copilot CLIagend config opencode github-copilot-cli
Amazon Q / Goose / Continueagend config amazon-q goose continue

配置会将 agend mcp 注册为本地 stdio 服务。客户端必须能够找到已安装的二进制文件;在 Windows 上,配置写入器会使用其绝对路径。agend config 会处理特定客户端的配置路径和格式。

手动配置其他 MCP 客户端

对于使用 mcpServers JSON 格式的客户端:

{
  "mcpServers": {
    "agend": {
      "command": "agend",
      "args": ["mcp"]
    }
  }
}

如果客户端无法继承 shell 的 PATH,请使用二进制文件的绝对路径。这是一个通用示例;部分客户端使用不同的架构。agend mcp 会从 stdin 读取 JSON-RPC,并将协议响应写入 stdout;日志会写入 stderr。工具结果是 MCP 文本内容,其中包含 status 和 input_wait 等字段。

## MCP 工具

CLI 提供 23 个工具。调用 list_environments 以发现 ID 和名称。特定环境的工具需要 environment 参数,并接受 ID 或名称。env_create、list_environments、profiles_list 和 reload_config 不需要此参数。

区域工具功能
环境list_environments发现环境、名称、描述、状态和层级。
profiles_list显示可用规格、配额和用量。
env_create创建环境;可选参数为 name、description 和 profile。
env_update编辑或清除环境名称和描述。
env_status检查状态和元数据,不唤醒环境。
env_wake唤醒休眠的环境。
env_cold_reset用于恢复卡住环境的最后手段;需要提供诊断原因。
Shellshell_exec运行命令,支持设置超时、截取开头/结尾、交互模式或后台模式。
shell_send_raw向交互式应用发送字节;不会追加换行符。
shell_provide_input在活动终端会话中回答简单提示;会追加换行符。对于 REPL 和 TUI,请使用 shell_send_raw。
shell_resize调整活动 PTY 的大小。
shell_interrupt中断命令或关闭交互会话。
shell_task_output读取后台任务的输出和状态。
shell_task_stop停止后台任务。
文件file_write将文本原子性地写入远程文件。
file_upload将本地文件传输到环境中。
file_download将远程文件传输到本地计算机。
file_move移动或重命名远程文件。
网络port_expose通过公共 HTTPS 隧道公开服务。
port_list列出已公开的端口和 URL。
port_unexpose移除公开项;可选择指定一个域名。
诊断env_stats检查磁盘、内存、CPU 和进程。
reload_config在其他终端中更改凭据后重新加载凭据并重置连接。

interactive 和 run_in_background 不能同时使用。后台执行会返回供任务工具使用的 task_id。

file_upload 和 file_download 中的本地路径仅限于 MCP 服务的工作目录,或你在服务环境中设置的 AGEND_LOCAL_ROOT。下载会返回传输元数据;请使用 shell_exec 读取文本,或打开下载到本地的文件。对于大文件,通常直接在远程环境中使用 curl 或 wget 下载更快。

CLI 参考

CLI 命令会在所选环境中执行。使用 agend env use 和其他 CLI 环境命令时,请使用环境 ID;MCP 工具也可以解析名称。

agend env list
agend env use <env-id>
agend exec 'pwd'
环境和账户
命令用途
agend profiles列出账户可用的配置文件。
agend env create [--name NAME] [--description TEXT] [--profile ID]配置并选择一个工作区。
agend env list列出环境。
agend env use <env-id>选择一个环境;如果环境处于休眠状态,则将其唤醒。
agend env edit [env-id] --name NAME --description TEXT编辑元数据;--clear-name 和 --clear-description 可移除相应值。
agend env status [env-id]检查状态,但不会唤醒环境。
agend env wake [env-id]唤醒休眠中的环境。
agend env cold-reset [env-id] --reason TEXT通过冷启动恢复确实卡住的环境。
agend env delete [env-id]永久删除环境及其数据。
agend status显示身份验证状态和所选环境状态。
agend signup --email <email>创建账户,并通过密码提示登录。
agend login通过浏览器进行身份验证。
agend login --email <email>使用电子邮件和密码登录。
agend login --token <token>保存直接 API 令牌。
agend account list列出已保存的账户。
agend account switch <email>切换账户。
agend account remove <email>移除已保存的账户。
agend logout [--all]移除当前账户的本地凭据,或移除所有已保存的账户。

冷重置会保留持久数据磁盘,但会丢弃客户机内存、进程、会话和快照。这是一项恢复操作。在环境中创建、选择或执行操作可能会启动或唤醒环境;env status 是只读检查方式。

Shell、文件和任务
命令用途
agend connect [--shell COMMAND]打开实时交互式终端。
agend watch [--typing-delay 40ms]镜像交互会话,但不发送输入。
agend exec <command>执行远程命令。
agend input <text>回答简单提示;会追加换行符。
agend resize <columns> <rows>调整活动 PTY 的大小。
agend interrupt中断活动命令/会话。
agend ping检查连接状态并显示后端版本。
agend file-get <remote-path>将远程文件内容输出到 stdout。
agend file-put <remote-path> <content>将提供的内容写入远程文件。
agend file-move <source> <destination>移动或重命名远程文件。
agend task-output <task-id>读取后台任务输出。
agend task-stop <task-id>停止后台任务。

exec 支持 --timeout,单位为毫秒(默认值:30000),以及 --head、--tail、--background 和 --interactive。实时终端请使用 connect;如果 Agent 要操作 REPL 或 TUI,请使用 MCP 的交互式工具工作流。

例如:

agend file-put /home/agend-user/hello.txt 'hello from agend'
agend file-get /home/agend-user/hello.txt
agend exec --timeout 60000 'python3 --version'

file-get 会将文件元数据写入 stderr。file-put 接收的是内容,而不是本地文件名;要传输本地文件,请使用 MCP 的 file_upload。这两个 CLI 文件命令都支持 --encoding text 或 --encoding base64;file-put 还支持 --create-dirs、--overwrite 和 --mode。

团队和共享环境

团队拥有共享环境。租约会授予成员独占访问权限,直到租约被释放或到期。

命令用途
agend team create <name>创建由你拥有的团队。
agend team list列出你的团队。
agend team invite <team-id> <email>邀请成员。
agend team accept <team-id>接受邀请。
agend team members <team-id>列出成员。
agend team envs <team-id>列出共享环境及其租约状态。
agend profiles --team <team-id>查看团队可用的配置文件。
agend team env-create <team-id> [--profile ID]配置共享环境。
agend env acquire <env-id>获取独占租约。
agend env heartbeat <env-id>延长租约。
agend env release <env-id>释放租约。

当所选环境属于某个团队时,agend mcp 会尝试获取该环境的租约,在连接期间发送心跳,并在正常关闭时释放租约。由其他成员持有的租约会阻止访问。客户端被强制终止时,租约可能会一直保留到到期。

## 更新与故障排除
agend update

更新器会在替换二进制文件前验证签名校验和清单和归档文件。已在运行的 MCP 进程会继续使用当前版本,直到重启。发布版本构建还会自动检查更新,每 24 小时最多一次;设置 AGEND_NO_AUTOUPDATE=1 可禁用这些自动检查。对于由 Homebrew 管理的安装,请使用 brew upgrade agend。

情况处理方法
安装程序输出 agend setup claude,或 config claude 失败使用 agend config claude-code 或 agend config claude-desktop。
Agent 找不到服务检查 agend version,重新运行 agend config <client>,然后重启其 MCP 集成。手动配置可能需要使用绝对二进制文件路径。
CLI 未选择环境运行 agend env list,然后运行 agend env use <env-id>。
新环境暂时无法访问查看 agend env status;等待隧道上线,然后重试 agend ping。
输入提示没有活动会话使用 interactive: true 启动应用。普通前台命令不会保持 stdin 打开以供后续工具调用。
退出时 connect 报告 no active session waiting for input当前后端在 shell 成功运行后偶尔会出现此情况。请参阅验证报告;如需继续,请启动新的 connect 会话。
本地文件路径被拒绝将其保留在 MCP 工作目录内,或配置 AGEND_LOCAL_ROOT。
浏览器预览 URL 暂时无法打开检查服务是否正在运行并绑定到 0.0.0.0;等待隧道/DNS 传播,然后检查 port_list。如果主机名仍无法解析,请检查 DNS 解析器。
环境似乎卡住首先查看 env status。只有在常规重新连接/唤醒恢复无效后,才使用冷重置。
公司代理阻止连接设置 HTTPS_PROXY / HTTP_PROXY;Go 二进制文件不会使用 Windows 系统代理设置。

凭据和按账户选择的环境存储在 ~/.config/agend/credentials.json 中;在 Unix 上,该文件仅允许所有者访问。在 Windows 上,~ 是你的用户配置文件目录,访问权限由 Windows 文件系统权限控制。使用脚本进行电子邮件/密码身份验证时,请使用 AGEND_PASSWORD;否则 CLI 会提示输入密码。

开发

需要 Go 1.26.9+。在源码检出目录中:

git clone https://github.com/agend-sh/cli.git
cd cli
make build
./bin/agend version

make install 会构建二进制文件并复制到 /usr/local/bin;该目录必须可写。在 Windows 上,直接使用 go build -o agend.exe ./cmd/agend 构建。

go test ./...
go vet ./...

CI 会在 Linux 和 Windows 上进行构建、测试和代码检查,并执行额外的交叉编译检查。版本标签会触发 GoReleaser,发布适用于 amd64 和 arm64 的 Linux/macOS tarball 以及 Windows zip 归档、校验和清单及其 Sigstore 签名包。Homebrew tap 通过自己的工作流更新。make release 是本地 Unix 交叉编译目标,并非发布工作流。

请参阅 README 验证报告,了解已测试的版本、实时检查、当前问题和覆盖范围限制。

工作原理
Your MCP agent
     │ stdio / JSON-RPC
     ▼
  agend mcp ──────────────── agend connect / agend watch
     │ authenticated gRPC over a WebSocket tunnel
     ▼
  Environment backend
     │
     ▼
  Isolated Linux workspace

MCP 桥接会按需解析每个环境的端点、维护连接池并处理连接恢复。直接通过 CLI 访问 shell 使用相同的后端。无需安装单独的隧道客户端。

路径用途
cmd/agend/入口和注入的版本信息。
internal/cmd/CLI 命令、客户端配置和更新。
internal/mcp/JSON-RPC 服务、工具定义、连接池和本地路径规则。
internal/grpc/后端客户端和传输。
internal/api/控制平面 HTTP 客户端。
internal/auth/账户、凭证和浏览器身份验证。
internal/recovery/连接错误分类。
proto/agentd/v1/生成的 protobuf 和 gRPC 定义。

许可证

MIT.

评论

支持 Markdown

第一次接触 MCP?

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

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