Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions external_plugins/agent-manager/.zcode-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"name": "agent-manager",
"version": "0.1.3",
"description": "Manage ZCode subagents: inventory, create, edit and validate agent definition files, and dispatch one task to multiple agents in parallel.",
"description_i18n": {
"en": "Manage ZCode subagents: inventory, create, edit and validate agent definition files, and dispatch one task to multiple agents in parallel.",
"zh-CN": "管理 ZCode 智能体:盘点、创建、修改、校验智能体定义文件,并把一个任务并行派发给多个智能体协作完成。"
},
"author": {
"name": "Sword"
},
"skills": "./skills",
"commands": "./commands",
"agents": "./agents",
"hooks": "hooks/hooks.json"
}
21 changes: 21 additions & 0 deletions external_plugins/agent-manager/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Sword

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
56 changes: 56 additions & 0 deletions external_plugins/agent-manager/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Agent Manager (智能体管家)

A ZCode plugin for **managing subagents**: inventory, create, edit and validate agent definition files — and dispatch one task to **multiple agents in parallel**, then merge their reports.

[中文说明](./README_CN.md)

## What you get

| Component | Name | Purpose |
|---|---|---|
| Skill | `agent-registry` | Agent definition butler: inventory, view, create, edit, validate or retire agent definition files (user scope `~/.zcode/agents/` and workspace scope `<workspace>/.zcode/agents/`). Validation reports problems; it never edits files on its own. |
| Skill | `agent-team` | Multi-agent dispatcher: split a task → pick agents by their descriptions → dispatch independent subtasks in parallel in a single message → merge results into one report. |
| Commands | `/agent-list` `/agent-show` `/agent-new` `/agent-check` `/agent-team` | Quick access to inventory / view / create / validate / dispatch. |
| Agents (bundled templates) | `doc-writer` `test-runner` `issue-triage` | Ready-to-dispatch agents: documentation writing, test execution with failure analysis, and issue triage. |
| Hook | SessionStart | Prints a compact inventory of locally defined agents at every session start. |

## Install

1. In ZCode open **Plugin Marketplace** and search for **Agent Manager** (official marketplace), or **Add → Add Plugin Marketplace** with `sworddemon85-create/agent-manager-market` to install from the author's mirror.
2. Find **Agent Manager** → **Install**, then restart ZCode.

## Try it

- `/agent-list` — list all your agents, flagging name conflicts across scopes
- "Create an agent named `doc-writer` that maintains project documentation" — walks the creation flow and writes a spec-compliant definition
- `/agent-team 审查 src 目录的代码并总结问题` — dispatches reviewers in parallel and returns a merged report

## Behavior and side effects (disclosure)

- **File writes**: the create/edit flows write Markdown agent definition files under `~/.zcode/agents/` or `<workspace>/.zcode/agents/`. Validation and inventory are read-only.
- **Command execution**: the SessionStart hook runs a bundled read-only bash script (`scripts/inventory.sh`) that scans the two definition directories; dispatch flows invoke subagents via ZCode's Agent tool.
- **Hook**: `SessionStart` only. Its output is injected as session context and it always exits 0, so it never blocks startup.
- **Network**: the plugin itself makes no network requests. The bundled `issue-triage` agent may use WebFetch when you ask it to verify external references.
- **Bundled agents act with their own tools**: `doc-writer` writes project documentation files and `test-runner` runs project test commands when dispatched — send them only tasks whose effects you accept.
- **No MCP server, no credentials, no telemetry.**
- **Windows note**: the hook requires `bash` on PATH (Git Bash works).

## Agent definition format

Each agent is one Markdown file: YAML frontmatter plus a system-prompt body.

```markdown
---
name: "crawl"
description: "One-line responsibility; the main session dispatches based on this"
color: yellow
injectAgentsMd: true
tools: Read, Bash
---

Body = the agent's system prompt (role, duties, constraints, output format).
```

## License

[MIT](./LICENSE)
56 changes: 56 additions & 0 deletions external_plugins/agent-manager/README_CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# 智能体管家 (Agent Manager)

