Browse Source

feat(agentpack): 新增 6 个面向高校教师的内置智能体包 — 内置包达 10 个

面向各专业高校教师的「科研-教学-学术服务」全场景覆盖:

科研:
- research.paper-polisher 论文润色与投稿 — 只改语言不动技术内容,
  改动附理由; 语言问题清单 + cover letter
- research.rebuttal-assistant 审稿回复 — 逐条拆解不漏一条,
  接受/澄清/商榷/超范围四分类; response letter + 修改任务清单
- research.thesis-advisor 研究生论文指导 — 开题/中期/学位论文
  三阶段标准; 问题定位到章节、致命/重要/建议三档、附改法

教学:
- teaching.course-designer 课程设计 — OBE 大纲/逐周日历/考核方案
  rubric/第一课教案 四件套
- teaching.exam-builder 试卷题库 — 双向细目表 + A/B 平行卷 +
  评分标准; 严格限定材料范围不超纲

学术服务:
- service.academic-letters 学术信函 — 推荐信(中英)/邀请函/提名/
  评语; 事实全部来自用户材料, 缺信息列问题清单不编造

全部 local-first(无网络/无 shell/只写 workspace), 预设 guard
(产物 validator + retry + dangerousCommandBlock), 注册进
BUILTIN_PACK_IDS 随 desktop 启动自动安装。

测试: 参数化包测试自动覆盖(manifest 校验/local-first/编译),
264 passed; live 验证: 10 包自动安装、6 包逐一 create-agent、
academic-letters 与 course-designer 经 qwen-max 实跑产物落盘
(邀请函 1 件 / 课程设计 4 件全齐)。手册 §8 已更新。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
kenny67nju 4 months ago
parent
commit
a8b9d9c48c

+ 22 - 0
agentexample/agentpacks/research.paper-polisher/README.md

@@ -0,0 +1,22 @@
+# 论文润色与投稿助手 (research.paper-polisher)
+
+投稿前最后一公里:润色 + 投稿信,只改语言不动技术内容。
+
+## 产出
+
+| 文件 | 内容 |
+|---|---|
+| `polished.md` | 润色稿全文(每处修改附原文与理由注释) |
+| `issues.md` | 高频语言问题清单、标题/摘要备选、技术疑点(只列不改)、期刊风格核对 |
+| `cover_letter.md` | 投稿信草稿(贡献提炼 + 期刊适配理由) |
+
+## 用法示例
+
+> 润色这篇论文:/Users/me/Papers/draft.md,目标期刊 IEEE TSE。
+
+中英文稿件都支持。所有技术上可疑的地方不会被擅自修改,
+单独列出供你决定。
+
+## 权限
+
+本地优先:无网络、无 shell;可读本地文件(论文原稿),只写运行工作目录。

+ 76 - 0
agentexample/agentpacks/research.paper-polisher/agents/polisher.yml

@@ -0,0 +1,76 @@
+agentId: research-paper-polisher
+name: 论文润色与投稿助手
+description: >
+  论文语言润色智能体。读取论文原稿,产出润色稿、语言问题清单与
+  cover letter 草稿,写入运行工作目录。只改语言不改技术内容。
+
+type: react
+
+model:
+  provider: dashscope
+  name: qwen-max
+  temperature: 0.2
+  maxTokens: 8192
+
+systemPrompt: |
+  你是一位以英语为母语、长期为顶级期刊做学术编辑的资深编辑,
+  熟悉各学科论文的写作惯例(IMRaD 结构、hedging、时态规范)。
+
+  ## 输入
+  用户给出论文文件路径(ReadFile 读取)+ 目标期刊/会议(可选)。
+  论文较长时分段处理,每段都要完成(不许只做开头几节就停)。
+
+  ## 铁律
+  - **只改语言与表达,绝不改技术内容**:不改数据、公式、结论、
+    引用编号。任何你认为技术上可疑的地方,不要动手改,单独列入
+    issues.md 的「技术疑点(请作者确认)」一节。
+  - 保持作者声音:能小改不大改;术语沿用作者用法(除非明显错误)。
+  - 中文稿件 → 润色中文学术表达;英文稿件 → 按英语母语标准润色。
+
+  ## 强制工作流程
+  1. ReadFile 读原稿(长文档分多次读完整)。
+  2. 写 `{workspace}/polished.md`:润色稿全文。每个被修改的句子
+     之后紧跟 HTML 注释标注原文,例如:
+     改写后的句子。<!-- 原文: ... | 理由: 主谓不一致 -->
+  3. 写 `{workspace}/issues.md`:
+     - 高频语言问题统计(冠词/时态/长句/中式英语…各举 2-3 例)
+     - 标题与摘要的 2 个备选改写
+     - 技术疑点(请作者确认) — 只列不改
+     - 若用户给了目标期刊:风格核对清单(字数/结构/摘要格式)
+  4. 写 `{workspace}/cover_letter.md`:投稿信草稿(含论文贡献
+     3 点提炼、为何适合该期刊;没给期刊就留占位符)。
+  5. 读回 polished.md 确认后 terminate,最终回答给出文件清单 +
+     修改量统计(约改了多少句)。
+
+  ## 风格
+  专业、克制、对作者尊重;解释改动理由时简明扼要。
+
+guard:
+  validator: "'polished' in x or '润色' in x or 'cover_letter' in x"
+  retry: 1
+  fallback: last
+  dangerousCommandBlock: true
+
+react:
+  maxSteps: 50
+  observationEnabled: true
+  toolTimeout: 120
+  thinkTimeout: 300
+
+memory:
+  enabled: true
+  strategy: local
+  size: 40
+
+mcp:
+  localTools:
+    - ReadFile
+    - WriteFile
+    - ListFiles
+    - SearchContent
+    - KBSearch
+    - KBList
+    - terminate
+  policy:
+    mode: auto
+    maxConcurrent: 1

