SuperAPI AI Directory

openteam-control

Agents & models

View repository

Updated 10-15 08:43

About this skill

OpenTeam CLI Local Control

Overview

OpenTeam is controlled through the installed openteamcli command and the local daemon. Do not click the browser interface directly, and do not bypass the local control protocol to call Chrome extension internal APIs.

Use this skill when a task requires multiple AI roles to discuss, review, critique, brainstorm, compare options, or each give independent opinions in OpenTeam.

Local Command Requirements

By default, call the openteamclithat is installed in the local PATH directly. If the command does not exist, prompt the user to install it from npm first:

npm install -g @afumu/openteamcli

During development, you can run it in the OpenTeam repository:

npm install -g ./packages/openteamcli

Or install using a symlink:

npm link ./packages/openteamcli

Start and check the connection first

Before any operation, run:

openteamcli daemon start
openteamcli doctor

daemon start is an idempotent command. If the daemon is already running, it will only return alreadyRunning, and will not start the background process again.

If in the result extension.connected is false:

  1. Prompt the user to open the OpenTeam plugin page.
  2. Confirm that in settings 本机智能体控制。
  3. has been enabled, then run doctor。

If the daemon status is abnormal, run this first:

openteamcli daemon restart
openteamcli doctor

Recommended New Task Flow

For new tasks, prefer the flow of "create a group chat, add roles, publish a task, and wait for replies in one go." This is best suited for external Agents or CLI calls.

First create a JSON file, for example task.json:

{
  "chat": {
    "name": "方案评审",
    "mode": "independent"
  },
  "roles": [
    {
      "source": "temporary",
      "name": "工程师",
      "systemPrompt": "从工程实现、复杂度、风险和测试角度评估。"
    },
    {
      "source": "temporary",
      "name": "产品经理",
      "systemPrompt": "从用户价值、范围控制和交付节奏角度评估。"
    }
  ],
  "task": {
    "target": "all",
    "content": "请评估这个方案,给出风险、建议和最终判断。"
  },
  "options": {
    "waitForReplies": true,
    "activateChat": true,
    "openTeamPage": true
  }
}

Then run:

openteamcli run create-and-post --file task.json --wait

When reporting to the user, preserve differences in opinions by role first; do not flatten all replies into one generic summary.

Temporary Roles

If there is no existing template in the personnel library, do not require the user to manually create a template first. Use a temporary role directly in the task JSON:

{
  "source": "temporary",
  "name": "研究员",
  "description": "负责查漏补缺和事实核对。",
  "chatSite": "deepseek",
  "systemPrompt": "你是研究员,负责核对事实、找出假设漏洞,并列出需要补充的信息。"
}

Temporary roles belong only to the current group chat and will not be written to the personnel library.chatSite Available values:deepseek、chatgpt、gemini、claude、grok。

If simulating a real public figure, company founder, or expert style, you must make it clear in systemPrompt :

  • This is a simulated role based on a public thought style.
  • It is not the real person.
  • It does not represent the statements of their company or organization.
  • It does not claim to have private experiences, real-time information, or internal information.

Continue an Existing Group Chat

When the user provides chatId, or wants to continue a previous OpenTeam group chat, use the existing group chat flow:

openteamcli task post --chat <chatId> --target all --content "继续追问的问题"
openteamcli task wait --chat <chatId> --message <messageId> --timeout 300000
openteamcli task read --chat <chatId> --message <messageId>

If task post 's CLI process does not return for a long time, but chat get can already see the user message and role replies, it means the group chat execution path may already be complete. At this point, use task read to read the results by message ID, and check whether the daemon has hanging requests:

openteamcli daemon status

If pending is not 0for a long time, restart the daemon to clear the hanging state:

openteamcli daemon restart

Common Commands

openteamcli daemon start
openteamcli doctor
openteamcli daemon status
openteamcli daemon restart
openteamcli chat list
openteamcli chat get <chatId>
openteamcli chat create --name "群聊名" --mode independent
openteamcli chat activate --chat <chatId>
openteamcli chat initialize --chat <chatId>
openteamcli role list --chat <chatId>
openteamcli role batch-add --chat <chatId> --file roles.json
openteamcli task post --chat <chatId> --target all --content "任务"
openteamcli task wait --chat <chatId> --message <messageId> --timeout 300000
openteamcli task read --chat <chatId> --message <messageId>

roles.json can be an array:

[
  {
    "source": "temporary",
    "name": "研究员",
    "systemPrompt": "负责查漏补缺和事实核对。"
  }
]

Error Recovery

Prefer looking at the machine-readable error.code。

Error Code Handling Method
extension_not_connected Ask the user to open the OpenTeam plugin page, confirm that local agent control has been enabled, and then rerun doctor。
control_disabled Ask the user to enable in OpenTeam settings 本机智能体控制。
role_not_ready Run chat initialize --chat <chatId>, or ask the user to wait for the role iframe to finish initializing.
task_timeout Run task read, and report the partial replies already received and the roles still waiting.
permission_denied Do not retry blindly. The local token or daemon state may be abnormal; first run daemon restart。
fetch failed First run doctor and daemon status. If the daemon exits or the plugin disconnects, restart the daemon and reopen the OpenTeam page.

Operating Rules

  • For new tasks, prefer run create-and-post --file ... --wait。
  • Multi-role, long prompts, or complex tasks must use a JSON file to carry the input.
  • Do not write secrets, tokens, cookies, or users' private information into task prompts.
  • The local daemon can only listen on 127.0.0.1, do not expose it to the public internet or local network.
  • Unless the user explicitly wants the AI roles in the browser session to act, do not publish tasks to OpenTeam on the user's behalf.
  • When reporting results, state which roles have replied, which roles are still waiting, and whether there was a timeout.