flowix/app/flowix-dsh-host/bundles/dsh-flowix-memory

331Star42Fork23Issue1Watching

零代码配置型 bundle,让任意 DeepSeek Harness 实例通过本地 flowix-cli MCP 服务器读写 Flowix 笔记并生成脑图。

语言
TypeScript
License
MIT
分支
main
agent-memoryclaude-codecodex-clidesktopdshdsh-plugindsh-plugin-desktophermes-agent

安装

$ dsh plugin --profile web add github:text2future/flowix/app/flowix-dsh-host/bundles/dsh-flowix-memory

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

一句话定位

dsh-flowix-memory 是一个零代码的配置型 bundle,把本地 flowix-cli 的 MCP stdio 服务注册到任意 DeepSeek Harness 实例,让智能体在对话里直接读写 Flowix 笔记本并生成脑图等工件。

核心能力

  • 在 DeepSeek Harness 中注册名为 mcp__dsh-flowix-memory__flowix_memo 的工具,统一管理 Flowix 笔记本
  • 通过 notebooks / list / show / search 子命令浏览和检索 Flowix 笔记本及 Markdown 笔记
  • 通过 create / edit / write / delete 子命令对笔记进行创建、精确编辑、全量重写和删除
  • 通过 plugin list / plugin describe / plugin create mindmap 子命令查看声明的插件工件并把 Markmap Markdown 落地为脑图
  • 严格禁止 shell 语法(管道、重定向、&&、命令替换、环境变量展开都会被拒),命令只解析为 argv 后直接派发到类型化的存储层

技术实现

  • 语言: YAML 配置(不包含代码;底层 flowix-cli 由 Rust 实现)
  • 关键依赖: @deepseek-ai/dsh-mcp-client(Harness 内置的 MCP 客户端)+ 本地 flowix CLI(flowix mcp 子命令提供 stdio JSON-RPC 前端)
  • 架构模式: 通过 cordis.patch.yml 向宿主 Cordis 组合插入一个 MCP 客户端节点,使用 stdio transport 派生 flowix mcp 子进程;所有 flowix_memo 调用通过 JSON-RPC 2.0 行分隔协议回传结果
  • 入口文件: app/flowix-dsh-host/bundles/dsh-flowix-memory/cordis.patch.yml(bundle 自身);MCP 服务实际入口为 app/flowix-cli/src/mcp.rs

适用场景

已经习惯使用 Flowix 笔记、又希望让 DSH 智能体在同一会话里检索、摘抄或更新笔记内容的用户;以及不想自建 MCP 服务器、只希望复用现成本地 CLI 的第三方 Harness 部署者。装上后智能体可以把 Markdown 内容、读书摘录、脑图草稿直接落到 Flowix 的笔记本里。

前置依赖与兼容性

依赖最低版本说明
flowix CLI任意可执行二进制必须在 PATH 中可解析为 flowix,或通过 FLOWIX_CLI_PATH 指向绝对路径
Flowix 笔记本数据目录默认 ~/.flowix可用 FLOWIX_HOMEFLOWIX_DATA 覆盖
DeepSeek Harness未声明bundle 仅声明依赖 Harness 内置的 @deepseek-ai/dsh-mcp-client 节点,未在 package.json 中固定版本
Node.js未声明bundle 自身不运行 Node;运行时由 Harness 与 flowix-cli 决定

安装方式

dsh plugin --profile web add github:text2future/flowix/app/flowix-dsh-host/bundles/dsh-flowix-memory

配置项

配置类型说明默认值
FLOWIX_CLI_PATH字符串flowix-cli 可执行文件的绝对路径;当 flowix 不在 PATH 中时显式指定flowix(按 PATH 查找)
FLOWIX_HOME / FLOWIX_DATA字符串Flowix 笔记本数据目录,覆盖默认 ~/.flowix未设置时使用 ~/.flowix

插件自身不读 MCP 子进程的环境变量白名单之外的内容;MCP stdio 桥在拉起子进程前会剥离看起来像凭据的环境变量以及所有 DSH_* 变量,HOME/PATH 仍会继承。

常见问题

Q: 这个插件会上传数据到云端吗?

A: 不会。CLI 通过 stdio 在本地拉起,直接读写用户配置目录下的笔记本文件,整个链路没有任何远程 Flowix 服务参与。

Q: 装好后智能体多了哪些能力?

A: 会注册一个名为 mcp__dsh-flowix-memory__flowix_memo 的 MCP 工具,覆盖 notebookslistshowsearchcreateeditwritedeleteplugin listplugin describeplugin create mindmap 等子命令。

Q: 找不到 flowix 命令怎么办?

A: 插件默认在系统 PATH 里查找 flowix 可执行文件。如果 CLI 不在 PATH 中,可以设置 FLOWIX_CLI_PATH 环境变量指向 flowix-cli 的绝对路径来显式指定。

Q: Flowix 笔记本不在默认位置怎么改?

A: 默认数据目录是 ~/.flowix。如果笔记本放在别处,可以设置 FLOWIX_HOMEFLOWIX_DATA 环境变量覆盖,CLI 会按新路径读写笔记本。

Q: 用的是 Flowix Desktop,还需要装这个 bundle 吗?

A: 不需要。Flowix Desktop 自带的 flowix-dsh-host 组合(config/flowix.cordis.yml)已经包含同样的 MCP 服务条目。这个独立 bundle 主要面向第三方 Harness 用户;tests/bundle-sync.test.ts 会校验两处定义保持一致。

Q: 智能体能不能借此跑任意 shell?

A: 不能。MCP 前端会主动拒绝 shell 语法(管道、重定向、分号、&&、命令替换、环境变量展开),返回 INVALID_COMMAND 错误;所有命令都解析为 argv 后派发到类型化的存储层,不经过系统 shell。

Q: 删除笔记能恢复吗?

A: 不能。delete 子命令是破坏性的,会直接删除对应笔记文件并返回结构化结果,不会有二次确认;调用方需要自行保证目标正确。

Q: 怎么彻底卸载?

A: 执行 dsh plugin --profile web remove dsh-flowix-memory 从指定 profile 移除即可,移除后 flowix_memo 工具不再注册。

上手难度

入门 — bundle 本身只是一个 YAML 补丁,安装后只要本地有 flowix CLI 就能直接用,没有需要填写的 GUI 表单或额外配置项。

已知问题与限制

  • bundle 与 Flowix Desktop 自带的 dsh-flowix-memory 条目存在双重维护风险:两者必须保持 id / serverName / args 一致;如未同步,tests/bundle-sync.test.ts 会失败
  • flowix_memo 拒绝 shell 语法,包括 |;&&><`$(${ 都会被前置拒绝,因此诸如"读取后管道过滤"的工作流需要拆分成多次调用
  • 删除类操作(deleteedit 的实际写入、write 整体覆盖)均为破坏性命令,MCP 服务只返回结构化结果而不二次确认,调用方需要自行校验目标笔记 ID
  • MCP stdio 桥在拉起子进程时会剥离形如凭据的环境变量以及所有 DSH_* 变量,因此通过环境变量向 flowix-cli 注入敏感配置会被静默丢弃
  • bundle 自身没有声明对 DeepSeek Harness 的最低版本要求,使用前请确认宿主环境至少包含 @deepseek-ai/dsh-mcp-client 节点