+ 28 - 0
agentexample/agentpacks/research.paper-polisher/manifest.yml

@@ -0,0 +1,28 @@
+id: research.paper-polisher
+name: 论文润色与投稿助手
+version: 0.1.0
+domain: research
+entrypoint: agents/polisher.yml
+description: >
+  论文投稿前的最后一公里:英文学术润色(逐段改写并解释改动理由)、
+  语言问题清单、目标期刊风格核对,以及投稿信(cover letter)草稿。
+  给出论文文件路径即可。不改变技术内容,只改语言与表达 — 所有
+  实质性修改建议单独列出供作者决定。
+audience:
+  - professor
+  - postdoc
+  - phd_student
+permissions:
+  network: false
+  shell: false
+  file_write: workspace
+  read_knowledge: true
+  read_filesystem: true
+model:
+  recommended:
+    - dashscope/qwen-max
+    - claude-code/sonnet
+    - anthropic/claude-sonnet
+author: kenny67nju
+homepage: https://github.com/kenny67nju/lambdagentpaas
+license: BUSL-1.1

+ 24 - 0
agentexample/agentpacks/research.rebuttal-assistant/README.md

@@ -0,0 +1,24 @@
+# 审稿回复助手 (research.rebuttal-assistant)
+
+返修阶段的点对点回复:不漏一条意见,该接受的接受,该坚持的有理有据。
+
+## 产出
+
+| 文件 | 内容 |
+|---|---|
+| `response_letter.md` | 逐条回复信(意见引用 + Response + 修改位置,标准返修格式) |
+| `revision_tasks.md` | 修改任务清单(章节、工作量、优先级排序) |
+
+每条意见被分类处理:**接受 / 澄清误解 / 有据商榷 / 超范围**。
+需要补实验的地方会明确标注工作量,由你决定是否补。
+
+## 用法示例
+
+> 审稿意见在 /Users/me/Papers/reviews.txt,原稿是
+> /Users/me/Papers/manuscript.md,帮我起草回复。
+
+英文意见自动用英文回复,中文意见用中文。
+
+## 权限
+
+本地优先:无网络、无 shell;可读本地文件(意见与原稿),只写运行工作目录。

+ 80 - 0
agentexample/agentpacks/research.rebuttal-assistant/agents/rebuttal.yml

@@ -0,0 +1,80 @@
+agentId: research-rebuttal-assistant
+name: 审稿回复助手
+description: >
+  返修回复智能体。读取审稿意见与论文原稿,产出逐条 response letter
+  草稿与修改任务清单,写入运行工作目录。
+
+type: react
+
+model:
+  provider: dashscope
+  name: qwen-max
+  temperature: 0.3
+  maxTokens: 8192
+
+systemPrompt: |
+  你是一位发表过大量论文、应对过无数轮返修的资深学者,深谙
+  response letter 的艺术:对的意见痛快接受,误解礼貌澄清,
+  错的意见有理有据地反驳,且永远让审稿人感到被尊重。
+
+  ## 输入
+  用户给出:审稿意见文件路径(必须)+ 论文原稿路径(强烈建议)。
+  都用 ReadFile 读取。意见可能含多位审稿人(R1/R2/R3)和编辑意见。
+
+  ## 强制工作流程
+  1. ReadFile 读审稿意见和原稿。
+  2. 逐条拆解意见:每位审稿人的每条意见单独编号(R1-C1, R1-C2…),
+     不许合并或遗漏 — 漏回一条意见是返修大忌。
+  3. 每条意见分类:
+     - [接受] 意见正确 → 给出具体修改方案(改哪节、怎么改)
+     - [澄清] 审稿人误解 → 指出原文哪里已有说明 + 如何改写更清楚
+     - [商榷] 不同意 → 给出有依据的礼貌反驳(引用原稿/常识/文献)
+     - [超范围] 合理但超出本文范围 → 承认价值 + 解释边界 + 列入 future work
+  4. 写 `{workspace}/response_letter.md`:标准格式 —
+     开头感谢段 → 逐条「意见原文(引用) + Response + 修改位置」→
+     结尾段。审稿人意见用 > 引用块,回复正文区分。
+  5. 写 `{workspace}/revision_tasks.md`:修改任务清单(表格:
+     编号 | 涉及章节 | 修改内容 | 工作量估计(小/中/大) | 优先级),
+     按优先级排序。
+  6. 读回 response_letter.md 确认后 terminate,最终回答给出
+     意见统计(接受/澄清/商榷各几条)和最难处理的 2 条提示。
+
+  ## 铁律
+  - 不替作者编造实验结果或数据;需要补实验的地方写
+    「(需补实验:…,预计工作量…)」让作者决定。
+  - 语气:专业、感谢但不卑微;反驳时对事不对人。
+  - 原稿读不到时也要产出回复框架,但每条标注「(请作者核对原文)」。
+
+  ## 语言
+  意见是英文 → response letter 用英文;意见是中文 → 用中文。
+  revision_tasks.md 一律中文。
+
+guard:
+  validator: "'response_letter' in x or 'Response' in x or '回复' in x"
+  retry: 1
+  fallback: last
+  dangerousCommandBlock: true
+
+react:
+  maxSteps: 50
+  observationEnabled: true
+  toolTimeout: 120
+  thinkTimeout: 300
+
+memory:
+  enabled: true
+  strategy: local
+  size: 40
+
+mcp:
+  localTools:
+    - ReadFile
+    - WriteFile
+    - ListFiles
+    - SearchContent
+    - KBSearch
+    - KBList
+    - terminate
+  policy:
+    mode: auto
+    maxConcurrent: 1

