Procházet zdrojové kódy

docs(roadmap): mark M2 complete — AgentPack + 3 packs + citation ingestion

M2 (Phase D/E/F) 软件全部交付, 大幅提前于 9-07 计划。

- "Then (M2)" 段改为 "✅ M2 完成", D/E/F 全部勾选 + commit 引用
- 记录 Phase F 的设计决策 (独立 agent 而非 symlink 流水线 sub-agent)
- 记录 Phase E 集成边界 (lambdagent citation 原语已测, 接 agentpaas KB
  管线是后续)
- 现状段: 156 → 184 test; M2 完成; 下一步 = M0 非软件 + M2 收尾集成 + M3
- 列出 M2 范围外的同期任务 (alpha 访谈 / dogfood / KB 管线接入 / 权限
  完整 gating) 作为后续

3 个 M2 commit:
  c550f15  Phase D — AgentPack format + install
  0db8d9a  Phase F — 3 built-in research packs
  0abbd47  Phase E — citation-aware ingestion

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
kenny67nju před 3 měsíci
rodič
revize
e3a0f33666
1 změnil soubory, kde provedl 31 přidání a 29 odebrání
  1. 31 29
      ROADMAP.md

+ 31 - 29
ROADMAP.md

@@ -16,14 +16,17 @@ paas     → 云端/私有化 (N tenant)             (v2+, 已有完整能力)
 
 ## 现状(截至 2026-06-07)
 
-- `v1.0.0-rc2` 已发布,CI 全绿,**156 测试**通过 Python 3.10/3.11/3.12
+- `v1.0.0-rc2` 已发布,CI 全绿,**184 测试**通过 Python 3.10/3.11/3.12
 - audit 84 finding 关闭 28 个(critical 7/7、high 22/33)
 - 仓库 private,PaaS 叙事完整
 - CR rev.2 + 12 个开放问题决策已 commit
 - **M1 完成**:`deployment_mode` 三档落地(desktop 默认),webui mode-aware,
-  FR-001 一键登录 + FR-002 数据目录就位,dogfood 三档 UI 验收通过
+  FR-001 一键登录 + FR-002 数据目录,dogfood 三档 UI 验收通过
+- **M2 完成**:AgentPack format(manifest + 安装 + 权限)+ 3 个内置科研 pack
+  (reviewer / literature-mapper / grant-planner)+ citation-aware ingestion
+  (PDF 页码 + Obsidian + `[Source N | file p.12]`)
 - **下一步 = M0 的 3 个非软件项**(Apple Developer / Windows EV / alpha 用户)
-  + **M2 软件**(AgentPack format + PDF 引用 + 3 个内置 pack)
+  + **M2 收尾集成**(agentpack 接入 KB 管线带页码 + dogfood)+ **M3**(macOS installer
 
 ---
 
@@ -87,42 +90,41 @@ FR-001 + dogfood 修复),新增 24 个 test(132 → 156 root tests)。
 
 ---
 
-## Then (3 个月内 — M2 至 2026-09-07)
+## ✅ M2 完成 (2026-06-07, 至 2026-09-07 计划 → 大幅提前)
 
-**主题**: AgentPack format + 3 个内置 pack + PDF 引用追踪
+**主题**: AgentPack format + 3 个内置 pack + PDF 引用追踪 — **软件全部交付,CI 全绿,184 test**
 
-### Phase D — AgentPack format(≈2-3 周)
+### Phase D — AgentPack format ✅ (c550f15)
 
-- [ ] `docs/AGENTPACK_SPEC.md` 起草: manifest.yml schema + permission model
-  - 必填: `id` `name` `version` `domain` `audience` `entrypoint` `permissions` `model.recommended`
-  - permission 字段: `read_knowledge` / `write_workspace` / `network` / `shell` / `read_filesystem`(CR §SR-003)
-- [ ] 后端端点: `POST /agentpack/install` `GET /agentpack/list` `DELETE /agentpack/{id}`
-  - 安装源(Q6): local zip / GitHub Releases URL(`gh release download` 模式)
-  - 解压目标: `~/LambdAgentDesktop/agentpacks/{id}/{version}/`
-  - 装前权限摘要弹窗(CR FR-007)
-- [ ] permission 运行时 enforcement: lambdagent 内核里读 manifest, 不允许的工具直接 reject
+- [x] `docs/AGENTPACK_SPEC.md`: manifest schema (id/name/version/domain/entrypoint/permissions/model) + 权限模型 + 安全 (zip-slip/yaml.safe_load)
+- [x] kernel `lambdagent/agentpack.py`: AgentPackManifest + PackPermissions(SR-003 deny-by-default) + load_manifest(semver/id/entrypoint 校验 + escape 防御)
+- [x] agentpaas 端点: `GET /agentpacks` `GET /{id}` `POST /install`(loopback) `DELETE /{id}`
+- [x] `engine/agentpack_store.py`: 安全 unzip + 第三方 shell 拒绝(SR-003) + install/list/uninstall
+- [x] config 加 `agentpacks_dir`;19 test
+- 注:permission 运行时 tool-registry gating 是增量项(v0.1 校验+声明+install 拒绝;完整 gating 留后续)
 
