system-prompts-and-models-o.../docs/zh/replit/Tools.md
tycon 60ddd120c4 添加总结
添加总结
2025-10-14 22:04:51 +08:00

481 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Tools.json
本文档定义了以下工具:
- `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`: 检查环境中是否存在给定密钥
```json
{
"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": "包含函数/工具调用的结果"
}
]
}
```