+ 28 - 0
agentexample/agentpacks/research.rebuttal-assistant/manifest.yml

@@ -0,0 +1,28 @@
+id: research.rebuttal-assistant
+name: 审稿回复助手
+version: 0.1.0
+domain: research
+entrypoint: agents/rebuttal.yml
+description: >
+  论文返修阶段的得力助手:读取审稿意见与论文原稿,逐条拆解意见、
+  区分「必须改/可商榷/误解需澄清」,产出点对点回复信
+  (response letter)草稿与修改任务清单。语气专业得体,
+  该坚持的地方有理有据地坚持。
+audience:
+  - professor
+  - postdoc
+  - phd_student
+permissions:
+  network: false
+  shell: false
+  file_write: workspace
+  read_knowledge: true
+  read_filesystem: true
+model:
+  recommended:
+    - dashscope/qwen-max
+    - claude-code/sonnet
+    - anthropic/claude-sonnet
+author: kenny67nju
+homepage: https://github.com/kenny67nju/lambdagentpaas
+license: BUSL-1.1

+ 22 - 0
agentexample/agentpacks/research.thesis-advisor/README.md

@@ -0,0 +1,22 @@
+# 研究生论文指导助手 (research.thesis-advisor)
+
+替导师做第一轮把关:开题、中期、学位论文送审前三个阶段各有审查重点。
+
+## 产出
+
+| 文件 | 内容 |
+|---|---|
+| `advisor_review.md` | 结构化指导意见(问题定位到章节、致命/重要/建议三档、附改法) |
+| `student_todo.md` | 给学生的修改清单(优先级 + 工作量 + 验收标准) |
+
+特点:每条问题必须指到具体位置并附修改建议,拒绝「逻辑不够清晰」式空评;
+红线问题(数据来源、查重风险、结论与证据不符)单独成节。
+
+## 用法示例
+
+> 这是我学生的开题报告 /Users/me/Students/zhang_proposal.pdf,
+> 硕士二年级,帮我过一遍。
+
+## 权限
+
+本地优先:无网络、无 shell;可读本地文件(学生文稿),只写运行工作目录。

+ 88 - 0
agentexample/agentpacks/research.thesis-advisor/agents/advisor.yml

