anywrite 是用于 Anytype 桌面应用本地 HTTP API 的编译型 Bun/TypeScript CLI,覆盖 spaces、objects、properties、tags、types、templates、lists、chat、files、members、search、auth 共 52 个端点,编译为单一二进制,无运行时依赖。它被定位为官方 MCP 服务器的低上下文替代方案:不必向每个智能体会话常驻暴露 52 个工具,而是作为普通 CLI 以技能形式按需调用,也可直接用于终端或脚本。
用途:当用户提到 Anytype,或需要创建、更新、搜索、整理笔记、任务、PKM 对象时使用;也适用于操作空间、属性、标签、类型、模板、列表(集合与集),以及上传文件、空间内聊天、以编程方式读写结构化对象。
使用方式:使用前须确保 Anytype 桌面正在本地运行(默认 http://localhost:31009)并完成一次认证。该仓库不附带 anywrite 可执行文件,用户须在工作区外安装或构建经审核的上游发行版,并提供其明确的绝对路径,且不应从当前仓库自动发现或执行 ./dist/anywrite。认证命令为:"/absolute/path/to/anywrite" auth --status、"/absolute/path/to/anywrite" auth(应用内出现 4 位验证码)、"/absolute/path/to/anywrite" auth --code 1234。密钥写入 ~/.anywrite/config.json,任何命令都不会打印它。调用形式为 anywrite <resource> <action> [positionals] [--flag value];默认输出 JSON,--pretty 为人类可读视图,--json 可处理尚未被类型化标志覆盖的字段;space/type/property 位置参数接受名称或 id,名称会自动解析为 id。
限制:受 Anytype 本地 API 本身约束,不支持块级编辑(正文仅支持整体 markdown 替换)、不支持成员邀请与角色管理、不支持模板的创建/更新/删除、不支持删除空间。对象正文字段在创建时名为 --body,在更新时名为 --markdown。lists add/remove 仅对 collection 有效,对 set 无效。不应设置空字符串的 --icon,省略该标志即可。聊天分页使用游标,其他资源使用偏移量。重复上传同一文件会按内容哈希去重并返回既有对象 id。删除为软归档且幂等。该技能不替代针对具体环境的验证、测试或专家审查;若缺少必要输入、权限或安全边界,应停止并请求澄清。