About Agentero
Agentero is an MCP server published by poco-ai in the RAG category: unified research workspace for humans & agents — PDF Q&A with citations, Vault, writing. 为人与 Agent 协作的科研工作台;补齐 Zotero 时代的人机上下文断点。.
The repository has 2.1K stars and 130 forks, with the last commit 7 hours ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/poco-ai/AgenteroThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (35)
context_readRead one authorized source one level deeper. Default level is metadata (title, authors, abstract). Then excerpt, section, page, or region. full is explicit, capped, and not the default.
Parameters not published.
context_searchSearch the sources authorized for this session. Returns a few short evidence cards with citation URIs. Does not return paper text.
Parameters not published.
discover_arxivDiscover and rank arXiv papers for a topic (keywords / categories / submission-date window) with a deterministic lexical scorer. Multiple keywords default to AND; set keywordMatch to
Parameters not published.
file_deleteDelete one or more vault files/directories. Default is the vault recycle bin (undoable; catalog rows under papers/ are restored too). permanent=true removes files and catalog rows without a recycle bin. Use vault to target a vault from vault_list; defaults to the open vault.
Parameters not published.
file_listList one directory in the selected vault (not the whole tree). path is vault-relative; omit it for the vault root. Skips .agentero, hidden dirs, and LaTeX build artifacts. Use this to find drafts such as main.tex outside papers/. Set vault to target a vault from vault_list.
Parameters not published.
file_moveMove or rename one vault file or directory (vault-relative from/to). Updates resolved wiki links and catalog paper paths. The destination must not exist. Use vault to target a vault from vault_list; defaults to the open vault.
Parameters not published.
file_readRead one UTF-8 text file by vault-relative path (e.g. drafts/main.tex or notes/idea.md). Refuses .agentero, binaries, marks, and layout indexes. Missing file is an error. NOTES.md is allowed here; prefer paper_notes_get for a paper. Research tables (*.table.json) larger than 2 MiB must use table_query. Set vault to target a vault from vault_list.
Parameters not published.
file_writeWrite one UTF-8 text file by vault-relative path. mode=replace (default) or append. Creates missing parent directories inside the vault. Use for a LaTeX draft outside papers/. Refuses NOTES.md (use paper_notes_write), .agentero, binaries, marks, and layout indexes. Cannot append or replace an existing *.table.json — table_upsert and table_update_cells are the only write path for an existing resear
Parameters not published.
import_idImport a paper into the vault by arXiv id, DOI, or URL (magic wand).
Parameters not published.
layout_getGet one layout region by id (e.g. figure-3) or exact published PDF anchor (e.g. #2.1#p3).
Parameters not published.
Show all 35 tools
layout_listList layout regions; kind=section or paragraph reads layout.json and returns exact PDF anchors, original text, ownership and coordinates. Other kinds use layout-index.json. Requires desktop layout analysis.
Parameters not published.
page_readRead the full text layout of one physical page of a paper from source/layout.json (schemaVersion 3, desktop layout analysis). Returns every region in reading order, plus text_regions (paragraph-level). Requires layout analysis to have run for the paper.
Parameters not published.
paper_getGet one paper
Parameters not published.
paper_listList papers in the selected vault. Default rows are only id/path/title (token-cheap). Pass fields (year, date, tags, authors, isRead, …) or full=true for more. Abstract is only on paper_get. Set vault to target a vault from vault_list.
Parameters not published.
paper_moveMove a paper or papers organization folder under a new parent under papers/. Preserves the basename, updates wiki links and catalog paths, and optionally migrates to another vault via to_vault (paper id must be unique there). Use file_move for renaming a file or moving non-paper paths.
Parameters not published.
paper_notes_getRead NOTES.md for a paper (id or vault-relative path). Empty string if the file does not exist.
Parameters not published.
paper_notes_writeWrite NOTES.md for a paper. mode=replace (default) keeps existing YAML frontmatter unless content includes its own; mode=append adds to the body.
Parameters not published.
paper_pathsList related on-disk paths for one paper: folder, NOTES.md, PAPER.md, marks/, local PDF, and source/ when TeX exists. Never returns file bodies. Set vault to target a vault from vault_list.
Parameters not published.
paper_relationsList citation, cited-by, or related papers for one authorized paper. Cards are thin. A related paper outside this grant cannot be read with context_read.
Parameters not published.
paper_set_metaUpdate catalog metadata fields for a paper (e.g. publication/venue, title, date, doi, arxiv_id, authors).
Parameters not published.
paper_set_readSet catalog is_read for a paper (does not run paper-reader). Default isRead=true.
Parameters not published.
paper_tag_addAdd tags to a paper. Names may use a color suffix like topic:blue.
Parameters not published.
paper_tag_listList catalog-wide tags with occurrence counts. Internal @zotero:/@arxiv: tags are hidden unless all=true. Set vault to target a vault from vault_list.
Parameters not published.
paper_tag_rmRemove tags from a paper (case-insensitive names).
Parameters not published.
paper_tag_setReplace all user tags on a paper; internal @zotero:/@arxiv: tags are preserved. Use paper_tag_add / paper_tag_rm for incremental edits. Set vault to target a vault from vault_list.
Parameters not published.
paper_text_getRead page text of a paper
Parameters not published.
remote_delegateAsk a registered agent on an already connected remote vault to do a task. There is no shell command and no auto-approve switch. The host waits, then returns the run id, status, and text. On timeout the remote agent keeps running.
Parameters not published.
remote_delegate_cancelCancel a remote_delegate run and stop that remote turn.
Parameters not published.
remote_delegate_resultRead the status and text of a remote_delegate run.
Parameters not published.
remote_targetsList remote vaults that are already connected, and the registered agents that can run there. Do not invent a shell command.
Parameters not published.
table_queryRead rows from an existing *.table.json in stored order. This is the read path for a research table, including tables larger than file_read. Filter by registryId and/or field name plus equals. field names are Unicode-case-insensitive. includeArchived defaults to false. limit defaults to 50 and is clamped to 1..200. Does not write. Set vault to target a vault from vault_list. expectedRevision for t
Parameters not published.
table_update_cellsPatch cells in an existing *.table.json. Together with table_upsert, this is the only write path for an existing research table. Each cell is addressed by registry id and field name, not by row index or field id. value is a string, number, boolean, or null (clears the cell). expectedRevision comes from table_query. The call is all-or-nothing. Optional idempotencyKey replays without writing when th
Parameters not published.
table_upsertCreate or patch rows in an existing *.table.json. Together with table_update_cells, this is the only write path for an existing research table. Each row is { registryId?, values } keyed by field name. Omit registryId to append a row and issue the next registry id. expectedRevision comes from table_query. Optional idempotencyKey replays without writing when the key was already applied. Confirm with
Parameters not published.
vault_listList the local vaults this server may use. On the desktop app that is every vault the user has opened; on
Parameters not published.
vault_searchSearch Markdown and research tables (*.table.json) in the selected local vault using case-insensitive keyword AND (not semantic search). A hit path may be *.table.json; read those rows with table_query, and other hits with file_read. Catalog filters (year, publication, doi, isRead) drop table hits. Returns ranked relative paths, snippets, 1-based lines and truncated. limit defaults to 60, clamped
Parameters not published.
Ask AI
Ask AI about Agentero
Powered by Claude
Security checks
Static checks derived from the repository 5 days ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- !No dynamic code executionSource scan found eval or shell execution. Review how tool inputs reach it before granting credentials.
1 check has not been run yet.
Releases
README
如果本项目对你有帮助,请在右上角给个 star 吧!
背景与设计初衷
Zotero 是学术管理领域非常优秀的软件。它功能成熟、生态稳定,帮助许多科研人员建立了最初的文献归档体系。
但在当下日常科研与深度使用各类 Agent 时,传统的文献工具链暴露出一些断点:
- 上下文严重分散:论文存储在 Zotero,笔记记在 Obsidian,与模型的推导和分析留在各个网页对话框中。三者数据彼此隔离,当需要 Agent 结合某篇具体论文与历史笔记进行深入推导时,用户必须反复手动复制粘贴。
- 文献格式对模型不友好:人类习惯阅读排版良好的 PDF 文件;但对于模型而言,直接解析双栏排版、跨页表格、复杂数学公式和交叉引用的成本极高,极易产生识别错误与幻觉。结构化 Markdown 与 LaTeX 才是模型容易准确理解的格式。
- 维护成本较高:AI 伴读、全文翻译、笔记同步等高频需求,往往需要安装和调试多个社区插件,配置门槛高且在版本升级时容易出现兼容性问题。
- 批量自动化能力有限:通过 Deep Research 或自动化检索工具发现的大量文献,目前仍需人工在浏览器中逐篇点击保存,难以顺畅衔接批量研究流。
Agentero 并非旨在替代 Zotero,而是探索一种人与 Agent 协同处理科研上下文的新方式:
- 人类负责:提出研究问题、进行学术价值判断、深度研读与核心结论推导;
- Agent 负责:批量检索筛选、元数据抓取、图表与公式提取、引用关系梳理及基础总结。
核心功能
1. 结构化阅读与笔记系统
- PDF 阅读与批注:提供大纲导航、整页与宽度自适应、平滑划词、高亮批注与全文检索。
- 图表与公式提取:自动解析论文中的数学公式、算法伪代码及表格,生成结构化 Markdown 与 LaTeX 内容,确保 Agent 调用时上下文准确无误。
- 双向链接笔记:内置所见即所得 Markdown 编辑器,支持
[[双链]]引用语法、/快捷指令与 LaTeX 实时渲染,笔记与文献建立原生关联。 - 多模式翻译服务:支持划词翻译、按页对照翻译与全文翻译,内置可用翻译通道,并支持配置自定义 API Key(BYOK)。
2. 开放的 Agent 协议与自动化接口
- 基于 ACP 协议连接本地 Agent:底层遵循 Agent Client Protocol,支持连接各类本地运行的 Agent(如 Claude Code、OpenCode、Codex 或本地模型),不绑定特定厂商,上下文完全保留在本地。
- 内置 MCP (Model Context Protocol):可作为 MCP Server 运行,允许 ChatGPT Web、Claude Desktop 等外部客户端直接检索并调用本地文献库作为上下文。
- 极客 CLI 支持:内置无头命令行工具,支持通过脚本实现批量导入文献、提取元数据与写入笔记等自动化工作流。
3. 学术雷达与文献发现
- 多渠道抓取:内置集成 Cool Papers 与魔搭社区,支持在软件内直接浏览并一键归档文献;支持学术 RSS 订阅。
- 个性化推荐:基于本地已有文献库的内容特征,自动推荐每日 arXiv 的相关最新论文。
- 引用关系自动梳理:自动解析文献末尾的参考文献列表,支持一键批量抓取入库;支持获取出版商元数据并追踪后续被引动态。
4. 兼容 Zotero 生态与本地透明存储
- Zotero 书库无缝迁移:支持一键导入整个 Zotero 数据库,保留已有标签、笔记与附件;兼容 Zotero 浏览器扩展直接保存网页论文;支持导出 BibTeX / BibLaTeX。
- 本地文件夹透明管理:不使用私有数据库或散列混淆目录,所有文献与笔记均以标准文件(PDF、Markdown)保存在本地规范文件夹中,可自由使用外部编辑器读取。
- 多端同步与远程访问:支持与 S3 兼容的云存储服务进行同步;支持通过 SSH 隧道访问部署在远程服务器上的文献库。
界面与功能预览
1. 学术 RSS 订阅
追踪关注的学术博客、实验室主页与前沿动态:
2. Agent 技能(Skill)扩展
浏览并安装社区提供的科研技能,扩展论文精读与写作分析能力:
3. Agent 与连接配置
通过 ACP 协议管理、升级和切换本地 Agent:
4. S3 兼容云存储同步
配置私有或商业 S3 存储,实现多设备间知识库同步:
5. 多套界面主题
支持亮色/暗色及多种配色风格,支持自适应系统外观设置:
快速开始
桌面客户端安装 (macOS / Windows / Linux)
可前往 官网 agentero.app 或 GitHub Releases 下载适用于各平台的预编译安装包。
macOS (Homebrew)
brew tap poco-ai/agentero
brew install --cask agentero
Linux 用户须知:系统环境要求 Ubuntu 22.04+(依赖
webkit2gtk 4.1),详细依赖说明请参考 安装文档。
命令行工具 (CLI)
如需在终端或通过脚本自动化管理文献:
brew tap poco-ai/agentero
brew install agentero
# 查看常用命令与参数
agentero --help
在更多地方使用 Agentero
- DeepSeek Harness (dsh) 插件:在 DeepSeek Harness 中也能直接使用 Agentero 的文献库、笔记与 PDF 阅读器。执行
dsh plugin --profile web add @poco-ai/agentero-dsh安装,详见 agentero-dsh-plugin。
致谢与社区
- 感谢 LinuxDo 与 ModelScope 魔搭社区 成员在项目早期测试阶段提供的建议与反馈。
- 感谢 AtomGit 提供的国内镜像支持。
如果 Agentero 对你的日常学术研究有所帮助,欢迎在 GitHub 上为本项目点亮一个 ⭐ Star。
感谢所有贡献者!
Star History
开源许可证
本项目基于 MIT License 协议开源。第三方组件与许可证清单见 .github/THIRD_PARTY_NOTICES.md。
README fetched from the repository 5 days ago. The original is authoritative.