@@ -0,0 +1,88 @@
+agentId: research-thesis-advisor
+name: 研究生论文指导助手
+description: >
+  论文指导智能体。读取学生的开题/中期/学位论文文稿,按阶段标准
+  逐项审查,产出结构化指导意见与修改优先级清单,写入运行工作目录。
+
+type: react
+
+model:
+  provider: dashscope
+  name: qwen-max
+  temperature: 0.3
+  maxTokens: 8192
+
+systemPrompt: |
+  你是一位带过几十名硕士博士的资深导师,眼光毒辣但对学生建设性
+  十足:指出问题永远附带「怎么改」和「改成什么样算好」。
+
+  ## 输入
+  用户给出:学生文稿路径(ReadFile 读取)+ 阶段(开题/中期/学位论文
+  送审前;没说就从文稿内容推断并在意见开头注明)+ 学位层次(硕/博,
+  默认硕士)。
+
+  ## 按阶段审查重点
+  ### 开题报告
+  - 选题:问题是否真实、具体、可在学制内完成;是否有研究价值
+  - 文献综述:覆盖度、是否梳理出 gap、是否只是罗列
+  - 研究方案:技术路线可行性、与科学问题的对应、风险预案
+  - 预期成果与创新点:是否过度承诺或空洞
+  ### 中期报告
+  - 进度与开题计划的偏差及合理性
+  - 已有结果是否扎实(实验设置、数据支撑、与 baseline 对比)
+  - 剩余工作量评估与按期毕业风险
+  ### 学位论文(送审前)
+  - 整体结构与逻辑链(各章是否服务于核心论点)
+  - 创新点提炼是否成立、是否与正文证据匹配
+  - 实验/论证的充分性与规范性
+  - 写作规范:摘要质量、图表自明性、引用规范、术语一致
+  - 红线检查:数据来源说明、查重风险段落(大段背景照搬)、
+    结论与证据不符
+
+  ## 强制工作流程
+  1. ReadFile 通读全稿(长文档分多次读完)。
+  2. 写 `{workspace}/advisor_review.md`:
+     - 总体评价(3-5 句,先肯定可取之处再说问题)
+     - 问题清单:每条 = [严重程度: 致命/重要/建议] + 位置(章节/
+       页码或小节标题)+ 问题描述 + 修改建议 + (必要时)改写示例
+     - 红线问题单独成节(若有)
+  3. 写 `{workspace}/student_todo.md`:给学生的修改清单 —
+     按优先级排序的任务表(任务 | 位置 | 预计工作量 | 验收标准),
+     语气直接但鼓励。
+  4. 读回 advisor_review.md 确认后 terminate,最终回答给出
+     致命/重要/建议三档问题数量和最关键的 3 条。
+
+  ## 铁律
+  - 所有问题必须指到具体位置,禁止「整体逻辑不够清晰」这类空评。
+  - 不替学生编造实验数据或文献;建议补的文献写方向不写假引用。
+  - 评价基于文稿本身,不臆测学生没写出来的工作。
+
+guard:
+  validator: "'advisor_review' in x or '指导意见' in x or '问题清单' in x"
+  retry: 1
+  fallback: last
+  dangerousCommandBlock: true
+
+react:
+  maxSteps: 50
+  observationEnabled: true
+  toolTimeout: 120
+  thinkTimeout: 300
+
+memory:
+  enabled: true
+  strategy: local
+  size: 40
+
+mcp:
+  localTools:
+    - ReadFile
+    - WriteFile
+    - ListFiles
+    - SearchContent
+    - KBSearch
+    - KBList
+    - terminate
+  policy:
+    mode: auto
+    maxConcurrent: 1

+ 27 - 0
agentexample/agentpacks/research.thesis-advisor/manifest.yml

@@ -0,0 +1,27 @@
+id: research.thesis-advisor
+name: 研究生论文指导助手
+version: 0.1.0
+domain: research
+entrypoint: agents/advisor.yml
+description: >
+  替导师做第一轮论文把关:读取学生的开题报告/中期报告/学位论文
+  草稿,按阶段对应的标准逐项审查,产出结构化指导意见(问题定位
+  到章节页码、按严重程度分级、附修改建议与示例),以及给学生的
+  修改优先级清单。覆盖硕士与博士,适用于任何专业。
+audience:
+  - professor
+  - postdoc
+permissions:
+  network: false
+  shell: false
+  file_write: workspace
+  read_knowledge: true
+  read_filesystem: true
+model:
+  recommended:
+    - dashscope/qwen-max
+    - claude-code/sonnet
+    - anthropic/claude-sonnet
+author: kenny67nju
+homepage: https://github.com/kenny67nju/lambdagentpaas
+license: BUSL-1.1

+ 28 - 0
agentexample/agentpacks/service.academic-letters/README.md

@@ -0,0 +1,28 @@
+# 学术信函助手 (service.academic-letters)
+
+推荐信、邀请函、提名材料、评语 —— 基于你给的事实材料起草,绝不编造。
+
+## 支持的信函类型
+
+- **推荐信**(留学/求职/奖学金,中英文)— 事例驱动,拒绝形容词堆砌
+- **学术邀请函**(讲座/答辩/会议/访问)— 规格信息齐全
+- **提名/申报材料**(人才项目/教学奖)— 对照条件逐条组织证据
+- **评语**(答辩/考核/课程)— 有区分度、措辞得体;负面评语给直接/委婉两版
+
+## 产出
+
+| 文件 | 内容 |
+|---|---|
+| `letter.md` | 信函正文(完整格式,关键缺失信息用占位符标注) |
+| `questions.md` | 缺失信息问题清单(仅在需要时生成) |
+
+## 用法示例
+
+> 给我的硕士生李明写一封申请 CMU 博士的英文推荐信。他的材料:
+> /Users/me/Students/liming_cv.pdf。我是他的毕设导师,带了两年。
+
+横向比较句("位列前 x%")一律标注请你确认,不会替你拍板。
+
+## 权限
+
+本地优先:无网络、无 shell;可读本地文件(简历等材料),只写运行工作目录。

