# 下达指令 (/zh/ai-teammates/give-instructions)



指导一位队友从来不是一件事，而是四个各有用途的杠杆。选对杠杆，你就不用每次都重新解释自己。

<LivePreview component="AssistantProfile" />

## 什么决定了队友的行为？ [#什么决定了队友的行为]

* **模板** —— 雇用时设定的角色、语气和工作风格。参见[雇用 AI 队友](/ai-teammates/hire-an-ai-teammate)。
* **技能** —— 它在对话之外真正能碰到什么：一个仓库、网络、一个 API。
* **资料** —— 向团队和它自己描述这位具体队友的名字和简介。
* **记忆** —— 它在与你共事的过程中自动积累的事实和偏好。参见[AI 队友的记忆如何运作](/ai-teammates/memory)。

对一个通用角色来说，模板已经能覆盖大部分需求。但有两种情况模板不够用：这份工作需要触达对话之外的真实东西——一个真实代码库、一个真实工单系统——再怎么措辞都解决不了，只有技能能解决；或者工作本身是通用的，但这位具体队友不是——你的支付审查员需要知道自己审的是支付，而不只是笼统的"代码审查员"。这正是资料和记忆要解决的问题，也是本页接下来要讲的内容。

## 如何塑造队友的行为 [#如何塑造队友的行为]

<Steps>
  <Step>
    ### 第一步：为模板没覆盖到的部分安装技能 [#第一步为模板没覆盖到的部分安装技能]

    没有任何技能的队友能读写消息、对文本进行推理，但碰不到对话之外的任何东西——它查不到今天的汇率，打不开一个真实的 PR，发不出它刚起草好的邮件。一项技能每次补上一个这样的缺口，且只授予你安装它的那位队友。

    打开队友的私信，点击齿轮图标，进入**技能**，从市场、GitHub URL 或本地文件安装。代码审查员模板默认不带 GitHub 访问权限——安装一个 GitHub 技能，让它能读到真实的 diff，而不是你每次都要重新粘贴的代码片段。

    <LivePreview component="AssistantSkills" />

    完整安装流程和如何在安装前查看技能权限，参见[技能与插件](/connect/skills-and-plugins)。
  </Step>

  <Step>
    ### 第二步：写一条真正有用的简介 [#第二步写一条真正有用的简介]

    打开**队友设置 → 资料**。简介是队友的自我介绍——是你的团队决定要不要找这位队友时看到的内容，也是队友自己用来提醒自己该做什么的内容。一条只是把模板角色复述一遍的简介，等于什么都没说：

    **模糊：**

    > 帮忙处理工程相关的事。

    **具体：**

    > 负责支付服务 PR 合并前的正确性和幂等性审查。任何涉及 webhook 重试或 Stripe 事件的改动，尽早找我。

    第二个版本做了模板做不到的两件事：点明了具体是哪个系统，并且告诉别人*什么时候*该找这位队友，而不只是笼统说它擅长什么。

    <LivePreview component="CreateAssistantPage" scenario="{ focus: &#x22;profile&#x22;, initialState: { start: &#x22;template&#x22;, templateRef: &#x22;@helio/code-reviewer&#x22;, name: &#x22;支付审查员&#x22;, bio: &#x22;负责支付服务 PR 合并前的正确性和幂等性审查。任何涉及 webhook 重试或 Stripe 事件的改动，尽早找我。&#x22; } }" />

    每个资料字段具体在哪里调整，参见[编辑 AI 队友的设置](/ai-teammates/edit-settings)。
  </Step>

  <Step>
    ### 第三步：在消息里引导日常工作 [#第三步在消息里引导日常工作]

    针对具体任务，直接在你求助的那条消息里说清楚——队友行动前会读完整个话题，所以不需要在别处重复。说清楚他在做什么，而不只是任务本身：

    **模糊：**

    > 评审一下这段代码。

    **具体：**

    > 评审这个 PR，优先看正确性和测试覆盖率，其次是可读性。我们前端是 TypeScript + React，后端是 Go——不地道的地方都标出来。

    <LivePreview
      component="AssistantChat"
      assistantName="Alex"
      scenario="{ messages: [
    { author: &#x22;user&#x22;, text: &#x22;评审这个 PR，优先看正确性和测试覆盖率，其次是可读性。我们前端是 TypeScript + React，后端是 Go——不地道的地方都标出来。&#x22; },
    { author: &#x22;assistant&#x22;, text: &#x22;好——先看正确性和测试覆盖率，可读性单独作为一轮。不符合 TypeScript/React 或 Go 惯例的地方我都会标出来，测试缺口也会按文件列出来。&#x22; }
  ] }"
    />
  </Step>

  <Step>
    ### 第四步：让记忆承接那些不该反复重复的事 [#第四步让记忆承接那些不该反复重复的事]

    一条消息只能引导眼前这一个任务。如果有些内容对之后每个任务都成立——你的技术栈、团队规范、一贯的偏好——告诉队友一次，让它变成记忆，而不是你下周还要再打一遍的一次性指令。

    记忆如何积累、查看和纠正，参见[AI 队友的记忆如何运作](/ai-teammates/memory)。
  </Step>
</Steps>

<Callout type="info">
  消息和记忆在模板、技能、资料共同设定的基础上协同工作：消息只引导眼前这一个任务，记忆让一个事实对之后的每个任务都成立。
</Callout>

<Cards>
  <Card title="共享上下文" href="/ai-teammates/share-context" description="向队友提供文件、文档和项目背景知识。" />

  <Card title="AI 队友的记忆如何运作" href="/ai-teammates/memory" description="队友如何随时间积累和使用记忆。" />

  <Card title="技能与插件" href="/connect/skills-and-plugins" description="为队友安装真实能力。" />
</Cards>
