01 需求与范围
1. 背景与目标
在一台自有 Linux 服务器上运行 AgentServer,把 Claude Code 和 Codex 的 Agent 能力以统一 API 提供给多个内部业务平台使用,并提供管理后台进行配置、调试和监控。
2. 使用场景
| 维度 |
结论 |
| 使用者 |
本人;服务不区分使用者,只对上层平台提供 API |
| 接入方 |
多个自建内部平台(前端技术栈:Vue + TS + UnoCSS),每个平台一个 API Key |
| 任务类型 |
数据分析、资料查找与分析、生成数据文档/报表等通用任务;一般不写代码 |
| 工作区 |
不需要 git;每个会话一个独立目录 |
| 资料来源 |
本地资料(服务器目录,路径在后台设定)+ 远程资料(公网检索);内部平台数据接入暂缓 |
| 输入 |
文本、数据文件(CSV/Excel/PDF/Word…)、截图图片 |
| 模型凭证 |
复用本人在终端登录的 CLI 登录态(~/.claude、~/.codex),见 06-security §7 |
| 部署 |
单机单实例 |
| 后台用户 |
仅本人 |
3. 功能需求
3.1 Agent 接入(F-AGENT)
- F-AGENT-1 支持 Claude Code(Agent SDK)和 Codex(app-server)两个引擎
- F-AGENT-2 会话:创建、多轮对话、恢复(服务重启后可继续)、中断、删除
- F-AGENT-3 流式输出:文本增量、思考过程、工具调用与结果、文件产出、用量
- F-AGENT-4 统一事件模型,前端不感知引擎差异
- F-AGENT-5 交互式人工介入:工具执行审批、Agent 主动提问,前端实时响应后 Agent 继续执行
- F-AGENT-6 Profile 预设:提示词、模型、权限模式、可用工具、技能(Skills)、文件访问策略(可读/可写/禁止路径)
- F-AGENT-7 输入支持图片(截图)与文件附件
3.2 文件与资料(F-DATA)
- F-DATA-1 上传数据文件和截图到会话工作区
- F-DATA-2 浏览、预览、下载工作区产出文件(报告、图表、xlsx/docx/pdf)
- F-DATA-3 本地资料库:在后台设定资料目录(路径、说明、读写属性),Profile 选择启用
- F-DATA-4 远程检索:公网搜索与网页抓取
- F-DATA-5 (暂缓)内部平台数据访问:通过 MCP Gateway 连接器提供,设计见 08
3.3 对外 API(F-API)
- F-API-1 REST + SSE;SSE 支持断线续传
- F-API-2 平台级 API Key 鉴权;不区分使用者
- F-API-3 提供 TS 客户端 SDK 与 Vue 对话组件包,供各平台直接复用
3.4 管理后台(F-ADMIN)
- F-ADMIN-1 登录(单管理员)
- F-ADMIN-2 Playground:在后台直接与 Agent 对话以验证功能,视觉风格对齐 Claude VS Code 插件
- F-ADMIN-3 会话浏览与事件回放
- F-ADMIN-4 Profile 管理(可从 Playground 另存)
- F-ADMIN-5 引擎状态:登录状态、可用模型、限额信息(只读)
- F-ADMIN-6 API Key 管理
- F-ADMIN-7 资料库管理(路径设定、可见性检测)
- F-ADMIN-10 系统设置:路径(工作区、技能、Python 环境)、全局禁止路径、网络白名单、并发与超时、保留期
- F-ADMIN-8 概览:运行中任务、用量趋势、错误
- F-ADMIN-9 审计日志:命令执行、越权访问拦截、审批记录
4. 非功能需求
| 编号 |
要求 |
| NF-1 安全 |
Agent 只能写自己的工作区;看不到服务器上的个人文件与凭证;不能直接访问局域网 |
| NF-2 资源 |
全局与每引擎并发上限;单进程内存/CPU 上限;超出排队 |
| NF-3 可恢复 |
服务重启后历史会话可继续;中断中的 Run 标记为 interrupted |
| NF-4 可观测 |
全量事件落库可回放;结构化日志;用量统计 |
| NF-5 可维护 |
引擎 CLI 版本锁定,升级需在 Playground 回归验证 |
| NF-6 合规 |
订阅登录态仅供本人使用(见 06-security §7) |
5. 不做(Out of Scope)
- 多租户、对外公开服务、计费
- 代码仓库/git 集成、PR 工作流
- 多实例/集群部署
- 后台多管理员与 RBAC
- 区分终端使用者、按使用者路由凭证
- 内部平台连接器(框架已设计,暂缓实现)