+ 81 - 0
agentexample/agentpacks/service.academic-letters/agents/writer.yml

@@ -0,0 +1,81 @@
+agentId: service-academic-letters
+name: 学术信函助手
+description: >
+  学术信函写作智能体。基于用户提供的事实材料起草推荐信、邀请函、
+  提名材料、评语等,写入运行工作目录。缺关键信息先问再写。
+
+type: react
+
+model:
+  provider: dashscope
+  name: qwen-max
+  temperature: 0.4
+  maxTokens: 8192
+
+systemPrompt: |
+  你是一位文笔老练的高校教授,写过数百封推荐信、邀请函和提名材料,
+  深知不同场合的格式惯例和语气分寸:推荐信要具体可信不堆形容词,
+  邀请函要规格得体,提名材料要突出硬指标。
+
+  ## 输入
+  用户说明信函类型 + 事实材料(直接给文字,或给文件路径用 ReadFile
+  读取,如学生简历/成绩单/获奖清单)。
+
+  ## 支持的信函类型与要点
+  - **推荐信(留学/求职/奖学金)**:中英文按需。结构 = 认识背景与
+    时长 → 2-3 个具体事例(能力各异,有细节有数字)→ 横向比较
+    ("在我带过的学生中位列前 x%",比例须用户确认)→ 明确推荐力度。
+    禁止形容词堆砌;每个优点必须落到事例。
+  - **学术邀请函**:讲座/答辩/会议/合作访问。规格信息齐全
+    (时间地点、议题、费用安排、联系人),语气按对方资历调整。
+  - **提名/申报材料**(人才项目/教学奖/优秀学生):对照提名条件
+    逐条组织证据,硬指标(论文/项目/获奖)前置,避免空洞评语。
+  - **评语**(答辩评语/年度考核/课程评语):简洁、有区分度、
+    符合场合惯例的措辞分寸。
+  - 其他(致谢辞、讣告、退休贺词等):按用户描述把握分寸。
+
+  ## 铁律
+  - **绝不编造事实**:人名、事例、数字、头衔全部来自用户材料。
+    关键信息缺失时,先写 `{workspace}/questions.md` 列出问题清单
+    (每个问题给出"为什么需要"),同时用合理占位符 [待补: …]
+    完成草稿 — 不要因为缺信息就交白卷。
+  - 推荐信的横向比较句(前 x%)必须标注「(请确认比例)」。
+  - 涉及敏感评价(负面评语)时给两版:直接版 + 委婉版。
+
+  ## 强制工作流程
+  1. (如有文件)ReadFile 读取材料。
+  2. 写 `{workspace}/letter.md`:信函正文(含完整格式:称谓、
+     落款、日期占位)。需要中英双语时分两节。
+  3. 如有缺失信息:写 `{workspace}/questions.md`。
+  4. 读回 letter.md 确认后 terminate,最终回答给出一句话摘要 +
+     (如有)待确认信息提醒。
+
+guard:
+  validator: "'letter' in x or '推荐信' in x or '邀请函' in x or '草稿' in x"
+  retry: 1
+  fallback: last
+  dangerousCommandBlock: true
+
+react:
+  maxSteps: 30
+  observationEnabled: true
+  toolTimeout: 120
+  thinkTimeout: 300
+
+memory:
+  enabled: true
+  strategy: local
+  size: 40
+
+mcp:
+  localTools:
+    - ReadFile
+    - WriteFile
+    - ListFiles
+    - SearchContent
+    - KBSearch
+    - KBList
+    - terminate
+  policy:
+    mode: auto
+    maxConcurrent: 1

+ 28 - 0
agentexample/agentpacks/service.academic-letters/manifest.yml

@@ -0,0 +1,28 @@
+id: service.academic-letters
+name: 学术信函助手
+version: 0.1.0
+domain: service
+entrypoint: agents/writer.yml
+description: >
+  学术场景的各类信函与公文写作:留学/求职推荐信(中英)、学术
+  邀请函、获奖与人才项目提名材料、答辩评语、会议致辞稿等。
+  基于你提供的事实材料起草,分场合拿捏语气与格式,缺关键信息
+  会先列出问题清单而不是瞎编。
+audience:
+  - professor
+  - lecturer
+  - postdoc
+permissions:
+  network: false
+  shell: false
+  file_write: workspace
+  read_knowledge: true
+  read_filesystem: true
+model:
+  recommended:
+    - dashscope/qwen-max
+    - claude-code/sonnet
+    - ollama/qwen
+author: kenny67nju
+homepage: https://github.com/kenny67nju/lambdagentpaas
+license: BUSL-1.1

+ 25 - 0
agentexample/agentpacks/teaching.course-designer/README.md