一个 ZCode 插件,用于**管理子智能体**:盘点、创建、修改、校验智能体定义文件——并把一个任务**并行派发**给多个智能体,汇总成一份报告。

[English](./README.md)

## 功能一览

| 组件 | 名称 | 作用 |
|---|---|---|
| 技能 | `agent-registry` | 智能体定义管家:盘点、查看、新建、修改、校验、下架智能体定义(用户级 `~/.zcode/agents/` 与工作区级 `<工作区>/.zcode/agents/`)。校验只报告问题,绝不擅自改文件。 |
| 技能 | `agent-team` | 多智能体调度:拆解任务 → 按职责选人 → 独立子任务同消息并行派发 → 汇总合并报告。 |
| 命令 | `/agent-list` `/agent-show` `/agent-new` `/agent-check` `/agent-team` | 盘点 / 查看 / 新建 / 校验 / 派发的快捷入口。 |
| 内置智能体 | `doc-writer` `test-runner` `issue-triage` | 装即用的三个模板:文档整理、测试执行与失败分析、问题分诊排序。 |
| 钩子 | SessionStart | 每次新会话开始时自动输出本地智能体的精简盘点清单。 |

## 安装

1. 打开 ZCode 的 **Plugin Marketplace** 搜索「Agent Manager」(官方市场),或经 **Add → Add Plugin Marketplace** 输入作者镜像 `sworddemon85-create/agent-manager-market` 安装。
2. 找到「智能体管家 Agent Manager」→ **Install**,然后重启 ZCode。

## 试一试

- `/agent-list` —— 列出全部智能体,标出跨作用域重名
- 「新建一个叫 doc-writer 的智能体,负责整理项目文档」—— 走创建流程,生成规范定义
- `/agent-team 审查 src 目录的代码并总结问题` —— 并行派发审查智能体,返回合并报告

## 行为与副作用(披露)

- **文件写入**:新建/修改流程会在 `~/.zcode/agents/` 或 `<工作区>/.zcode/agents/` 下写 Markdown 定义文件;盘点与校验均为只读。
- **命令执行**:SessionStart 钩子运行内置只读脚本(`scripts/inventory.sh`)扫描两级定义目录;派发流程通过 ZCode 的 Agent 工具调用子智能体。
- **钩子**:仅 `SessionStart`;输出作为会话上下文注入,且始终以 0 退出,不会阻塞启动。
- **网络**:插件本身不发起网络请求;内置 `issue-triage` 智能体在你要求核实外部资料时可能使用 WebFetch。
- **内置智能体使用各自工具干活**:`doc-writer` 被派发后会写项目文档文件,`test-runner` 会通过 bash 执行项目测试命令——只派发你能接受其影响的任务。
- **无 MCP server、无凭据、无遥测。**
- **Windows 提示**:钩子依赖 PATH 中的 `bash`(Git Bash 即可)。

## 定义格式

每个智能体是一个 Markdown 文件:YAML frontmatter + 正文提示词。

```markdown
---
name: "crawl"
description: "一句话职责,主会话据此决定派不派它"
color: yellow
injectAgentsMd: true
tools: Read, Bash
---

正文 = 该智能体的系统提示词(人设、职责、约束、输出要求)。
```

## 许可证

[MIT](./LICENSE)
21 changes: 21 additions & 0 deletions external_plugins/agent-manager/agents/doc-writer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
name: "doc-writer"
description: "文档整理智能体:阅读代码/目录并编写或更新项目文档(README、使用说明、API 文档)。当用户说「帮我写文档」「整理一下 README」「给这个模块补个说明」时派发它。它按现有文档风格写作,产出 Markdown 文件。"
color: blue
injectAgentsMd: true
tools: Read, Glob, Grep, Write, Edit
---
你是文档工程师(doc-writer)。任务:为派发给你的代码/模块/项目编写或更新文档。

## 工作方式

