十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Anarlog 桌面端 Agent 会议数据访问指南:MCP 工具与 CLI 双通道实战

Anarlog 桌面端 Agent 会议数据访问指南:MCP 工具与 CLI 双通道实战 Anarlog 桌面端 Agent 会议数据访问指南MCP 工具与 CLI 双通道实战【免费下载链接】anarlogOpen source Granola AI Alternative项目地址: https://gitcode.com/GitHub_Trending/hy/anarlogAnarlog 是一个开源的 Granola AI 替代方案其桌面应用会在启动时向 AI 助手注入一份专门的会议数据访问契约。本文围绕该契约文件 agents-content.md 展开系统讲解 Agent 如何通过 Anarlog 的 MCP 工具与anarlog --jsonCLI 安全、高效地读取会议记录、笔记、摘要、参与者、行动项与转写文本。读完本文你将掌握 Anarlog 为 AI 设计的完整数据访问协议从禁止直接扫库的边界原则到有界分页的转写读取策略再到本地数据库与云端快照的数据源选择逻辑。一、这份文档是什么桌面端注入 Agent 的数据访问契约agents-content.md位于apps/desktop/src-tauri/src/文件开头明确标注 This file is auto-generated on app startup它并不是一份普通的手写文档而是随桌面应用一起交付给 AI 助手的运行时行为约定。在源码层面它被 agents.rs 通过include_str!(agents-content.md)在编译期嵌入这意味着文档内容与桌面应用二进制绑定发布任何连接到 Anarlog 桌面端的 Agent 都会拿到同一份访问规则它定义的是行为契约而非功能清单核心是告诉 Agent 什么能做、什么不能做、以及怎么做才安全。从整体设计看这份契约与仓库中的 agent-plugins/anarlog/skills/anarlog/SKILL.md、CLI 命令参考、MCP 工具参考 一脉相承共同构成 Anarlog 面向 AI 生态的完整访问层。二、第一原则只读类型化接口禁止底层裸访问文档为 Agent 划定了一条不可逾越的红线必须使用 Anarlog 提供的类型化只读接口读取会议数据。禁止使用find、grep、rg、文件系统遍历或直接执行 SQLite 查询来查找和读取会议。这条约束并非保守主义而是有明确的工程依据应用层 schema 兼容性Anarlog 的本地数据库apps/db-app下包含 83 个 SQL 迁移文件会随版本演进直接查库的 Agent 很容易在升级后读错结构。技能文档 SKILL.md 明确指出The CLI and MCP servers handle application-schema compatibility——只有 CLI 和 MCP 服务端才负责解析应用 schema。数据归属与一致视图同一场会议可能同时存在本地数据库记录与云端快照只有通过统一接口才能保证 Agent 拿到的是 Anarlog 认可的规范视图。权限与安全边界会议内容是用户私有数据直接扫文件系统既低效也容易越权。对 Agent 而言正确的访问路径只有两条按优先级依次是MCP 工具优先CLI--json兜底。三、首选通道Anarlog MCP 工具当 MCP 可用时文档要求 Agent 优先使用 Anarlog 的 MCP 工具集。桌面端面向 Agent 的四个核心只读工具与用途如下工具用途list_meetings解析会议 ID支持按标题、ID 片段或周期性系列recurring series查找get_meeting读取单场会议的元数据、规范笔记canonical note、摘要、参与者与行动项get_meeting_transcript读取有界的转写分页默认 200 词上限 500 词get_recurring_meeting_history查找与已知会议同属一个周期性系列的其他会议完整工具集可在 mcp.md 中看到共 10 个工具。除上述 4 个外还包括export_meeting完整会议导出、propose_summary_edit、propose_memo_edit、list_proposals、get_proposal、decline_proposal。云 MCP 是只读的本地 MCP 额外提供 proposal 相关工具用于暂存编辑提案但永远不会直接修改会议——提案必须由人类在桌面应用中确认后才生效。MCP 资源与 URI 模板除了结构化 JSON 工具MCP 服务端还暴露了三类资源 URI定义见 mcp.rsanarlog://meetings/{meeting_id}—— 会议元数据、笔记、摘要、参与者与行动项Markdownanarlog://meetings/{meeting_id}/transcript{?offset,limit}—— 有界转写文本页纯文本默认 200 词上限 500 词anarlog://series/{series_id}—— 周期性会议历史Markdown选用原则需要结构化 JSON 走工具只需要精炼的 Markdown 或纯文本上下文时走资源。mcp.rs中parse_resource_uri会严格校验 URI 的 scheme 必须是anarlog任何file:///tmp/meeting之类的 URI 都会被拒绝——这正是禁止绕过接口直接访问文件在协议层的落地。一条完整的 MCP 工作流根据 mcp.rs 中注入给 MCP 客户端的 instructions标准流程是先调用list_meetings解析出确切的 meeting ID再调用get_meeting获取笔记、摘要、参与者与行动项——往往此时已足够回答用户问题只有确实需要更多上下文时才用get_meeting_transcript按页读取转写并从pagination.next_offset继续翻页涉及系列上下文时调用get_recurring_meeting_history只有小范围读取不足以完成任务时才使用export_meeting读取含转写的完整记录。instructions 中还明确写着两条铁律Never invent meeting titles, dates, or ids绝不虚构会议标题、日期或 ID与 Never access SQLite directly绝不直接访问 SQLite。四、兜底通道anarlog --jsonCLI当 MCP 不可用时文档要求回退到 Anarlog CLI并强制配合--json输出。原文档给出的四条核心命令必须原样掌握anarlog --json meetings list --query planning anarlog --json meetings get MEETING_ID anarlog --json meetings transcript MEETING_ID --limit 200 --offset 0 anarlog --json meetings history MEETING_IDCLI 命令全貌从 cli.rs 的 clap 定义看CLI 提供auth、doctor、meetings、proposals、mcp五个子命令。结合 cli.mdmeetings的完整能力如下# 列表与筛选limit 范围 1-200默认 20offset 默认 0 anarlog --json meetings list --query planning --limit 20 --offset 0 # 读取单场会议元数据 规范笔记 摘要 参与者 行动项 anarlog --json meetings get MEETING_ID # 单独读取笔记或摘要 anarlog --json meetings note MEETING_ID --kind note anarlog --json meetings note MEETING_ID --kind summary # 读取有界转写页limit 以词为单位默认 200上限 500offset 为词偏移 anarlog --json meetings transcript MEETING_ID --limit 200 --offset 0 # 周期性系列历史 anarlog --json meetings history MEETING_ID --limit 20 --offset 0 # 健康检查响应含 ready:false 时进程以状态码 1 退出 anarlog --json doctor # 导出仅当用户明确要求保存/转移完整会议时使用 anarlog meetings export MEETING_ID --format markdown --output meeting.md anarlog meetings export MEETING_ID --format json --output meeting.jsonexport命令有两个值得注意的细节见 output.rs 与 cli.rs默认拒绝覆盖已存在的文件create_new(true)打开冲突时报output_exists错误退出码 4--force强制要求同时传入--output且只能在用户明确同意覆盖该路径后使用。proposals子命令用于暂存编辑提案anarlog --json proposals create --meeting MEETING_ID --kind summary --content Replacement markdown只会创建一条待处理的提案不要宣称会议已被修改最终由桌面端人类用户应用或拒绝。这与 MCP 侧propose_summary_edit/propose_memo_edit的语义完全一致。JSON 响应契约--json输出的结构在 output.rs 中有精确定义成功响应包含四个字段schema_version—— 固定为1供调用方做兼容性判断command—— 命令标识如meetings.list、meetings.get、meetings.transcriptdata—— 实际业务数据pagination—— 可选的分页信息含offset、limit、returned、total、next_offset。例如meetings.transcript的data中包含meeting_id、text、words三个字段见 meetings.rs。Agent 应始终从pagination.next_offset取下一页而不是自己推算偏移量。认证与健康检查CLI 支持无图形会话的头less 认证流程cli.mdanarlog auth login anarlog --json auth status anarlog auth logoutauth login会把授权 URL 打印出来交给用户用户可在任意设备的浏览器打开、登录并复制anarlog://auth/callback链接回填到 CLI 的隐藏提示中。切勿让用户把该回调链接粘贴到聊天记录或命令行参数里因为它包含账户令牌。在 Linux 上会话优先使用 Secret Service不可用时降级为桌面兼容的本地认证文件权限0600。配合--json时登录 URL 输出到 stderr回调从 stdin 读取。五、数据库发现与路径覆盖规则文档规定CLI 会从平台的应用数据目录platform application-data directory自动发现 Anarlog 的数据库Agent不得去文件系统里乱找。只有两种全局参数允许显式指定定义见 cli.rs同时支持同名环境变量ANARLOG_BASE/ANARLOG_DB_PATH# 仅在用户明确提供非默认数据库路径时使用 anarlog --db-path /path/to/app.db --json meetings list anarlog --base /path/to/anarlog-data --json meetings list规则的核心是信任应用自带发现机制正常场景下 CLI 自己就能找到数据库--db-path是留给用户主动指定非默认位置的逃生舱Agent 不应主动探测或爬取。六、数据源选择local / cloud / automeetings命令支持--source参数默认local见 cli.rs三种取值对应三种访问策略数据源行为local只读本地数据库默认cloud读取云端快照需要anarlog auth login认证只读proposal 仍留在本地auto本地数据库存在时用本地仅当本地数据库缺失时回退到云端auto的回退逻辑在 meetings.rs 中实现db::open失败且错误为DatabaseNotFound时才尝试CloudClient::current()其他错误直接上报。技能文档 SKILL.md 给出的选择顺序更细致云 MCP 工具已连接则优先调用MCP 不可用但有 CLI 登录用anarlog --json meetings --source cloud ...读同一批云端快照云上无匹配、快照未开启或用户问的是仅存在于本机的会议才使用本地--json命令本地anarlog mcpstdio 服务只用于补足同样这些缺口不要把本地当作云端已有结果之外的第二个真相源若云端与本地 CLI 都不可用引导用户启用Cloud API Connectors不要自行安装软件。无论走哪条通道回答都必须以实际调用返回的内容为准只能引用工具真正返回的会议、标题、日期和 ID禁止从聊天记录或仓库中发明会议并且要明确说明数据来自 Cloud 还是本地数据库。七、上下文纪律有界分页与及时止损会议转写可能非常长文档对上下文占用提出了硬性纪律转写分页的limit以词为单位默认 200、最大 500MCP 工具与 CLI 行为一致常量定义于anlg_agent_access并在 cli.rs 与 mcp.rs 中共同约束从pagination.next_offset继续仅当确实需要更多转写上下文时证据足够就停止翻页当单场会议的详情或笔记已能回答问题时不要导出整场会议。这套纪律的工程支撑在 mcp.rs转写 URI 的limit会被clamp(1, MAX_TRANSCRIPT_LIMIT)强行收敛即使客户端传limit900也会被压回 500——服务端在协议层就杜绝了无界读取。配套测试parses_supported_resource_uris_and_bounds_transcript_limit正是为此编写。八、环境准备从零接通 Agent 访问链路若你的环境尚未接通可参考 setup.md 完成准备。云端 MCPAnarlog 插件连接托管服务器账户需要 Anarlog Pro。在桌面端打开Settings → Developers → Cloud API Connectors阅读披露说明后启用等待会议快照上传完成。首次使用工具会触发 Anarlog 登录与授权云端读取不需要 API Key 或本地 CLI。本地 CLI 安装在桌面端Anarlog → Settings → Developers选择 Install。各平台安装位置macOS 与 LinuxDEB / AppImage为~/.local/bin/anarlogWindows 为%LOCALAPPDATA%\Anarlog\bin\anarlog.exeMac App Store 版本不捆绑 CLI需从源码构建cargo install --locked --path apps/cli anarlog --version注意 Flatpak 发行版把命令安装为anarlog-cli而非anarlogcli.md 第一条即有说明。CLI 需要桌面应用至少运行过一次以创建本地数据库之后即可在应用关闭时独立使用。本地 MCP可选如需完全不依赖云端的本地 Agent可自行启动 stdio 服务端anarlog mcp通用客户端配置{ mcpServers: { anarlog: { command: anarlog, args: [mcp] } } }修改 MCP 配置后需重启客户端市场插件不会自动启动这个本地服务端。九、安全与隐私红线最后无论走哪条通道文档与技能都强调以下隐私与安全要求会议内容是用户私有数据未经明确授权不得发送给其他服务或个人云 MCP 只读要暂存编辑请使用本地 CLI 或本地 MCP 的 proposal 工具由人类在桌面应用中确认CLI 导出会创建文件绝不擅自--force覆盖搜索结果模糊时主动请用户选择具体会议不要替用户做主。这四条红线与本文开篇的禁止裸访问原则一起构成了 Anarlog Agent 访问层的完整信任模型接口类型化、读取有界化、写入提案化、数据私有化。无论你是为自己的 Agent 接入 Anarlog还是参照这套设计为其他桌面应用编写 AI 访问契约agents-content.md 都是一份值得逐行对照的范本——更深入的命令细节可继续查阅 CLI 命令参考、MCP 工具参考 与 技能主文档。【免费下载链接】anarlogOpen source Granola AI Alternative项目地址: https://gitcode.com/GitHub_Trending/hy/anarlog创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表