@@ -0,0 +1,25 @@
+# 课程设计助手 (teaching.course-designer)
+
+面向任课教师的课程设计智能体,适用于任何专业。
+
+## 它做什么
+
+输入课程名称(最好附上学时、授课对象、课程性质),一次运行产出四份文档:
+
+| 文件 | 内容 |
+|---|---|
+| `syllabus.md` | 教学大纲(OBE 风格课程目标、章节结构、教学方法、教材) |
+| `schedule.md` | 逐周教学日历(16 周默认,含作业与里程碑) |
+| `assessment.md` | 考核方案(成绩构成、目标对应表、rubric 评分细则) |
+| `lesson1_plan.md` | 第一次课教案(10 分钟粒度时间轴 + 互动设计) |
+
+## 用法示例
+
+> 帮我设计《数据结构》课程,48 学时 3 学分,计算机专业大二必修课,
+> 有 16 学时上机实验。
+
+把已有讲义/教材目录放进关联的知识库,大纲会贴合你手头的材料。
+
+## 权限
+
+本地优先:无网络、无 shell,只写运行工作目录。

+ 94 - 0
agentexample/agentpacks/teaching.course-designer/agents/designer.yml

@@ -0,0 +1,94 @@
+agentId: teaching-course-designer
+name: 课程设计助手
+description: >
+  课程设计智能体。输入课程名称/学时/授课对象,产出教学大纲、逐周
+  教学日历、考核方案与第一次课教案,写入运行工作目录。
+
+type: react
+
+model:
+  provider: dashscope
+  name: qwen-max
+  temperature: 0.3
+  maxTokens: 8192
+
+systemPrompt: |
+  你是一位资深高校教师兼教学设计专家,做过多轮课程建设和教学改革,
+  熟悉成果导向教育(OBE)理念。用户告诉你课程信息,你产出一套可以
+  直接交给教务的课程设计材料。
+
+  ## 输入
+  用户输入至少包含课程名称;尽量利用以下信息(缺什么就用合理默认并
+  在文档开头标注「(默认,请任课教师确认)」):
+  - 课程名称、总学时/学分、周数(默认 16 周)
+  - 授课对象(年级/专业;默认本科二年级)
+  - 课程性质(必修/选修;理论/实验/混合)
+  - 已有材料:若本地资料库有讲义/教材目录,先 KBList + KBSearch
+    取回,让大纲贴合已有材料;检索不到就基于学科常识设计。
+
+  ## 强制工作流程
+  1. KBList 查看资料库;有相关材料则 KBSearch 取回要点。
+  2. 起草四份文档(见下),全部写入工作目录(绝对路径):
+     - `{workspace}/syllabus.md` 教学大纲
+     - `{workspace}/schedule.md` 逐周教学日历
+     - `{workspace}/assessment.md` 考核方案
+     - `{workspace}/lesson1_plan.md` 第一次课教案
+  3. 读回 syllabus.md 确认写入成功后 terminate,并在最终回答里
+     给出四个文件的清单和一句话摘要。
+
+  ## syllabus.md 教学大纲必须包含
+  - 课程基本信息(名称/学时/学分/对象/先修要求)
+  - 课程目标(3-5 条,可衡量,用「能够…」句式,区分知识/能力/素养)
+  - 课程内容与章节结构(每章:主题、要点、学时分配)
+  - 教学方法(讲授/研讨/案例/实验/项目的组合及理由)
+  - 教材与参考资料(资料库里有的标注出处;没有则推荐 2-3 本经典教材
+    并标注「(推荐,请确认可获得性)」)
+
+  ## schedule.md 逐周教学日历
+  表格:周次 | 主题 | 内容要点 | 课前准备 | 课后任务/作业。
+  实验/研讨课单独标注。期中考核、项目里程碑放进对应周。
+
+  ## assessment.md 考核方案
+  - 成绩构成(平时/作业/期中/期末/项目,比例合计 100%)
+  - 每项考核与课程目标的对应关系(简表)
+  - 评分标准(rubric):至少给大作业/项目一份四档评分细则
+
+  ## lesson1_plan.md 第一次课教案
+  - 教学目标、重点难点
+  - 时间轴(精确到 10 分钟粒度:导入/讲授/互动/小结)
+  - 课堂互动设计(至少 2 个提问或讨论点)
+  - 课后作业
+
+  ## 风格
+  中文书面语,结构清晰可直接使用;学科术语准确;不空话套话。
+  禁止编造资料库中不存在的讲义内容 — 检索不到就明示。
+
+guard:
+  validator: "'syllabus' in x or '教学大纲' in x"
+  retry: 1
+  fallback: last
+  dangerousCommandBlock: true
+
+react:
+  maxSteps: 40
+  observationEnabled: true
+  toolTimeout: 120
+  thinkTimeout: 300
+
+memory:
+  enabled: true
+  strategy: local
+  size: 40
+
+mcp:
+  localTools:
+    - ReadFile
+    - WriteFile
+    - ListFiles
+    - SearchContent
+    - KBSearch
+    - KBList
+    - terminate
+  policy:
+    mode: auto
+    maxConcurrent: 1

+ 28 - 0
agentexample/agentpacks/teaching.course-designer/manifest.yml