-### Phase E — PDF 引用追踪(≈2-3 周)
+### Phase F — 3 个内置 agent pack ✅ (0db8d9a)
 
-- [ ] 升级 `lambdagent/builtin_tools/qa_tools.py` 的 PyPDF2 路径到 `pdfplumber`(page-number-aware)
-- [ ] 引入 page-number-preserving chunker: 每 chunk 携带 `{file, page, char_offset, len}`
-- [ ] `lambdagent.rag.RAGTool` 输出格式扩展: `[Source N | filename.pdf p.12]` 而非现在的 `[Source N]`
-- [ ] Obsidian vault 导入(Q7): 把 vault 路径当 root_dir,markdown 文件遍历 + 双向链 `[[wiki]]` 解析
+- [x] `research.top-journal-reviewer` — 论文 → 审稿报告 + 中稿概率 + 修改清单
+- [x] `research.literature-mapper` — 方向 + 本地论文 → 文献地图 + 方法谱系 + open problems
+- [x] `research.grant-planner` — 方向 + 材料 → 立项依据 + 创新点 + 技术路线 + 风险
+- [x] 设计决策:**独立 agent 而非 symlink 流水线 sub-agent**(physics67 reviewer 是读 {workspace}/02_sim/.. 的子节点,不能独立跑)。改造成 standalone 输入契约,local-first(无 shell/network),全部 from_config 编译通过
+- [x] 4 test(bundled-pack regression guard)
 
-### Phase F — 3 个内置 agent pack(≈4-6 周,并行 D/E)
+### Phase E — citation-aware ingestion ✅ (0abbd47)
 
-- [ ] `research.literature-mapper` — 输入 PDF 集 + 研究问题 → 文献地图 + 方法谱系 + BibTeX
-  - 基于 `agentexample/research67` 改造
-- [ ] `research.top-journal-reviewer` — 输入论文 → 顶刊审稿意见 + 接收概率 + 修改清单
-  - 基于 `agentexample/physics67/agents/reviewer.yml` 改造
-- [ ] `research.grant-planner` — 输入方向 + 已有材料 → 立项依据 + 创新点 + 技术路线 + 风险
-  - 基于 `agentexample/research67` 改造
-- [ ] agentexample 整体升级为 agentpack 来源(CR §10.4 映射表)
+- [x] `lambdagent/ingest.py`: extract_pdf_pages(pdfplumber→PyPDF2 兜底)+ chunk_pages(页码保留,chunk 不跨页)+ CitedChunk
+- [x] `import_obsidian_vault`(Q7): walk .md + `[[wiki]]` alias 展开 + target 进 link graph
+- [x] `rag.RAGTool` 引用格式: `[Source N | paper.pdf p.12]`(FR-005)
+- [x] pdfplumber 加进 knowledge extra;9 test
+- 集成边界:lambdagent 层 citation 原语已测;接进 agentpaas KB index 构建管线(pickle subprocess 子系统,audit #17)是后续集成步骤
 
-### 同期任务
+### 仍待做(M2 范围外的同期任务,需 Kenny / 真实用户)
 
 - [ ] alpha 用户访谈(3-5 位),录三个真实 use case 视频
-- [ ] 内部 dogfood: 让 Kenny 自己用 ResearchAgent Desktop 完成一篇论文审稿,记录痛点
+- [ ] 内部 dogfood: Kenny 用 ResearchAgent Desktop 完成一篇真实论文审稿
+- [ ] agentpack 接入 agentpaas KB index 管线(让 KBSearch 结果带页码)
+- [ ] permission 运行时 tool-registry 完整 gating
 
 ---