import{_ as i,c as a,o as n,ae as t}from"./chunks/framework.CBTkueSR.js";const d=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"zh/replit/Tools.md","filePath":"zh/replit/Tools.md"}'),h={name:"zh/replit/Tools.md"};function k(p,s,l,E,e,F){return n(),a("div",null,[...s[0]||(s[0]=[t(`
本文档定义了以下工具:
restart_workflow: 重启(或启动)工作流search_filesystem: 搜索并打开代码库中的相关文件packager_tool: 安装语言(如果需要)并安装或卸载库或项目依赖项programming_language_install_tool: 安装编程语言create_postgresql_database_tool: 为项目创建 PostgreSQL 数据库check_database_status: 检查数据库是否可用和可访问str_replace_editor: 用于查看、创建和编辑文件的自定义编辑工具bash: 在 bash shell 中运行命令workflows_set_run_config_tool: 配置执行 shell 命令的后台任务workflows_remove_run_config_tool: 移除先前添加的命名命令execute_sql_tool: 允许您执行 SQL 查询、修复数据库错误和访问数据库架构suggest_deploy: 建议部署项目report_progress: 报告用户任务完成情况web_application_feedback_tool: 捕获屏幕截图并检查日志以验证网络应用程序是否在 Replit 工作流中运行shell_command_application_feedback_tool: 执行交互式 shell 命令并询问 CLI 应用程序的输出或行为vnc_window_application_feedback: 执行交互式桌面应用程序,通过 VNC 访问并显示给用户ask_secrets: 请求项目所需的密钥 API 密钥check_secrets: 检查环境中是否存在给定密钥{
"tools": [
{
"name": "restart_workflow",
"description": "重启(或启动)一个工作流。",
"parameters": {
"properties": {
"name": {
"description": "工作流的名称。",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
}
},
{
"name": "search_filesystem",
"description": "此工具搜索并打开代码库的相关文件",
"parameters": {
"properties": {
"class_names": {
"default": [],
"description": "在代码库中搜索的特定类名列表。区分大小写且仅支持精确匹配。使用此功能查找特定类定义或其用法。",
"items": {
"type": "string"
},
"type": "array"
},
"code": {
"default": [],
"description": "在代码库中搜索的精确代码片段列表。有助于查找特定实现或模式。每个片段应该是完整的代码片段,而不仅仅是关键字。",
"items": {
"type": "string"
},
"type": "array"
},
"function_names": {
"default": [],
"description": "要搜索的特定函数或方法名列表。区分大小写且仅支持精确匹配。使用此功能在整个代码中定位函数定义或其调用。",
"items": {
"type": "string"
},
"type": "array"
},
"query_description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "执行语义相似性搜索的自然语言查询。使用简单英语描述您要查找的内容,例如 'find error handling in database connections' 或 'locate authentication middleware implementations'。"
}
},
"type": "object"
}
},
{
"name": "packager_tool",
"description": "安装语言(如果需要)并安装或卸载库或项目依赖项列表。使用此工具安装依赖项,而不是执行 shell 命令或手动编辑文件。使用 language_or_system=\`system\` 运行此工具以添加系统依赖项,而不是使用 \`apt install\`。首次安装库时也会自动创建必要的项目文件(如 'package.json'、'cargo.toml' 等)。这将自动重启所有工作流。",
"parameters": {
"properties": {
"dependency_list": {
"default": [],
"description": "要安装的系统依赖项或库列表。系统依赖项是 Nixpkgs 包集合中的包(属性路径)。示例系统依赖项:['jq', 'ffmpeg', 'imagemagick']。库是特定编程语言的包。示例库:['express'],['lodash']。",
"items": {
"type": "string"
},
"type": "array"
},
"install_or_uninstall": {
"description": "是安装还是卸载。",
"enum": [
"install",
"uninstall"
],
"type": "string"
},
"language_or_system": {
"description": "要安装/卸载库的语言,例如 'nodejs'、'bun'、'python' 等。使用 \`system\` 来安装/卸载系统依赖项。",
"type": "string"
}
},
"required": [
"install_or_uninstall",
"language_or_system"
],
"type": "object"
}
},
{
"name": "programming_language_install_tool",
"description": "如果程序无法运行,您可能没有安装编程语言。使用 programming_language_install_tool 来安装它。如果您需要使用 python,请在 programming_languages 中包含 'python-3.11'。对于 Python 3.10,请使用 'python-3.10'。如果您需要使用 Node.js,请在 programming_languages 中包含 'nodejs-20'。对于 Node.js 18,请使用 'nodejs-18'。注意,这还将安装语言的包管理器,因此无需单独安装。",
"parameters": {
"properties": {
"programming_languages": {
"description": "要安装的编程语言的 ID",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"programming_languages"
],
"type": "object"
}
},
{
"name": "create_postgresql_database_tool",
"description": "当项目需要 PostgreSQL 数据库时,您可以使用此工具为其创建数据库。成功创建数据库后,您将可以访问以下环境变量:DATABASE_URL, PGPORT, PGUSER, PGPASSWORD, PGDATABASE, PGHOST\\n您可以使用这些环境变量在项目中连接到数据库。",
"parameters": {
"properties": {},
"type": "object"
}
},
{
"name": "check_database_status",
"description": "检查给定数据库是否可用和可访问。\\n此工具用于验证指定数据库的连接和状态。",
"parameters": {
"properties": {},
"type": "object"
}
},
{
"name": "str_replace_editor",
"description": "用于查看、创建和编辑文件的自定义编辑工具\\n* 状态在命令调用和与用户的讨论中保持持久\\n* 如果 \`path\` 是一个文件,\`view\` 显示应用 \`cat -n\` 的结果。如果 \`path\` 是一个目录,\`view\` 列出最多 2 级深度的非隐藏文件和目录\\n* 如果指定的 \`path\` 已经作为文件存在,则不能使用 \`create\` 命令\\n* 如果 \`command\` 生成长输出,它将被截断并标记为 \`<response clipped>\` \\n* \`undo_edit\` 命令将撤消对 \`path\` 处文件的最后一次编辑\\n\\n使用 \`str_replace\` 命令的注意事项:\\n* \`old_str\` 参数应完全匹配原始文件中一个或多个连续行。请注意空格!\\n* 如果 \`old_str\` 参数在文件中不唯一,则不会执行替换。请确保在 \`old_str\` 中包含足够的上下文以使其唯一\\n* \`new_str\` 参数应包含要替换 \`old_str\` 的编辑行",
"parameters": {
"properties": {
"command": {
"description": "要运行的命令。允许的选项是:\`view\`、\`create\`、\`str_replace\`、\`insert\`、\`undo_edit\`。",
"enum": [
"view",
"create",
"str_replace",
"insert",
"undo_edit"
],
"type": "string"
},
"file_text": {
"description": "\`create\` 命令的必需参数,包含要创建的文件内容。",
"type": "string"
},
"insert_line": {
"description": "\`insert\` 命令的必需参数。\`new_str\` 将插入到 \`path\` 的 \`insert_line\` 行之后。",
"type": "integer"
},
"new_str": {
"description": "\`str_replace\` 命令的可选参数,包含新字符串(如果不提供,则不会添加字符串)。\`insert\` 命令的必需参数,包含要插入的字符串。",
"type": "string"
},
"old_str": {
"description": "\`str_replace\` 命令的必需参数,包含 \`path\` 中要替换的字符串。",
"type": "string"
},
"path": {
"description": "文件或目录的绝对路径,例如 \`/repo/file.py\` 或 \`/repo\`。",
"type": "string"
},
"view_range": {
"description": "当 \`path\` 指向文件时,\`view\` 命令的可选参数。如果没有提供,则显示完整文件。如果提供,则文件将以指定的行号范围显示,例如 [11, 12] 将显示第 11 和 12 行。索引从 1 开始。设置 \`[start_line, -1]\` 将显示从 \`start_line\` 到文件末尾的所有行。",
"items": {
"type": "integer"
},
"type": "array"
}
},
"required": [
"command",
"path"
],
"type": "object"
}
},
{
"name": "bash",
"description": "在 bash shell 中运行命令\\n* 调用此工具时,\\"command\\" 参数的内容不需要 XML 转义。\\n* 您可以通过 apt 和 pip 访问常见 linux 和 python 包的镜像。\\n* 状态在命令调用和与用户的讨论中保持持久。\\n* 要检查文件的特定行范围,例如第 10-25 行,请尝试 'sed -n 10,25p /path/to/the/file'。\\n* 请避免可能产生大量输出的命令。\\n* 请在后台运行长期运行的命令,例如 'sleep 10 &' 或在后台启动服务器。",
"parameters": {
"properties": {
"command": {
"description": "要运行的 bash 命令。除非工具正在重启,否则必需。",
"type": "string"
},
"restart": {
"description": "指定 true 将重启此工具。否则,请保持未指定。",
"type": "boolean"
}
},
"type": "object"
}
},
{
"name": "workflows_set_run_config_tool",
"description": "配置执行 shell 命令的后台任务。\\n这对于启动开发服务器、构建进程或项目所需的任何其他\\n长期运行的任务很有用。\\n如果是服务器,请确保在 \`wait_for_port\` 字段中指定它侦听的端口号,\\n以便在服务器准备好接受连接之前不认为工作流已启动。\\n\\n示例:\\n- 对于 Node.js 服务器:将 \`name\` 设置为 'Server',\`command\` 设置为 'npm run dev',\`wait_for_port\` 设置为 5000\\n- 对于 Python 脚本:将 name 设置为 'Data Processing',command 设置为 'python process_data.py'\\n\\n可以配置多个任务,项目启动时它们将全部并行执行。\\n配置任务后,它将自动在后台开始执行。\\n\\n始终在端口 5000 上提供应用程序,即使该端口存在问题:这是唯一没有防火墙的端口。\\n",
"parameters": {
"properties": {
"command": {
"description": "要执行的 shell 命令。项目启动时将在后台运行。",
"type": "string"
},
"name": {
"description": "标识命令的唯一名称。这将用于跟踪命令。",
"type": "string"
},
"wait_for_port": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "如果命令启动侦听端口的进程,请在此处指定端口号。\\n这允许系统在认为命令完全启动之前等待端口准备就绪。"
}
},
"required": [
"name",
"command"
],
"type": "object"
}
},
{
"name": "workflows_remove_run_config_tool",
"description": "移除之前添加的命名命令",
"parameters": {
"properties": {
"name": {
"description": "要移除的命令名称。",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
}
},
{
"name": "execute_sql_tool",
"description": "此工具允许您执行 SQL 查询、修复数据库错误和访问数据库架构。\\n\\n## 使用规则:\\n1. 始终优先使用此工具修复数据库错误,而不是编写像 db.drop_table(table_name) 这样的代码来修复\\n2. 提供语法正确的清晰、格式良好的 SQL 查询\\n3. 专注于数据库交互、数据操作和查询优化\\n\\n## 何时使用:\\n1. 修复和排查与数据库相关的问题\\n2. 探索数据库架构和关系\\n3. 更新或修改数据库中的数据\\n4. 运行一次性使用的 SQL 代码\\n\\n## 何时不使用:\\n1. 用于非 SQL 数据库操作(NoSQL、基于文件的数据库)\\n2. 用于数据库迁移。请改用 Drizzle 或 flask-migrate 等迁移工具\\n\\n## 使用示例:\\n\\n### 示例 1:查看数据库信息\\nsql_query: SELECT * FROM customers WHERE region = 'North';\\n\\n### 示例 2:运行一次性 SQL 查询\\nsql_query: EXPLAIN ANALYZE SELECT orders.*, customers.name\\n FROM orders\\n JOIN customers ON orders.customer_id = customers.id;\\n\\n### 示例 3:向数据库插入数据\\nsql_query: INSERT INTO products (name, price, category)\\n VALUES ('New Product', 29.99, 'Electronics');",
"parameters": {
"properties": {
"sql_query": {
"description": "要执行的 SQL 查询",
"type": "string"
}
},
"required": [
"sql_query"
],
"type": "object"
}
},
{
"name": "suggest_deploy",
"description": "当您认为项目处于可部署状态时调用此函数。\\n这将建议用户他们可以部署他们的项目。\\n这是一个终端操作 - 一旦调用,您的任务就完成了,并且\\n您不应采取任何进一步操作来验证部署。\\n部署过程将由 Replit Deployments 自动处理。\\n\\n## 使用规则:\\n1. 验证项目按预期工作后使用此工具。\\n2. 部署过程将由 Replit Deployments 自动处理。\\n\\n## 何时使用:\\n1. 当项目准备部署时。\\n2. 当用户要求部署项目时。\\n\\n## 更多信息:\\n- 用户需要手动启动部署。\\n- Replit Deployments 将处理应用程序构建、托管、TLS、健康检查。\\n- 调用此工具后,无需执行任何后续步骤或验证。\\n- 部署后,应用程序将在 \`.replit.app\` 域下可用,\\n 或者如果配置了自定义域,则在自定义域下可用。",
"parameters": {
"description": "空参数类,因为建议部署不需要任何参数。",
"properties": {},
"type": "object"
}
},
{
"name": "report_progress",
"description": "用户明确确认主要功能或任务完成时调用此函数。\\n不要在没有用户确认的情况下调用它。\\n在 'summary' 字段中提供已完成内容的简明摘要。\\n此工具将询问用户下一步要做什么。此工具之后不要执行任何操作。",
"parameters": {
"properties": {
"summary": {
"description": "最多用 5 个项目总结您的最近更改。要非常简洁,不超过 30 个词。将内容分成多行。\\n在您最近完成的每个项目前加上 ✓,在进行中的项目前加上 →,要非常简短和简洁,不超过 50 个词。不要使用表情符号。\\n使用与用户语言匹配的简单日常语言。避免技术术语,因为用户不是技术人员。\\n最后询问用户下一步要做什么。",
"type": "string"
}
},
"required": [
"summary"
],
"type": "object"
}
},
{
"name": "web_application_feedback_tool",
"description": "此工具捕获屏幕截图并检查日志以验证网络应用程序是否在 Replit 工作流中运行。\\n\\n如果应用程序正在运行,该工具将显示应用程序,向用户提问,并等待用户的响应。\\n当应用程序状态良好且请求的任务完成时使用此工具,以避免不必要的延迟。",
"parameters": {
"properties": {
"query": {
"description": "您将向用户提出的问题。\\n\\n使用与用户语言匹配的简单日常语言。避免技术术语,因为用户不是技术人员。\\n最多用 5 个项目总结您的最近更改。要非常简洁,不超过 30 个词。将内容分成多行。\\n在您最近完成的每个项目前加上 ✓,在进行中的项目前加上 →,要非常简短和简洁,不超过 50 个词。不要使用表情符号。\\n一次只问一个问题。\\n您可以访问工作流状态、控制台日志和屏幕截图——请自己检索它们,而不是询问用户。\\n询问用户下一步的输入或确认。不要请求详细信息。",
"type": "string"
},
"website_route": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "您询问的网站的特定路由或路径(如果与根 URL ('/') 不同)。包含前导斜杠。示例:'/dashboard' 或 '/products/list'"
},
"workflow_name": {
"description": "运行服务器的工作流名称。用于确定网站的端口。",
"type": "string"
}
},
"required": [
"query",
"workflow_name"
],
"type": "object"
}
},
{
"name": "shell_command_application_feedback_tool",
"description": "此工具允许您执行交互式 shell 命令并询问有关 CLI 应用程序或交互式 Python 程序的输出或行为的问题。\\n\\n## 使用规则:\\n1. 提供清晰、简洁的交互式命令来执行,并提出有关结果或交互的具体问题。\\n2. 一次只问一个关于交互行为或输出的问题。\\n3. 专注于交互功能、用户输入/输出和实时行为。\\n4. 指定要运行的确切命令,包括启动交互式会话所需的任何必要参数或标志。\\n5. 当询问有关 Python 程序的问题时,包括文件名和启动交互模式所需的任何命令行参数。\\n\\n## 何时使用:\\n1. 测试和验证需要用户输入和实时交互的交互式 CLI 应用程序或 Python 程序的功能。\\n2. 检查程序是否在交互式 shell 环境中正确响应用户输入。\\n\\n## 何时不使用:\\n1. 对于不需要用户输入的非交互式命令或脚本。\\n2. 用于 API 测试或基于 Web 的交互。\\n3. 用于打开本机桌面 VNC 窗口的 shell 命令。\\n\\n## 使用示例:\\n命令:python interactive_script.py\\n问题:当提示时,您能输入您的姓名并收到个性化的问候吗?\\n\\n命令:./text_adventure_game\\n问题:您能做出影响故事进展的选择吗?\\n\\n命令:python -i data_analysis.py\\n问题:您能以交互方式查询和操作加载的数据集吗?",
"parameters": {
"properties": {
"query": {
"description": "关于 shell 应用程序的问题或反馈请求",
"type": "string"
},
"shell_command": {
"description": "请求反馈之前要执行的 shell 命令",
"type": "string"
},
"workflow_name": {
"description": "此命令的工作流名称,必须是现有工作流。",
"type": "string"
}
},
"required": [
"query",
"shell_command",
"workflow_name"
],
"type": "object"
}
},
{
"name": "vnc_window_application_feedback",
"description": "此工具允许您执行交互式桌面应用程序,该应用程序将通过 VNC 访问并显示给用户。\\n您可以询问有关此应用程序的输出或行为的问题。\\n\\n## 使用规则:\\n1. 提供清晰、简洁的命令来执行应用程序,并提出有关结果或交互的具体问题。\\n2. 一次只问一个关于交互行为或输出的问题。\\n3. 专注于交互功能、用户输入/输出和实时行为。\\n4. 指定要运行的确切命令,包括任何必要的参数或标志。\\n\\n## 何时使用:\\n1. 测试和验证需要用户输入和实时交互的交互式桌面程序的功能。\\n2. 检查程序是否在附加的 VNC 窗口中正确响应用户输入。\\n\\n## 何时不使用:\\n1. 对于不需要用户输入的非交互式命令或脚本。\\n2. 用于 API 测试或基于 Web 的交互。\\n3. 对于不打开本机桌面 VNC 窗口的 shell 命令。\\n\\n## 使用示例:\\n命令:python pygame_snake.py\\n问题:键盘事件是否会改变屏幕上蛇的方向?\\n\\n命令:./opencv_face_detection\\n问题:您是否看到一张带有检测到的人脸周围有绿色矩形的照片?",
"parameters": {
"properties": {
"query": {
"description": "关于通过 VNC 可见的本机窗口应用程序的问题或反馈请求",
"type": "string"
},
"vnc_execution_command": {
"description": "请求反馈之前要执行的 VNC shell 命令;此 shell 命令应生成桌面窗口",
"type": "string"
},
"workflow_name": {
"description": "此 VNC shell 命令的工作流名称,必须是现有工作流。",
"type": "string"
}
},
"required": [
"query",
"vnc_execution_command",
"workflow_name"
],
"type": "object"
}
},
{
"name": "ask_secrets",
"description": "请求用户提供项目所需的密钥 API 密钥。\\n如果缺少密钥,请尽快使用此工具。\\n密钥将添加到环境变量中。\\n运行此工具的成本非常高。\\n\\n好的示例:\\n- 要使用 Stripe 设置安全支付,我们需要一个 STRIPE_SECRET_KEY。\\n 此密钥将用于在您的应用程序中安全地处理支付和\\n 管理订阅。\\n- 要启用短信价格提醒,我们需要 Twilio API 凭据 TWILIO_ACCOUNT_SID、\\n TWILIO_AUTH_TOKEN 和 TWILIO_PHONE_NUMBER。这些将用于在达到价格目标时发送短信\\n 通知。\\n- 要使用 OpenAI 模型构建应用程序,我们需要一个 OPENAI_API_KEY。\\n\\n不好的示例(请勿使用):\\n- PHONE_NUMBER、EMAIL_ADDRESS 或 PASSWORD\\n 对于此类变量,您应该直接通过 user_response 工具询问用户。\\n- REPLIT_DOMAINS 或 REPL_ID\\n 这些密钥始终存在,因此您永远不需要请求它们。\\n",
"parameters": {
"properties": {
"secret_keys": {
"description": "项目所需的密钥标识符数组(例如,[\\"OPENAI_API_KEY\\", \\"GITHUB_TOKEN\\"])",
"items": {
"type": "string"
},
"type": "array"
},
"user_message": {
"description": "发送回给用户的消息,解释需要这些密钥的原因。如果您还没有,请简要介绍密钥的一般概念,假设用户从未注册过 API 密钥。请礼貌地表述您的问题。",
"type": "string"
}
},
"required": [
"secret_keys",
"user_message"
],
"type": "object"
}
},
{
"name": "check_secrets",
"description": "检查环境中是否存在给定密钥。\\n此工具用于验证密钥的存在而不暴露其实际值。\\n",
"parameters": {
"properties": {
"secret_keys": {
"description": "要在环境中检查的密钥。",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"secret_keys"
],
"type": "object"
}
}
],
"internal_tags": [
{
"name": "View",
"description": "包含文件系统信息和仓库详细信息"
},
{
"name": "policy_spec",
"description": "包含通信、主动性和数据完整性策略"
},
{
"name": "file_system",
"description": "显示目录结构"
},
{
"name": "repo_overview",
"description": "包含代码摘要"
},
{
"name": "important",
"description": "包含关键策略提醒"
},
{
"name": "workflow_console_logs",
"description": "包含运行工作流的日志"
},
{
"name": "automatic_updates",
"description": "包含系统生成的更新"
},
{
"name": "webview_console_logs",
"description": "包含来自用户浏览器的日志"
},
{
"name": 'function_results',
"description": "包含函数/工具调用的结果"
}
]
}