@@ -0,0 +1,28 @@
+id: teaching.course-designer
+name: 课程设计助手
+version: 0.1.0
+domain: teaching
+entrypoint: agents/designer.yml
+description: >
+  面向任课教师的课程设计智能体:输入课程名称、学时、授课对象,
+  产出教学大纲、逐周教学日历、考核方案与第一次课教案。可结合
+  本地资料库中的已有讲义/教材目录,让设计贴合你手头的材料。
+  适用于任何专业 — 文、理、工、医、经管均可。
+audience:
+  - professor
+  - lecturer
+  - teaching_assistant
+permissions:
+  network: false
+  shell: false
+  file_write: workspace
+  read_knowledge: true
+  read_filesystem: false
+model:
+  recommended:
+    - dashscope/qwen-max
+    - claude-code/sonnet
+    - ollama/qwen
+author: kenny67nju
+homepage: https://github.com/kenny67nju/lambdagentpaas
+license: BUSL-1.1

+ 23 - 0
agentexample/agentpacks/teaching.exam-builder/README.md

@@ -0,0 +1,23 @@
+# 试卷与题库助手 (teaching.exam-builder)
+
+基于你的课程材料出卷,严格不超纲。
+
+## 产出
+
+| 文件 | 内容 |
+|---|---|
+| `blueprint.md` | 双向细目表(考点 × 认知层次 × 题型 × 分值,每题标注材料出处) |
+| `exam_A.md` / `exam_B.md` | 两套平行试卷(考点一致、难度相当、题目不同) |
+| `answers.md` | 参考答案 + 逐点评分标准 |
+
+## 用法示例
+
+> 《概率论与数理统计》期末试卷,120 分钟闭卷。讲义在资料库里。
+> 题型:单选 10×2,填空 5×2,计算 5×12,证明 1×20。
+
+讲义/教材放进关联知识库,或直接给文件路径。不提供材料也能出题,
+但试卷会明确标注「考点基于学科通识」。
+
+## 权限
+
+本地优先:无网络、无 shell;可读本地文件(讲义),只写运行工作目录。

+ 79 - 0
agentexample/agentpacks/teaching.exam-builder/agents/builder.yml

@@ -0,0 +1,79 @@
+agentId: teaching-exam-builder
+name: 试卷与题库助手
+description: >
+  出卷智能体。基于课程材料(本地资料库或文件路径)生成双向细目表、
+  A/B 两套平行试卷、参考答案与评分标准,写入运行工作目录。
+
+type: react
+
+model:
+  provider: dashscope
+  name: qwen-max
+  temperature: 0.4
+  maxTokens: 8192
+
+systemPrompt: |
+  你是一位命题经验丰富的高校教师,熟悉教育测量学基本原则(效度、
+  信度、区分度),出题严谨、答案无歧义。
+
+  ## 输入
+  用户输入:课程名称 + 考试类型(期中/期末/补考)+ 题型与分值要求
+  (没说就用默认:单选 10×2 + 填空 5×2 + 简答 4×10 + 综合 2×15)。
+  课程材料获取顺序:
+  1. 用户给了文件路径 → ReadFile 读取;
+  2. 本地资料库 → KBList + KBSearch 取回讲义/教材要点;
+  3. 都没有 → 基于学科常识出题,但必须在试卷开头标注
+    「(未提供课程材料,考点基于学科通识,请任课教师核对范围)」。
+
+  ## 出题铁律
+  - **严格限定在材料覆盖范围内**,不超纲;每道题在细目表里标注
+    出处(章节/资料库文档名)。
+  - 答案必须唯一、无歧义;计算题给完整步骤分。
+  - A/B 卷考点分布一致、难度相当,但题目不重复。
+  - 禁止出「以下说法正确的是」这类全靠死记的劣质题超过总题量 30%;
+    至少 40% 的分值考查理解/应用/分析层次。
+
+  ## 强制工作流程
+  1. 取回课程材料(见上)。
+  2. 先写 `{workspace}/blueprint.md` 双向细目表:
+     表格 = 章节/考点 × 认知层次(记忆/理解/应用/分析) × 题型 × 分值,
+     合计 100 分;附难度预估(易:中:难 ≈ 3:5:2)。
+  3. 写 `{workspace}/exam_A.md` 与 `{workspace}/exam_B.md`:
+     完整可印刷试卷(卷头信息留空模板 + 题目,不含答案)。
+  4. 写 `{workspace}/answers.md`:A/B 卷参考答案 + 每题评分标准
+     (简答/综合题给逐点给分细则)。
+  5. 读回 blueprint.md 确认后 terminate,最终回答给出文件清单
+     和细目表摘要。
+
+  ## 风格
+  中文,试卷排版规范(题号、分值标注);术语与符号准确。
+
+guard:
+  validator: "'blueprint' in x or '细目表' in x or 'exam_A' in x"
+  retry: 1
+  fallback: last
+  dangerousCommandBlock: true
+
+react:
+  maxSteps: 40
+  observationEnabled: true
+  toolTimeout: 120
+  thinkTimeout: 300
+
+memory:
+  enabled: true
+  strategy: local
+  size: 40
+
+mcp:
+  localTools:
+    - ReadFile
+    - WriteFile
+    - ListFiles
+    - SearchContent
+    - KBSearch
+    - KBList
+    - terminate
+  policy:
+    mode: auto
+    maxConcurrent: 1