1. 先读后写:动手前先通读目标代码与现有文档(若有),弄清读者是谁、已有文档的风格与结构。
2. 有旧文档就沿用其结构和语气做增量更新,不推倒重来;没有就按「简介 → 快速开始 → 使用说明 → 常见问题」骨架起稿。
3. 只写有依据的内容:命令、参数、行为必须与代码一致,不确定的标注「待确认」,不编造 API。
4. 示例优先:每个关键用法给一个可复制的最小示例。
5. 输出 Markdown 文件;返回时给一行改动摘要(改了哪些文件、各加了什么章节)。

## 边界

- 不改代码本身;发现代码问题只在返回报告里提一句。
- 不给文档堆砌空话;每一段都要能删掉废话后还有信息量。
21 changes: 21 additions & 0 deletions external_plugins/agent-manager/agents/issue-triage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
name: "issue-triage"
description: "问题分诊智能体:把一批 bug 报告、报错日志或用户反馈整理成去重、分级、可执行的清单,并给出处理优先级。当用户说「整理一下这些报错」「帮我把反馈分个类」「这些问题先修哪个」时派发它。只读分析,不改文件。"
color: yellow
injectAgentsMd: true
tools: Read, Grep, Glob, WebFetch
---
你是问题分诊员(issue-triage)。任务:把杂乱的原始问题清单变成一份可执行的分诊报告。

## 工作方式

1. 逐条读入原始问题(bug 报告/日志/反馈),必要时用 Grep/Read 在代码里定位相关位置,验证问题是否真实存在。
2. 去重合并:同一根因的多条报告合并为一条,保留全部原始出处。
3. 每条输出:严重级(P0 阻断 / P1 严重 / P2 一般 / P3 轻微)+ 一句话现象 + `文件:行号` 或日志证据 + 建议动作(修复/复现确认/需要更多信息)。
4. 排序原则:影响面大且易修的排前面;标注哪几条可以立即动手,哪几条缺信息需要先向报告人追问。
5. 结尾给一行总体结论:最值得先修的 1-3 项。

## 边界

- 只读不改;不修代码。
- 无法验证真伪的条目如实标注「未验证」,不脑补。
20 changes: 20 additions & 0 deletions external_plugins/agent-manager/agents/test-runner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: "test-runner"
description: "测试执行智能体:运行项目的测试套件,汇总通过/失败情况,并分析失败原因(断言、环境、回归)。当用户说「跑一下测试」「看看测试为什么挂」「验证改动没破坏东西」时派发它。它返回结构化的测试报告,不擅自修代码。"
color: green
injectAgentsMd: true
tools: Read, Bash, Grep, Glob
---
你是测试执行员(test-runner)。任务:运行测试并给出可信的测试报告。

## 工作方式

1. 先找入口:从 package.json / Makefile / pytest.ini / CI 脚本等确认测试命令,不凭空猜命令;找不到就报告「未发现测试入口」并列出线索。
2. 运行测试(Bash),记录完整输出;超时或卡住时如实报告到哪一步。
3. 分析失败:区分「断言失败」「环境/依赖问题」「疑似本次改动引入的回归」,每类给出 `文件:行号` 级证据和最小复现信息。
4. 输出报告:一行总结(N 通过 / M 失败 / K 跳过 + 整体判断)→ 失败清单(按疑似严重度排序)→ 建议的下一步。不修代码;除非用户明确要求,不改动任何文件。

## 边界

- 不改业务代码;修测试代码也仅限用户明确授权。
- 测试全绿就直说,不为凑数编造发现。
7 changes: 7 additions & 0 deletions external_plugins/agent-manager/commands/agent-check.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
description: 校验所有智能体定义文件是否规范
---

1. 扫描用户级 `~/.zcode/agents/*.md` 与工作区级 `<工作区>/.zcode/agents/*.md`。
2. 逐文件检查:frontmatter 可解析;name、description 非空;name 与文件名一致(否则警告);正文非空;tools 均为本环境真实工具名;无未解析占位符或编码异常。
3. 每个文件输出一行:通过 / 警告 / 失败 + `文件:行号` 证据。只报告,不擅自修复。
13 changes: 13 additions & 0 deletions external_plugins/agent-manager/commands/agent-list.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
description: 盘点当前可用的智能体(subagent)定义
argument-hint: "[作用域: user | workspace | all,默认 all]"
---

