AITP Research Workbench: Constraining Subject Catalogs and Write Locations for DeepSeek Harness

前言

在 DeepSeek Harness(DSH)里做科研类 Agent 会话时,常见摩擦不在「能不能写文件」,而在「写到哪里、换会话后还能不能找到」。推导、脚本、数据和手稿若散落在课题目录根下,或同一课题材料分布在多个路径,后续只能靠全文搜索或记忆。DSH 社区插件按 bundle 扩展 Host 与客户端能力;AITP 科研工作台(仓库 bhjia-phys/aitp-research-desk)把「一个课题 = 含 research.md 的自包含文件夹」落成可执行约束,并提供文件管理器式浏览界面,维护者为 bhjia-phys,分类为客户端插件。

下面介绍它的定位、能力、安装方式与典型用法。事实以 GitHub README 为准;它不解析 PDF、不做 RAG、不建数据库,只约束 Markdown 目录结构与写入位置,并把已有文件原样展示。

这是什么

AITP Research Desk 是 DSH 的一个研究插件:把课题变成自包含文件夹,让 Agent 在写文件前通过工具取得规范路径,用写守卫拦截根目录乱放文件,并通过 research.md 相关工具维护进展与结构体检。侧边栏底部安装成功后会出现「科研工作台」入口。

与 AITP Skills bundle(plugins/aitp)是两个独立的 DSH bundle,建议一起安装:Skills 负责研究循环与方法论;本插件负责「东西放哪、现在到哪了」——写入守卫、research.md 工具、课题浏览面板。两者共享一份 placement-rules.json(Skills 的 assets/placement-rules.json);本插件 placementRules 配置可指向该文件,未配置或读取失败时使用内置副本,research_status 会提示「正在使用内置副本」。只装工作台也能用;同时安装 Skills 才有完整方法论约束。

当前 package 版本为 0.1.0,许可证 MIT,要求 DeepSeek Harness ^0.2.1-rc.2、Node.js >=22。

核心功能

课题约定与写守卫

  • 课题 = 含 research.md 的目录;research.md 是唯一主笔记。
  • 课题目录根下只允许 research.md、README.md、.tex/.bib 主稿和 .gitignore;其他文件由写守卫拒绝。
  • 推荐材料目录包括 notes/、references/、code/、calculations/、manuscripts/ 等;已有目录可就地采纳,把 research.md 放进现有文件夹即可。

写守卫覆盖 write / edit / str_replace_editor / research_write;shell 脚本里的写入靠系统提示与收尾 research_check 发现。

Agent 工具

系统提示会要求:先 research_status 确认课题 → 写前 research_path → 有实质进展 research_log → 收尾 research_check。

工具 用途
research_status 列出全部课题、状态、更新时间、材料数量、体检问题;指出当前工作目录所属课题。
research_path 写文件前取规范路径(notes/references/code/calculations/manuscripts/data/project/research),必要时建目录。
research_init 新建课题:research.md 模板 + README 地图 + 材料目录。
research_log 把带日期的进展写进 research.md 的 Current work。
research_check 结构体检:根目录散落文件、缺失 Current work、未链接材料等。
research_write 在课题内写文件(自动建父目录);WSL/网络盘上 write/edit 不可用时使用。
research_organize 把课题目录根下放错位置的文件整理到规范目录;默认 dry-run。

客户端面板

  • 课题树:按方向 → 课题 → 材料目录 → 文件逐层展开,读真实文件夹;点文件用 DSH 原生预览;大目录只显示前 500 项并提示剩余数量。
  • 规划页:编辑课题根下的 research-plan.md,可插入指向具体课题的链接。
  • 编辑器:Ctrl/Cmd+S 保存;携带 mtime,磁盘被 Agent 改过时拒绝覆盖;未保存草稿可恢复;超过 2 MB 时只读。
  • 知识库:右侧「知识库」页签浏览共享知识库,支持全文搜索,文件在原生预览中打开。
  • 远程主机:仅允许 remoteAllow 中列出的 SSH 别名,在本机终端中执行。

设计取舍上:只读文件系统 + 普通 Markdown,无数据库;面板不写文件,写入发生在会话里;不做 Zotero/RAG 式文献管理。

安装与启用

要求 DSH 0.2.1-rc.2 或更高(桌面版 / web profile 均可),Node.js 22+(DSH 自带运行时即可)。

1. 安装 AITP Skills(推荐)

git clone https://github.com/bhjia-phys/AITP-Research-Protocol.git
dsh plugin --profile desktop add ./AITP-Research-Protocol/plugins/aitp

2. 安装本插件

git clone https://github.com/bhjia-phys/aitp-research-desk.git
dsh plugin --profile desktop add ./aitp-research-desk

也可在 DSH 插件管理器里用 install_bundle,target 指向本目录的绝对路径。安装后重启 DSH(Host 侧需重新加载),页面刷新后侧边栏底部出现「科研工作台」图标。

3. 配置课题根目录

编辑本插件的 cordis.patch.yml(或在 profile 的 patch 层覆盖):

config:
  roots:
    - 'D:\Research'
    # WSL 示例:
    # - '\\wsl$\Ubuntu2204\home\you\physics\topics'
  newProjectRoot: 'D:\Research'
  placementRules: 'D:\AITP-Research-Protocol\plugins\aitp\assets\placement-rules.json'

roots 是扫描课题的根目录;每个根下按 maxDepth 查找 research.md。配置变更后重启 DSH。

插件以当前 DSH 进程权限读写配置的根目录与课题文件;安装前请阅读仓库源码与 MIT 许可证,确认路径与远程 SSH 配置符合本机安全策略。

典型用法

  1. 配置 roots 与(可选)placementRules 后重启 DSH,在面板中展开课题树,用原生预览打开 research.md 或材料文件。
  2. 在 Agent 会话中先调用 research_status,确认当前工作目录所属课题及体检问题。
  3. 新建课题时用 research_init;写 notes、code、manuscripts 等前用 research_path 取路径,再用 DSH 写入工具或 research_write。
  4. 有实质进展时用 research_log 更新 research.md 的 Current work;会话结束前用 research_check 做结构体检;根目录误放文件可用 research_organize(先 dry-run)整理。

规划跨多个课题时,在 research-plan.md 中维护链接或路径文本,与面板中的真实目录一致即可。

适用场景与注意

适合:已在用或计划用 AITP 目录约定做课题笔记、希望 Agent 写入有统一 guard、需要不另建索引就能浏览课题与材料的研究者;与 AITP Skills 同装时方法论与放置规则一致。

注意:

  • WSL 上首次为某课题目录打开原生预览时需创建/复用 workspace 与会话;大 WSL 路径首次展开可能受 9P 延迟影响。
  • 无文件监听推送,面板按需刷新;行内数学为轻量 LaTeX→Unicode,不是完整 TeX。
  • 社区目录 SkillHub 插件页 与 GitHub 为独立信息源,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」。

结尾

AITP 科研工作台把课题文件夹、research.md 工具链和写位置守卫绑在一起,并用文件管理器式面板展示真实目录,适合在 DSH 里长期跑科研 Agent、又不想让材料堆在课题目录根的情况。详情与 issue 见仓库 bhjia-phys/aitp-research-desk,目录页见 SkillHub。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye