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:
- Prompt the user to open the OpenTeam plugin page.
- Confirm that in settings
本机智能体控制。 - 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.