按以下步骤盘点智能体定义:

1. 按参数确定扫描范围:未指定或 `all` 时扫描用户级 `~/.zcode/agents/*.md` 与工作区级 `<工作区>/.zcode/agents/*.md`;指定 `user` 或 `workspace` 时只扫对应目录(只统计真实存在的文件)。
2. 逐个读取 frontmatter,输出表格:名称 | 作用域 | 工具 | 一句话职责。
3. 同名出现在多个作用域时标 ⚠️;并与当前会话系统提示的可用 agent types 对账,说明差异(如运行时注入、磁盘无文件的情况)。
4. 最后一行给出统计:N 个用户级 + M 个工作区级。

范围:$ARGUMENTS
10 changes: 10 additions & 0 deletions external_plugins/agent-manager/commands/agent-new.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
description: 新建一个智能体定义文件
argument-hint: "<名称> [一句话职责]"
---

名称与职责:$ARGUMENTS

1. 若职责或系统提示词要点缺失,向用户询问:期望产出、约束、需要哪些工具、作用域(默认用户级 `~/.zcode/agents/`)。
2. 按规范生成定义:frontmatter 含 name(与文件名一致、小写连字符)与 description(一句话职责),正文为系统提示词;tools 可选。
3. 写入后回读确认落盘,并提醒:新智能体一般要到下个会话才进入可用列表。
9 changes: 9 additions & 0 deletions external_plugins/agent-manager/commands/agent-show.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
description: 查看某个智能体的定义文件
argument-hint: "<智能体名称>"
---

目标名称:$ARGUMENTS

1. 在用户级 `~/.zcode/agents/` 与工作区级 `<工作区>/.zcode/agents/` 中查找 `<名称>.md`。
2. 找到则完整展示 frontmatter 与正文;找不到则列出相近名称供用户选择。
13 changes: 13 additions & 0 deletions external_plugins/agent-manager/commands/agent-team.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
description: 把任务拆解并派发给多个子智能体并行执行,汇总结果
argument-hint: "<要执行的任务描述>"
---

任务:$ARGUMENTS

1. 以当前会话系统提示的可用 agent types 清单为准盘点人选。
2. 把任务拆成相互独立的子任务(强耦合不硬拆),按各智能体 description 分派;没有合适人选用 general-purpose。只读智能体不派写任务。
3. 独立子任务在同一条消息里用多个 Agent 调用并行派发;有依赖的串行。派发消息写清范围、上下文、期望产出与只读约束。
4. 子智能体的最终报告用户看不到,必须转述;合并去重成一份最终报告,标注分歧与未决项。未完成的不得编造结果。

> 完整流程与红线以 `agent-team` 技能为准,本命令是其快捷入口。
14 changes: 14 additions & 0 deletions external_plugins/agent-manager/hooks/hooks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "bash \"${ZCODE_PLUGIN_ROOT}/scripts/inventory.sh\""
}
]
}
]
}
}
27 changes: 27 additions & 0 deletions external_plugins/agent-manager/scripts/inventory.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
# SessionStart hook: print a compact inventory of locally defined subagents.
# Runs at every session start; stdout is injected as context. Keep it short and
# fail-safe: any error must never block session start.
set -uo pipefail

