AgentServer 是一个自托管的 Agent 服务:在服务端接入 Claude Code 和 Codex,用统一的 API 给多个内部业务前端提供 Agent 能力,并附带一个管理后台(含 Playground 对话调试)。
状态:M1 已完成(Claude 主链路 + 管理后台),M2 进行中 · 最后更新:2026-10-22
docs/
├─ README.md 本文件:索引、术语、文档约定
├─ design/ 设计文档(随设计演进持续更新)
│ ├─ 01-requirements.md 需求与范围
│ ├─ 02-architecture.md 总体架构、模块划分、运行时模型
│ ├─ 03-providers.md 引擎接入:Claude Agent SDK / Codex app-server
│ ├─ 04-api.md 对外 API、统一事件模型、交互协议
│ ├─ 05-data-model.md 数据模型与存储
│ ├─ 06-security.md 隔离、沙箱、网络、凭证与合规
│ ├─ 07-files-and-knowledge.md 文件/截图上传、文档分析、本地与远程资料检索
│ ├─ 08-platform-connectors.md 内部平台数据接入(MCP Gateway)
│ ├─ 09-admin-ui.md 管理后台与 Playground(含视觉规范)
│ ├─ 10-deployment.md 部署与运维
│ └─ 11-roadmap.md 里程碑与待决事项
├─ adr/ 架构决策记录(一事一档,只追加不改写;推翻时新增一条并标注 Superseded)
└─ research/ 调研材料(选型依据、参考实现分析)
| # | 决策 | 状态 |
|---|---|---|
| 0001 | 后端采用 Node.js + TypeScript | Accepted |
| 0002 | Claude 通过 Agent SDK 接入 | Accepted |
| 0003 | Codex 通过 codex app-server 接入 |
Accepted |
| 0004 | 隔离:引擎沙箱 + 专用用户 + systemd 加固 | Superseded → 0009 |
| 0005 | 模型凭证使用 CLI 登录态,按使用者路由 | Superseded → 0008 |
| 0006 | 内部平台数据通过统一 MCP Gateway 暴露 | Accepted(连接器暂缓) |
| 0007 | 后台用 Vue 3 + UnoCSS,视觉对齐 Claude VS Code 插件 | Accepted |
| 0008 | 复用本人终端的 CLI 登录态,不区分使用者 | Accepted |
| 0009 | 暂不使用专用用户:引擎沙箱 + systemd 加固 + 应用层校验 | Accepted |
| 0010 | 文件读写权限由 Profile 配置,三层合并 | Accepted |
| 0011 | 路径等运行配置由后台管理,不写死在配置文件中 | Accepted |
| 术语 | 含义 |
|---|---|
| Provider / 引擎 | 底层 Agent 实现:claude 或 codex |
| Platform / 平台 | 接入 AgentServer 的一个上层业务前端(持有一个 API Key);服务不区分终端使用者 |
| Session / 会话 | 一段多轮对话,绑定一个 Provider、一个 Workspace |
| Run | 会话中的一次"用户发言 → Agent 完成"的执行过程 |
| Event | Run 过程中产生的统一事件(文本增量、工具调用、交互请求…) |
| Interaction / 交互 | Agent 需要人参与的点:审批(approval)或提问(question) |
| Workspace / 工作区 | 会话的独立目录,存放上传文件与产出文件 |
| Profile | Agent 预设:提示词、模型、工具、连接器、权限模式的组合 |
| Connector / 连接器 | (暂缓)一个内部平台的数据接入定义,通过 MCP Gateway 暴露为工具 |
| Knowledge Root / 资料库 | 在后台登记的本地资料目录,Profile 启用后 Agent 可以访问 |
| File Access Policy / 文件访问策略 | Profile 中的可读/可写/禁止路径配置,与全局禁止项、基线合并后生效 |