状态: Draft (rev.2) 日期: 2026-06-07 变更负责人: Kenny Liu 影响范围: 产品定位、Web UI、Agent 模板、知识库、分发方式、商业化路径
| 版本 | 日期 | 主要调整 |
|---|---|---|
| rev.1 | 2026-06-07 | 初稿: "从 PaaS 转向单机版个人助手", 暗示删除/简化多租户 |
| rev.2 | 2026-06-07 | 改为"保留多租户能力, 引入 deployment_mode 三档": desktop 默认, lab 团队共享, paas 云端完整。所有 audit 已修复的多租户 scoping (#14 #28 #30 等) + 已落地的 132 个 test 在 lab/paas 模式下自动复用, 不删任何东西。M3 时间从 3-4 个月缩短到 2-3 个月。 |
| rev.2-decisions | 2026-06-07 | §十三 12 个开放问题全部记录决策 + rationale; 解除 M0 阻塞。同步起草 ROADMAP.md 把 M0-M5 落到团队跟踪面板。 |
当前项目原始定位偏向 LambdAgent PaaS:通过 lambdagent 内核、agentpaas 服务层和 Web UI,为用户提供可配置、可部署、可管理的 Agent 平台。
本次需求变更将第一阶段产品重心调整为:
面向教授、科研人员、医生等高知识密度职业的单机版专业个人助手。 但保留多租户代码与能力作为团队版 (Lab) 与云端版 (PaaS) 的天然升级路径。
产品第一优先级是可以下载安装、默认本地运行、可加载专业智能体包的桌面/本地 Web 应用。多租户路由、tenant scoping、RBAC、audit log 等已实现能力不删除, 改为按 deployment_mode flag 默认隐藏或暴露:
| 部署模式 | 默认场景 | 多租户路由 | 网络绑定 | 首次启动 |
|---|---|---|---|---|
desktop |
macOS / Windows installer 默认 | 路由仍挂载, webui 不显示 | 127.0.0.1 only |
自动 bootstrap 单 tenant + API key |
lab |
课题组/科室局域网共享 | webui 显示, 1 tenant + N user | 局域网 IP | SetupWizard, 团队 admin 邀请成员 |
paas |
云端服务化/未来形态 | 完整暴露 | 0.0.0.0 经过反代 |
现行 PaaS 流程 |
升级路径线性: desktop → lab → paas, 只换一行 config, 不动 319 处 tenant_id 代码, 不动 132 个测试。
直接以 PaaS 形态进入市场会过早遇到以下问题:
| 问题 | 影响 |
|---|---|
| 多租户隔离复杂 | 需要完善 RBAC、租户隔离、沙箱、密钥管理 |
| 云端合规压力大 | 科研未发表数据、医学资料、企业文档不适合默认上传 |
| 用户价值表达抽象 | "Lambda Calculus Agent PaaS" 对非技术用户不直观 |
| 竞品正面压力大 | Dify、LangGraph、LangSmith、Langfuse 等已占据平台心智 |
| 冷启动部署门槛高 | 教授、医生等目标用户不愿配置 YAML、API、Docker |
教授、科研人员、医生存在大量本地知识工作流:
因此第一阶段更适合做:
本地资料 + 专业智能体 + 可追溯 workspace + 可下载应用
LambdAgent PaaS 是一个基于 Lambda 演算的 Agent 平台,用于构建、部署、运行和管理 AI Agent。
LambdAgent Desktop 是一个本地运行的专业 AI 工作台。用户可以导入自己的论文、笔记、指南和项目资料,并安装不同领域的智能体包来完成科研、写作、审稿、资料整理等任务。
优先使用面向用户的语言:
暂不作为主叙事使用:
| 用户 | 核心任务 |
|---|---|
| 教授 / PI | 审学生论文、写基金、整理研究方向、评估创新性 |
| 博士后 / 博士生 | 文献综述、实验计划、论文初稿、投稿修改 |
| 科研助理 | 批量整理 PDF、生成阅读笔记、维护课题知识库 |
| 用户 | 核心任务 |
|---|---|
| 临床医生 | 整理指南、总结文献、撰写病例报告草稿 |
| 医学科研人员 | 综述写作、Meta-analysis 辅助、课题申请 |
| 科室教学用户 | 指南学习、病例讨论材料准备 |
暂定名:
LambdAgent Desktop
科研场景版本可使用:
ResearchAgent Desktop
一个本地运行的科研 AI 工作台,能导入 PDF/Obsidian/Zotero 资料,安装专业智能体,对论文、基金、文献和研究计划生成可追溯报告。
| 模块 | 需求 |
|---|---|
| 部署模式 | 引入 deployment_mode = desktop \| lab \| paas, 默认 desktop。配置位置: 安装包写入 ~/.agentpaas/config.json, 环境变量 AGENTPAAS_DEPLOYMENT_MODE 覆盖。 |
| 本地安装 | macOS / Windows 至少支持一种稳定安装包;技术用户可用 Docker |
| 本地资料库 | 支持导入 PDF、Markdown、TXT;建立本地索引 |
| 工作区 | 每次任务生成独立 workspace/run_*,保存输入、输出、引用、产物 |
| 智能体包 | 内置不少于 3 个科研智能体 |
| 引用追踪 | 回答和报告中尽量保留来源文件、页码或段落 |
| 模型选择 | 支持 Claude Code / API provider / Ollama 本地模型 |
| 隐私模式 | 默认本地优先,明确显示哪些内容会发送给云端模型 |
| 报告导出 | Markdown 为必选;PDF/DOCX 可后续支持 |
| 多 tenant 兼容 | 单 tenant 默认, 但 tenants / users / api_keys schema 保留; lab/paas 模式下立即可用 (无需 schema 迁移) |
系统必须支持单机模式:
用户双击应用 / 执行启动脚本
→ 自动启动本地 agentpaas 服务
→ 自动打开本地 UI
→ 默认数据目录位于用户本机
要求:
系统必须提供本地数据目录设置:
~/LambdAgentDesktop/
agents/
agentpacks/
knowledge/
workspace/
models/
config/
用户应能在设置中查看和修改数据目录。
MVP 支持导入:
后续支持:
导入资料后,系统应执行:
索引失败的文件必须显示原因,不允许静默失败。
任何基于资料库生成的研究结论,必须尽量包含:
新增 agentpack 概念。一个智能体包是可下载、可安装、可版本化的目录:
agentpack/
manifest.yml
agents/
prompts/
knowledge/
examples/
README.md
manifest.yml 至少包含:
id: research.top-journal-reviewer
name: Top Journal Reviewer
version: 0.1.0
domain: research
audience:
- professor
- phd_student
entrypoint: agents/reviewer.yml
permissions:
network: false
file_write: workspace
shell: false
model:
recommended:
- claude-code/sonnet
- anthropic/claude-sonnet
- ollama/qwen
用户应能通过 UI 安装智能体包:
安装前必须显示权限摘要:
此智能体包将读取本地知识库,写入 workspace,不执行 shell,不访问网络。
MVP 内置至少 3 个智能体包:
| Agent Pack | 功能 |
|---|---|
research.literature-mapper |
对一个方向的 PDF 生成文献地图、方法分类、关键争议 |
research.top-journal-reviewer |
对论文生成顶刊审稿意见、接收概率、修改清单 |
research.grant-planner |
辅助生成基金立项依据、创新点、研究内容和风险 |
后续医学智能体包:
| Agent Pack | 功能 |
|---|---|
medical.guideline-summarizer |
总结指南、保留证据等级和章节引用 |
medical.case-report-assistant |
辅助病例报告写作,不给诊疗建议 |
medical.literature-update |
按疾病/技术方向生成近期文献更新 |
输入:
输出:
workspace/run_xxx/
input/
review_report.md
acceptance_estimate.json
revision_tasks.json
evidence_map.json
报告必须包含:
输入:
输出:
输入:
输出:
医学智能体必须默认显示安全边界:
本工具仅用于文献、指南、教学和写作辅助,不提供诊断、处方或治疗决策。
所有临床判断必须由有资质医生完成。
MVP 阶段禁止:
若用户导入病例或患者相关材料,系统必须:
默认情况下:
如果用户选择 Claude Code、Anthropic API、OpenAI-compatible 等云端模型,系统必须在任务开始前提示:
本次任务将把以下内容发送给云端模型:
- 用户问题
- 检索到的相关片段
- 当前智能体提示词
不会发送:
- 完整知识库
- 未检索到的文件
Agent Pack 必须声明权限:
| 权限 | 说明 |
|---|---|
read_knowledge |
读取用户知识库 |
write_workspace |
写入当前运行目录 |
network |
访问网络 |
shell |
执行 shell 命令 |
read_filesystem |
读取知识库之外的文件 |
MVP 阶段默认禁止第三方 agent pack 使用 shell。
| 渠道 | 用途 |
|---|---|
| GitHub Releases | 发布 macOS/Windows 安装包、agent pack zip |
| 项目官网 | 面向非技术用户下载 |
| Docker Hub / GHCR | 技术用户和实验室服务器部署 |
| Hugging Face / ModelScope | Demo、模型说明、agent pack 展示 |
| 渠道 | 用途 |
|---|---|
| Microsoft Store | Windows 用户信任分发 |
| Homebrew | macOS 技术用户安装 |
| PyPI | CLI / SDK 分发 |
| 官方 Agent Pack Registry | 应用内安装和更新 |
.env。面向获客:
面向个人教授/博士/医生:
面向课题组。技术上 = deployment_mode=lab + N 个 user 同属 1 个 tenant, 无需 fork / 单独 SKU 维护:
agents:* vs knowledge:read-own — RBAC 字段已存在)。面向实验室、医院科室、学院:
lambdagent保持作为核心运行内核:
新增需求:
agentpaas不删, 不简化。 引入 deployment_mode 三档, 现有 319 处 tenant_id 引用、29 文件、132 个 test 全部保留。agentpaas/src/agentpaas/config.py 加约 30 行:
class Settings:
deployment_mode: Literal["desktop", "lab", "paas"] = "desktop"
各模式下的差异化行为 (~200 LOC 跨 setup.py / app.py / webui 顶栏):
| 行为 | desktop | lab | paas |
|---|---|---|---|
| 首次启动 | 自动 bootstrap: 创建 tenant_id="local-{uuid}" + admin API key, 写入 ~/.agentpaas/config.json |
SetupWizard, admin 配置 | SetupWizard, 多 tenant |
| Network bind | 127.0.0.1 (强制) |
局域网 IP (可配) | 0.0.0.0 (经反代) |
| Webui 顶栏 | 隐藏 tenant chip, 显示模式标识 + 用户名 + 隐私状态 | 显示 tenant chip + 成员管理 | 完整 admin UI |
/tenants/* /billing/* /admin/* 路由 |
mount 但所有请求返回 404 (audit critical #1 的同种 loopback 守门思路) | mount + 403 (RBAC 不允许的话) | 完整暴露 |
/setup/bootstrap |
自动调用一次, 后续返回 404 | 走 SetupWizard | 走 SetupWizard |
| 隐私警告 (SR-002) | 强制弹窗 | opt-in 配置 | opt-in 配置 |
| Agent Pack 安装 | webui 一键 | webui 一键 + admin scope | admin scope only |
升级路径: 用户从 desktop → lab 升级时, 只需 AGENTPAAS_DEPLOYMENT_MODE=lab 重启服务, 已有 tenant + agent + knowledge base 全部继承。
简化 auth 在 desktop 模式下表现为"自动管理"而非"功能弱化": 后端 schema 与代码路径不变。
webui从管理后台调整为专业工作台:
| 原页面 | 新定位 |
|---|---|
| Dashboard | 今日工作、最近报告、知识库状态 |
| Agents | 智能体包 / 已安装助手 |
| Chat | 专业任务工作台 |
| Knowledge | 本地资料库 |
| Providers | 模型与隐私设置 |
| Agent Workspace | 报告与产物浏览器 |
agentexample从示例目录升级为内置智能体包来源:
agentexample/physics67 → research.physics-pipeline
agentexample/research67 → research.paper-workflow
agentexample/qaagent67 → research.local-qa
agentexample/pptagent67 → research.presentation-helper
literature-mappertop-journal-reviewergrant-planner| 指标 | MVP 目标 |
|---|---|
| 首次安装到完成第一个任务 | < 10 分钟 |
| PDF 导入成功率 | > 90% |
| 审稿报告生成成功率 | > 80% |
| 报告包含引用比例 | > 80% |
| 单次任务产物可追溯率 | 100% |
| 指标 | MVP 目标 |
|---|---|
| 真实试用用户 | 10-20 人 |
| 一周后再次使用 | > 40% |
| 愿意推荐给同组同事 | > 30% |
| 愿意为 Pro 付费 | > 20% |
| 指标 | 早期目标 |
|---|---|
| 首批 Pro 付费 | 5-10 人 |
| 首批 Lab 试点 | 1-2 个课题组 |
| 单个用户月付费意愿 | 49-199 RMB 或 9-29 USD |
每问下面紧跟 [2026-06-07 决策] 块。原始问题保留,便于未来需要 revisit 时回看 reasoning trail。
Q1. 第一版产品名使用 LambdAgent Desktop 还是 ResearchAgent Desktop?
[2026-06-07 决策]ResearchAgent Desktop。Rationale: 教授 / 博士生 / 医生对 "Lambda 演算" 无认知亲和;"ResearchAgent" 直接命中场景。后续技术受众 (CLI / SDK / docs/) 仍可暴露 LambdAgent 品牌作为内核名。
Revisit 触发: 出现 ≥3 个用户反馈 "想要这个工具但不知道做什么用的"。
Q2. 第一版优先 macOS 还是 Windows?
[2026-06-07 决策]macOS 先。Rationale: 教授群体 Mac 占比 > 50% (与 Windows 不同, macOS 上 PDF/Zotero/Obsidian 用户密度高); Windows EV 证书购买流程 ≥ 3 个月 (个人开发者更长), 排队期间正好做 macOS。
并行准备: M0 当天就申请 Apple Developer 账号 ($99/年) + 开始 EV 证书申请。
Q3. 是否默认内置 Ollama,还是只检测本机 Ollama?
[2026-06-07 决策]只检测,不内置。Rationale: Ollama 镜像 + 模型 200MB-7GB, 拖慢安装包;用户已安装的尊重之;未安装的提示 "[Open Ollama install page]"。Ollama 1-click 安装本身已经成熟。
例外: 如果 Phase D 测试发现 PDF chunking 必须用本地 embedding 模型, 可考虑内置
all-MiniLM-L6-v2(90MB) 作为唯一兜底。
Q4. 是否把 Claude Code 作为推荐默认 provider?
[2026-06-07 决策]是。Rationale: 教授 / 科研用户 Claude 订阅渗透率高 (Anthropic Pro $20/月 vs OpenAI Plus $20/月, 学术圈 Anthropic 偏好明显);Claude Code 不要 API key, 配合 "本地优先" 隐私叙事最匹配;Sonnet 在 reasoning / 长文档质量当前最强。
SetupWizard 流程: 自动检测 Claude Code CLI → 检测到 → 默认。未检测到 → 列出 Anthropic API / OpenAI compatible / Ollama / DashScope 四个备选。
Q5. 医学场景是否延后到科研版本验证之后?
[2026-06-07 决策]是,延后到 M5 公开下载之后。Rationale: FDA / CFDA / NMPA 对 "辅助诊疗" 边界模糊,即便有 FR-013 禁止能力声明,实操中医生写病例报告 → 投诉 → 监管介入的链条仍存在;科研版本可以单纯卖 "节省时间 / 提升写作质量",没有医疗器械阴影。等科研验证产品力后再单独立项 ResearchAgent Medical, 配合医院法务一起推。
副作用: §6.5 的 4 个 FR (FR-012/013/014) 暂时 freeze, 标 "v2 scope"。
Q6. Agent Pack Registry 是否先用 GitHub Releases 实现?
[2026-06-07 决策]是。Rationale: 零基建成本 (GitHub Releases 自带 CDN + 版本号 + 签名);用户已熟悉 (科研人员普遍会从 GitHub 下载 .zip);从 manifest.yml 里读
download_url直接 GET zip → 解压到agentpacks/{id}/{version}/即完成安装;后续真正做 Registry 时可以无缝迁移 (Registry 只是 GitHub Releases 的 metadata 索引层)。实现细节: GitHub Releases API
GET /repos/{owner}/{repo}/releases/latest返回 assets[] + tag_name, 客户端解析即可。无需自建 backend。
Q7. 是否需要与 Obsidian / Zotero 作为第一批集成?
[2026-06-07 决策]Obsidian: 是 (M2 内);Zotero: 推迟到 M4 后。Rationale:
- Obsidian: vault 就是 markdown 文件夹, 直接遍历读 + 增量索引, 0 集成成本;目标用户重叠度高 (PARA / Zettelkasten 用户大量是教授/博士)。
- Zotero: 数据走 SQLite + RDF/XML, library.bib 增量同步需要正确解析 fields;Zotero 用户群体也欢迎 .bib 导出, 第一版用 "拖一个 .bib 进来" 路径足够覆盖 80% 场景, 不需要直接读 ~/Zotero/。
Q8. Webui 顶栏的 mode 标识是否可见?
[2026-06-07 决策]可见。Rationale: 用户知道自己在 desktop / lab / paas 模式 → 信任感 + 故障排查时第一眼能确认状态。隐藏 mode 概念反而会让 lab 模式用户问 "为什么我看到了 admin 选项, 我同事看不到"。视觉设计: 顶栏右侧一个小 chip,
🖥️ Desktop/👥 Lab · {tenant_name}/☁️ PaaS · {tenant_name}, 颜色分别用 teal / amber / indigo。
Q9. desktop 模式下被隐藏的路由 (/tenants/* /billing/* /admin/*) 返回 404 还是 403?
[2026-06-07 决策]404。Rationale: 与 audit critical #1 已采用的
/setup/bootstraporacle 防御一致 — 隐藏端点存在性 > 暴露权限语义。404 让远程扫描器看不出 desktop / lab / paas 之间的差异。代价: 内部 admin 误以为路由没 mount → 加 dev log 显示真实原因 (Mode-blocked: deployment_mode=desktop, expected lab|paas)。
Q10. lab → paas 升级路径是否需要 schema 迁移工具?
[2026-06-07 决策]不需要工具, 但 M1 期间写一次 mode-transition smoke test 验证。Rationale: schema 已 paas-ready (audit 已确认 tenants / users / api_keys 三表完整, instance_dir 支持多实例);mode 切换只影响"运行时行为", 不动数据。Smoke test: 起 desktop → 创建 1 tenant + 2 agent + 1 KB → 改 mode=lab 重启 → 同 tenant 下加一个 user → 改 mode=paas 重启 → 加一个新 tenant + 跑跨 tenant scope assert。三档全部跑通即结。
Q11. 单台 desktop 用户的 tenant_id 命名: local-{uuid} vs {hostname}-{user}?
[2026-06-07 决策]local-{uuid}(匿名),但tenants.name字段写{hostname}/{user}(有 contextual 信息) 作为 alias。Rationale: tenant_id 是 PK + 出现在 logs / traces / 第三方 webhook payload, 用匿名 UUID 保护用户隐私 (避免 hostname 泄漏到 cloud LLM provider 的 logs);name 字段只在 webui 顶栏 chip 显示, 帮用户在多设备 lab 升级时识别 "哦, 这个是 Alice 的 MacBook"。升级到 lab/paas 时 admin 可以改 tenant.name, 不用改 tenant_id (历史 trace 不断)。
Q12. Lab 模式的网络绑定: 默认 0.0.0.0:8000 vs 默认 127.0.0.1 + nginx 反代文档?
[2026-06-07 决策]默认127.0.0.1, 文档 + SetupWizard 双路径教用户开 LAN。Rationale: 与 audit critical #1 (loopback-only
/bootstrap) 同款安全姿态 — 默认 secure, 用户显式 opt-in 开放。在 SetupWizard 里加 "团队共享" 一步, 选择允许局域网访问时: (a) 简单路径: 直接改 bind 到0.0.0.0, 弹警告 "请确认你的局域网可信"; (b) 推荐路径: 指引装 nginx (一键 install script) + 加 self-signed cert + reverse proxy 到127.0.0.1:8000。 默认指南给路径 (b), 路径 (a) 作为 "我知道我在做什么" 的 advanced toggle。
本次变更不废弃 lambdagentpaas 的平台能力,而是通过 deployment_mode 三档将商业化和产品进入市场的顺序拆开:
desktop (今天默认) → 单机专业助手 + agent pack 生态
↓ 同一份代码, 改一行 config
lab → 课题组/科室团队版 (多 user 单 tenant)
↓ 同一份代码, 改一行 config
paas → 云端/私有化 (多 tenant 完整)
关键工程价值: rev.1 草案需要碰 29 个文件、删除 319 处 tenant 引用、回归 132 个 test。rev.2 实现只加约 200 LOC, 现有 audit 修复 (5 critical + 22 high) + 测试套件 + Phase 0-5 release 工作零损失。
这一路线既贴近当前代码资产, 又让教授 / 科研人员 / 医生第一眼看到 "下载即用", 同时为未来 Lab / PaaS 业务留下零成本通道。