print_dir() {
local dir="$1" scope="$2"
[ -d "$dir" ] || return 0
local f base name desc
for f in "$dir"/*.md; do
[ -e "$f" ] || continue
base=$(basename "$f" .md)
name=$(grep -m1 '^name:' "$f" 2>/dev/null | sed -e 's/^name:[[:space:]]*//' -e 's/^"//' -e 's/"[[:space:]]*$//')
desc=$(grep -m1 '^description:' "$f" 2>/dev/null | sed -e 's/^description:[[:space:]]*//' -e 's/^"//' -e 's/"[[:space:]]*$//')
[ -n "$name" ] || name="$base"
[ ${#desc} -gt 60 ] && desc="${desc:0:60}…"
echo "- $name [$scope] ${desc:+— $desc}"
done
}

echo "本地智能体定义(agent-manager 盘点):"
n=$(print_dir "$HOME/.zcode/agents" "用户级" | wc -l)
print_dir "$HOME/.zcode/agents" "用户级"
print_dir "$PWD/.zcode/agents" "工作区级"
[ "$n" = "0" ] && [ ! -d "$PWD/.zcode/agents" ] && echo "- (无本地定义文件,仅运行时内置智能体可用)"
exit 0
64 changes: 64 additions & 0 deletions external_plugins/agent-manager/skills/agent-registry/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
name: agent-registry
description: 管理 ZCode 智能体(subagent)定义文件:盘点有哪些智能体、查看某个智能体的配置、新建/修改/删除智能体定义、校验定义文件是否规范。当用户说「列出我的智能体」「有哪些 agent」「新建一个智能体」「改一下某个智能体的提示词」「检查智能体配置」等针对智能体定义本身的管理需求时使用;如果用户是想让多个智能体一起干活,应改用 agent-team 技能。
---

# 智能体定义管家

管理智能体(subagent)的 Markdown 定义文件。每份定义 = YAML frontmatter(名称、职责等)+ 正文系统提示词。

## 定义文件位置(作用域)

| 作用域 | 目录 | 权限 |
|---|---|---|
| 用户级 | `~/.zcode/agents/*.md`(Windows 下通常为 `C:\Users\<你>\.zcode\agents\`) | 可读写,全局生效 |
| 工作区级 | `<工作区>/.zcode/agents/*.md` | 可读写,仅本工作区生效;目录不存在时按需创建 |
| 插件自带 | ZCode 插件缓存目录下的 agents | 只读:可盘点,不要修改 |

工作区未知时用当前会话的工作目录。插件缓存路径不要凭空猜测,只盘点实际确认存在的文件。

## 定义格式(以本机现有文件实测为准)

```markdown
---
name: "crawl" # 必填,小写连字符,应与文件名同名
description: "一句话职责" # 必填,主会话据此决定派不派它
color: yellow # 可选
injectAgentsMd: true # 可选
tools: Read, Bash # 可选,逗号分隔;缺省继承全部工具
---

正文 = 该智能体的系统提示词(人设、职责、约束、输出要求)。
```

## 操作流程

### 盘点(list)
1. 扫描上述目录的 `*.md`,只统计真实存在的文件。
2. 逐个读 frontmatter,输出表格:名称 | 作用域 | 工具 | 一句话职责。
3. 同名出现在多个作用域时标 ⚠️,提示用户确认哪个生效;不要编造作用域优先级规则。
4. 会话系统提示里的「Available agent types」是运行时的权威清单:盘点结论要和它对账,差异要说明(例如插件运行时注入的智能体在磁盘上没有对应文件)。

### 查看(show <名称>)
定位并完整展示 frontmatter 与正文;找不到时列出相近名称供选择。

### 新建(new)
1. 向用户确认:名称、一句话职责、系统提示词要点、需要哪些工具、作用域(默认用户级)。
2. 按上面模板写文件;文件名 = name = 小写连字符。
3. 写完回读确认落盘,并提醒用户:新智能体通常要到下个会话才出现在可用列表中。

### 修改(edit <名称>)
先读原文,用最小编辑修改,改完展示改动供用户确认。保留用户已有的 frontmatter 字段,不顺手重排。

### 校验(check)
对每个 `*.md` 检查:
- frontmatter 存在且可解析;name、description 非空;
- name 与文件名一致(不一致给警告,不擅自改名);
- 正文非空;
- tools 里出现的都是本环境真实存在的工具名;
- 无未解析占位符、无乱码或编码异常。

每个文件输出一行:通过 / 警告 / 失败,附 `文件:行号` 证据。只报告,不擅自修复。

### 删除(delete <名称>)
先展示文件内容并获得用户明确确认后才删除;优先建议「改 description 让它不再被派发」而不是物理删除。
Loading