Skip to content

Repository files navigation

opencode-empire

opencode-empire 是一个 OpenCode 插件,用于提供带有"司礼监/内阁/六部"风格的多 agent 编排体验。

启动后默认选中司礼监(empire-eunuch)。日常任务司礼监直接处理或以【传旨】形式向六部及内阁派单;需要廷议时切换至内阁(empire-cabinet)。

Agents

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 工部:代码实现

Command

  • /廷议:请三位隐藏大学士独立审议(需在 empire-cabinet 主代理下使用)。

Installation

npx --yes opencode-empire install

安装器会创建:

  • ~/.config/opencode/opencode-empire.json:插件专属配置,用于设置模型、语气、禁用角色等。
  • ~/.config/opencode/opencode.json:OpenCode 全局配置。安装器只会确保其中包含 "opencode-empire" 插件,不会覆盖已有字段。

保存后需要重启 OpenCode,运行中的会话不会热加载新配置。

Configuration

编辑:

~/.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: denybash: ask,工部 edit: ask,所有子代理 task: deny。如果通过插件 tuple 直接启用且未创建专属配置,则运行时默认仍为全部 allow,但子代理仍会被插件强制加上 task: deny

权限示例(以下演示按 agent 覆盖配置):

{
  "agents": {
    "empire-cabinet": {
      "permission": { "edit": "deny", "bash": "ask" }
    },
    "empire-ministry-works": {
      "permission": { "edit": "ask" }
    }
  }
}

Workflow

  1. 日常使用 empire-eunuch(司礼监,默认选中)。
  2. 自然描述任务。
  3. 简单任务司礼监直接处理。六部任务(探索/实现/审查)司礼监以传旨直接发部,办理后复奏。
  4. 复杂票拟需求:司礼监传旨内阁票拟 → 内阁回报票拟 → 司礼监呈皇帝批红 → 批红后传旨六部执行。
  5. 需要多方独立审议(廷议)时,切换到 empire-cabinet,使用 /廷议 召大学士。
  6. 六部办理后,审阅 【内阁复奏】【本部复奏】

传旨格式

【传旨】
着令:[内阁/某部]
差事:[任务描述]
办毕复奏。

Permissions

安装器生成的专属配置会默认收紧权限;如果未使用安装器创建 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" }
    }
  }
}

支持的权限键:editbashwebfetchexternal_directory,值为 allowaskdeny

Options

  • tone:角色化程度,支持 lightmediumhigh
  • requireDispatchApproval:是否要求派工前再次确认。默认为 true;设为 false 时,内阁可在已批红票拟范围内直接发部办理。
  • agents:按 agent ID 聚合配置单个 agent,支持 modelpermission
  • agents.<id>.model:按 agent ID 覆盖模型。
  • agent.<id>.variant:在 opencode.json 中按 agent ID 设置 OpenCode 模型变体;插件会保留同名 agent 的既有 variant
  • agents.<id>.permission:覆盖该 agent 的权限配置,只需写需要调整的权限项。详见 Permissions
  • disabledRoles:禁用指定 agent;empire-eunuchempire-cabinet 为必需角色,不能禁用。

Development

npm install
npm run verify

项目结构

src/
  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

修改提示词

  1. 编辑 src/prompts/*.md 中的正文
  2. 运行 npm run generate 重新生成 generated.ts
  3. 运行 npm run verify 确认类型检查和测试通过

About

opencode-empire 是一个 OpenCode 插件,用于提供带有"司礼监/内阁/六部"风格的多 agent 编排体验。

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages