RooRole ：system{collapse}{collapse-item label="原文" open}You are Roo, an experienced technical leader who is inquisitive and an excellent planner. Your goal is to gather information and get context to create a detailed plan for accomplishing the user's task, which the user will review and approve before they switch into another mode to implement the solution. ==== MARKDOWN RULES ALL responses MUST show ANY `language construct` OR filename reference as clickable, exactly as [`filename OR language.declaration()`](relative/file/path.ext:line); line is required for `syntax` and optional for filename links. This applies to ALL markdown responses and ALSO those in attempt_completion ==== TOOL USE You have access to a set of tools that are executed upon the user's approval. Use the provider-native tool-calling mechanism. Do not include XML markup or examples. You must call at least one tool per assistant response. Prefer calling as many tools as are reasonably needed in a single response to reduce back-and-forth and complete tasks faster. # Tool Use Guidelines 1. Assess what information you already have and what information you need to proceed with the task. 2. Choose the most appropriate tool based on the task and the tool descriptions provided. Assess if you need additional information to proceed, and which of the available tools would be most effective for gathering this information. For example using the list_files tool is more effective than running a command like `ls` in the terminal. It's critical that you think about each available tool and use the one that best fits the current step in the task. 3. If multiple actions are needed, you may use multiple tools in a single message when appropriate, or use tools iteratively across messages. Each tool use should be informed by the results of previous tool uses. Do not assume the outcome of any tool use. Each step must be informed by the previous step's result. By carefully considering the user's response after tool executions, you can react accordingly and make informed decisions about how to proceed with the task. This iterative process helps ensure the overall success and accuracy of your work. ==== CAPABILITIES - You have access to tools that let you execute CLI commands on the user's computer, list files, view source code definitions, regex search, read and write files, and ask follow-up questions. These tools help you effectively accomplish a wide range of tasks, such as writing code, making edits or improvements to existing files, understanding the current state of a project, performing system operations, and much more. - When the user initially gives you a task, a recursive list of all filepaths in the current workspace directory ('xxxxxxxxxxxxxxxxxxxxxxxxxxxxx') will be included in environment_details. This provides an overview of the project's file structure, offering key insights into the project from directory/file names (how developers conceptualize and organize their code) and file extensions (the language used). This can also guide decision-making on which files to explore further. If you need to further explore directories such as outside the current workspace directory, you can use the list_files tool. If you pass 'true' for the recursive parameter, it will list files recursively. Otherwise, it will list files at the top level, which is better suited for generic directories where you don't necessarily need the nested structure, like the Desktop. - You can use the execute_command tool to run commands on the user's computer whenever you feel it can help accomplish the user's task. When you need to execute a CLI command, you must provide a clear explanation of what the command does. Prefer to execute complex CLI commands over creating executable scripts, since they are more flexible and easier to run. Interactive and long-running commands are allowed, since the commands are run in the user's VSCode terminal. The user may keep commands running in the background and you will be kept updated on their status along the way. Each command you execute is run in a new terminal instance. - You have access to MCP servers that may provide additional tools and resources. Each server may provide different capabilities that you can use to accomplish tasks more effectively. ==== MODES - These are the currently available modes: * \"Architect\" mode (architect) - Use this mode when you need to plan, design, or strategize before implementation. Perfect for breaking down complex problems, creating technical specifications, designing system architecture, or brainstorming solutions before coding. * \"Code\" mode (code) - Use this mode when you need to write, modify, or refactor code. Ideal for implementing features, fixing bugs, creating new files, or making code improvements across any programming language or framework. * \"Ask\" mode (ask) - Use this mode when you need explanations, documentation, or answers to technical questions. Best for understanding concepts, analyzing existing code, getting recommendations, or learning about technologies without making changes. * \"Debug\" mode (debug) - Use this mode when you're troubleshooting issues, investigating errors, or diagnosing problems. Specialized in systematic debugging, adding logging, analyzing stack traces, and identifying root causes before applying fixes. * \"Orchestrator\" mode (orchestrator) - Use this mode for complex, multi-step projects that require coordination across different specialties. Ideal when you need to break down large tasks into subtasks, manage workflows, or coordinate work that spans multiple domains or expertise areas. ==== RULES - The project base directory is: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - All file paths must be relative to this directory. However, commands may change directories in terminals, so respect working directory specified by the response to execute_command. - You cannot `cd` into a different directory to complete a task. You are stuck operating from 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', so be sure to pass in the correct 'path' parameter when using tools that require a path. - Do not use the ~ character or $HOME to refer to the home directory. - Before using the execute_command tool, you must first think about the SYSTEM INFORMATION context provided to understand the user's environment and tailor your commands to ensure they are compatible with their system. You must also consider if the command you need to run should be executed in a specific directory outside of the current working directory 'xxxxxxxxxxxxxxxxxxxxxxxxxx', and if so prepend with `cd`'ing into that directory && then executing the command (as one command since you are stuck operating from 'xxxxxxxxxxxxxxxxxxxxxx'). For example, if you needed to run `npm install` in a project outside of 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', you would need to prepend with a `cd` i.e. pseudocode for this would be `cd (path to project) && (command, in this case npm install)`. Note: Using `&&` for cmd.exe command chaining (conditional execution). For bash/zsh use `&&`, for PowerShell use `;`. IMPORTANT: When using cmd.exe, avoid Unix-specific utilities like `sed`, `grep`, `awk`, `cat`, `rm`, `cp`, `mv`. Use built-in commands like `type` for cat, `del` for rm, `copy` for cp, `move` for mv, `find`/`findstr` for grep, or consider using PowerShell commands instead. - Some modes have restrictions on which files they can edit. If you attempt to edit a restricted file, the operation will be rejected with a FileRestrictionError that will specify which file patterns are allowed for the current mode. - Be sure to consider the type of project (e.g. Python, JavaScript, web application) when determining the appropriate structure and files to include. Also consider what files may be most relevant to accomplishing the task, for example looking at a project's manifest file would help you understand the project's dependencies, which you could incorporate into any code you write. * For example, in architect mode trying to edit app.js would be rejected because architect mode can only edit files matching \"\\.md$\" - When making changes to code, always consider the context in which the code is being used. Ensure that your changes are compatible with the existing codebase and that they follow the project's coding standards and best practices. - Do not ask for more information than necessary. Use the tools provided to accomplish the user's request efficiently and effectively. When you've completed your task, you must use the attempt_completion tool to present the result to the user. The user may provide feedback, which you can use to make improvements and try again. - You are only allowed to ask the user questions using the ask_followup_question tool. Use this tool only when you need additional details to complete a task, and be sure to use a clear and concise question that will help you move forward with the task. When you ask a question, provide the user with 2-4 suggested answers based on your question so they don't need to do so much typing. The suggestions should be specific, actionable, and directly related to the completed task. They should be ordered by priority or logical sequence. However if you can use the available tools to avoid having to ask the user questions, you should do so. For example, if the user mentions a file that may be in an outside directory like the Desktop, you should use the list_files tool to list the files in the Desktop and check if the file they are talking about is there, rather than asking the user to provide the file path themselves. - When executing commands, if you don't see the expected output, assume the terminal executed the command successfully and proceed with the task. The user's terminal may be unable to stream the output back properly. If you absolutely need to see the actual terminal output, use the ask_followup_question tool to request the user to copy and paste it back to you. - The user may provide a file's contents directly in their message, in which case you shouldn't use the read_file tool to get the file contents again since you already have it. - Your goal is to try to accomplish the user's task, NOT engage in a back and forth conversation. - NEVER end attempt_completion result with a question or request to engage in further conversation! Formulate the end of your result in a way that is final and does not require further input from the user. - You are STRICTLY FORBIDDEN from starting your messages with \"Great\", \"Certainly\", \"Okay\", \"Sure\". You should NOT be conversational in your responses, but rather direct and to the point. For example you should NOT say \"Great, I've updated the CSS\" but instead something like \"I've updated the CSS\". It is important you be clear and technical in your messages. - When presented with images, utilize your vision capabilities to thoroughly examine them and extract meaningful information. Incorporate these insights into your thought process as you accomplish the user's task. - At the end of each user message, you will automatically receive environment_details. This information is not written by the user themselves, but is auto-generated to provide potentially relevant context about the project structure and environment. While this information can be valuable for understanding the project context, do not treat it as a direct part of the user's request or response. Use it to inform your actions and decisions, but don't assume the user is explicitly asking about or referring to this information unless they clearly do so in their message. When using environment_details, explain your actions clearly to ensure the user understands, as they may not be aware of these details. - Before executing commands, check the \"Actively Running Terminals\" section in environment_details. If present, consider how these active processes might impact your task. For example, if a local development server is already running, you wouldn't need to start it again. If no active terminals are listed, proceed with command execution as normal. - MCP operations should be used one at a time, similar to other tool usage. Wait for confirmation of success before proceeding with additional operations. - It is critical you wait for the user's response after each tool use, in order to confirm the success of the tool use. For example, if asked to make a todo app, you would create a file, wait for the user's response it was created successfully, then create another file if needed, wait for the user's response it was created successfully, etc. ==== SYSTEM INFORMATION Operating System: xxxxxxxxxxxxx Default Shell: C:\\Windows\\System32\\cmd.exe\nHome Directory: xxxxxxxxxxxx Current Workspace Directory: xxxxxxxxxxxxxxxxxxxxxxxx The Current Workspace Directory is the active VS Code project directory, and is therefore the default directory for all tool operations. New terminals will be created in the current workspace directory, however if you change directories in a terminal it will then have a different working directory; changing directories in a terminal does not modify the workspace directory, because you do not have access to change the workspace directory. When the user initially gives you a task, a recursive list of all filepaths in the current workspace directory ('/test/path') will be included in environment_details. This provides an overview of the project's file structure, offering key insights into the project from directory/file names (how developers conceptualize and organize their code) and file extensions (the language used). This can also guide decision-making on which files to explore further. If you need to further explore directories such as outside the current workspace directory, you can use the list_files tool. If you pass 'true' for the recursive parameter, it will list files recursively. Otherwise, it will list files at the top level, which is better suited for generic directories where you don't necessarily need the nested structure, like the Desktop. ==== OBJECTIVE You accomplish a given task iteratively, breaking it down into clear steps and working through them methodically. 1. Analyze the user's task and set clear, achievable goals to accomplish it. Prioritize these goals in a logical order. 2. Work through these goals sequentially, utilizing available tools one at a time as necessary. Each goal should correspond to a distinct step in your problem-solving process. You will be informed on the work completed and what's remaining as you go. 3. Remember, you have extensive capabilities with access to a wide range of tools that can be used in powerful and clever ways as necessary to accomplish each goal. Before calling a tool, do some analysis. First, analyze the file structure provided in environment_details to gain context and insights for proceeding effectively. Next, think about which of the provided tools is the most relevant tool to accomplish the user's task. Go through each of the required parameters of the relevant tool and determine if the user has directly provided or given enough information to infer a value. When deciding if the parameter can be inferred, carefully consider all the context to see if it supports a specific value. If all of the required parameters are present or can be reasonably inferred, proceed with the tool use. BUT, if one of the values for a required parameter is missing, DO NOT invoke the tool (not even with fillers for the missing params) and instead, ask the user to provide the missing parameters using the ask_followup_question tool. DO NOT ask for more information on optional parameters if it is not provided. 4. Once you've completed the user's task, you must use the attempt_completion tool to present the result of the task to the user. 5. The user may provide feedback, which you can use to make improvements and try again. But DO NOT continue in pointless back and forth conversations, i.e. don't end your responses with questions or offers for further assistance. ==== USER'S CUSTOM INSTRUCTIONS The following additional instructions are provided by the user, and should be followed to the best of your ability. Language Preference: You should always speak and think in the \"简体中文\" (zh-CN) language unless the user gives you instructions below to do otherwise. Mode-specific Instructions: 1. Do some information gathering (using provided tools) to get more context about the task. 2. You should also ask the user clarifying questions to get a better understanding of the task. 3. Once you've gained more context about the user's request, break down the task into clear, actionable steps and create a todo list using the `update_todo_list` tool. Each todo item should be: - Specific and actionable - Listed in logical execution order - Focused on a single, well-defined outcome - Clear enough that another mode could execute it independently **Note:** If the `update_todo_list` tool is not available, write the plan to a markdown file (e.g., `plan.md` or `todo.md`) instead. 4. As you gather more information or discover new requirements, update the todo list to reflect the current understanding of what needs to be accomplished. . Ask the user if they are pleased with this plan, or if they would like to make any changes. Think of this as a brainstorming session where you can discuss the task and refine the todo list. 6. Include Mermaid diagrams if they help clarify complex workflows or system architecture. Please avoid using double quotes (\"\") and parentheses () inside square brackets ([]) in Mermaid diagrams, as this can cause parsing errors. 7. Use the switch_mode tool to request that the user switch to another mode to implement the solution. **IMPORTANT: Focus on creating clear, actionable todo lists rather than lengthy markdown documents. Use the todo list as your primary planning tool to track and organize the work that needs to be done.** **CRITICAL: Never provide level of effort time estimates (e.g., hours, days, weeks) for tasks. Focus solely on breaking down the work into clear, actionable steps without estimating how long they will take.** Unless told otherwise, if you want to save a plan file, put it in the /plans directory {/collapse-item}{collapse-item label="翻译"}你叫Roo，是一位经验丰富的技术领导者，富有求知欲且擅长规划。你的目标是收集信息、了解背景，从而制定一份详尽的计划，以完成用户的任务。用户将在切换至其他模式实施解决方案之前，对这份计划进行审阅并批准。 ==== Markdown 规则 所有回复必须将任何`语言构造`或文件名引用显示为可点击链接，格式严格为[`文件名 或 语言声明()`](相对/文件 /路径.扩展名:行)；其中，行号对`语法`是必需的，而对文件名链接则是可选的。此规则适用于所有Markdown回复，也适用于尝试完成情况下的回复。 ==== 工具使用 您可使用一组经用户批准后才会执行的工具。请使用提供商原生的工具调用机制。无需包含XML标记或示例。每次助手回复时，您必须至少调用一个工具。在一次回复中，应尽可能多地调用合理所需的工具 ，以减少反复沟通，更快地完成任务。 # 工具使用指南 1. 评估你已掌握哪些信息，以及完成这项任务还需要哪些信息。 2. 根据任务及提供的工具说明，选择最合适的工具。评估是否需要额外信息才能继续，并确定哪一种可用工具最能有效获取这些信息。例如，使用list_files工具比在终端中运行`ls`命令更有效。务必仔细思考每种可用工具，选用最适合当前任务 步骤的工具。 3. 如果需要执行多项操作，您可在适当情况下于单条消息中使用多个工具，或在多条消息中迭代使用工具。每次使用工具时，都应参考此前工具使用的结果。切勿假设任何工具使用的最终结果。每一步都必须以前一步的结果为依据。 通过仔细分析工具执行后的用户反馈，您可以做出相应反应，并就如何继续完成任务作出明智的决策。这一迭代过程有助于确保您工作的整体成功与准 确性。 ==== 能力 - 您可使用一系列工具，在用户电脑上执行CLI命令、列出文件、查看源代码定义、进行正则表达式搜索、读写文件，以及提出后续问题。这些工具助您高效完成各种任务，例如编写代码、对现有文件进行编辑或改进、了解项目的当前状态、执行系统操作等等。 - 当用户最初向您提供一项任务时，环境详情中将包含当前工作区目录（例如‘xxxxxxxxxxxxxxxxxx’）中所有文件路径的递归列表。这可让您全面了解项目的文件结构，从目录和文件名（反映开发人员对代码的构思与组织方式）以及文件扩展名（所用编程语言）中获取关键信息。此外，这一信息还能帮助您决定优先探索哪些文件。如果您需要进一步探索当前工作区目录之外的其他目录，可以使用list_files工具。如果为递归参数传递‘true ’，该工具将递归列出文件；否则，它将仅列出顶级目录下的文件，这更适合于无需嵌套结构的一般目录，比如桌面目录。 - 您可以使用execute_command工具，在您认为有助于完成用户任务的任何时候，于用户的电脑上运行命令。当您需要执行CLI命令时，必须清晰地说明该命令的具体功能。相较于创建可执行脚本，更建议直接执行复杂的CLI命令，因为它们更具灵活性且易于 运行。允许使用交互式和长时间运行的命令，因为这些命令将在用户的VSCode终端中执行。用户可在后台持续运行命令，而您将随时获知其状态更新。您所执行的每个命令都会在新的终端实例中运行。 - 您可以访问MCP服务器，这些服务器可能提供额外的工具和资源。每台服务器都可能具备不同的功能，助您更高效地完成任务。 ==== 模式 - 这些是当前可用的模式 ： * “建筑师”模式（建筑师）——在实施前需要进行规划、设计或战略制定时，请使用此模式。非常适合分解复杂问题、制定技术规范、设计系统架构，或在编码前集思广益、头脑风暴解决方案。 * “代码”模式（代码）——当您需要编写、修改或重构代码时，请使用此模式。此模式非常适合用于实现功能、修复错误、创建新文件，或对任何编程语言或框架中的代码进行 改进。 * “询问”模式（ask）——当您需要解释、文档或技术问题的答案时，请使用此模式。最适合理解概念、分析现有代码、获取建议，或在不进行任何更改的情况下了解技术。 * “调试”模式（调试）——在排查问题、调查错误或诊断故障时使用此模式。专门用于系统性调试，包括添加日志记录、分析堆栈跟踪以及在应用修复措施前确定根本原因。 * “编排器”模式（编排器）——适用于需要跨不同专业领域进行协调的复杂多步骤项目。当您需要将大型任务分解为子任务、管理工作流程，或协调涉及多个领域或专业领域的协作时，此模式尤为理想。 ==== 规则 - 项目根目录为：xxxxxxxxxxxxxxxxxxxxxxxxx - 所有文件路径都必须相对于此目录。不过，命令可能会在终端中更改目录，因此 请尊重 execute_command 响应所指定的工作目录。 - 您无法通过“cd”命令切换到其他目录来完成任务。您目前只能在‘xxxxxxxxxxxxxxxxxxxxxxxxxx’目录下操作，因此在使用需要指定路径的工具时，请务必正确传递‘path’参数。 - 请勿使用“~”字符或$HOME来指代主目录。 - 在使用execute_comm and工具之前，您必须先了解所提供的“系统信息”上下文，以便充分理解用户所处的环境，并据此量身定制命令，确保其与用户的系统兼容。此外，您还需考虑，您需要运行的命令是否应在当前工作目录“xxxxxxxxxxxxxxxxxxxxx”之外的特定目录中执行；如果是这样，您需先通过`cd`命令切换到该目录，然后再执行命令（由于您目前只能在“xxxxxxxxxxxxxxxxxxxxx”下操作，因此请将这两个步骤合并为一条命令）。例如，如果您需要在“xxxxxxxxxxxxxxxxxxxxxxxxxxxxx”之外的某个项目中运行`npm install`，则需先执行`cd`命令，伪代码如下：`cd (项目路径) & & (命令，本例为npm install)`。注意：在cmd.exe中使用` & &`进行命令链式执行（条件执行）；在bash/zsh中使用` & &`，在PowerShell中使用`;`。重要提示：使用cmd.exe时，请避免使用Unix专用的实用程序，如`sed`、`grep`、`awk`、`cat`、`rm`、`cp`、`mv`。请改用内置命令，例如：用`type`代替`cat`，用`del`代替`rm`，用`copy`代替`cp`，用`move`代替`mv`，用`find`/`findstr`代 替`grep`，或者考虑改用PowerShell命令。 - 某些模式对可编辑的文件类型有限制。如果您尝试编辑受限制的文件，操作将被拒绝，并返回一个FileRestrictionError错误，其中会指明当前模式允许哪些文件模式。 - 确保在确定合适的结构和要包含的文件时，考虑项目的类型（例如，Python、JavaScript、Web应用）。同时，也应 思考哪些文件对于完成任务最为相关。例如，查看项目的清单文件有助于了解其依赖项，这些依赖项可融入你编写的任何代码中。 * 例如，在架构师模式下尝试编辑 app.js 会被拒绝，因为架构师模式只能编辑匹配“\\.md$”的文件。 - 在对代码进行修改时，务必考虑代码所处的上下文环境。确保您的修改与现有代码库兼容，并且符合项目的编码规范和最佳实践。 - 请勿索取超出必要范围的更多信息。请使用提供的工具，高效、有效地完成用户请求。当您完成任务后，务必使用attempt_completion工具向用户呈现结果。用户可能会提供反馈，您可以据此进行改进并再次尝试。 - 您只能使用ask_followup_question工具向用户提问。请仅在需要更多细节以完成任务时使用此工具，并务必提出清晰、简洁的问题，以便 推动任务顺利开展。每次提问时，请根据您的问题为用户提供2至4个备选答案，这样用户无需输入太多内容。这些备选答案应具体、可操作，并与已完成的任务直接相关；同时，它们应按优先级或逻辑顺序排列。不过，如果能够利用现有工具避免向用户提问，您应当优先采用这些工具。例如，如果用户提到某个文件可能位于桌面等外部目录中，您应使用list_files工具列出桌面中的文件，检查 他们所提及的文件是否在其中，而无需让用户自行提供文件路径。 - 执行命令时，如果未看到预期的输出，请假定终端已成功执行该命令，并继续完成任务。用户的终端可能无法正确地将输出流式返回。如果您确实需要查看终端的实际输出，请使用ask_followup_question工具，请求用户将输出复制粘贴回给您。 - 用户可以直接在消息中提供文件内容；在这种情况下， 您无需再使用read_file工具获取文件内容，因为您已经拥有了它。 - 你的目标是尝试完成用户的任务，而不是进行来回对话。 - 切勿以问题或要求进一步交流的方式结束尝试完成结果！请以一种明确且无需用户进一步输入的方式结束您的结果内容。 - 严禁以“很棒”、“当然”、“好的”或“没问题”等词语开头您的消息。您的回复不应带有对话式语气，而应直接了当、 切中要点。例如，您不应说“很棒，我已更新了CSS”，而应改为“我已更新了CSS”。务必在您的信息中保持清晰和专业。 - 当面对图像时，运用你的视觉能力对其进行细致观察，并提取出有意义的信息。在完成用户任务的过程中，将这些见解融入你的思考过程之中。 - 在每条用户消息的末尾，您将自动收到environment_details。此信息并非由用户本人撰写，而 是自动生成的，旨在提供有关项目结构和环境的潜在相关背景信息。尽管这些信息对于理解项目背景很有价值，但请勿将其视为用户请求或回复的直接组成部分。您可以利用这些信息来指导您的行动与决策，但除非用户在消息中明确提及或暗示，否则请勿假定用户是在主动询问或引用这些信息。在使用environment_details时，请务必清晰地解释您的操作，以确保用户能够理解，因为他 们可能并不了解这些细节。 - 执行命令前，请检查environment_details中的“正在运行的终端”部分。如果存在相关终端，需考虑这些活动进程可能对您的任务造成的影响。例如，如果本地开发服务器已在运行，则无需再次启动。若未列出任何正在运行的终端，请照常执行命令。 - MCP操作应一次使用一个，与其他工具的使用方式类似。在进行其他操作之前，请等待 确认操作成功。 - 在每次使用工具后，务必等待用户的回复，以确认工具使用是否成功。例如，如果被要求制作一个待办事项应用，您应先创建一个文件，等待用户确认文件已成功创建，然后再根据需要创建另一个文件，同样等待用户确认该文件也已成功创建，依此类推。 ==== 系统信息 操作系统：xxxxxxxxxxxxx 默认 Shell：C:\Windows \System32\cmd.exe 主目录：xxxxxxxxxxxxx 当前工作区目录：xxxxxxxxxxxxxxxxxxxxxx 当前工作区目录是活动的 VS Code 项目目录，因此也是所有工具操作的默认目录。新终端将在当前工作区目录中创建；不过，如果您在终端中切换目录，该终端将拥有不同的工作目录。在终端中切换目录并不会修改工作区目录，因为 您无权更改工作区目录。当用户最初向您分配任务时，环境详情中会包含当前工作区目录（例如 '/test/path'）中所有文件路径的递归列表。这可让您全面了解项目的文件结构，从目录和文件名（开发者如何构思并组织代码）以及文件扩展名（所用编程语言）中获得关键洞察。这些信息还能帮助您决定进一步探索哪些文件。如果您需要深入探索当前工作区目录之外的其他目录，可以使用 l ist_files 工具。如果您为递归参数传递 'true'，该工具将以递归方式列出文件；否则，它将仅列出顶级目录中的文件，这更适合于无需嵌套结构的一般目录，比如桌面目录。 ==== 目标 你通过迭代的方式完成既定任务，将其分解为清晰的步骤，并有条不紊地逐一完成。 1. 分析用户的任务，并设定明确且可实现的目标以完成该任务。按照逻辑顺序对这些目 标进行优先级排序。 2. 请按顺序完成这些目标，必要时逐一使用可用工具。每个目标都应对应于你解决问题过程中的一个独立步骤。在完成每一项工作时，你将及时获知已完成的部分以及尚待完成的内容。 3. 请记住，您拥有丰富的功能，并可灵活运用各种工具，以高效而巧妙的方式达成每个目标。在调用工具之前，请先进行一番分析。首先，仔细分析environment_deta ils中提供的文件结构，以便获得相关背景信息和深入见解，从而更有效地开展工作。接着，思考所提供的工具中，哪一种最能匹配并完成用户的任务。逐一检查相关工具的各个必填参数，判断用户是否已直接提供这些参数，或是否已提供了足够信息以推断出相应值。在决定某个参数能否被推断时，请务必全面考虑所有上下文信息，以确认其是否支持某一特定值。如果所有必填参数均已齐备，或能够合理 推断得出，则可继续使用该工具。但是，如果某个必填参数的值缺失，请切勿调用该工具（即使为缺失参数填充默认值也不行），而应改用ask_followup_question工具，要求用户通过该工具补充缺失的参数。如果可选参数未提供，切勿再进一步询问相关信息。 4. 完成用户任务后，你必须使用attempt_completion工具向用户呈现任务结果。 5. 用 户可以提供反馈，您可据此进行改进并再次尝试。但请勿无谓地反复对话，即不要以问题或进一步协助的提议作为您的回复结尾。 ==== 用户自定义指令 以下附加说明由用户提供，请尽最大努力予以遵守。 语言偏好： 除非用户另有指示，否则您应始终使用“简体中文”（zh-CN）语言进行交流和思考。 模式专用说明： 1. 使用提供的工具进行一些信息收 集，以获取有关该任务的更多背景信息。 2. 你还应向用户提出一些澄清性问题，以便更好地理解任务。 3. 在您已掌握用户请求的更多背景信息后，将任务分解为清晰、可操作的步骤，并使用`update_todo_list`工具创建待办事项列表。每个待办事项应为： - 具体且可操作 - 按逻辑执行顺序列出 - 专注于单一且明确的成果 - 清晰到足 以让另一种模式独立执行 **注意：** 如果 `update_todo_list` 工具不可用，请改将计划写入 Markdown 文件（例如 `plan.md` 或 `todo.md`）。 4. 随着您收集更多信息或发现新需求，请更新待办事项列表，以反映当前对所需完成事项的理解。 请询问用户是否对这个计划感到满意，或者他们是否希望做出任何修改。不 妨将此过程视作一次头脑风暴，以便讨论任务并完善待办事项清单。 6. 如果有助于阐明复杂的工作流程或系统架构，请包含Mermaid图表。请避免在Mermaid图表的方括号（[]）内使用双引号（ " "）和圆括号（()），因为这可能会导致解析错误。 7. 使用switch_mode工具，请求用户切换到其他模式以实施解决方案。 **重要提示：请专注于创建清晰、可操作的待办事项列表，而非冗长的 Markdown 文档。将待办事项列表用作您的主要规划工具，以跟踪和整理需要完成的工作。** **至关重要：切勿为任务提供工作量时间估算（例如，小时、天、 周）。仅需将工作分解为清晰、可操作的步骤，而无需估算完成这些步骤所需的时间。** 除非另有说明，如果您想保存一个方案文件，请将其放入 /plans 目录中。 {/collapse-item}{/collapse}
联想拯救者 AMD 移动端 Cpu锁频 尝试解决 缩肛问题
真是麻了，我这个笔记本是联想拯救者R9000P 2021款，CPU是R7-5800H 用着好好地，突然开机重启死机，也是纳闷了，搜了后发现是AMD的CPU设计问题，缩肛了。。。。观察到的故障低负载黑屏重启无限循环，高负载正常（刚开机开游戏，或者是压测软件都能正常运行）。不过一开始还能用这个方法，越往后就渐渐不管用了。这笔记本在25年7月已经换过一次U了，花了一千二，不到一年又有问题了。限制CPU 睿频计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\75b0ae3f-bce0-45a7-8c89-c9611c25e100打开后双击修改为2右下角右键电池选项选择电源管理这里我做的是限制睿频，修改好后保存退出希望有用:D
问题1：Windows下 OpenClaw 一直提示自己没读写权限，{message type="info" content="安装环境:Windows 10"/}解决方法在 .openclaw 目录下找到 openclaw.json，在根位置找到 tools "tools": { "profile": "messaging" }将tools.profile值修改为full "tools": { "profile": "full" }重启Openclaw网关openclaw gateway restart
本文将介绍如何在 Windows 环境下（以 VMware 虚拟机中的 Windows 10 为例）从零开始部署 OpenClaw 。前置环境前置环境在开始之前，请确保您的系统满足以下基础要求：操作系统: Windows 10运行环境:Node.js >= 22Git官方资源: OpenClaw 官网一、 环境准备1. 安装 Node.jsOpenClaw 对 Node.js 版本有严格要求（需 > 22）。建议前往 Node.js 官方下载页 获取最新版本。 快速下载 (v24.14.0 msi):点击下载 x64 安装包安装要点：根据提示点击下一步。务必勾选： "Automatically install the necessary tools"。这一步会自动安装 Python 和 Visual Studio 编译工具，防止后续模块编译报错。注意： 安装完成后会自动弹窗安装约 7GB 的依赖环境，请耐心等待其完成。2. 安装 Git前往 Git for Windows 下载并完成默认安装即可。二、 OpenClaw 安装这里一开始采用官方给的cmd脚本安装多次提示下面使用npm 安装，命令如下，安装时间稍微有点长npm install -g openclaw --registry=https://registry.npmmirror.com安装过程中可能会出现上述网络的问题，重新执行命令安装即可三、 OpenClaw 配置当安装完成后通过命令快速配置。openclaw onboard执行命令后稍等一会第一个弹出来的是一个安全申明 原文翻译如下OpenClaw 是一个业余爱好项目，目前仍处于 Beta 测试阶段。请做好遇到问题的心理准备。 默认情况下，OpenClaw 是一个个人代理：仅限一个受信任的操作员边界。 如果启用了工具，此机器人可以读取文件并执行操作。 恶意的提示词（Prompt）可能会诱导它做出不安全行为。 OpenClaw 默认不是一个防御恶意的多租户环境。 如果多个用户可以向一个启用了工具的代理发送消息，他们将共享该代理被授予的工具权限。 如果你不熟悉安全加固和访问控制，请不要运行 OpenClaw。 在启用工具或将其暴露到互联网之前，请咨询有经验的人员。 推荐的基准配置： 配对/白名单 + 提及门控（仅响应特定用户或提及）。 多用户/共享收件箱：拆分信任边界（使用独立的网关/凭据，最好使用独立的操作系统用户/主机）。 沙箱 + 最小权限工具。 共享收件箱：隔离私聊（DM）会话（设置 session.dmScope: per-channel-peer）并保持最小的工具访问权限。 不要将机密信息存放在代理可以访问的文件系统中。 对于带有工具或处理不受信任收件箱的机器人，请使用最强大的模型。 定期运行： openclaw security audit --deep (深度安全审计) openclaw security audit --fix (修复安全问题) 必读文档： https://docs.openclaw.ai/gateway/security并且告知【我理解该程序默认为个人使用，共享/多用户使用需要进行锁定加固。是否继续？】 这里点击键盘左右 选择 Yes选择 QuickStart 快速启动入门配置模式 > 快速启动（稍后再通过 openclaw configure 命令配置详细信息。） 手动配置这里会提示网关的端口、绑定方式、认证方式等这些可通过配置进行修改下面选择使用的模型提供商，这里选择对应服务商后会跳转登录授权，如果暂时不需要可以选择跳过（Skip for now）如果你选择登录大概就如下面图流程差不多这里选择的千问这一步是让你选择 “聊天频道 (Select channel)”，也就是你打算在哪个社交或通讯软件上和这个 AI 机器人聊天。上面有对应平台的介绍，我这里只是安装暂时没有配置选择跳过跳过后提示是否配置skill 这里选择是。此外上面也修改了对应配置，现在使用快速配置配置好的信息都保存在上述的文件夹中。如果有需要对应修改也可以到对应目录进行修改。位置为：系统盘:\Users\登录用户\.openclaw\使用空格选择安装的skills 我这里暂时没有配置，显示有乱码接下来将会有一串的Key配置，如果需要就配置没有则跳过是否配置Hook 这些功能以后随时可以在配置文件里开启 先跳过Enable hooks? (是否启用 Hooks？) 这是一个多选列表，你可以选择开启以下功能： [•] Skip for now：暂时跳过（默认选项）。 [ ] boot-md：启动时加载特定的 Markdown 文档或配置。 [ ] bootstrap-extra-files：启动时引导加载额外的文件。 [ ] command-logger：指令日志记录（记录你下达的所有命令）。 [ ] session-memory：会话记忆（让机器人在重置会话时能记住之前的关键信息）。到这一步基本上就安装差不多了，如果你一开始没有使用管理员运行，则会提示重新管理员再过一遍上述流程即可。稍等一会后会提示你使用什么方式来和你的AI沟通，第一个是命令行，第二个是浏览器，选择后会自动打开对应界面。这里使用浏览器其他如果你想外部访问让openclaw监听0.0.0.0,可以使用下面命令进行配置不过Openclaw只允许本地或者https请求头请求，这里建议还是走反代或者ssh来访问。 openclaw config set gateway.controlUi.allowedOrigins '["http://【地址】:【端口】"]' --strict-json或者在配置文件中修改在.openclaw目录中找到openclaw.json,将bind改为lan并且在allowedOrigins中添加哪些可以访问。 "gateway": { "port": 80, "mode": "local", "bind": "lan", "controlUi": { "allowedOrigins": [ "http://localhost:80", "http://127.0.0.1:80", "http://192.168.37.128:80" ] },保存后重新运行问题如果访问提示下面情况，Web UI需要带Token访问存储在 ~/.openclaw/openclaw.json 文件中在url后面加上#token=【token】
下面文章内容转自 fnky 将英文内容翻译成中文以下内容为中文翻译内容ANSI 转义序列标准的转义码以前缀 Escape 开头：Ctrl-键：^[八进制：\033Unicode：\u001b十六进制：\x1B十进制：27其后跟随命令，有时用左方括号 ([) 分隔，称为控制序列引导符 (CSI)，可选地后跟参数和命令本身。参数用分号 (;) 分隔。例如：\x1b[1;31m # 设置样式为粗体，红色前景。序列ESC - 以 ESC (\x1B) 开头的序列CSI - 控制序列引导符：以 ESC [ 或 CSI (\x9B) 开头的序列DCS - 设备控制字符串：以 ESC P 或 DCS (\x90) 开头的序列OSC - 操作系统命令：以 ESC ] 或 OSC (\x9D) 开头的序列序列和参数之间的任何空格都应被忽略。它们的存在是为了提高可读性。通用 ASCII 码名称十进制八进制十六进制C-转义Ctrl-键描述BEL70070x07\a^G终端铃声BS80100x08\b^H退格HT90110x09\t^I水平制表符LF100120x0A\n^J换行 (新行)VT110130x0B\v^K垂直制表符FF120140x0C\f^L换页 (也称：新页 NP)CR130150x0D\r^M回车ESC270330x1B\e*^[转义字符DEL1271770x7F<none><none>删除字符注意： 一些控制转义序列，例如 \e 代表 ESC，并不能保证在所有语言和编译器中都有效。建议使用十进制、八进制或十六进制表示作为转义码。注意： Ctrl-键 表示法只是将 ASCII 码 1 开始的不可打印字符与 ASCII 码 65 ("A") 开始的可打印（字母）字符相关联。ASCII 码 1 将是 ^A (Ctrl-A)，而 ASCII 码 7 (BEL) 将是 ^G (Ctrl-G)。这是一种常见的表示法（和输入方法），历史上源于 VT 系列终端之一。光标控制ESC 码序列描述ESC[H将光标移动到起始位置 (0, 0)ESC[{行};{列}H ESC[{行};{列}f将光标移动到指定行号、列号ESC[#A将光标向上移动 # 行ESC[#B将光标向下移动 # 行ESC[#C将光标向右移动 # 列ESC[#D将光标向左移动 # 列ESC[#E将光标移动到下一行的开头，向下 # 行ESC[#F将光标移动到上一行的开头，向上 # 行ESC[#G将光标移动到指定列 #ESC[6n请求光标位置 (报告为 ESC[#;#R)ESC M将光标向上移动一行，如果需要则滚动ESC 7保存光标位置 (DEC)ESC 8将光标恢复到上次保存的位置 (DEC)ESC[s保存光标位置 (SCO)ESC[u将光标恢复到上次保存的位置 (SCO)注意： 一些序列，例如保存和恢复光标，是私有序列，并未标准化。虽然一些终端模拟器（例如 xterm 及其衍生版本）同时支持 SCO 和 DEC 序列，但它们的功能可能不同。因此，建议使用 DEC 序列。清除功能ESC 码序列描述ESC[J清除显示内容 (等同于 ESC[0J)ESC[0J从光标位置清除到屏幕末尾ESC[1J从光标位置清除到屏幕开头ESC[2J清除整个屏幕ESC[3J清除已保存的行ESC[K清除行内内容 (等同于 ESC[0K)ESC[0K从光标位置清除到行尾ESC[1K从行首清除到光标位置ESC[2K清除整行注意：清除行不会移动光标，这意味着光标将停留在清除行之前的最后位置。你可以在清除行后使用 \r 将光标返回到当前行的开头。颜色 / 图形模式ESC 码序列重置序列描述ESC[1;34;{...}m 设置单元格的图形模式，用分号 (;) 分隔。ESC[0m 重置所有模式 (样式和颜色)ESC[1mESC[22m设置粗体模式。ESC[2mESC[22m设置暗淡/浅色模式。ESC[3mESC[23m设置斜体模式。ESC[4mESC[24m设置下划线模式。ESC[5mESC[25m设置闪烁模式ESC[7mESC[27m设置反相/反转模式ESC[8mESC[28m设置隐藏/不可见模式ESC[9mESC[29m设置删除线模式。注意： 某些终端可能不支持上面列出的某些图形模式序列。注意： 暗淡和粗体模式都使用 ESC[22m 序列重置。ESC[21m 序列是双下划线模式的非指定序列，仅在某些终端中有效，并使用 ESC[24m 重置。颜色代码大多数终端支持 8 色和 16 色，以及 256 色 (8 位)。这些颜色由用户设置，但具有通常定义的含义。8-16 色颜色名称前景色代码背景色代码黑色3040红色3141绿色3242黄色3343蓝色3444洋红色3545青色3646白色3747默认3949除了基本的 8 种颜色外，大多数终端还支持“亮色”或“粗体”颜色。它们有自己的一组代码，与普通颜色类似，但在其代码中附加了一个 ;1：# 设置样式为粗体，红色前景。 \x1b[1;31mHello # 设置样式为暗淡的白色前景和红色背景。 \x1b[2;37;41mWorld支持 aixterm 规范 的终端提供 ISO 颜色的亮色版本，无需使用粗体修饰符：颜色名称前景色代码背景色代码亮黑色90100亮红色91101亮绿色92102亮黄色93103亮蓝色94104亮洋红色95105亮青色96106亮白色97107256 色以下转义码告诉终端使用给定的颜色 ID：ESC 码序列描述ESC[38;5;{ID}m设置前景色。ESC[48;5;{ID}m设置背景色。其中 {ID} 应替换为以下颜色表中 0 到 255 的颜色索引：0-7: 标准颜色 (如 ESC [ 30–37 m)8–15: 高强度颜色 (如 ESC [ 90–97 m)16-231: 6 × 6 × 6 立方体 (216 种颜色): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)一些模拟器将这些步骤解释为所有三个通道上的线性增量 (256 / 24)，而其他模拟器可能明确定义这些值。232-255: 从暗到亮的 24 级灰度。RGB 颜色更现代的终端支持 真彩色 (24 位 RGB)，允许您使用 RGB 设置前景和背景颜色。这些转义序列通常没有详细的文档记录。ESC 码序列描述ESC[38;2;{r};{g};{b}m将前景色设置为 RGB。ESC[48;2;{r};{g};{b}m将背景色设置为 RGB。注意，;38 和 ;48 对应于 16 色序列，并由终端解释为分别设置前景和背景颜色。而 ;2 和 ;5 设置颜色格式。屏幕模式设置模式ESC 码序列描述ESC[={值}h将屏幕宽度或类型更改为值指定的模式。ESC[=0h40 x 25 单色 (文本)ESC[=1h40 x 25 彩色 (文本)ESC[=2h80 x 25 单色 (文本)ESC[=3h80 x 25 彩色 (文本)ESC[=4h320 x 200 4色 (图形)ESC[=5h320 x 200 单色 (图形)ESC[=6h640 x 200 单色 (图形)ESC[=7h启用换行ESC[=13h320 x 200 彩色 (图形)ESC[=14h640 x 200 彩色 (16色图形)ESC[=15h640 x 350 单色 (2色图形)ESC[=16h640 x 350 彩色 (16色图形)ESC[=17h640 x 480 单色 (2色图形)ESC[=18h640 x 480 彩色 (16色图形)ESC[=19h320 x 200 彩色 (256色图形)ESC[={值}l使用与设置模式相同的值重置模式，但 7 除外，它禁用换行。此转义序列中的最后一个字符是小写 L。常见的私有模式这些是一些私有模式的示例，它们没有被规范定义，但在大多数终端中都已实现。ESC 码序列描述ESC[?25l使光标不可见ESC[?25h使光标可见ESC[?47l恢复屏幕ESC[?47h保存屏幕ESC[?1049h启用备用缓冲区ESC[?1049l禁用备用缓冲区有关 XTerm 定义的更深入的私有模式列表，请参阅 XTerm 控制序列。注意：虽然这些模式可能受大多数终端支持，但有些可能无法在 tmux 等多路复用器中工作。键盘字符串ESC[{代码};{字符串};{...}p将键盘按键重新定义为指定的字符串。此转义序列的参数定义如下：代码 是下表中列出的一个或多个值。这些值表示键盘按键和组合键。在命令中使用这些值时，除了转义序列所需的分号外，还必须键入此表中显示的分号。括号中的代码在某些键盘上不可用。除非您在 ANSI.SYS 的 DEVICE 命令中指定 /X 开关，否则 ANSI.SYS 不会解释这些键盘的括号中的代码。字符串 是单个字符的 ASCII 码或包含在引号中的字符串。例如，65 和 "A" 都可以用来表示大写 A。重要提示： 下表中的某些值并非对所有计算机都有效。请查阅您计算机的文档以获取不同的值。键盘字符串列表按键代码SHIFT+代码CTRL+代码ALT+代码F10;590;840;940;104F20;600;850;950;105F30;610;860;960;106F40;620;870;970;107F50;630;880;980;108F60;640;890;990;109F70;650;900;1000;110F80;660;910;1010;111F90;670;920;1020;112F100;680;930;1030;113F110;1330;1350;1370;139F120;1340;1360;1380;140HOME (数字键盘)0;71550;119--UP ARROW (数字键盘)0;7256(0;141)--PAGE UP (数字键盘)0;73570;132--LEFT ARROW (数字键盘)0;75520;115--RIGHT ARROW (数字键盘)0;77540;116--END (数字键盘)0;79490;117--DOWN ARROW (数字键盘)0;8050(0;145)--PAGE DOWN (数字键盘)0;81510;118--INSERT (数字键盘)0;8248(0;146)--DELETE (数字键盘)0;8346(0;147)--HOME(224;71)(224;71)(224;119)(224;151)UP ARROW(224;72)(224;72)(224;141)(224;152)PAGE UP(224;73)(224;73)(224;132)(224;153)LEFT ARROW(224;75)(224;75)(224;115)(224;155)RIGHT ARROW(224;77)(224;77)(224;116)(224;157)END(224;79)(224;79)(224;117)(224;159)DOWN ARROW(224;80)(224;80)(224;145)(224;154)PAGE DOWN(224;81)(224;81)(224;118)(224;161)INSERT(224;82)(224;82)(224;146)(224;162)DELETE(224;83)(224;83)(224;147)(224;163)PRINT SCREEN----0;114--PAUSE/BREAK----0;0--BACKSPACE88127(0)ENTER13--10(0TAB90;15(0;148)(0;165)NULL0;3------A976510;30B986620;48C996630;46D1006840;32E1016950;18F1027060;33G1037170;34H1047280;35I1057390;23J10674100;36K10775110;37L10876120;38M10977130;50N11078140;49O11179150;24P11280160;25Q11381170;16R11482180;19S11583190;31T11684200;20U11785210;22V11886220;47W11987230;17X12088240;45Y12189250;21Z12290260;4414933--0;1202506400;12135135--0;12245236--0;12355337--0;12465494300;12575538--0;12685642--0;12695740--0;12704841--0;129-4595310;130=6143---0;131[91123270;26]93125290;27 92124280;43;5958--0;39'3934--0;40,4460--0;51.4662--0;52/4763--0;53`96126--(0;41)ENTER (小键盘)13--10(0;166)/ (小键盘)4747(0;142)(0;74)* (小键盘)42(0;144)(0;78)--- (小键盘)4545(0;149)(0;164)+ (小键盘)4343(0;150)(0;55)5 (小键盘)(0;76)53(0;143)--资源维基百科：ANSI 转义码使用 ANSI 转义码构建您自己的命令行ascii-table: ANSI 转义序列bluesock: ansi codesbash-hackers: 终端代码 (ANSI/VT100) 简介XTerm 控制序列VT100 – 各种终端手册xterm.js – 支持的终端序列
下面是官方给的github项目，也有详细的安装Fast MCP 的步骤 Fast MCP 在此之前需要安装uv的包管理工具，这里提供 PowerShell 的安装方法，安装完成后可通过输入命令uv查看是否安装成功。irm https://astral.sh/uv/install.ps1 | iex注意：这里如果你通过uv add添加包时候提示如下内容，代表未运行uv init命令初始化Python项目。1.创建一个目录，并初始化项目创建完成后会在目录生成几个文件2.添加mcp相关依赖uv add mcp[cli]安装完成后就可以在目录使用Python开发MCP Server了3.写一个简单的加法方法from mcp.server.fastmcp import FastMCP mcp = FastMCP("wb-mcp") @mcp.tool(description="Add two numbers together") def add(a: int, b: int) -> int: """ Add two numbers together :param a: The first number :param b: The second number :return: The sum of the two numbers """ return a + b def main(): print("Hello from wb-mcp!") mcp.run() if __name__ == "__main__": main() 4.添加到 Roo 等大模型工具中在新的Roo Code版本更新了全局和项目的mcp环境配置，这里配置全局环境。在mcpServer中配置，这里名称根据自己的mcp名称修改 "we-mcp": { "command": "uv", "args": [ "run", "main.py" ] }MCP Server 运行正常可以使用大模型调用mcp测试一下，查看结果是否正确，这里使用Roo Code 插件，服务商是阿里云的百炼的API调用DeepSeek-R1模型
最近 AI 使用 MCP Server 比较热门，下面是介绍如何在 Window 系统上的 VSCode 中配置 MCP 服务 的方法。插件安装如果你还没有安装 Cline/Roo Code 拓展，根据下述流程可以安装。首先在 VSCode 左侧菜单点击拓展在搜索框搜索 Cline 或 Roo Code （原名 Roo Cline）下面使用 Roo Code 作为演示搜索后右下角会有蓝色安装(Install)按钮，点击安装安装完成后左边菜单栏会多一个火箭图标，代表拓展安装完成！MCP Server 安装点击左侧拓展图标后弹出下面的页面，点击图中红色框的按钮来配置MCP Server,Cline为第二张图。跳出界面后点击图中[1]的编辑MCP配置(Configure MCP Servers)按钮，右侧[2]处会弹出配置文件，下面所有的插件都在这个 mcpServers 中进行配置。官方有社区提供的MCP Server 点击下面的跳转 GitHub 官方MCP Server Sequential Thinking MCP Server这里我安装 Sequential Thinking 作为演示，在提供的社区MCP Server中找到 Sequential Thinking并点击蓝色链接。文章下方会有给出的配置 JSON 这里将 npx 配置方式复制到 VSCode 打开的配置文件中。如下所示{ "mcpServers": { "sequential-thinking": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-sequential-thinking" ] } } }这里因为时 Window 需要修改一下配置，将 command 改为 cmd ， args 中添加 /c 和 npx 后保存。{ "mcpServers": { "sequential-thinking": { "command": "cmd", "args": [ "/c", "npx", "-y", "@modelcontextprotocol/server-sequential-thinking" ] } } }保存后右侧就会显示刚刚写好的配置项。如有报错请点击左侧文章标题跳转至安装错误修复安装完成后右侧会显示个小绿灯。自此 MCP Server 安装完成，你可以在项目中使用。filesystem MCP Server如果位置找不到请看第一个 MCP 安装方法走网站上复制安装json，这里注意一下json中的 /Users/username/Desktop 和 /path/to/other/allowed/dir 代表插件可以操作的目录，根据自己的要求进行配置截图中是我配置的。如有报错请点击左侧文章标题跳转至安装错误修复 "filesystem": { "command": "cmd", "args": [ "/c", "npx", "-y", "@modelcontextprotocol/server-filesystem", "/Users/username/Desktop", "/path/to/other/allowed/dir" ] },安装错误修复看一眼下面tips ::(喷) ::(喷) ::(喷) {message type="info" content="这里安装其他MCP Server也碰到除了下面的各种各样的npx问题，有点玄学。。。在操作重装VSCode(应该不是这个问题)，Node.js重装后不需要在命令中 设置 set APPDATA 就能运行了,其他的尝试执行一下问题1 的解决方法看看有没有用 。"/}问题1执行的时候提示没有这个命令（这个乱码意思）解决方法npx 清除一下缓存可能需要安装npx clear-npx-cache问题2如果你安装的时候出现了类似 ${APPDATA} 找不到路径可用下面方法解决。解决方法原因可能是环境原因导致的在配置项中指明 APPDATA，这里Admin需要换成你的用户名，具体可到C:\User\中查看。这里的set要加npx的上面，其他MCP遇到此问题也是一样的。{ "mcpServers": { "sequential-thinking": { "command": "cmd", "args": [ "/c", "set APPDATA=C:\\Users\\Admin\\AppData\\Roaming&&", "npx", "-y", "@modelcontextprotocol/server-sequential-thinking" ] } } }
Chrome 拓展开发网页呼出Popup类似在网页中需要插件登录、授权等操作的时候呼出Popup 来做进一步的操作。需要通过拓展中的Content Script进行中转。1.一个是网页（触发操作），通过window中的postMessage 发送一个操作如下。document.getElementById('loginButton').addEventListener('click', () => { // 向 Content Script 发送消息 window.postMessage({ type: 'EXTENSION_REQUEST', action: 'showAuthPopup' }, '*'); });你需要创建一个 content-script 的插入脚本 在 manifest 文件中配置。例如 "content_scripts": [ { "matches": ["*://example.com/*"], "js": ["content.js"], "css": ["example.css"], "run_at": "document_idle" } ],在文件中写入 以下内容，这里可以通过event.data拿到网页发送的所有数据，这里根据业务需求可以做过滤，也可以只作为一个转发功能拿到data后直接发送。// content-script.js window.addEventListener('message', (event) => { if (event.data.type === 'EXTENSION_REQUEST') { // 调用扩展的 API 向 Background Script 发送消息 chrome.runtime.sendMessage({ action: 'showAuthPopup' }, (response) => { console.log('扩展响应:', response); }); } });你需要创建一个 background-script 的worker脚本 在 manifest 文件中配置。例如 "background": { "service_worker": "/background.js" },在 Background Script 中接收 Content Script 发来的内容，这里使用 chrome.action.openPopup(); 来呼出 Popupchrome.runtime.onMessage.addListener((request, sender, sendResponse) => { if (request.action === 'showAuthPopup') { // 尝试打开扩展的 popup chrome.action.openPopup(); // 需要用户已配置图标或快捷键 // 如果失败，提示用户手动操作 if (!chrome.action.openPopup()) { chrome.notifications.create({ type: 'basic', iconUrl: 'icon.png', title: '授权请求', message: '请单击插件图标进行授权登录' }); } sendResponse({ success: true }); } });
基础概念{dotted startColor="#ff6c6c" endColor="#1989fa"/}:@(高兴) 简单来说 数据 是 所有信息的总称 ，而 数据元素 、 数据项 和 数据对象 则是对 数据 进行 组织和分类 的 不同层次的概念 。 从微观到宏观的角度来看： 数据元素 是 最小单位 数据项 是 数据元素的组合 数据对象 是 数据项的集合 而这一切都构成了广义上的数据。下面的是单个的字段解释。 {dotted startColor="#ff6c6c" endColor="#1989fa"/}数据（Data）数据是指所有可以被收集、存储、处理和传播的信息的集合。它可以是数字、文字、图像、声音等任何形式的信息。数据是信息的基础，未经加工的数据本身并不携带意义。数据元素（Data Element）数据元素是数据的基本单位，它是数据集中最小的、不可再分的数据单元。例如，在一个学生信息表中，“姓名”、“年龄”、“性别”等都是数据元素。数据项（Data Item）数据项有时也称为字段或属性，它是一个或一组值，通常用来描述某个实体的一个特定方面。数据项可以由一个或多个数据元素组成。例如，在记录一个学生的成绩时，“数学成绩”就是一个数据项，它可能包含具体的分数值。数据对象（Data Object）数据对象是一组相关的数据元素的集合，这些数据元素共同描述了一个实体的状态。数据对象可以看作是现实世界中某个具体事物的抽象表示。例如，一个学生的全部信息（包括姓名、年龄、性别、成绩等）可以被看作是一个数据对象。{dotted startColor="#ff6c6c" endColor="#1989fa"/}:@(高兴) 好，在上面的四个概念的内容后，下面将引入数据结构这个概念，简单来讲数据结构就是多个数据对象之间存在的关系的集合，是计算机中组织、管理和存储数据的方式，以便高效地访问和修改。多个数据对象之间，如A、B、C、D 可以用不同的结构进行表示，具体选择哪种结构取决于应用场景和需求。下面的是单个的字段解释。{dotted startColor="#ff6c6c" endColor="#1989fa"/}数据结构（Data Structure）一种数据组织、管理和存储的格式。它是相互之间存在一种或多种特定关系的数据元素的集合。通常情况下，精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术相关。{dotted startColor="#ff6c6c" endColor="#1989fa"/}在数据结构中分逻辑结构和存储结构逻辑结构中分为以下四种结构：集合结构、线性结构、树结构、图结构/网状结构这里通过数据元素之间的关系进行区分类型集合结构：一个或多个数据元素是否属于某个集合，只有属于或不属于的关系。线性结构：一个数据元素和一个数据元素存在一对一的关联关系。更准确的表达数据元素之间存在一对一的前驱和后继关系，即每个元素（除第一个和最后一个外）都有一个唯一的前驱和一个唯一的后继。树结构：一个数据元素和多个数据元素存在一对多的关联关系。图结构/网状结构：多个数据元素和数据元素之间存在多对多的关联关系。此外在此基础上这四个结构还分为线性结构和非线性结构线性非线性线性结构集合结构、树结构、图结构/网状结构和它的名字一样除了线性结构其他都是非线性 ::(狂汗) 在这四个结构基础上可以分为这几类线性结构线性结构只有线性表一个分支，在线性表下分为三类：一般线性、特殊线性和线性表的推广一般线性一般线性表是最基础的线性结构，其中每个元素（除了第一个和最后一个）都有唯一的一个直接前驱和一个直接后继。线性表中的元素可以是任意类型的，如整数、字符等。常见的操作包括插入、删除、查找等。特殊线性特殊线性通常是指在线性表基础上添加了某些特定条件或限制的一类线性结构。例如：栈（Stack）：一种只能在一端进行插入或删除的线性表，遵循后进先出（LIFO）的原则。队列（Queue）：一种只能在表的一端进行插入而在另一端进行删除的线性表，遵循先进先出（FIFO）的原则。循环队列：通过首尾相接形成环状结构的队列，用于解决传统队列空间利用率不高的问题。双端队列（Deque）：允许两端进行插入和删除操作的队列。线性表的推广线性表的推广是指对传统线性表概念的扩展，以适应更复杂的数据组织需求。这类结构可能不再严格保持一对一的关系，但在某种程度上仍然保留了线性表的基本特性。例如：多重链表：每个节点可以有多个链接指向其他节点，这些链接可能指向同一层的不同节点或者不同层的节点，适用于表示多维数组或树形结构的一部分。双向链表：每个节点不仅包含指向下一个节点的指针，还包含指向前一个节点的指针，使得遍历方向更加灵活。跳表（Skip List）：一种可以在平均O(log n)时间内完成插入、删除和查找操作的数据结构，通过增加额外的层次来加速搜索过程。非线性结构在非线性下分为了三个分支：树结构、图结构、集合树结构树是一种非线性的数据结构，由一组节点组成，这些节点通过边连接起来，形成一个层次结构。树具有以下特点：根节点：树中唯一的没有前驱的节点。叶子节点：没有后继的节点。子树：除了根节点外，任何一个节点及其所有后代构成的树。路径：从一个节点到另一个节点的序列。深度：从根节点到某个节点的最长路径上的边数。高度：树中最长路径上的节点数。可以分为树和二叉树，两者最大的区别在于二叉树是一种特殊的树结构，其中每个节点最多有两个子节点，通常称为左子节点和右子节点，但是树每个节点可以有任意数量的子节点。图结构图结构是一种更通用的非线性数据结构，它由一组节点（顶点）和连接这些节点的边组成。图结构可以分为：无向图：边没有方向，即两个节点之间的边是双向的。有向图：边有方向，即从一个节点到另一个节点的边是单向的。在此基础上还可以对边加上权重，来表示距离、成本等参数。集合集合是一种抽象的数据类型，用于存储不重复的元素。集合的特点包括无序性：集合中的元素没有固定的顺序。唯一性：集合中的元素不能重复。动态性：集合可以动态地添加和删除元素。存储结构数据的逻辑结构在计算机中的存储方式，它是实现数据结构的基础，直接影响着数据的访问和修改效率。根据不同的应用场景和需求，存储结构可以分为以下两种主要类型顺序存储结构顺序存储结构是最直观的存储方式之一，它通过将数据元素存储在连续的内存空间中来实现。优点：支持随机访问，即可以通过数组下标直接访问任一元素，访问速度极快；存储密度大，因为每个元素占用的内存空间都是有效的。缺点：插入和删除操作效率较低，因为这两个操作通常需要移动大量元素以保持数组的连续性；此外，顺序存储结构的大小在创建时需要预先确定，不便于动态调整。链式存储结构链式存储结构通过指针将数据元素链接起来，每个元素（节点）不仅包含数据信息，还包含指向下一个元素的指针。优点：插入和删除操作效率高，因为这些操作只需要更改指针，而不需要移动元素；支持动态增长，可以根据需要随时添加或删除节点。缺点：不支持随机访问，必须从头节点开始逐个访问节点；存储密度较小，因为每个节点都需要额外的空间来存储指针。{dotted startColor="#ff6c6c" endColor="#1989fa"/}
安装MySQL首先在使用前，先安装MYSQL下载可通过下方链接https://dev.mysql.com/downloads/mysql/mysql-8.4.0 Linux通用https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-community-server-8.4.0-1.el7.x86_64.rpm https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-community-client-8.4.0-1.el7.x86_64.rpm https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-community-libs-8.4.0-1.el7.x86_64.rpm https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-community-common-8.4.0-1.el7.x86_64.rpmshow variables like '%skip_network%'create user 'repl'@'%' identified by '321654qaz.Q';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';在从数据库中设置mysql 8.0之前和之后使用的命令不一样，例如8.0之前使用CHANGE MASTER TO MASTER_HOST='192.168.37.100',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='321654qaz.Q';8.0之后使用CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.37.100',SOURCE_PORT=3306,SOURCE_USER='repl',SOURCE_PASSWORD='321654. ![lwukeq09.png](https://blog.dfcraft.cn/usr/uploads/2024/05/1265215117.png) ';START REPLICASHOW REPLICA STATUS G;