opencode-empire 是一个 OpenCode 插件,用于提供带有"司礼监/内阁/六部"风格的多 agent 编排体验。
启动后默认选中司礼监(empire-eunuch)。日常任务司礼监直接处理或以【传旨】形式向六部及内阁派单;需要廷议时切换至内阁(empire-cabinet)。
| Agent | 可见 | 模式 | 职责 |
|---|---|---|---|
empire-eunuch |
是 | primary | 司礼监:日常主 agent。日常问答与简单任务直办,以传旨向六部/内阁派单;需廷议时建议切换内阁 |
empire-cabinet |
是 | all | 内阁:主/子代理。主代理负责票拟、廷议、发部、复奏。子代理被司礼监传旨调用直出票拟 |
empire-grand-secretary-a |
否 | subagent | 隐藏大学士,负责独立审议 |
empire-grand-secretary-b |
否 | subagent | 隐藏大学士,负责独立审议 |
empire-grand-secretary-c |
否 | subagent | 隐藏大学士,负责独立审议 |
empire-ministry-personnel |
是 | subagent | 吏部:执行方案 |
empire-ministry-revenue |
是 | subagent | 户部:代码探索 |
empire-ministry-rites |
是 | subagent | 礼部:方案审核与交互文案 |
empire-ministry-war |
是 | subagent | 兵部:执行流程与自动化 |
empire-ministry-justice |
是 | subagent | 刑部:代码审查与测试把关 |
empire-ministry-works |
是 | subagent | 工部:代码实现 |
/廷议:请三位隐藏大学士独立审议(需在 empire-cabinet 主代理下使用)。
npx --yes opencode-empire install安装器会创建:
~/.config/opencode/opencode-empire.json:插件专属配置,用于设置模型、语气、禁用角色等。~/.config/opencode/opencode.json:OpenCode 全局配置。安装器只会确保其中包含"opencode-empire"插件,不会覆盖已有字段。
保存后需要重启 OpenCode,运行中的会话不会热加载新配置。
编辑:
~/.config/opencode/opencode-empire.json
示例:
{
"$schema": "https://unpkg.com/opencode-empire@latest/opencode-empire.schema.json",
"tone": "medium",
"requireDispatchApproval": true,
"agents": {
"empire-cabinet": {
"model": "cockpit/gpt-5.5"
},
"empire-ministry-works": {
"model": "cockpit/gpt-5.5",
"permission": { "edit": "ask" }
}
},
"disabledRoles": []
}模型变体请配置在 OpenCode 全局配置 ~/.config/opencode/opencode.json 的同名 agent 上:
{
"agent": {
"empire-cabinet": { "variant": "high" },
"empire-ministry-works": { "variant": "high" }
}
}安装器生成的默认 opencode-empire.json 会收紧非工部权限,例如非工部 edit: deny、bash: ask,工部 edit: ask,所有子代理 task: deny。如果通过插件 tuple 直接启用且未创建专属配置,则运行时默认仍为全部 allow,但子代理仍会被插件强制加上 task: deny。
权限示例(以下演示按 agent 覆盖配置):
{
"agents": {
"empire-cabinet": {
"permission": { "edit": "deny", "bash": "ask" }
},
"empire-ministry-works": {
"permission": { "edit": "ask" }
}
}
}- 日常使用
empire-eunuch(司礼监,默认选中)。 - 自然描述任务。
- 简单任务司礼监直接处理。六部任务(探索/实现/审查)司礼监以传旨直接发部,办理后复奏。
- 复杂票拟需求:司礼监传旨内阁票拟 → 内阁回报票拟 → 司礼监呈皇帝批红 → 批红后传旨六部执行。
- 需要多方独立审议(廷议)时,切换到
empire-cabinet,使用/廷议召大学士。 - 六部办理后,审阅
【内阁复奏】或【本部复奏】。
【传旨】
着令:[内阁/某部]
差事:[任务描述]
办毕复奏。
安装器生成的专属配置会默认收紧权限;如果未使用安装器创建 opencode-empire.json,插件运行时默认权限全部为 allow,但 mode: subagent 的 agent 会强制带 task: deny,不可再新建子代理。
如需收紧权限,在 opencode-empire.json 中按 agent 配置 permission,只需写需要覆盖的项:
{
"agents": {
"empire-cabinet": {
"permission": { "edit": "deny", "bash": "ask" }
},
"empire-ministry-works": {
"permission": { "edit": "ask" }
}
}
}支持的权限键:edit、bash、webfetch、external_directory,值为 allow、ask、deny。
tone:角色化程度,支持light、medium、high。requireDispatchApproval:是否要求派工前再次确认。默认为true;设为false时,内阁可在已批红票拟范围内直接发部办理。agents:按 agent ID 聚合配置单个 agent,支持model、permission。agents.<id>.model:按 agent ID 覆盖模型。agent.<id>.variant:在opencode.json中按 agent ID 设置 OpenCode 模型变体;插件会保留同名 agent 的既有variant。agents.<id>.permission:覆盖该 agent 的权限配置,只需写需要调整的权限项。详见 Permissions。disabledRoles:禁用指定 agent;empire-eunuch与empire-cabinet为必需角色,不能禁用。
npm install
npm run verifysrc/
prompts.ts # prompt 组装逻辑(import 常量 + 动态拼接)
prompts/
eunuch.md # 司礼监 prompt 正文
cabinet.md # 内阁 prompt 正文
grand-secretary.md # 大学士 prompt 正文({{title}} 占位符)
ministry-*.md # 六部 prompt 正文({{title}}/{{description}} 占位符)
generated.ts # npm run generate 生成,不提交
scripts/
generate-prompts.ts # 读取 .md → 生成 generated.ts
- 编辑
src/prompts/*.md中的正文 - 运行
npm run generate重新生成generated.ts - 运行
npm run verify确认类型检查和测试通过