Skip to main content

rapp-brainstem

Install and configure RAPP Brainstem -- a local-first AI agent server powered by GitHub Copilot.

来源信息

仓库
microsoft/aibast-agents-library
最近来源活动
2026年10月2日 03:30
检测到的 SKILL.md 语言
英语
星标
8
分支
7

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
rapp-brainstem
version
1.0.0
description
Install and configure RAPP Brainstem -- a local-first AI agent server powered by GitHub Copilot.
homepage
https://microsoft.github.io/aibast-agents-library/
metadata
{"emoji":"","category":"ai-agents","repo":"https://github.com/microsoft/aibast-agents-library"}
# RAPP Brainstem A local-first AI agent server. No API keys. No cloud setup. Just a GitHub account. The brainstem teaches you the Microsoft AI stack one layer at a time: | Tier | Metaphor | What it does | |------|----------|-------------| | **Brainstem** | Survival basics | Local agent server -- soul, tools, conversation | | **Spinal Cord** | Cloud body | Deploy to Azure -- always-on, persistent storage | | **Nervous System** | Enterprise reach | Copilot Studio -- Teams, M365 Copilot | Each tier builds on the last. Start with Tier 1. Layer up when the user is ready. ## Instructions for Copilot Execute these steps autonomously. Only pause and ask the user when marked with . After completing each tier, tell the user what they just learned and offer the next tier. Do not proceed to the next tier unless the user asks. --- ## Tier 1: The Brainstem *The biological brainstem keeps you alive -- breathing, heartbeat, reflexes. This tier does the same for your AI: it runs the core agent loop, calls tools, and responds. Everything else builds on top of this.* ### Step 1: Check the Environment Detect the OS and check what's already installed: ```bash uname -s python3 --version 2>/dev/null || python --version 2>/dev/null git --version 2>/dev/null gh --version 2>/dev/null ``` **On Windows**, skip all manual prereq checks -- the PowerShell installer handles everything automatically: ```powershell irm https://raw.githubusercontent.com/microsoft/aibast-agents-library/main/install.ps1 | iex ``` It auto-installs Python 3.11, Git, and GitHub CLI via winget on a factory Windows 11 PC. If the user is on Windows and runs this, skip to Step 2 after it completes. **If Python 3.11+ is missing** (macOS/Linux): - macOS: `brew install python@3.11` - Ubuntu/Debian: `sudo apt install python3.11 python3-pip` **If git is missing**: - macOS: `xcode-select --install` - Ubuntu/Debian: `sudo apt install git` **If gh (GitHub CLI) is missing**, install it: - macOS: `brew install gh` - Ubuntu/Debian: `sudo apt install gh` - Windows: `winget install GitHub.cli` ### Step 2: GitHub Authentication Tell the user: > ** The brainstem uses your GitHub Copilot subscription as its AI engine -- no API keys needed.** > > Run this to authenticate: > ``` > gh auth login > ``` > Let me know when you're signed in. After they confirm, verify: ```bash gh auth token >/dev/null 2>&1 && echo "yes authenticated" || echo "no not authenticated" ``` ### Step 3: Install the Brainstem ```bash git clone https://github.com/microsoft/aibast-agents-library.git ~/.brainstem/src 2>/dev/null || (cd ~/.brainstem/src && git pull) cd ~/.brainstem/src/rapp_brainstem pip3 install -r requirements.txt -q ``` Create the CLI wrapper: ```bash mkdir -p ~/.local/bin cat > ~/.local/bin/brainstem << 'WRAPPER' #!/bin/bash cd ~/.brainstem/src/rapp_brainstem exec python3 brainstem.py "$@" WRAPPER chmod +x ~/.local/bin/brainstem ``` Make sure `~/.local/bin` is in PATH: ```bash echo $PATH | grep -q '.local/bin' || echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc ``` Create `.env` from example if it doesn't exist: ```bash cd ~/.brainstem/src/rapp_brainstem [ -f .env ] || cp .env.example .env ``` ### Step 4: Start and Verify Start the brainstem: ```bash cd ~/.brainstem/src/rapp_brainstem && python3 brainstem.py & sleep 3 ``` Health check: ```bash curl -s http://localhost:7071/health ``` Expected response contains `"status": "ok"` with model and agent info. Test a conversation: ```bash curl -s -X POST http://localhost:7071/chat \ -H "Content-Type: application/json" \ -d '{"user_input": "Hello! What can you do?"}' | python3 -m json.tool ``` ### Step 5: Tier 1 Complete Tell the user: > ** Your brainstem is alive!** > > Open **http://localhost:7071** in your browser for the chat UI. > > **What you just set up:** > - A local AI agent server with tool-calling and conversation > - GitHub Copilot powers the AI -- no API keys, no monthly bills > - Agents auto-discovered from the `agents/` folder > - Soul file (`soul.md`) defines the personality > > **Try these next:** > - Edit `~/.brainstem/src/rapp_brainstem/soul.md` to change the personality > - Look at `agents/hello_agent.py` as a template for your own agents > - Open the Sources panel in the chat UI to connect remote agent repos > > **When you're ready to give this a cloud body, say "deploy to Azure" and I'll walk you through Tier 2.** Save the install state for future reference: ```bash mkdir -p ~/.config/brainstem cat > ~/.config/brainstem/state.json << 'STATE' { "tier": 1, "install_dir": "~/.brainstem/src/rapp_brainstem", "local_url": "http://localhost:7071", "status": "running" } STATE ``` **Do not proceed to Tier 2 unless the user asks.** --- ## Tier 2: The Spinal Cord *The spinal cord connects your brainstem to the rest of your body. Deploying to Azure does the same -- your agent is now always-on, reachable from anywhere, with persistent storage and monitoring.* Only run this tier if the user asks to deploy to Azure. ### Step 6: Check Azure Prerequisites ```bash az --version 2>/dev/null | head -1 func --version 2>/dev/null ``` **If Azure CLI is missing:** - macOS: `brew install azure-cli` - Ubuntu/Debian: `curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash` - Windows: `winget install Microsoft.AzureCLI` **If Azure Functions Core Tools is missing:** ```bash npm install -g azure-functions-core-tools@4 --unsafe-perm true ``` ### Step 7: Azure Authentication Tell the user: > ** Let's give your brainstem a cloud body.** > > Run `az login` and complete the browser authentication. Let me know when you're done. After they confirm: ```bash az account show --query "{subscription:name, id:id}" -o table ``` If they have multiple subscriptions, list them and ask which one: ```bash az account list --query "[].{Name:name, ID:id, Default:isDefault}" -o table ``` Set the chosen subscription: ```bash az account set --subscription "CHOSEN_SUBSCRIPTION_ID" ``` ### Step 8: Deploy Azure Resources Generate unique names and deploy: ```bash SUFFIX=$(openssl rand -hex 4) RESOURCE_GROUP="brainstem-rg-${SUFFIX}" LOCATION="eastus2" az group create --name $RESOURCE_GROUP --location $LOCATION -o none az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-uri https://raw.githubusercontent.com/microsoft/aibast-agents-library/main/azuredeploy.json \ --parameters openAILocation=swedencentral \ -o none ``` This creates: Function App (Python 3.11), Azure OpenAI (GPT-4o), Storage Account, Application Insights. All using Entra ID auth -- no API keys. Get the resource names: ```bash FUNC_NAME=$(az functionapp list -g $RESOURCE_GROUP --query "[0].name" -o tsv) STORAGE_NAME=$(az storage account list -g $RESOURCE_GROUP --query "[0].name" -o tsv) OPENAI_NAME=$(az cognitiveservices account list -g $RESOURCE_GROUP --query "[0].name" -o tsv) SUBSCRIPTION_ID=$(az account show --query id -o tsv) ``` ### Step 9: Assign RBAC Roles ```bash USER_ID=$(az ad signed-in-user show --query id -o tsv) # Storage roles for local development az role assignment create --assignee $USER_ID \ --role "Storage Blob Data Contributor" \ --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.Storage/storageAccounts/${STORAGE_NAME}" -o none az role assignment create --assignee $USER_ID \ --role "Storage File Data Privileged Contributor" \ --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.Storage/storageAccounts/${STORAGE_NAME}" -o none # OpenAI role az role assignment create --assignee $USER_ID \ --role "Cognitive Services OpenAI User" \ --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.CognitiveServices/accounts/${OPENAI_NAME}" -o none # Function App identity + roles FUNC_IDENTITY=$(az functionapp identity assign --name $FUNC_NAME --resource-group $RESOURCE_GROUP --query principalId -o tsv) az role assignment create --assignee $FUNC_IDENTITY \ --role "Storage Blob Data Contributor" \ --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.Storage/storageAccounts/${STORAGE_NAME}" -o none az role assignment create --assignee $FUNC_IDENTITY \ --role "Storage File Data Privileged Contributor" \ --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.Storage/storageAccounts/${STORAGE_NAME}" -o none az role assignment create --assignee $FUNC_IDENTITY \ --role "Cognitive Services OpenAI User" \ --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.CognitiveServices/accounts/${OPENAI_NAME}" -o none ``` ### Step 10: Deploy the Function ```bash cd ~/.brainstem/src/rapp_brainstem func azure functionapp publish $FUNC_NAME --build remote ``` Wait for deployment (1-3 minutes). Then verify: ```bash FUNC_KEY=$(az functionapp keys list --name $FUNC_NAME --resource-group $RESOURCE_GROUP --query "functionKeys.default" -o tsv) FUNC_URL="https://${FUNC_NAME}.azurewebsites.net/api/businessinsightbot_function" curl -s -X POST "${FUNC_URL}?code=${FUNC_KEY}" \ -H "Content-Type: application/json" \ -d '{"user_input": "Hello", "conversation_history": []}' | python3 -m json.tool ``` If the functions list is empty after deploy: ```bash az functionapp restart --name $FUNC_NAME --resource-group $RESOURCE_GROUP ``` ### Step 11: Tier 2 Complete Save the Azure state: ```bash cat > ~/.config/brainstem/state.json << AZSTATE { "tier": 2, "install_dir": "~/.brainstem/src/rapp_brainstem", "local_url": "http://localhost:7071", "azure": { "resource_group": "${RESOURCE_GROUP}", "function_app": "${FUNC_NAME}", "function_url": "${FUNC_URL}", "storage_account": "${STORAGE_NAME}", "openai_service": "${OPENAI_NAME}" }, "status": "deployed" } AZSTATE ``` Tell the user: > ** Spinal cord connected!** Your brainstem is deployed to Azure. > > **Azure endpoint:** `https://${FUNC_NAME}.azurewebsites.net` > > **Resources created:** > | Resource | Name | > |----------|------| > | Resource Group | `${RESOURCE_GROUP}` | > | Function App | `${FUNC_NAME}` | > | Storage Account | `${STORAGE_NAME}` | > | Azure OpenAI | `${OPENAI_NAME}` | > > **What you just learned:** > - ARM template deployment > - Azure Functions with Python > - Managed identity and RBAC (no API keys!) > - Azure OpenAI service provisioning > > **When you're ready to connect this to Teams and M365 Copilot, say "connect to Copilot Studio" and I'll walk you through Tier 3.** **Do not proceed to Tier 3 unless the user asks.** --- ## Tier 3: The Nervous System *Your nervous system extends your brain's reach everywhere -- eyes, ears, hands. Copilot Studio does the same: it connects your agent to Teams, M365 Copilot, and across your organization. The same logic you tested locally now serves your entire tenant.* Only run this tier if the user asks to connect to Copilot Studio. ### Step 12: Import the Power Platform Solution Tell the user: > ** Let's give your brainstem a nervous system -- connecting it to Teams and M365 Copilot.** > > The repo includes a Power Platform solution that creates a declarative agent in Copilot Studio wired to your Azure Function. > > **To import:**
在 GitHub 查看
这个 SKILL.md 很大,SkillsMP 这里只预览前一段内容。 在 GitHub 查看