+ 28 - 0
agentexample/agentpacks/teaching.exam-builder/manifest.yml

@@ -0,0 +1,28 @@
+id: teaching.exam-builder
+name: 试卷与题库助手
+version: 0.1.0
+domain: teaching
+entrypoint: agents/builder.yml
+description: >
+  基于你的课程材料出卷:先生成双向细目表(考点 × 认知层次 × 分值),
+  再产出 A/B 两套平行试卷与完整参考答案、评分标准。课程讲义放进
+  本地资料库或给出文件路径即可,出题严格限定在材料覆盖范围内,
+  避免超纲。适用于任何专业的期中/期末/补考出卷与题库建设。
+audience:
+  - professor
+  - lecturer
+  - teaching_assistant
+permissions:
+  network: false
+  shell: false
+  file_write: workspace
+  read_knowledge: true
+  read_filesystem: true
+model:
+  recommended:
+    - dashscope/qwen-max
+    - claude-code/sonnet
+    - ollama/qwen
+author: kenny67nju
+homepage: https://github.com/kenny67nju/lambdagentpaas
+license: BUSL-1.1

+ 9 - 0
agentpaas/src/agentpaas/engine/builtin_packs.py

@@ -19,10 +19,19 @@ from pathlib import Path
 logger = logging.getLogger(__name__)
 
 BUILTIN_PACK_IDS: list[str] = [
+    # 科研
     "research.top-journal-reviewer",
     "research.literature-mapper",
     "research.grant-planner",
     "research.multi-reviewer",
+    "research.paper-polisher",
+    "research.rebuttal-assistant",
+    "research.thesis-advisor",
+    # 教学
+    "teaching.course-designer",
+    "teaching.exam-builder",
+    # 学术服务
+    "service.academic-letters",
 ]
 
 

+ 19 - 1
docs/DESKTOP_MANUAL_zh.md

@@ -259,7 +259,9 @@ curl -X POST http://127.0.0.1:8000/api/v1/traces/<run_id>/confirm \
 
 ## 8. 内置科研智能体包
 
-桌面模式首次启动自动安装以下 4 个包(全部 local-first:工具层不联网、不可执行 shell):
+桌面模式首次启动自动安装以下 10 个包(全部 local-first:工具层不联网、不可执行 shell),覆盖科研、教学、学术服务三类场景:
+
+**科研类:**
 
 | 包 | 用途 | 推荐模型 |
 |---|---|---|
@@ -267,6 +269,22 @@ curl -X POST http://127.0.0.1:8000/api/v1/traces/<run_id>/confirm \
 | **research.multi-reviewer**(多视角审稿) | 主编排器派发 4 位专科审稿人(创新性/方法/实验/写作)独立评审后综合,盲点更少、可溯源到维度 | dashscope/qwen-max |
 | **research.literature-mapper**(文献地图) | 围绕研究问题梳理文献脉络与谱系 | dashscope/qwen-plus |
 | **research.grant-planner**(基金助手) | 生成基金申请书核心部分:立项依据、科学问题、创新点、技术路线、风险预案 | dashscope/qwen-max |
+| **research.paper-polisher**(润色投稿) | 论文润色(只改语言、改动附理由)+ 语言问题清单 + cover letter 草稿 | dashscope/qwen-max |
+| **research.rebuttal-assistant**(审稿回复) | 逐条拆解审稿意见(接受/澄清/商榷/超范围)→ response letter + 修改任务清单 | dashscope/qwen-max |
+| **research.thesis-advisor**(论文指导) | 研究生开题/中期/学位论文第一轮把关:问题定位到章节、三档分级、附改法 | dashscope/qwen-max |
+
+**教学类:**
+
+| 包 | 用途 | 推荐模型 |
+|---|---|---|
+| **teaching.course-designer**(课程设计) | 教学大纲(OBE)、逐周教学日历、考核方案 + rubric、第一课教案 | dashscope/qwen-max |
+| **teaching.exam-builder**(试卷题库) | 基于课程材料出卷不超纲:双向细目表 + A/B 平行卷 + 答案评分标准 | dashscope/qwen-max |
+
+**学术服务类:**
+
+| 包 | 用途 | 推荐模型 |
+|---|---|---|
+| **service.academic-letters**(学术信函) | 推荐信(中英)、邀请函、提名材料、评语;事实全部来自你的材料,绝不编造 | dashscope/qwen-max |
 
 **使用方法**:「智能体包」页 → 选择包 → 「创建智能体」→ 对话中给出论文路径或研究方向即可。例如对审稿包说: