# opccmp **Repository Path**: joyapple2020/opccmp ## Basic Information - **Project Name**: opccmp - **Description**: opccmpopccmpopccmpopccmp - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-27 - **Last Updated**: 2026-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
# Hi OPC · 一人公司 **把老板的一句话目标,交给一个由 AI 员工组成的"小公司"去完成。** 一个基于 [pi agent sdk](https://github.com/badlogic/pi-mono)(`@mariozechner/pi-ai` + `@mariozechner/pi-agent-core`)构建的多智能体编排系统:CEO 接收任务、拆解计划、并行派工,员工(市场调研 / 内容创作 / 电商运营 / 运营专员)各司其职,共享黑板协作,CEO 自动审核返工,老板全程掌控。 ``` 🔒 商业软件 · 未经授权禁止使用 Copyright © 2026 joyapple2020 · All Rights Reserved ```
--- ## ✨ 功能特性 | 能力 | 说明 | |---|---| | 🧠 **层级智能体架构** | CEO(组织者)+ 审核官 + 4 类内置岗位 + 自定义岗位(插件化) | | ⚡ **并行派工** | `assign_task` 异步启动,`await_tasks` 收集结果,多员工同时干活 | | 📋 **自动审核返工** | CEO 标准 checklist 审核,不合格自动打回,超上限升级老板裁决 | | 📝 **共享黑板** | 员工不拉群,所有协作写黑板,结构化站会同步全局 | | 🗂️ **历史归档** | 每轮任务自动快照到 `runtime/history/`;支持归档/删除轮次与交付物 | | 🖥️ **Web 驾驶舱** | 浅色 Linear 风 SPA + **暗色模式 + ⌘K 命令面板 + 桌面通知** | | 🌐 **多模型配置** | 统一默认 + 每座位 text/image/video 三用途;20+ 厂商可选 | | 🔑 **密钥管理** | Web UI 配置 API key;**AES-256-GCM 加密存储**,脱敏展示,真实连通性测试 | | 🛡️ **Web 安全** | 访问口令 / **多用户(admin+只读)角色** + Origin 校验(仅本机浏览器) | | 🛠️ **真实工具** | `web_fetch` / `web_search`(Bing 兜底)/ `read_pdf` / `write_file` / `generate_image` / `generate_video` / `export_docx` / `export_xlsx` / `generate_chart` / `analyze_data` / `read_image` / `export_pptx` | | 🧠 **跨轮记忆** | 每轮结论入知识库,**向量检索**下轮 CEO 自动参考 | | 📊 **数据洞察** | 成本趋势图 / **交付物全文搜索** / **运营周报自动生成** | | 📐 **任务模板库** | 预置「新品上市」等模板,填变量一键下达 | | ⏰ **定时自动化** | cron 调度,到点自动启动目标任务 | | 🏢 **多公司隔离** | `ONECMP_COMPANY=name` 启动,各公司数据互相隔离 | | 💰 **预算控制** | 每轮成本上限,超限自动叫停并告警 | | 🛟 **可靠性** | 员工回合上限 + 失败自动重试 + **模型自动降级** + **断点续跑** | | 📜 **审计日志** | 模型/密钥/任务/删除等敏感操作全记录(runtime/audit.log) | | 🎭 **演示模式** | 无需任何 API key 即可跑通全流程(mock),真实模式一键切换 | ## 🏗️ 公司架构 ``` ┌────────────┐ │ 老板(你) │ ← Web UI / 控制台 介入 └──────┬─────┘ │ 下达目标 ┌──────▼─────┐ │ CEO │ ← 拆解计划、并行派工、站会、审核、提交 └──┬──────┬──┘ 并行│ │并行 ┌─────────▼─┐ ┌─▼─────────┐ ┌──────────┐ ┌────────────┐ │ 市场调研员 │ │ 内容主笔 │ │ 电商运营 │ │ 运营专员 │ └───────────┘ └───────────┘ └──────────┘ └────────────┘ ↑ ↑ ↑ ↑ └──── 共享黑板 + 真实工具(web_fetch / search / pdf) ──┘ ``` | 角色 | 职责 | 默认模型 | |---|---|---| | **CEO** | 拆解计划、并行派工、站会、提交最终交付 | deepseek-v4-flash | | **审核官** | 每次交付按 checklist 自动审,可打回返工 | deepseek-v4-flash | | **市场调研员** | 调研报告、竞品分析 | deepseek-v4-flash | | **内容主笔** | 公众号 / 小红书 / 脚本 / 文案 | deepseek-v4-flash | | **电商运营专家** | 选品、listing、定价 | deepseek-v4-flash | | **运营专员** | 增长、活动、复盘 | deepseek-v4-flash | > 模型厂商与型号全部在 `company.config.json` 中配置,支持 20+ 厂商 > (OpenAI / Anthropic / DeepSeek / Kimi / MiniMax / Google / xAI / Groq / OpenRouter / Mistral …),不同岗位可混用。 ## 🚀 快速开始 ### 环境要求 - Node.js ≥ 20 - npm ### 1. 安装依赖 ```bash npm install ``` ### 2. 演示模式(无需任何 API key) ```bash npm run demo # 控制台版:完整跑一遍全流程 npm run web # Web UI 版:浏览器打开 http://127.0.0.1:7717 ``` ### 3. 真实模型模式 ```bash # 方式 A:Web UI 配置(推荐) npm run web # 启动后进「模型与密钥」页,粘贴你的 API key # 方式 B:.env 文件 cp .env.example .env # 编辑 .env,填入你拥有的 key(填一个即可,再把 company.config.json 的座位指向该厂商) ``` 启动后下达任务: ```bash npm start -- "为一款便携榨汁杯做新品上市:出竞品调研 + 小红书种草文 + 电商 listing 优化建议" # 或 npm start -- --web -- "做一份 Q4 内容运营方案" ``` > 💡 `BRAVE_API_KEY` 可选:配置后 `web_search` 走 Brave API;不配置会自动降级到 Bing 无 key 抓取。 > 💡 省钱建议:日常任务用便宜模型(如 `deepseek-v4-flash`),关键角色(CEO/审核官)单独用更强模型。 ## 🖥️ Web 驾驶舱 `npm run web` 启动后,浏览器打开 **http://127.0.0.1:7717**: - **工作台**(首页):4 张指标卡(成本/任务/在岗/评分)+ 三栏实时视图(任务列表 / 实时工作流 / 成本+黑板) - **交付物**:按项目(当前轮 + 历史归档)分组浏览,支持 md/pdf/图片/视频/Word/Excel 等格式预览与下载 - **模型配置**:统一默认 + 每座位 text/image/video 三用途 + 密钥管理面板 - **历史**:轮次时间线,含最终交付包 / 团队参与 / 任务明细 / 黑板回放 - 全程 SSE 实时推送,老板可随时 `插话 / 叫停 / 审批` ## ⚙️ 配置说明 ### 模型座位表 `company.config.json` ```jsonc { "defaults": { "text": { "provider": "deepseek", "model": "deepseek-v4-flash" }, "image": { "provider": "openai", "model": "gpt-image-1" }, "video": { "provider": "minimax", "model": "MiniMax-M2.7" } }, "ceo": { "provider": "deepseek", "model": "deepseek-v4-flash" }, "review": { "provider": "deepseek", "model": "deepseek-v4-flash", "maxRevisions": 2 }, "workers": { "researcher": { "provider": "deepseek", "model": "deepseek-v4-flash" }, "writer": { "provider": "deepseek", "model": "deepseek-v4-flash" } // ... }, "approvals": { "plan": true, "final": true }, "maxCeoTurns": 40 } ``` - **统一默认**:改 `defaults`,未单独配置的座位自动跟随;「应用到所有员工」一键下发(CEO/审核官/员工全覆盖) - **单独覆盖**:每个座位可配 `models.text / image / video`,分别用于对话、生图、生视频 - **密钥**:Web UI「模型与密钥」页直接配置,或放 `runtime/secrets.json`,启动时自动注入 ### API key 环境变量 | Provider | 环境变量 | |---|---| | OpenAI | `OPENAI_API_KEY` | | Anthropic | `ANTHROPIC_API_KEY` | | DeepSeek | `DEEPSEEK_API_KEY` | | Kimi(Moonshot) | `MOONSHOT_API_KEY` | | MiniMax | `MINIMAX_API_KEY` / `MINIMAX_CN_API_KEY` | | Google | `GEMINI_API_KEY` | | xAI | `XAI_API_KEY` | | OpenRouter | `OPENROUTER_API_KEY` | | 搜索(Brave,可选) | `BRAVE_API_KEY` | ## 📁 目录结构 ``` onecmp/ ├── company.config.json # 模型座位表(统一默认 + 每座位多用途) ├── package.json ├── tsconfig.json ├── .env.example # 各厂商 API key 环境变量模板 ├── LICENSE # 商业软件许可协议(未授权禁止使用) ├── README.md ├── src/ │ ├── config.ts # 配置加载 + 模型解析 + .env │ ├── secrets.ts # 运行时密钥管理(runtime/secrets.json) │ ├── blackboard.ts # 共享黑板(jsonl + md) │ ├── roles.ts # 岗位 system prompt │ ├── tools.ts # 员工工具:write_artifact / web_fetch / search / pdf / write_file / 生成 / 导出 … │ ├── tools/research.ts # 真实工具实现(HTML 抓取 / 搜索 / PDF / 图像生成) │ ├── tools/video.ts # 视频生成(OpenAI Sora 可插拔) │ ├── tools/export.ts # docx / xlsx 报告导出 │ ├── scheduler.ts # 极简 cron 定时调度 │ ├── review.ts # CEO 标准自动审核 │ ├── company.ts # 编排器:任务状态机、并行派工、审核循环、输入总线 │ ├── ui.ts # 控制台渲染 + 兜底审批 │ ├── mock.ts # 演示用剧本化 streamFn(无 key 可跑) │ ├── web/server.ts # HTTP Server + SSE + 命令路由 │ ├── web/auth.ts # 访问口令 / 会话 / Origin 校验 / AES 加解密 │ ├── index.ts # CLI 入口 │ └── types/ # 第三方无类型声明的兜底 ├── web/ # Web UI 静态资源(React + htm + Tailwind,零构建) │ ├── index.html / styles.css / icons.js / app.js └── runtime/ # 运行时生成(已 gitignore,不进仓库) ├── blackboard.md / .jsonl # 全公司协作记录 ├── state.json # 任务状态机 ├── final-delivery.md # 最终交付包 ├── tasks// # 每任务交付物 ├── history/<时间戳>/ # 每轮归档快照 └── secrets.json # 你的 API key(勿提交!) ``` ## 🔐 安全与运维 | 能力 | 用法 | |---|---| | Web 访问口令 | `npm start -- --web --password=你的口令`;设置后浏览器需先登录,所有 API 受保护 | | 多用户角色 | `npm start -- --web --user=admin:密码:admin --user=小明:密码:readonly`;只读账号不能做任何写操作 | | 密钥加密 | 设了口令后 `runtime/secrets.json` 用 **AES-256-GCM** 加密存储;未设口令则明文(启动会提示) | | Origin 校验 | 服务端拒绝非本机来源的浏览器请求(防 CSRF) | | 密钥连通测试 | 「模型与密钥」页点「测」→ 真实调用一次最便宜模型验证 key | | 审计日志 | 模型/密钥/任务/删除等敏感操作自动记录到 `runtime/audit.log` | | 预算上限 | `company.config.json` 加 `"budgetLimit": 5`,累计成本超限自动叫停并告警 | | 中断恢复 | 服务重启时自动检测未完成任务并归档,不污染新一轮 | | 定时任务 | `company.config.json` 加 `"schedules": [{"cron": "0 9 * * 1-5", "objective": "..."}]`(5 段 cron) | | 多公司 | `ONECMP_COMPANY=公司名 npm start -- --web` 启动独立实例,数据隔离到 `runtime/companies/<名>/` | | 任务模板 | 新建 `runtime/templates/xxx.md`(首行 `# 模板名`,支持 `{{变量}}`),Web UI 下达目标时选模板填变量 | ## 🧩 自定义扩展 - **加岗位(改代码)**:编辑 `src/roles.ts` 加一段 `RoleDef`,`company.config.json` 的 `workers` 加一行 - **加岗位(不改代码)**:在 `runtime/custom-roles.json` 加一条 `{id, name, jobDescription, systemPrompt, provider?, model?}` 即可热加载 - **改审核标准**:编辑 `src/review.ts` 的 `DEFAULT_CHECKLIST` - **接真实业务工具**:员工工具在 `src/tools.ts`,可直接加 web 搜索/图表生成/文档导出等 - **技能市场**:扩展页「技能市场」tab 可一键安装内置技能库(docx/xlsx/pptx/pdf/web-research/translate,已适配 Node 工具链、零 Python 依赖);也可粘贴 GitHub / Gitee 仓库或 `skill.json` 直链远程安装(自动找 `SKILL.md`,GitHub 不可达时自动走 Gitee 镜像),安装后在「Skills」或「团队」页分配岗位 - **换 UI 主题**:`web/styles.css` + `web/app.js` 的 Tailwind 配置 ## 📜 许可证 **本软件为商业软件,采用商业软件许可协议,未经授权禁止使用。** - 未经许可方书面授权,不得使用、复制、修改、分发、商业化本软件全部或部分 - 本仓库仅作展示;如需授权或商务合作,请通过 Gitee 仓库联系 - 详细条款见 [LICENSE](LICENSE) ``` 🔒 商业软件 · 未经授权禁止使用 Copyright © 2026 joyapple2020 · All Rights Reserved ```