```
feat(agent): 添加对持久化子智能体的支持并增强委派管理 添加了持久化子智能体的完整生命周期管理功能,包括创建、更新、删除和查询API接口。 新增了子智能体的JSON-RPC通信协议支持,实现了远程调用和任务管理功能。 同时增强了委派管理器的功能: - 添加了对本地委派、插件委派和本地回退的开关控制 - 实现了持久化子智能体任务的自动检测和本地执行保护 - 增加了对不同委派类型的权限验证机制 修改了智能体注册表以支持插件智能体的条件性包含,并更新了工具注册逻辑以支持可选工具。 BREAKING CHANGE: 委派管理器的构造函数签名已更改,添加了新的控制参数。 ```
This commit is contained in:
@ -0,0 +1,82 @@
|
||||
---
|
||||
name: subagent-manager
|
||||
description: Create, inspect, update, and remove persistent local A2A sub-agents. Use when the user wants Boardware Genius to manage sub-agents with their own workspace under ~/.nanobot/workspace/agents/<id>_agent, their own AGENTS.json and AGENTS.md, and local A2A visibility in the agent list.
|
||||
---
|
||||
|
||||
# Subagent Manager
|
||||
|
||||
Use this skill when the user wants to create or manage a persistent local sub-agent.
|
||||
|
||||
## Required Rules
|
||||
|
||||
- Persistent sub-agents must be created and updated only through `subagentctl.py` or `/api/subagents`.
|
||||
- Treat `~/.nanobot/workspace/agents/<id>_agent/AGENTS.json` as the source of truth.
|
||||
- Do not create a sub-agent by manually editing `workspace/agents/registry.json`.
|
||||
- Do not create ad-hoc layouts such as `workspace/agents/<id>/agent.json`, `main.py`, or `README.md` as a substitute for a persistent sub-agent.
|
||||
- Do not write `protocol: "local"` registry records for persistent sub-agents. A valid persistent sub-agent is registered automatically as local A2A with `protocol: "a2a"`.
|
||||
- Prefer the bundled script over hand-editing JSON files, because the script keeps `AGENTS.json`, `AGENTS.md`, and the registry entry consistent.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Inspect the current sub-agents first:
|
||||
`uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py list`
|
||||
2. Create or update the sub-agent with:
|
||||
`uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py create ...`
|
||||
3. Verify the generated workspace:
|
||||
`~/.nanobot/workspace/agents/<id>_agent/`
|
||||
4. Verify the agent registry entry exists by checking `/api/agents` or `workspace/agents/registry.json`.
|
||||
5. If the user wants custom skills, edit files under:
|
||||
`~/.nanobot/workspace/agents/<id>_agent/skills/`
|
||||
|
||||
## Creation Standard
|
||||
|
||||
When the user asks for a new specialized sub-agent, always:
|
||||
|
||||
1. Choose a stable kebab-case id.
|
||||
2. Create it with `subagentctl.py create` or `POST /api/subagents`.
|
||||
3. Confirm the generated workspace is `~/.nanobot/workspace/agents/<id>_agent/`.
|
||||
4. Confirm `AGENTS.json` exists in that directory.
|
||||
5. Confirm the unified agent list shows the same id as a managed sub-agent entry.
|
||||
|
||||
If the user asks for "an agent for X", interpret that as a persistent sub-agent when they want a reusable local worker with its own prompt, memory, skills, or MCP setup.
|
||||
|
||||
## Repair Standard
|
||||
|
||||
If you find a malformed "sub-agent" created through the wrong path, repair it instead of reusing the broken layout:
|
||||
|
||||
1. Read any existing metadata that is useful, such as id, name, description, prompt, tags, aliases, or MCP config.
|
||||
2. Recreate the agent through `subagentctl.py create` or `/api/subagents`.
|
||||
3. Verify the new canonical directory `~/.nanobot/workspace/agents/<id>_agent/AGENTS.json`.
|
||||
4. Remove the malformed directory or stale registry entry only after the canonical sub-agent exists.
|
||||
|
||||
Malformed examples include:
|
||||
|
||||
- `workspace/agents/<id>/agent.json`
|
||||
- registry entries with `protocol: "local"`
|
||||
- agent folders that do not contain `AGENTS.json`
|
||||
|
||||
## Commands
|
||||
|
||||
- Create:
|
||||
`uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py create --id research-agent --name "Research Agent" --description "Research-focused local A2A sub-agent" --system-prompt "Focus on research tasks and be concise."`
|
||||
- Show:
|
||||
`uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py show research-agent`
|
||||
- Delete:
|
||||
`uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py delete research-agent`
|
||||
- Set system prompt:
|
||||
`uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py set-system-prompt research-agent --text "New prompt"`
|
||||
- Add HTTP MCP:
|
||||
`uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py add-mcp-http research-agent --server-id docs --url http://127.0.0.1:9000/mcp`
|
||||
- Add stdio MCP:
|
||||
`uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py add-mcp-stdio research-agent --server-id localtools --command npx --arg -y --arg @modelcontextprotocol/server-filesystem`
|
||||
- Remove MCP:
|
||||
`uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py remove-mcp research-agent --server-id docs`
|
||||
|
||||
## Notes
|
||||
|
||||
- `AGENTS.json` is the machine-readable source of truth for the sub-agent.
|
||||
- `AGENTS.md` is regenerated from `AGENTS.json` when the script updates the sub-agent.
|
||||
- Builtin skills remain available automatically. Workspace-specific skills live under the sub-agent workspace `skills/` directory.
|
||||
- This MVP exposes the sub-agent through local A2A `message/send` only.
|
||||
- New sub-agents default to `delegation_mode="remote_a2a_only"`: they can delegate outward only to remote A2A agents, not to local fallback or plugin agents.
|
||||
- A valid persistent sub-agent should appear in both `/api/subagents` and `/api/agents`.
|
||||
Reference in New Issue
Block a user