<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Channel [K]</title>
	<atom:link href="https://www.dbform.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbform.com</link>
	<description>面朝大海，春暖花开</description>
	<lastBuildDate>Tue, 26 May 2026 18:19:08 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
<site xmlns="com-wordpress:feed-additions:1">157178879</site>	<item>
		<title>How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide</title>
		<link>https://www.dbform.com/2026/05/27/how-to-set-up-homebrew-tap-for-private-cli-tools-a-complete-guide/</link>
		
		<dc:creator><![CDATA[kamus]]></dc:creator>
		<pubDate>Tue, 26 May 2026 18:13:03 +0000</pubDate>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[github-actions]]></category>
		<category><![CDATA[Homebrew]]></category>
		<guid isPermaLink="false">https://www.dbform.com/?p=4579</guid>

					<description><![CDATA[这份指南总结了如何为内部或半公开的 CLI 工具构建稳定、全自动且支持降级的 Homebrew Tap 分发流程。主要经验基于为 mes-cli 开发 brew install 功能的实践。]]></description>
										<content:encoded><![CDATA[<h1 id="cli-homebrew">如何为私有 CLI 工具提供 Homebrew 一键安装能力（完全指南）</h1>
<p>这份指南总结了如何为内部或半公开的 CLI 工具构建稳定、全自动且支持降级的 Homebrew Tap 分发流程。主要经验基于为 <code>mes-cli</code> 开发 <code>brew install</code> 功能的实践。</p>
<h2 id="1">1. 核心挑战与架构决策</h2>
<p>在实现 <code>brew install</code> 时，由于 CLI 源码及 Releases 是<strong>私有仓库 (Private Repository)</strong>，外部用户或内部员工在使用 <code>brew install</code> 下载时，如果在终端没有配置强权限的 <code>GITHUB_TOKEN</code>，会直接报 404 错误。</p>
<p><strong>我们的解决方案：脱离 GitHub Releases，使用公开的 OSS / CDN</strong><br />
1. <strong>源码编译与发布</strong>：CLI 仓库依然通过 GitHub Actions 完成编译跨平台包并生成 Releases。<br />
2. <strong>资产分发</strong>：流水线将生成的 ZIP 压缩包和 <code>checksums.txt</code> 同步推送到公开的阿里云 OSS（或 CDN）上。<br />
3. <strong>Formula 托管</strong>：建立一个<strong>公开</strong>的 <code>homebrew-tap</code> 仓库。流水线根据 OSS 上的资源，自动拼接出 Ruby 安装脚本（Formula），推送到该 Tap 仓库。<br />
4. <strong>客户端安装</strong>：用户的 <code>brew install</code> 会从公开的 Tap 仓库拉取脚本，并从公开的 OSS 高速下载压缩包，全程无权限阻碍。</p>
<hr />
<h2 id="2">2. 前期准备工作</h2>
<ol>
<li><strong>建立公开的 Tap 仓库</strong>：</li>
<li>命名规范：在你的组织下新建一个公开仓库，通常命名为 <code>homebrew-tap</code> 或 <code>homebrew-brew</code>。</li>
<li>这样用户可以使用 <code>brew tap org/tap</code> 引入。</li>
<li><strong>准备具有仓库读写权限的 Token</strong>：</li>
<li>在 GitHub 中创建一个具有访问目标 Tap 仓库推拉权限的 PAT (Personal Access Token)，或使用细粒度的 Token。</li>
<li>将该 Token 配置为 CLI 源码仓库的 Actions Secret（例如 <code>SKILLS_REPO_TOKEN</code>）。</li>
<li><strong>规范化打包产物</strong>：</li>
<li>确保你的打包脚本能生成跨平台的压缩包（例如 <code>cli-0.1.0-macOS-arm64.zip</code>）。</li>
<li>必须生成带有文件 SHA256 校验值的清单文件，如 <code>checksums.txt</code>，供后续提取使用。</li>
</ol>
<hr />
<h2 id="3-github-actions">3. GitHub Actions 流水线自动化</h2>
<p>核心的魔法在于 CLI 源码仓库中的发布流水线（如 <code>.github/workflows/release.yml</code>）。它在每次打标签发布后，需要执行以下脚本去自动化生成 <code>.rb</code> 文件并提交。</p>
<h3 id="_1">自动化脚本模板</h3>
<div class="codehilite">
<pre><span></span><code><span class="w">  </span><span class="nt">update-homebrew-tap</span><span class="p">:</span>
<span class="w">    </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Update Homebrew Tap Formula</span>
<span class="w">    </span><span class="nt">runs-on</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ubuntu-latest</span>
<span class="w">    </span><span class="nt">needs</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">upload-oss</span><span class="w"> </span><span class="c1"># 必须等你的产物上传到公共 OSS 之后执行</span>
<span class="w">    </span><span class="nt">steps</span><span class="p">:</span>
<span class="w">      </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Checkout tap repo</span>
<span class="w">        </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">actions/checkout@v4</span>
<span class="w">        </span><span class="nt">with</span><span class="p">:</span>
<span class="w">          </span><span class="nt">repository</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">your-org/homebrew-tap</span>
<span class="w">          </span><span class="nt">token</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${{ secrets.SKILLS_REPO_TOKEN }}</span>
<span class="w">          </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">homebrew-tap</span>

<span class="w">      </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Generate Formula and update tap</span>
<span class="w">        </span><span class="nt">env</span><span class="p">:</span>
<span class="w">          </span><span class="nt">VERSION</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${{ github.ref_name }}</span><span class="w"> </span><span class="c1"># 比如 v0.4.9</span>
<span class="w">          </span><span class="nt">REPO</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${{ github.repository }}</span>
<span class="w">        </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
<span class="w">          </span><span class="no">VER_NUM=${VERSION#v}</span>

<span class="w">          </span><span class="no"># 1. 直接从公共 OSS 下载 checksums.txt (避免 GitHub 私有权限问题)</span>
<span class="w">          </span><span class="no">wget "https://your-public-oss.com/tools/cli/${VER_NUM}/checksums.txt" -O checksums.txt</span>

<span class="w">          </span><span class="no"># 2. 从 checksums.txt 中精准提取各平台的 SHA256 </span>
<span class="w">          </span><span class="no">SHA_MAC_ARM=<span class="katex math inline">(grep "cli-</span>{VER_NUM}-macOS-arm64.zip" checksums.txt | awk '{print $1}')</span>
<span class="w">          </span><span class="no">SHA_MAC_AMD=<span class="katex math inline">(grep "cli-</span>{VER_NUM}-macOS-amd64.zip" checksums.txt | awk '{print $1}')</span>
<span class="w">          </span><span class="no">SHA_LIN_ARM=<span class="katex math inline">(grep "cli-</span>{VER_NUM}-linux-arm64.zip" checksums.txt | awk '{print $1}')</span>
<span class="w">          </span><span class="no">SHA_LIN_AMD=<span class="katex math inline">(grep "cli-</span>{VER_NUM}-linux-amd64.zip" checksums.txt | awk '{print $1}')</span>

<span class="w">          </span><span class="no">OSS_URL="https://your-public-oss.com/tools/cli"</span>

<span class="w">          </span><span class="no">mkdir -p homebrew-tap/Formula</span>

<span class="w">          </span><span class="no"># 3. 生成无特殊字符的类名后缀 (解决 Ruby 类名规范：例如 0.4.9 变成 049)</span>
<span class="w">          </span><span class="no">CLASS_SUFFIX=<span class="katex math inline">(echo "</span>VER_NUM" | sed 's/[^a-zA-Z0-9]//g')</span>

<span class="w">          </span><span class="no"># --------------------------------------------------------------------</span>
<span class="w">          </span><span class="no"># 生成 1：永远指向最新的主 Formula (cli.rb)</span>
<span class="w">          </span><span class="no"># --------------------------------------------------------------------</span>
<span class="w">          </span><span class="no">cat > homebrew-tap/Formula/cli.rb <<EOF</span>
<span class="w">          </span><span class="no">class Cli < Formula</span>
<span class="w">            </span><span class="no">desc "Your awesome CLI tools"</span>
<span class="w">            </span><span class="no">homepage "https://github.com/$REPO"</span>
<span class="w">            </span><span class="no">version "${VER_NUM}"</span>

<span class="w">            </span><span class="no">if OS.mac? && Hardware::CPU.arm?</span>
<span class="w">              </span><span class="no">url "<span class="katex math inline">{OSS_URL}/</span>{VER_NUM}/cli-${VER_NUM}-macOS-arm64.zip"</span>
<span class="w">              </span><span class="no">sha256 "${SHA_MAC_ARM}"</span>
<span class="w">            </span><span class="no">elsif OS.mac? && Hardware::CPU.intel?</span>
<span class="w">              </span><span class="no">url "<span class="katex math inline">{OSS_URL}/</span>{VER_NUM}/cli-${VER_NUM}-macOS-amd64.zip"</span>
<span class="w">              </span><span class="no">sha256 "${SHA_MAC_AMD}"</span>
<span class="w">            </span><span class="no">elsif OS.linux? && Hardware::CPU.arm?</span>
<span class="w">              </span><span class="no">url "<span class="katex math inline">{OSS_URL}/</span>{VER_NUM}/cli-${VER_NUM}-linux-arm64.zip"</span>
<span class="w">              </span><span class="no">sha256 "${SHA_LIN_ARM}"</span>
<span class="w">            </span><span class="no">elsif OS.linux? && Hardware::CPU.intel?</span>
<span class="w">              </span><span class="no">url "<span class="katex math inline">{OSS_URL}/</span>{VER_NUM}/cli-${VER_NUM}-linux-amd64.zip"</span>
<span class="w">              </span><span class="no">sha256 "${SHA_LIN_AMD}"</span>
<span class="w">            </span><span class="no">end</span>

<span class="w">            </span><span class="no">def install</span>
<span class="w">              </span><span class="no"># 将二进制安装到系统 PATH</span>
<span class="w">              </span><span class="no">bin.install "bin/cli"</span>
<span class="w">              </span><span class="no"># 避坑点：如果有其他额外的目录或文件（如 skills/、assets/），必须显式复制到 prefix 下！</span>
<span class="w">              </span><span class="no">prefix.install "skills"</span>
<span class="w">            </span><span class="no">end</span>

<span class="w">            </span><span class="no">def test</span>
<span class="w">              </span><span class="no">system "#{bin}/cli", "--version"</span>
<span class="w">            </span><span class="no">end</span>
<span class="w">          </span><span class="no">end</span>
<span class="w">          </span><span class="no">EOF</span>

<span class="w">          </span><span class="no"># --------------------------------------------------------------------</span>
<span class="w">          </span><span class="no"># 生成 2：带有版本号的防灾降级 Formula (cli@${VER_NUM}.rb)</span>
<span class="w">          </span><span class="no"># --------------------------------------------------------------------</span>
<span class="w">          </span><span class="no"># 代码完全同上，唯一区别是 Ruby 的类名必须加上 AT 版本号后缀</span>
<span class="w">          </span><span class="no">cat > homebrew-tap/Formula/cli@${VER_NUM}.rb <<EOF</span>
<span class="w">          </span><span class="no">class CliAT${CLASS_SUFFIX} < Formula</span>
<span class="w">            </span><span class="no"># 内容与上方一致...</span>
<span class="w">          </span><span class="no">EOF</span>

<span class="w">      </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Commit and push formula</span>
<span class="w">        </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
<span class="w">          </span><span class="no">cd homebrew-tap</span>
<span class="w">          </span><span class="no">git config user.name "github-actions[bot]"</span>
<span class="w">          </span><span class="no">git config user.email "github-actions[bot]@users.noreply.github.com"</span>
<span class="w">          </span><span class="no">git add Formula/</span>
<span class="w">          </span><span class="no">if git diff --cached --quiet; then</span>
<span class="w">            </span><span class="no">echo "No changes to commit."</span>
<span class="w">          </span><span class="no">else</span>
<span class="w">            </span><span class="no">git commit -m "chore: release formula for cli $VERSION"</span>
<span class="w">            </span><span class="no">git push origin HEAD</span>
<span class="w">          </span><span class="no">fi</span>
</code></pre>
</div>
<hr />
<h2 id="4">4. 关键经验与防坑指南</h2>
<h3 id="41-homebrew">4.1 额外目录被 Homebrew 丢弃的问题</h3>
<p><strong>现象</strong>：用户执行 <code>brew install cli</code> 后，发现二进制和 <code>README.md</code> 都有了，但压缩包里的其它自定义目录（如 <code>skills/</code>）不见了。<br />
<strong>原因</strong>：Homebrew 默认只关心你在 <code>def install</code> 里指明的安装内容。<br />
<strong>对策</strong>：如果 ZIP 包里附带了需要长期存储的文件夹，你必须通过 <code>prefix.install "your-folder"</code> 将其强行放入 Homebrew 的 Cellar 根目录。</p>
<h3 id="42">4.2 提供“降版本”的后悔药机制</h3>
<p><strong>现象</strong>：如果最新发布的 CLI 携带了阻断性 Bug，CLI 自身的自动更新程序无法向下降级。而 Homebrew 原生的 <code>brew switch</code> 已经被官方弃用。<br />
<strong>对策</strong>：如上述自动化脚本中的“生成 2”，除了生成固定的 <code>cli.rb</code> 之外，必须针对每一次发布生成带有版本号的文件，如 <code>cli@0.4.9.rb</code>。<br />
<strong>Ruby 语法限制</strong>：文件名包含 <code>@</code> 与 <code>.</code> 时，Ruby 内部的 Class 名字必须去掉标点并转化为大驼峰。例如 <code>cli@0.4.9.rb</code> 内部类名必须叫 <code>CliAT049</code>，否则脚本报错。所以我们在流水线中加入了 <code>CLASS_SUFFIX=<span class="katex math inline">(echo "</span>VER_NUM" | sed 's/[^a-zA-Z0-9]//g')</code> 进行动态替换。</p>
<hr />
<h2 id="5">5. 最终暴露给用户的完美用法</h2>
<p>你只需要在文档中提供这段精简的指引即可：</p>
<p><strong>安装与更新：</strong></p>
<div class="codehilite">
<pre><span></span><code>brew<span class="w"> </span>tap<span class="w"> </span>your-org/tap
brew<span class="w"> </span>install<span class="w"> </span>cli
<span class="c1"># 未来的更新（自动更新本体、附加目录和文档）</span>
brew<span class="w"> </span>upgrade<span class="w"> </span>cli
</code></pre>
</div>
<p><strong>回退稳定旧版本：</strong></p>
<div class="codehilite">
<pre><span></span><code><span class="c1"># 假设最新版有问题，想要退回 0.4.9</span>
brew<span class="w"> </span>install<span class="w"> </span>cli@0.4.9
brew<span class="w"> </span>unlink<span class="w"> </span>cli
brew<span class="w"> </span>link<span class="w"> </span>--overwrite<span class="w"> </span>cli@0.4.9
</code></pre>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4579</post-id>	</item>
		<item>
		<title>AI Agent Orchestrator Landscape Report</title>
		<link>https://www.dbform.com/2026/05/27/ai-agent-orchestrator-landscape-report/</link>
		
		<dc:creator><![CDATA[kamus]]></dc:creator>
		<pubDate>Tue, 26 May 2026 17:44:36 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[orchestrator]]></category>
		<category><![CDATA[research]]></category>
		<guid isPermaLink="false">https://www.dbform.com/?p=4574</guid>

					<description><![CDATA[AI Agent Orchestrator 是一类新兴基础设施，核心使命是：把多个 AI coding agent（Claude Code、Codex、Gemini CLI 等）编排成一支"虚拟团队"，实现任务分配、进度跟踪、成本控制、技能复用等管理能力。]]></description>
										<content:encoded><![CDATA[<blockquote><p>
调研日期: 2026-05-23<br />
调研范围: 9 个项目<br />
调研工具: GitHub API + Brave Search + Exa Web Fetch
</p></blockquote>
<hr />
<h2 id="1">1. 赛道概述</h2>
<p>AI Agent Orchestrator 是一类新兴基础设施，核心使命是：<strong>把多个 AI coding agent（Claude Code、Codex、Gemini CLI 等）编排成一支&#8221;虚拟团队&#8221;</strong>，实现任务分配、进度跟踪、成本控制、技能复用等管理能力。</p>
<p><strong>为什么火：</strong><br />
&#8211; 2025 下半年 Claude Code / Codex CLI 爆发，开发者开始同时开 10-20 个 agent 终端<br />
&#8211; 手动管理不可持续 → 需要&#8221;agent 项目经理&#8221;<br />
&#8211; &#8220;Zero-human company&#8221; 叙事驱动资本和社区关注<br />
&#8211; Stars 增速极快：头部项目 3 个月内从 0 到 50k+</p>
<p><strong>赛道分层：</strong><br />
&#8211; <strong>L1 编排层</strong>：管理 agent 的启动、停止、工作区隔离（1code, Agent of Empires）<br />
&#8211; <strong>L2 协作层</strong>：任务分配、进度跟踪、团队协作（Multica, MyClaude）<br />
&#8211; <strong>L3 公司层</strong>：组织架构、预算治理、目标对齐（Paperclip, LobeHub, Ruflo）</p>
<hr />
<h2 id="2">2. 项目总览</h2>
<table>
<thead>
<tr>
<th>#</th>
<th>项目</th>
<th>Stars</th>
<th>语言</th>
<th>License</th>
<th>创建时间</th>
<th>最近更新</th>
<th>最新版本</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>LobeHub</td>
<td>77,566</td>
<td>TS</td>
<td>LobeHub Community License</td>
<td>2023-05</td>
<td>2026-05-23</td>
<td>v2.2.1-canary.33</td>
</tr>
<tr>
<td>2</td>
<td>Paperclip</td>
<td>67,185</td>
<td>TS</td>
<td>MIT</td>
<td>2025-03</td>
<td>2026-05-22</td>
<td>v2026.517.0</td>
</tr>
<tr>
<td>3</td>
<td>Ruflo</td>
<td>54,246</td>
<td>TS</td>
<td>MIT</td>
<td>2025-06</td>
<td>2026-05-22</td>
<td>v3.7.0-alpha.76</td>
</tr>
<tr>
<td>4</td>
<td>Multica</td>
<td>31,543</td>
<td>TS+Go</td>
<td>Modified Apache 2.0</td>
<td>2026-01</td>
<td>2026-05-22</td>
<td>v0.3.6</td>
</tr>
<tr>
<td>5</td>
<td>1code</td>
<td>5,540</td>
<td>TS</td>
<td>Apache 2.0</td>
<td>2026-01</td>
<td>2026-02-24</td>
<td>v0.0.84</td>
</tr>
<tr>
<td>6</td>
<td>Golutra</td>
<td>3,549</td>
<td>Rust</td>
<td>BSL 1.1</td>
<td>2026-02</td>
<td>2026-05-12</td>
<td>v0.2.6</td>
</tr>
<tr>
<td>7</td>
<td>MyClaude</td>
<td>2,669</td>
<td>Go</td>
<td>AGPL v3</td>
<td>2025-07</td>
<td>2026-05-04</td>
<td>v6.8.2</td>
</tr>
<tr>
<td>8</td>
<td>Agent of Empires</td>
<td>2,365</td>
<td>Rust</td>
<td>MIT</td>
<td>2026-01</td>
<td>2026-05-22</td>
<td>v1.8.1</td>
</tr>
<tr>
<td>9</td>
<td>Agor</td>
<td>1,214</td>
<td>TS</td>
<td>BSL 1.1</td>
<td>2025-10</td>
<td>2026-05-22</td>
<td>v0.15.0</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="3">3. 逐项深度分析</h2>
<h3 id="31-lobehub">3.1 LobeHub</h3>
<p><strong>一句话定位：</strong> Chief Agent Operator — 你的 AI 团队的&#8221;首席运营官&#8221;</p>
<p><strong>核心功能：</strong><br />
&#8211; Agent Builder：自然语言描述即可创建 agent，自动配置<br />
&#8211; Agent Groups：多 agent 并行协作，像真实团队一样工作<br />
&#8211; 10,000+ Skills / MCP 插件生态<br />
&#8211; Personal Memory：agent 从你的工作习惯中学习<br />
&#8211; Schedule：定时任务，agent 自动执行<br />
&#8211; IM Gateway：在你已有的聊天工具中使用 agent</p>
<p><strong>技术架构：</strong><br />
&#8211; TypeScript (98.9%)，Next.js 全栈<br />
&#8211; 部署：Vercel / Docker / 阿里云 / Zeabur / Sealos<br />
&#8211; 生态成熟：lobe-ui, lobe-icons, lobe-tts 等配套库</p>
<p><strong>License 详细分析：</strong><br />
&#8211; LobeHub Community License（基于 Apache 2.0）<br />
&#8211; ✅ 可以商用（不改源码作为前端后端服务）<br />
&#8211; ❌ <strong>不能基于 LobeChat 开发和分发衍生作品</strong>（除非购买商业授权）<br />
&#8211; ⚠️ 贡献者协议：贡献者同意 producer 可调整协议严格程度<br />
&#8211; <strong>结论：做闭源 fork 不可行，做集成/嵌入需联系 hello@lobehub.com</strong></p>
<p><strong>社区活跃度：</strong><br />
&#8211; 330 contributors，2740 releases，每日更新<br />
&#8211; Discord 社区活跃，Product Hunt 上线<br />
&#8211; 主维护者：@arvinxx, @canisminor1990</p>
<p><strong>独特卖点：</strong><br />
&#8211; 最成熟的生态（从 2023 年就开始，不是跟风项目）<br />
&#8211; UI/UX 最佳，产品化程度最高<br />
&#8211; 从 ChatBot 演进到 Agent Operator，有清晰的产品路线</p>
<p><strong>已知风险：</strong><br />
&#8211; License 不完全开源，有随时收紧的风险<br />
&#8211; 功能膨胀（从 chatbot 到 agent platform 到协作平台），定位不够聚焦<br />
&#8211; Canary 分支为主开发分支，稳定性存疑</p>
<hr />
<h3 id="32-paperclip">3.2 Paperclip</h3>
<p><strong>一句话定位：</strong> &#8220;Zero-human company&#8221; 编排平台 — 如果 OpenClaw 是员工，Paperclip 就是公司</p>
<p><strong>核心功能：</strong><br />
&#8211; Org Chart + 角色体系：CEO/CTO/工程师/设计师，agent 有汇报线<br />
&#8211; Goal Alignment：每个任务追溯到公司使命<br />
&#8211; Budget &amp; Cost Control：月度预算，超支自动暂停 agent<br />
&#8211; Heartbeat 调度：agent 定时唤醒、检查工作、自动行动<br />
&#8211; Governance &amp; Approvals：审批流程，config 变更可回滚<br />
&#8211; Multi-Company：一个部署运行多个公司，数据完全隔离<br />
&#8211; 移动端管理</p>
<p><strong>技术架构：</strong><br />
&#8211; TypeScript (97.6%)，Node.js + React<br />
&#8211; 嵌入式 PostgreSQL（开箱即用）<br />
&#8211; 外部适配器：Claude Code, Codex, Cursor, Bash, HTTP/Webhook</p>
<p><strong>License 详细分析：</strong><br />
&#8211; <strong>MIT License</strong> ✅<br />
&#8211; 随便用、改、卖、闭源 fork，只需保留版权声明<br />
&#8211; <strong>做商业闭源产品的最佳选择</strong></p>
<p><strong>社区活跃度：</strong><br />
&#8211; 87 contributors，8 releases<br />
&#8211; 每日更新，commit 非常活跃<br />
&#8211; 30k stars 在 3 周内达成（增长极快）</p>
<p><strong>独特卖点：</strong><br />
&#8211; 唯一真正做&#8221;公司治理&#8221;层的开源项目（预算、审批、审计）<br />
&#8211; MIT 协议，商用无障碍<br />
&#8211; &#8220;Clipmart&#8221;（即将推出）：一键下载整个公司模板</p>
<p><strong>已知风险：</strong><br />
&#8211; 项目非常新（2025-03 创建），成熟度待验证<br />
&#8211; 社区相对小（87 contributors vs LobeHub 的 330）<br />
&#8211; 嵌入式 Postgres 是开发便利但生产环境需自建</p>
<hr />
<h3 id="33-ruflo">3.3 Ruflo</h3>
<p><strong>一句话定位：</strong> Claude 优先的 Swarm 智能编排平台</p>
<p><strong>核心功能：</strong><br />
&#8211; 多 agent swarm 协调<br />
&#8211; MCP 工具集成（300+ 声称）<br />
&#8211; 持久化记忆 + 向量存储<br />
&#8211; 背景 worker + 共识模式<br />
&#8211; 多 provider 路由（Claude, GPT, Gemini, Qwen）</p>
<p><strong>技术架构：</strong><br />
&#8211; TypeScript<br />
&#8211; 声称支持 WASM agent、安全层、插件市场</p>
<p><strong>License 详细分析：</strong><br />
&#8211; <strong>MIT License</strong> ✅<br />
&#8211; 协议本身无限制</p>
<p><strong>社区活跃度：</strong><br />
&#8211; 54k stars，但 <strong>社区争议极大</strong><br />
&#8211; Reddit 多个帖子质疑代码质量：&#8221;99% Fake / 1% Real&#8221;<br />
&#8211; GitHub Discussion #1666：&#8221;I didn&#8217;t notice any significant improvements&#8221;<br />
&#8211; 有评论认为 agent 实现质量差、大部分功能是表面文章</p>
<p><strong>独特卖点：</strong><br />
&#8211; Stars 数增长最快（但有刷星嫌疑）<br />
&#8211; 概念最前沿（swarm intelligence, WASM agents）</p>
<p><strong>已知风险：</strong><br />
&#8211; ⚠️ <strong>社区信任度低</strong>：多人发帖质疑实际效果与宣传不符<br />
&#8211; Alpha 版本（v3.7.0-alpha.76），稳定性未知<br />
&#8211; 功能声称过多过杂，有&#8221;feature factory&#8221;嫌疑<br />
&#8211; <strong>不建议作为商业产品基础</strong></p>
<hr />
<h3 id="34-multica">3.4 Multica</h3>
<p><strong>一句话定位：</strong> 给 coding agent 做&#8221;项目管理&#8221;的开源平台</p>
<p><strong>核心功能：</strong><br />
&#8211; Agents as Teammates：agent 有 profile，出现在看板上，发评论，报告 blocker<br />
&#8211; Squads：agent 和人编组，leader 自动分配任务<br />
&#8211; Reusable Skills：每次解决方案变成团队可复用技能<br />
&#8211; Multi-Workspace：按团队隔离<br />
&#8211; 统一 Runtime 管理（本地 + 云端）</p>
<p><strong>技术架构：</strong><br />
&#8211; 前端 Next.js 16，后端 Go (Chi + WebSocket)<br />
&#8211; PostgreSQL 17 + pgvector<br />
&#8211; 本地 daemon 执行 agent CLI<br />
&#8211; 支持 11 种 agent CLI（Claude Code, Codex, Copilot, OpenClaw, OpenCode, Hermes, Gemini, Pi, Cursor, Kimi, Kiro）</p>
<p><strong>License 详细分析：</strong><br />
&#8211; Modified Apache 2.0<br />
&#8211; ✅ 组织内部使用免费<br />
&#8211; ❌ <strong>不能拿源码提供 SaaS / 托管服务 / 嵌入商业产品</strong>（除非买商业授权）<br />
&#8211; ❌ 不能移除前端 Logo 和版权信息<br />
&#8211; <strong>结论：做内部平台可行，做 SaaS 产品需商业授权</strong></p>
<p><strong>社区活跃度：</strong><br />
&#8211; 130 contributors，75 releases<br />
&#8211; 10k stars 时登上 GitHub Trending #5<br />
&#8211; v0.3.x 阶段，快速迭代</p>
<p><strong>独特卖点：</strong><br />
&#8211; 架构最扎实（Go 后端 + WS 实时通信 + pgvector）<br />
&#8211; &#8220;Agents as Teammates&#8221; 理念最彻底<br />
&#8211; 支持的 agent CLI 最多（11 种）</p>
<p><strong>已知风险：</strong><br />
&#8211; SaaS 限制意味着不能直接拿来做商业产品<br />
&#8211; v0.3.x 早期版本，API 可能不稳定<br />
&#8211; 需要 Docker + PostgreSQL 部署，运维成本高于纯 Node.js 方案</p>
<hr />
<h3 id="35-1code">3.5 1code</h3>
<p><strong>一句话定位：</strong> 轻量级 coding agent 编排层</p>
<p><strong>核心功能：</strong><br />
&#8211; 为 Claude Code / Codex 提供编排抽象层<br />
&#8211; 轻量设计</p>
<p><strong>技术架构：</strong><br />
&#8211; TypeScript</p>
<p><strong>License 详细分析：</strong><br />
&#8211; <strong>Apache 2.0</strong> ✅（未修改）<br />
&#8211; 商用完全无障碍</p>
<p><strong>社区活跃度：</strong><br />
&#8211; 5.5k stars，但 <strong>最近更新停在 2026-02-24</strong>（3 个月没更新）<br />
&#8211; v0.0.84，非常早期</p>
<p><strong>独特卖点：</strong><br />
&#8211; 最轻量的选择<br />
&#8211; Apache 2.0，license 最干净</p>
<p><strong>已知风险：</strong><br />
&#8211; ⚠️ <strong>疑似已停更</strong>（3 个月无 commit）<br />
&#8211; 功能最少，文档最少<br />
&#8211; 不推荐作为长期依赖</p>
<hr />
<h3 id="36-golutra">3.6 Golutra</h3>
<p><strong>一句话定位：</strong> Rust 实现的多 agent 编排平台</p>
<p><strong>核心功能：</strong><br />
&#8211; 多 agent 并行执行<br />
&#8211; 任务编排 + 长期运行工作流<br />
&#8211; 桌面应用</p>
<p><strong>技术架构：</strong><br />
&#8211; <strong>Rust</strong>，性能好，二进制分发</p>
<p><strong>License 详细分析：</strong><br />
&#8211; <strong>BSL 1.1 (Business Source License)</strong> ❌<br />
&#8211; <strong>非生产用途可免费使用</strong><br />
&#8211; Change Date: 2030-02-25（届时变为 GPL 2.0）<br />
&#8211; Change License: GPL-2.0-or-later<br />
&#8211; <strong>结论：做商业产品完全不可行（2030 年前）</strong></p>
<p><strong>社区活跃度：</strong><br />
&#8211; 3.5k stars，51 open issues<br />
&#8211; 2026-05-12 最近更新，仍在活跃</p>
<p><strong>独特卖点：</strong><br />
&#8211; 唯一 Rust 实现，性能优势<br />
&#8211; 桌面应用形态</p>
<p><strong>已知风险：</strong><br />
&#8211; BSL 协议限制商业使用<br />
&#8211; Rust 生态意味着社区贡献门槛高<br />
&#8211; GPL change license 意味着 2030 年后也需要开源</p>
<hr />
<h3 id="37-myclaude">3.7 MyClaude</h3>
<p><strong>一句话定位：</strong> Go 实现的多 agent 工作流编排</p>
<p><strong>核心功能：</strong><br />
&#8211; 支持 Claude Code, Codex, Gemini, OpenCode<br />
&#8211; Go 编译即用</p>
<p><strong>技术架构：</strong><br />
&#8211; <strong>Go</strong>，单二进制分发</p>
<p><strong>License 详细分析：</strong><br />
&#8211; <strong>AGPL v3</strong> ❌<br />
&#8211; 衍生作品必须开源<br />
&#8211; 提供网络服务也必须开源<br />
&#8211; <strong>结论：做商业闭源产品完全不可行</strong></p>
<p><strong>社区活跃度：</strong><br />
&#8211; 2.7k stars，7 open issues<br />
&#8211; 2026-05-04 最近更新</p>
<p><strong>独特卖点：</strong><br />
&#8211; Go 实现，部署简单<br />
&#8211; 轻量</p>
<p><strong>已知风险：</strong><br />
&#8211; AGPL 是最严格的开源协议之一<br />
&#8211; 社区小，bus factor 低</p>
<hr />
<h3 id="38-agent-of-empires">3.8 Agent of Empires</h3>
<p><strong>一句话定位：</strong> TUI + Web 双端 agent 管理器</p>
<p><strong>核心功能：</strong><br />
&#8211; 支持 Claude Code, Codex, Gemini CLI, OpenCode, Cursor, Copilot CLI, Factory Droid<br />
&#8211; TUI 终端界面 + Web 界面（支持手机管理）<br />
&#8211; 使用 tmux + git worktrees 隔离</p>
<p><strong>技术架构：</strong><br />
&#8211; <strong>Rust</strong><br />
&#8211; tmux session 管理<br />
&#8211; git worktree 隔离</p>
<p><strong>License 详细分析：</strong><br />
&#8211; <strong>MIT License</strong> ✅<br />
&#8211; 商用无障碍</p>
<p><strong>社区活跃度：</strong><br />
&#8211; 2.4k stars，79 open issues<br />
&#8211; 2026-05-22 最近更新，活跃开发</p>
<p><strong>独特卖点：</strong><br />
&#8211; 手机管理 agent（Web UI）<br />
&#8211; 支持的 agent CLI 种类最多之一<br />
&#8211; MIT 协议</p>
<p><strong>已知风险：</strong><br />
&#8211; 社区较小<br />
&#8211; 依赖 tmux，非跨平台（主要 macOS/Linux）<br />
&#8211; Rust 代码贡献门槛</p>
<hr />
<h3 id="39-agor">3.9 Agor</h3>
<p><strong>一句话定位：</strong> 多人协作画布上的 agent 编排</p>
<p><strong>核心功能：</strong><br />
&#8211; 可视化画布管理 Claude Code, Codex, Gemini session<br />
&#8211; Git worktree 管理<br />
&#8211; AI 对话追踪<br />
&#8211; 实时团队可视化</p>
<p><strong>技术架构：</strong><br />
&#8211; TypeScript</p>
<p><strong>License 详细分析：</strong><br />
&#8211; <strong>BSL 1.1 (Business Source License)</strong> ❌<br />
&#8211; 非生产用途免费<br />
&#8211; Change Date: 2029-01-15（届时变为 Apache 2.0）<br />
&#8211; <strong>结论：做商业产品不可行（2029 年前）</strong></p>
<p><strong>社区活跃度：</strong><br />
&#8211; 1.2k stars，102 open issues<br />
&#8211; 2026-05-22 最近更新</p>
<p><strong>独特卖点：</strong><br />
&#8211; 唯一做&#8221;可视化画布&#8221;的方案<br />
&#8211; 由 Preset.io（Apache Superset 创始人）开发</p>
<p><strong>已知风险：</strong><br />
&#8211; BSL 协议限制商业使用<br />
&#8211; Stars 最少，生态最小</p>
<hr />
<h2 id="4-license">4. License 商用友好度排名</h2>
<blockquote><p>
场景：你想 fork 一个项目，包装成自己的商业闭源产品
</p></blockquote>
<table>
<thead>
<tr>
<th>排名</th>
<th>项目</th>
<th>License</th>
<th>可否闭源商用</th>
<th>具体限制</th>
</tr>
</thead>
<tbody>
<tr>
<td>🥇 1</td>
<td><strong>Paperclip</strong></td>
<td>MIT</td>
<td>✅ 完全可以</td>
<td>仅需保留版权声明</td>
</tr>
<tr>
<td>🥇 1</td>
<td><strong>Ruflo</strong></td>
<td>MIT</td>
<td>✅ 完全可以</td>
<td>仅需保留版权声明（但代码质量存疑）</td>
</tr>
<tr>
<td>🥇 1</td>
<td><strong>Agent of Empires</strong></td>
<td>MIT</td>
<td>✅ 完全可以</td>
<td>仅需保留版权声明</td>
</tr>
<tr>
<td>🥈 4</td>
<td><strong>1code</strong></td>
<td>Apache 2.0</td>
<td>✅ 可以</td>
<td>保留 NOTICE 文件（但已停更）</td>
</tr>
<tr>
<td>🥉 5</td>
<td><strong>Multica</strong></td>
<td>Modified Apache 2.0</td>
<td>⚠️ 有限制</td>
<td>不能做 SaaS/托管服务，需买商业授权</td>
</tr>
<tr>
<td>6</td>
<td><strong>LobeHub</strong></td>
<td>Community License</td>
<td>⚠️ 有限制</td>
<td>不能做衍生作品分发，需买商业授权</td>
</tr>
<tr>
<td>7</td>
<td><strong>Golutra</strong></td>
<td>BSL 1.1</td>
<td>❌ 不可以</td>
<td>非生产用途免费，2030 年前不可商用</td>
</tr>
<tr>
<td>8</td>
<td><strong>Agor</strong></td>
<td>BSL 1.1</td>
<td>❌ 不可以</td>
<td>非生产用途免费，2029 年前不可商用</td>
</tr>
<tr>
<td>9</td>
<td><strong>MyClaude</strong></td>
<td>AGPL v3</td>
<td>❌ 不可以</td>
<td>衍生作品必须开源</td>
</tr>
</tbody>
</table>
<p><strong>结论：做商业闭源产品，Paperclip 是唯一兼具 MIT + 高质量代码 + 活跃社区的选择。</strong></p>
<hr />
<h2 id="5">5. 技术选型建议</h2>
<h3 id="a">场景 A：快速原型 / 个人项目</h3>
<p><strong>推荐：Agent of Empires 或 MyClaude</strong><br />
&#8211; 理由：轻量、快速上手、单二进制<br />
&#8211; 备选：1code（如果它恢复维护）</p>
<h3 id="b-saas">场景 B：商业 SaaS 产品</h3>
<p><strong>推荐：Paperclip</strong><br />
&#8211; 理由：MIT 协议无障碍、功能最全面（治理/预算/审计）、增长快<br />
&#8211; 需自行解决：生产级数据库、部署运维</p>
<h3 id="c">场景 C：企业内部平台</h3>
<p><strong>推荐：Multica</strong><br />
&#8211; 理由：架构最扎实（Go 后端 + WS + pgvector）、支持 agent CLI 最多、内部使用不受 license 限制<br />
&#8211; 备选：LobeHub（如果需要成熟的 UI 和插件生态）</p>
<h3 id="d">场景 D：贡献者 / 社区参与</h3>
<p><strong>推荐：Paperclip 或 Multica</strong><br />
&#8211; 理由：活跃开发、贡献指南完善、社区友好<br />
&#8211; 避免：Ruflo（社区信任问题）、1code（已停更）</p>
<hr />
<h2 id="6">6. 赛道趋势与风险</h2>
<h3 id="61">6.1 增长轨迹</h3>
<table>
<thead>
<tr>
<th>项目</th>
<th>创建到 50k stars 用时</th>
<th>月均增长</th>
</tr>
</thead>
<tbody>
<tr>
<td>Paperclip</td>
<td>~3 个月</td>
<td>~22k/月</td>
</tr>
<tr>
<td>Ruflo</td>
<td>~6 个月</td>
<td>~9k/月</td>
</tr>
<tr>
<td>LobeHub</td>
<td>~30 个月</td>
<td>~2.5k/月</td>
</tr>
</tbody>
</table>
<p>Paperclip 和 Ruflo 的增长速度异常快，存在以下可能：<br />
&#8211; 真实需求爆发（agent 编排确实是刚需）<br />
&#8211; 社区营销 / HackerNews 效应<br />
&#8211; 部分 star 可能来自 bot（Ruflo 被社区质疑）</p>
<h3 id="62">6.2 整合风险</h3>
<p><strong>大厂可能吸收这个赛道：</strong><br />
&#8211; Anthropic 可能在 Claude Code 中内置编排功能<br />
&#8211; OpenAI 可能在 Codex 平台中加入团队管理<br />
&#8211; GitHub Copilot 已经在做 agent 协作（Copilot Workspace）<br />
&#8211; 这些项目可能在 1-2 年内被平台化功能替代</p>
<p><strong>但也有可能：</strong><br />
&#8211; 开源方案因为 vendor-neutral 而持续存在（类似 Kubernetes vs 各家容器服务）</p>
<h3 id="63">6.3 技术债信号</h3>
<ul>
<li><strong>Ruflo</strong>：功能声称过多，社区质疑实现质量，有 &#8220;feature factory&#8221; 风险</li>
<li><strong>1code</strong>：3 个月无更新，可能已被放弃</li>
<li><strong>LobeHub</strong>：从 chatbot 演进到 agent platform，代码包袱重</li>
<li><strong>Golutra/Agor</strong>：BSL 协议意味着社区贡献动力不足</li>
</ul>
<h3 id="64">6.4 社区碎片化</h3>
<p>这个赛道目前极度碎片化 — 9 个项目、5 种语言、4 种 license 类型。预计 2026 下半年会出现整合：<br />
&#8211; 停更的项目会被淘汰（1code 等）<br />
&#8211; 头部 2-3 个项目会形成生态壁垒<br />
&#8211; License 友好的项目更容易获得社区贡献</p>
<hr />
<h2 id="7">7. 附录</h2>
<h3 id="71-license">7.1 License 全文摘要</h3>
<p><strong>MIT (Paperclip, Ruflo, Agent of Empires):</strong></p>
<blockquote><p>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software&#8230; to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software.
</p></blockquote>
<p><strong>LobeHub Community License:</strong></p>
<blockquote><p>
LobeChat may be utilized commercially, including as a frontend and backend service without modifying the source code. A commercial license must be obtained from the producer if you want to develop and distribute a derivative work based on LobeChat.
</p></blockquote>
<p><strong>Modified Apache 2.0 (Multica):</strong></p>
<blockquote><p>
Unless explicitly authorized by Multica in writing, you may not use the Multica source code to provide a hosted service to third parties, or embed Multica as a component of a product or service that is sold, licensed, or otherwise commercially distributed to third parties.
</p></blockquote>
<p><strong>BSL 1.1 (Golutra, Agor):</strong></p>
<blockquote><p>
The Licensor hereby grants you the right to copy, modify, create derivative works, redistribute, and make non-production use of the Licensed Work.
</p></blockquote>
<p><strong>AGPL v3 (MyClaude):</strong></p>
<blockquote><p>
You must cause any work that you distribute or publish&#8230; to be licensed as a whole at no charge to all third parties under the terms of this License.
</p></blockquote>
<h3 id="72">7.2 外部讨论链接</h3>
<ul>
<li>Reddit: &#8220;Do not install Ruflo into your Claude Code workflow&#8221; — r/ClaudeAI</li>
<li>Reddit: &#8220;What orchestration platform to use?&#8221; — r/ClaudeCode（有人推荐 Ruflo 但也有质疑）</li>
<li>GitHub Discussion #1666: &#8220;Is Ruflo actually that powerful?&#8221; — 社区反馈偏负面</li>
<li>Augment Code: &#8220;9 Open-Source Agent Orchestrators for AI Coding (2026)&#8221;</li>
<li>CodePick: &#8220;2026 Agent Collaboration Platform Guide&#8221; — LobeHub 被评为最大平台</li>
<li>AgentConn: Multica review — &#8220;hit #5 on GitHub Trending&#8221;</li>
<li>Toolchew: &#8220;Running a 16-Agent Team on a €4.49/mo Server&#8221; — Multica 实测</li>
</ul>
<h3 id="73">7.3 关键数据快照</h3>
<div class="codehilite">
<pre><span></span><code><span class="n">Stars</span><span class="w"> </span><span class="nl">分布</span><span class="p">:</span><span class="w">  </span><span class="n">LobeHub</span><span class="p">(</span><span class="mi">77</span><span class="n">k</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">Paperclip</span><span class="p">(</span><span class="mi">67</span><span class="n">k</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">Ruflo</span><span class="p">(</span><span class="mi">54</span><span class="n">k</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">Multica</span><span class="p">(</span><span class="mi">31</span><span class="n">k</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">Agor</span><span class="p">(</span><span class="mf">1.2</span><span class="n">k</span><span class="p">)</span>
<span class="nl">License</span><span class="p">:</span><span class="w">     </span><span class="n">MIT</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">Apache</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">Modified</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">BSL</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">AGPL</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="nl">语言</span><span class="p">:</span><span class="w">        </span><span class="n">TypeScript</span><span class="p">(</span><span class="mi">6</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">Rust</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="k">Go</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="nl">活跃度</span><span class="p">:</span><span class="w">      </span><span class="n">全部每日更新</span><span class="err">（</span><span class="n">除</span><span class="w"> </span><span class="mi">1</span><span class="n">code</span><span class="w"> </span><span class="n">停更</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="n">个月</span><span class="err">）</span>
</code></pre>
</div>
<hr />
<p><em>报告由 Hermes Agent 自动生成。数据基于 GitHub API 实时查询 + Brave/Exa Web 搜索。</em></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4574</post-id>	</item>
		<item>
		<title>kamusis.me</title>
		<link>https://www.dbform.com/2026/05/27/kamusis-me/</link>
					<comments>https://www.dbform.com/2026/05/27/kamusis-me/#respond</comments>
		
		<dc:creator><![CDATA[kamus]]></dc:creator>
		<pubDate>Tue, 26 May 2026 16:49:43 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://www.dbform.com/?p=4570</guid>

					<description><![CDATA[新站点 https://www.kamusis.me WordPress的操作已经显得太复杂了，让AI Agent来接管文章的编写/发布也显得繁琐，新的站点用Hexo做纯静态页面生成，后端完全是markdown格式的原文，在目前看来更合时宜。 这个站点呢？ 等到dreamhost的主机订阅过期，应该选择不再续费，会把整个wordpress迁移到racknerd主机上，当做历史文章存留。 感叹 AI 的巨轮轰鸣而过，无情碾碎那些正在过时的科技，连同我们曾倾注其中的无数精力和激荡时光。]]></description>
										<content:encoded><![CDATA[<h2>新站点</h2>
<p><a class="wp-editor-md-post-content-link" href="https://www.kamusis.me">https://www.kamusis.me</a></p>
<p>WordPress的操作已经显得太复杂了，让AI Agent来接管文章的编写/发布也显得繁琐，新的站点用Hexo做纯静态页面生成，后端完全是markdown格式的原文，在目前看来更合时宜。</p>
<h2>这个站点呢？</h2>
<p>等到dreamhost的主机订阅过期，应该选择不再续费，会把整个wordpress迁移到racknerd主机上，当做历史文章存留。</p>
<h2>感叹</h2>
<p>AI 的巨轮轰鸣而过，无情碾碎那些正在过时的科技，连同我们曾倾注其中的无数精力和激荡时光。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbform.com/2026/05/27/kamusis-me/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4570</post-id>	</item>
		<item>
		<title>OpenClaw 发展历程表：从 clawdbot 到 openclaw</title>
		<link>https://www.dbform.com/2026/03/13/openclaw-%e5%8f%91%e5%b1%95%e5%8e%86%e7%a8%8b%e8%a1%a8%ef%bc%9a%e4%bb%8e-clawdbot-%e5%88%b0-openclaw/</link>
					<comments>https://www.dbform.com/2026/03/13/openclaw-%e5%8f%91%e5%b1%95%e5%8e%86%e7%a8%8b%e8%a1%a8%ef%bc%9a%e4%bb%8e-clawdbot-%e5%88%b0-openclaw/#respond</comments>
		
		<dc:creator><![CDATA[kamus]]></dc:creator>
		<pubDate>Fri, 13 Mar 2026 07:46:07 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[openclaw]]></category>
		<guid isPermaLink="false">https://www.dbform.com/?p=4553</guid>

					<description><![CDATA[OpenClaw 发展历程表：从 clawdbot 到 openclaw 这份时间线，是从 v2026.1.5 开始往后捋。按 release 命名和说明来看，这一版基本可以当成项目正式进入 clawdbot 阶段的起点。后面它先经历了 clawdbot、Clawdbot 这几个写法上的变化，中间还短暂改名成过 Moltbot，直到 v2026.1.29 前后才真正把名字切到 openclaw。 按时间排序的发展历程表 发布时间（UTC） 版本 发布名称 关键变化 为什么值得高亮 2026-01-05 v2026.1.5 clawdbot 2026.1.5 引入 image 专用模型配置、image 工具、默认模型 shorthand，同时继续补齐 Control UI、Android、macOS、WhatsApp、Discord 等体验问题 这是目前这条时间线上，clawdbot 作为正式 release 名称出现的起点，适合拿来当发展史的开头 2026-01-15 v2026.1.14-1 clawdbot 2026.1.14-1 加入 web_search / web_fetch、Chrome 扩展接管与远程浏览器控制、channel plugins、Zalo 插件、安全审计增强 从这一版开始，项目的边界开始打开，不再只是“接模型回消息”，而是更像一个能搜网、能控浏览器、能接渠道的系统 2026-01-17 v2026.1.16-2 clawdbot &#8230; <a href="https://www.dbform.com/2026/03/13/openclaw-%e5%8f%91%e5%b1%95%e5%8e%86%e7%a8%8b%e8%a1%a8%ef%bc%9a%e4%bb%8e-clawdbot-%e5%88%b0-openclaw/" class="more-link">Continue reading <span class="screen-reader-text">OpenClaw 发展历程表：从 clawdbot 到 openclaw</span></a>]]></description>
										<content:encoded><![CDATA[<h1>OpenClaw 发展历程表：从 <code>clawdbot</code> 到 <code>openclaw</code></h1>
<p>这份时间线，是从 <code>v2026.1.5</code> 开始往后捋。按 release 命名和说明来看，这一版基本可以当成项目正式进入 <code>clawdbot</code> 阶段的起点。后面它先经历了 <code>clawdbot</code>、<code>Clawdbot</code> 这几个写法上的变化，中间还短暂改名成过 <code>Moltbot</code>，直到 <code>v2026.1.29</code> 前后才真正把名字切到 <code>openclaw</code>。</p>
<h2>按时间排序的发展历程表</h2>
<table>
<thead>
<tr>
<th>发布时间（UTC）</th>
<th>版本</th>
<th>发布名称</th>
<th>关键变化</th>
<th>为什么值得高亮</th>
</tr>
</thead>
<tbody>
<tr>
<td>2026-01-05</td>
<td><code>v2026.1.5</code></td>
<td><code>clawdbot 2026.1.5</code></td>
<td>引入 image 专用模型配置、<code>image</code> 工具、默认模型 shorthand，同时继续补齐 Control UI、Android、macOS、WhatsApp、Discord 等体验问题</td>
<td>这是目前这条时间线上，<code>clawdbot</code> 作为正式 release 名称出现的起点，适合拿来当发展史的开头</td>
</tr>
<tr>
<td>2026-01-15</td>
<td><code>v2026.1.14-1</code></td>
<td><code>clawdbot 2026.1.14-1</code></td>
<td>加入 <code>web_search</code> / <code>web_fetch</code>、Chrome 扩展接管与远程浏览器控制、channel plugins、Zalo 插件、安全审计增强</td>
<td>从这一版开始，项目的边界开始打开，不再只是“接模型回消息”，而是更像一个能搜网、能控浏览器、能接渠道的系统</td>
</tr>
<tr>
<td>2026-01-17</td>
<td><code>v2026.1.16-2</code></td>
<td><code>clawdbot 2026.1.16-2</code></td>
<td>引入 hooks 系统、媒体理解（图像/音频/视频）、PTY <code>exec</code>、hook pack 安装、用户可调用 skill 命令、跨平台会话链接</td>
<td>这一版把可编排性拉高了很多，离 agent 平台更近了一步</td>
</tr>
<tr>
<td>2026-01-24</td>
<td><code>v2026.1.23</code></td>
<td><code>Clawdbot 2026.1.23</code></td>
<td>Telegram TTS 进入 core、增加 <code>/tools/invoke</code> HTTP endpoint、heartbeat 可见性控制、Fly.io 部署支持、Tlon/Urbit 插件</td>
<td>这一版开始，<code>Clawdbot</code> 的写法趋于稳定，产品也越来越像一个能部署、能开放接口、能扩渠道的系统</td>
</tr>
<tr>
<td>2026-01-25</td>
<td><code>v2026.1.24</code></td>
<td><code>Clawdbot 2026.1.24</code></td>
<td>Ollama discovery、LINE 插件、Edge TTS fallback、全渠道 <code>/approve</code> 审批、Telegram DM topics 独立会话、Control UI 设计系统刷新</td>
<td>本地模型、语音、审批流、插件、UI 一起往前推，是一次很典型的“完成度上台阶”更新</td>
</tr>
<tr>
<td>2026-01-27</td>
<td>品牌过渡节点</td>
<td><code>Moltbot</code> 阶段开始</td>
<td>因商标压力，<code>Clawdbot</code> 短暂改名为 <code>Moltbot</code>，随后社区与文档也开始跟进这次过渡命名</td>
<td>这是 <code>Clawdbot -&gt; OpenClaw</code> 中间很短暂的一次改名</td>
</tr>
<tr>
<td>2026-01-30</td>
<td><code>v2026.1.29</code></td>
<td><code>openclaw 2026.1.29</code></td>
<td><strong>正式 rebrand</strong>：npm 包/CLI 改名为 <code>openclaw</code>，扩展改到 <code>@openclaw/*</code>，兼容 shim 与旧路径迁移同步上线，macOS app rename 完成</td>
<td>这是整条发展线里最重要的品牌拐点，<code>OpenClaw</code> 时代从这里真正开始</td>
</tr>
<tr>
<td>2026-02-02</td>
<td><code>v2026.2.1</code></td>
<td><code>openclaw 2026.2.1</code></td>
<td><code>.clawdbot</code> 到 <code>.openclaw</code> 路径迁移继续完善，TLS 1.3 最低要求、安全修复集中补强、系统提示与工具策略一致性改进</td>
<td>改名之后最怕的是各种边角不一致，这一版做的就是这种不显眼但特别关键的收尾工作</td>
</tr>
<tr>
<td>2026-03-01</td>
<td>星标里程碑</td>
<td><code>v2026.3.1</code> 发布前夜</td>
<td>OpenClaw 超过 <code>facebook/react</code>，成为 GitHub 上 star 最多的<strong>非聚合型软件项目</strong></td>
<td>这不是 GitHub 全站仓库总榜第一，但它是 OpenClaw 影响力出圈的标志性时刻</td>
</tr>
<tr>
<td>2026-03-13</td>
<td><code>v2026.3.12</code></td>
<td><code>openclaw 2026.3.12</code></td>
<td>dashboard-v2、OpenAI/Anthropic fast mode、provider-plugin 架构推进、subagent <code>sessions_yield</code>、更多安全修复</td>
<td>这是 <code>openclaw</code> 进入成熟阶段的代表版本，工作台形态和平台化方向都更清楚了</td>
</tr>
</tbody>
</table>
<p><img decoding="async" src="https://files.seeusercontent.com/2026/03/13/A9le/openclaw-timeline-nord-light-v2.svg" alt="openclaw-timeline-nord-light-v2.svg" /></p>
<h2>关键阶段解读</h2>
<h3>1. <code>clawdbot</code> 阶段的起点：<code>v2026.1.5</code></h3>
<p><code>v2026.1.5</code> 之所以值得拿出来单说，不只是因为它加了 image model 和 <code>image</code> 工具，更重要的是，它在 release 名称里明确用了 <code>clawdbot</code>。</p>
<p>如果你是站在“发展史”这个角度往回看，很多时候真正重要的并不是某个单点功能，而是项目开始以什么名字、什么姿态稳定对外发布。<code>v2026.1.5</code> 给人的感觉就是：这个项目已经不是一个随手试验的小仓库了，它开始以 <code>clawdbot</code> 的名义连续往前推版本。</p>
<h3>2. 能力开始外扩：<code>v2026.1.14-1</code> 到 <code>v2026.1.16-2</code></h3>
<p>我觉得这两个版本要放在一起看。</p>
<p><code>v2026.1.14-1</code> 把网页搜索、网页抓取、浏览器接管、远程浏览器控制、通道插件这些能力拉进来了。紧接着 <code>v2026.1.16-2</code> 又把 hooks、媒体理解、PTY 执行、hook pack 安装、skill 命令这些东西补上。</p>
<p>放在一起就很明显了：项目已经不再只是“接一个大模型，然后把回复发出去”。它开始具备下面这些更像 agent 系统的特征：</p>
<ul>
<li>能拿外部信息</li>
<li>能操作浏览器</li>
<li>能接更多消息渠道</li>
<li>能处理图片、音频、视频这类输入</li>
<li>能用 hooks 和 exec 把自动化流程串起来</li>
</ul>
<p>这时候的 <code>clawdbot</code> 已经具备平台雏形。</p>
<h3>3. <code>Clawdbot</code> 阶段的放大版：<code>v2026.1.23</code> 和 <code>v2026.1.24</code></h3>
<p>如果前面那几版是在扩边界，那 <code>v2026.1.23</code> 和 <code>v2026.1.24</code> 更像是在补产品感。</p>
<p><code>v2026.1.23</code> 把 Telegram TTS 往 core 里推了一步，又加了 <code>/tools/invoke</code> HTTP endpoint。这个点挺重要的，因为它意味着外部系统不只是“接它的回复”，而是可以更直接地调它的工具能力。到了 <code>v2026.1.24</code>，Ollama discovery、LINE 插件、Edge TTS fallback、全渠道 <code>/approve</code>、Telegram DM topics、Control UI 设计系统刷新这些又一起上来了。</p>
<p>这些东西单独看都不算改天换地，但合起来会让人感觉：这个项目开始更像一个完整产品，而不是一堆厉害功能的集合。</p>
<p>最直观的变化大概有这几类：</p>
<ul>
<li>部署方式更多</li>
<li>插件和渠道更丰富</li>
<li>审批和 TTS 这种实际使用中的流程更顺畅</li>
<li>控制界面更像真的要长期给人用的界面</li>
<li>本地模型这条路也更加清楚</li>
</ul>
<h3>4. <code>Moltbot</code> 短暂过渡期：<code>2026-01-27</code></h3>
<p><code>clawdbot</code> 并不是直接一步改成 <code>openclaw</code>，而是先短暂改名成了 <code>Moltbot</code>。创始人谈及收到了Anthropic公司礼貌的请求改名的函件。</p>
<p>根据官方 lore 页面和当时的外部报道，<strong><code>2026-01-27</code> 这一天，项目先短暂改名成了 <code>Moltbot</code>。</strong> 这次改名很短，后来又很快被 <code>OpenClaw</code> 取代，如果只看 GitHub release中的发布名称，很容易把这段历史忽略掉。</p>
<h3>5. 正式改名：<code>v2026.1.29</code></h3>
<p>整条时间线里，如果只挑一个必须单独圈出来的版本，那大概率就是 <code>v2026.1.29</code>。</p>
<p>这一版不是那种“文案层面改个 logo”的改名。release 里写得很清楚：</p>
<ul>
<li>npm package / CLI 改名为 <code>openclaw</code></li>
<li>提供 <code>openclaw</code> compatibility shim</li>
<li>extensions 迁移到 <code>@openclaw/*</code></li>
<li>自动迁移旧的 state/config 路径</li>
<li>macOS 侧的 OpenClaw app rename 也收尾了</li>
</ul>
<p>也就是说，这次改名是全链路的：</p>
<ul>
<li>命令行入口</li>
<li>包名</li>
<li>扩展生态命名</li>
<li>本地状态目录和配置路径</li>
<li>桌面应用</li>
</ul>
<p>所以从项目史的角度看，<code>v2026.1.29</code> 其实很适合直接写成一句话：<strong>OpenClaw 时代从这里开始。</strong></p>
<h3>6. 改名之后的收口：<code>v2026.2.1</code></h3>
<p>改名这件事，真正麻烦的往往不在改名当天，而在改完之后。</p>
<p>新名字换上去不难，难的是那些老路径、旧配置、残留命名、权限边界、默认行为到底有没有一起跟上。<code>v2026.2.1</code> 的价值就在这里。它把不少真正影响稳定性的边角补了起来：<code>.clawdbot</code> 到 <code>.openclaw</code> 的迁移继续完善，TLS 1.3 最低要求、安全修复、工具策略一致性、系统提示规则这些也都在继续修改为适配新品牌。</p>
<h3>7. 更成熟的工作台阶段：<code>v2026.3.12</code></h3>
<p>如果说 <code>v2026.1.29</code> 是品牌上的拐点，那 <code>v2026.3.12</code> 更像是产品形态上的拐点。</p>
<p>这一版最醒目的东西是 dashboard-v2、fast mode、provider-plugin 架构、subagent 机制继续增强。它传递出来的信息很明确：OpenClaw 已经不只是继续“多接几个 provider、多补几个渠道”了，而是在往一个更统一的 AI 工作台走。</p>
<p>这里面我最看重的其实不是单个 feature，而是方向开始统一：</p>
<ul>
<li>Control UI 不再只是配置入口，而像一个真正的工作台</li>
<li>provider 接入开始更模块化</li>
<li>多 agent / subagent 的编排能力还在继续长</li>
<li>安全治理也不再是零散修补，而更像系统性推进</li>
</ul>
<p>换句话说，到这个阶段，OpenClaw 已经不是单纯“功能继续涨”的项目，它开始同时处理平台化和产品化这两件事。</p>
<h3>8. 值得记下来的外部里程碑：<code>2026-03-01</code></h3>
<p>还有一个时间点绝对不该漏掉，虽然它不是一个 release 版本本身。</p>
<p>根据公开的 Star History 文章和当时的公开讨论，<strong><code>2026-03-01</code> 这一天，OpenClaw 超过了 <code>facebook/react</code>，成为 GitHub 上 star 最多的非聚合型软件项目。</strong> 这句话要说严谨一点，因为它不是 GitHub 全站所有仓库里的绝对第一；排在前面的还有不少 <code>awesome-*</code>、教程合集、书单和资源索引类仓库。</p>
<p>但即便加上这个限定，这个节点依然很重要。因为它说明 OpenClaw 的影响力已经不只是停留在 agent 圈子、开源圈子或者 AI 工具用户内部了，它开始进入一种更广泛的技术社区共识：不管你喜不喜欢它，它都已经变成 GitHub 上最受关注的软件项目之一。</p>
<p>如果把这个时间点和 release 对起来看，它正好落在 <strong><code>v2026.3.1</code> 发布前夜</strong>。也就是说，OpenClaw 在进入 <code>v2026.3.1</code> 这个阶段时，外部关注度已经冲到了一个很夸张的位置。后面 <code>v2026.3.12</code> 再往工作台化、平台化方向走，这个背景就更容易理解了：项目不只是用户多了，而是真的进入了“大众技术视野里的头部项目”区间。</p>
<h2>如果只选 5 个必须高亮的版本</h2>
<table>
<thead>
<tr>
<th>版本</th>
<th>为什么一定要提</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>v2026.1.5</code></td>
<td><code>clawdbot</code> 命名阶段的起点</td>
</tr>
<tr>
<td><code>v2026.1.14-1</code></td>
<td>第一次明显把网页搜索、浏览器控制、插件化渠道拉进核心能力范围</td>
</tr>
<tr>
<td><code>v2026.1.16-2</code></td>
<td>hooks、媒体理解、PTY exec 让项目真正有了 agent 平台雏形</td>
</tr>
<tr>
<td><code>v2026.1.29</code></td>
<td>正式从 <code>clawdbot</code> 改名为 <code>openclaw</code></td>
</tr>
<tr>
<td><code>v2026.3.12</code></td>
<td><code>openclaw</code> 进入成熟工作台阶段的代表版本</td>
</tr>
</tbody>
</table>
<h2>参考 release</h2>
<ul>
<li><code>v2026.1.5</code>: https://github.com/openclaw/openclaw/releases/tag/v2026.1.5</li>
<li><code>v2026.1.14-1</code>: https://github.com/openclaw/openclaw/releases/tag/v2026.1.14-1</li>
<li><code>v2026.1.16-2</code>: https://github.com/openclaw/openclaw/releases/tag/v2026.1.16-2</li>
<li><code>v2026.1.23</code>: https://github.com/openclaw/openclaw/releases/tag/v2026.1.23</li>
<li><code>v2026.1.24</code>: https://github.com/openclaw/openclaw/releases/tag/v2026.1.24</li>
<li><code>v2026.1.29</code>: https://github.com/openclaw/openclaw/releases/tag/v2026.1.29</li>
<li><code>v2026.2.1</code>: https://github.com/openclaw/openclaw/releases/tag/v2026.2.1</li>
<li><code>v2026.3.12</code>: https://github.com/openclaw/openclaw/releases/tag/v2026.3.12</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbform.com/2026/03/13/openclaw-%e5%8f%91%e5%b1%95%e5%8e%86%e7%a8%8b%e8%a1%a8%ef%bc%9a%e4%bb%8e-clawdbot-%e5%88%b0-openclaw/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4553</post-id>	</item>
		<item>
		<title>How to add Dictionaries to RIME Input Method on Ubuntu/Pop-OS</title>
		<link>https://www.dbform.com/2024/08/20/how-to-add-dictionaries-to-rime-input-method-on-ubuntu-pop-os/</link>
					<comments>https://www.dbform.com/2024/08/20/how-to-add-dictionaries-to-rime-input-method-on-ubuntu-pop-os/#respond</comments>
		
		<dc:creator><![CDATA[kamus]]></dc:creator>
		<pubDate>Tue, 20 Aug 2024 09:20:02 +0000</pubDate>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[RIME]]></category>
		<guid isPermaLink="false">https://www.dbform.com/?p=4463</guid>

					<description><![CDATA[在RIME输入法中增加词典 1. RIME的配置目录 Ubuntu/PopOS中位于：~/.config/ibus/rime 2. 下载词典文件 使用git clone下载RIME扩充词库： https://github.com/rime-aca/dictionaries 使用rime-install下载zhwiki词典：https://github.com/felixonmars/fcitx5-pinyin-zhwiki 3. 将所有词库文件cp到RIME配置目录中 cp *dict* ~/.config/ibus/rime/ 4. 增加一个custom配置文件用以调用词库 在下载的RIME扩充词库目录中，有一个luna_pinyin.custom.yaml，当使用朙月拼音的时候可以直接使用该配置，但是我使用的是朙月拼音简化字方案，因此需要将该配置文件改名为： luna_pinyin_simp.custom.yaml 在这个配置文件中，可以看到输入法的对应 # 附朙月拼音系列方案與其對應的 id 一覽表： # 輸入方案 id # 朙月拼音 luna_pinyin # 朙月拼音·简化字 luna_pinyin_simp # 朙月拼音·臺灣正體 luna_pinyin_tw # 朙月拼音·語句流 luna_pinyin_fluency 4. 通过import_tables来进行多个词典加载 查看luna_pinyin_simp.custom.yaml可以看到它指定了&#8221;translator/dictionary&#8221;: luna_pinyin.extended为词典方案，再查看luna_pinyin.extended.dict.yaml可以看到这个配置文件里import了其他词典 import_tables: - luna_pinyin - luna_pinyin.hanyu - luna_pinyin.poetry - luna_pinyin.cn_en 通过这种方法将所有词典文件都加载到输入法中 5. 修改luna_pinyin.extended.dict.yaml，增加zhwiki词典 &#8230; <a href="https://www.dbform.com/2024/08/20/how-to-add-dictionaries-to-rime-input-method-on-ubuntu-pop-os/" class="more-link">Continue reading <span class="screen-reader-text">How to add Dictionaries to RIME Input Method on Ubuntu/Pop-OS</span></a>]]></description>
										<content:encoded><![CDATA[<h2>在RIME输入法中增加词典</h2>
<h3>1. RIME的配置目录</h3>
<p>Ubuntu/PopOS中位于：<code>~/.config/ibus/rime</code></p>
<h3>2. 下载词典文件</h3>
<p>使用git clone下载RIME扩充词库： https://github.com/rime-aca/dictionaries<br />
使用rime-install下载zhwiki词典：https://github.com/felixonmars/fcitx5-pinyin-zhwiki</p>
<h3>3. 将所有词库文件cp到RIME配置目录中</h3>
<pre><code class="line-numbers">cp *dict* ~/.config/ibus/rime/
</code></pre>
<h3>4. 增加一个custom配置文件用以调用词库</h3>
<p>在下载的RIME扩充词库目录中，有一个luna_pinyin.custom.yaml，当使用朙月拼音的时候可以直接使用该配置，但是我使用的是朙月拼音简化字方案，因此需要将该配置文件改名为：<br />
luna_pinyin_simp.custom.yaml</p>
<p>在这个配置文件中，可以看到输入法的对应</p>
<pre><code class="line-numbers"># 附朙月拼音系列方案與其對應的 id 一覽表：
# 輸入方案  id
# 朙月拼音  luna_pinyin
# 朙月拼音·简化字  luna_pinyin_simp
# 朙月拼音·臺灣正體 luna_pinyin_tw
# 朙月拼音·語句流  luna_pinyin_fluency
</code></pre>
<h3>4. 通过import_tables来进行多个词典加载</h3>
<p>查看luna_pinyin_simp.custom.yaml可以看到它指定了&#8221;translator/dictionary&#8221;: luna_pinyin.extended为词典方案，再查看luna_pinyin.extended.dict.yaml可以看到这个配置文件里import了其他词典</p>
<pre><code class="line-numbers">import_tables:
  - luna_pinyin
  - luna_pinyin.hanyu
  - luna_pinyin.poetry
  - luna_pinyin.cn_en

</code></pre>
<p>通过这种方法将所有词典文件都加载到输入法中</p>
<h3>5. 修改luna_pinyin.extended.dict.yaml，增加zhwiki词典</h3>
<pre><code class="line-numbers">import_tables:
  - luna_pinyin
  - luna_pinyin.hanyu
  - luna_pinyin.poetry
  - luna_pinyin.cn_en
  - zhwiki
</code></pre>
<h3>6. 重新部署RIME输入法</h3>
<p>右键点击RIME的图标选择“部署”。</p>
<p>BTW：如果要修改输入法备选字的个数（比如从默认5个修改为7个），需要创建default.custom.yaml，并写入：</p>
<pre><code class="line-numbers"># default.custom.yaml
patch:
  "menu/page_size": 7 
</code></pre>
<p>参考文档： https://blog.mikelyou.com/2020/07/31/rime-input/</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbform.com/2024/08/20/how-to-add-dictionaries-to-rime-input-method-on-ubuntu-pop-os/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4463</post-id>	</item>
		<item>
		<title>How to move WSL distro in Windows 11 to another drive</title>
		<link>https://www.dbform.com/2024/01/05/how-to-move-wsl-distro-in-windows-11-to-another-drive/</link>
					<comments>https://www.dbform.com/2024/01/05/how-to-move-wsl-distro-in-windows-11-to-another-drive/#respond</comments>
		
		<dc:creator><![CDATA[kamus]]></dc:creator>
		<pubDate>Fri, 05 Jan 2024 07:44:34 +0000</pubDate>
				<category><![CDATA[Operating System]]></category>
		<category><![CDATA[Windows 11]]></category>
		<category><![CDATA[WSL]]></category>
		<guid isPermaLink="false">https://www.dbform.com/?p=4450</guid>

					<description><![CDATA[Check the all steps screenshot as below.]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-jetpack-markdown"><h2>Introduction:</h2>
<p>In the world of development and system administration, Windows Subsystem for Linux (WSL) has become a valuable tool. It allows users to run a Linux distribution alongside their Windows environment, opening up a world of possibilities for developers and administrators. In this article, we’ll guide you through the process of migrating a WSL instance, using a real-world example, step by step.</p>
<h2>Prerequisites:</h2>
<p>Before we begin, ensure that you have the following prerequisites in place:</p>
<ul>
<li>Windows 10 or later with WSL installed.</li>
<li>An existing WSL instance (in our case, Ubuntu).</li>
<li>Sufficient storage space for the migration.</li>
</ul>
<h2>Step 1: Create a Target Directory</h2>
<p>To start the migration process, we need a target directory to store the migrated WSL instance. In PowerShell, use the ‘mkdir’ command to create this directory. In our example, we create a directory named ‘D:\WSL\Ubuntu’:</p>
<pre><code class="language-powershell">mkdir -p D:\WSL\Ubuntu
</code></pre>
<h2>Step 2: List All Running WSL Instances</h2>
<p>Before we proceed further, let’s list all the running WSL instances. The following command will display a list of all WSL instances, including their state and version:</p>
<pre><code class="language-powershell">wsl -l --all -v
</code></pre>
<h2>Step 3: Export the Source WSL Instance</h2>
<p>Now, let’s export the source WSL instance (in our case, ‘Ubuntu’) into a tar file. This step automatically shuts down the WSL instance and restarts it after the export:</p>
<pre><code class="language-powershell">wsl --export Ubuntu D:\WSL\Ubuntu.tar
</code></pre>
<h2>Step 4: Unregister the Source WSL Instance</h2>
<p>Once the export is complete, we need to unregister the source WSL instance to avoid conflicts. Use the following command:</p>
<pre><code class="language-powershell">wsl --unregister Ubuntu
</code></pre>
<h2>Step 5: Confirm Unregistration</h2>
<p>To confirm that the source WSL instance has been successfully unregistered, run the following command:</p>
<pre><code class="language-powershell">wsl -l --all -v
</code></pre>
<h2>Step 6: Import into the Target Directory</h2>
<p>Now it’s time to import the previously exported WSL instance into the target directory. In this step, we specify the target directory and version (in our case, version 2):</p>
<pre><code class="language-powershell">wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL\Ubuntu.tar --version 2
</code></pre>
<h2>Step 7: Verify the Migration</h2>
<p>To ensure that the migration was successful, list all WSL instances once again:</p>
<pre><code class="language-powershell">wsl -l --all -v
</code></pre>
<h2>Step 8: Access the Migrated WSL Instance</h2>
<p>Now, you can access the migrated WSL instance by using the following command:</p>
<pre><code class="language-powershell">wsl -d Ubuntu
</code></pre>
<h2>Conclusion:</h2>
<p>Migrating WSL instances is a powerful way to manage and organize your development environments. By following these steps, you can seamlessly move your WSL instances to different directories or machines, ensuring flexibility and efficiency in your development workflow. Keep in mind that WSL provides a bridge between Windows and Linux, allowing you to enjoy the best of both worlds.</p>
</div>



<p class="wp-block-paragraph">Check the all steps screenshot as below.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># create target directory
PS C:\Users\kamus> mkdir -p D:\WSL\Ubuntu

# List all the wsl running
PS C:\Users\kamus> wsl -l --all -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2
  
# Export source wsl
PS C:\Users\kamus> wsl --export Ubuntu D:\WSL\Ubuntu.tar

# When doing export, wsl will be shutdown automatically and restart after exporting
PS C:\Users\kamus> wsl -l --all -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2
  
# Unregister the source wsl
PS C:\Users\kamus> wsl --unregister Ubuntu
正在注销...

# Check unregister is successful
PS C:\Users\kamus> wsl -l --all -v
  NAME                   STATE           VERSION
* docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2
  
# Import into the target directory
PS C:\Users\kamus> wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL\Ubuntu.tar --version 2

# Check results
PS C:\Users\kamus> wsl -l --all -v
  NAME                   STATE           VERSION
* docker-desktop         Stopped         2
  Ubuntu                 Stopped         2
  docker-desktop-data    Stopped         2
PS C:\Users\kamus> wsl -d Ubuntu
Welcome to Ubuntu 20.04.5 LTS (GNU/Linux 5.10.102.1-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Fri Jan  5 14:40:25 JST 2024

  System load:  0.68               Processes:             8
  Usage of /:   2.0% of 250.98GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for eth0: 172.28.208.11
  Swap usage:   0%


0 updates can be applied immediately.


The list of available updates is more than a week old.
To check for new updates run: sudo apt update


This message is shown once a day. To disable it please create the
/root/.hushlogin file.
root@Kamus-Trident:/mnt/c/Users/kamus# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.5 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
root@Kamus-Trident:/mnt/c/Users/kamus#</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbform.com/2024/01/05/how-to-move-wsl-distro-in-windows-11-to-another-drive/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4450</post-id>	</item>
		<item>
		<title>Unlocking the Power: Key Features of MogDB</title>
		<link>https://www.dbform.com/2023/10/10/unlocking-the-power-key-features-of-mogdb/</link>
					<comments>https://www.dbform.com/2023/10/10/unlocking-the-power-key-features-of-mogdb/#comments</comments>
		
		<dc:creator><![CDATA[kamus]]></dc:creator>
		<pubDate>Tue, 10 Oct 2023 05:02:37 +0000</pubDate>
				<category><![CDATA[MogDB]]></category>
		<guid isPermaLink="false">https://www.dbform.com/?p=4434</guid>

					<description><![CDATA[MogDB is an advanced distributed relational database management system that offers high performance, high availability, ease of maintenance, compatibility, and AI capabilities. ]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Introduction to MogDB</h2>



<p class="wp-block-paragraph"><a href="https://www.mogdb.io">MogDB</a> is a cutting-edge distributed relational database management system that offers an array of powerful features designed to meet the needs of modern businesses. With its high performance, availability, maintainability, compatibility, and AI capabilities, MogDB stands out as a top choice for database administrators, developers, and IT professionals.</p>



<p class="wp-block-paragraph">One of the key selling points of MogDB is its ability to deliver exceptional performance. This is achieved through various innovative features such as the <a href="https://docs.mogdb.io/en/mogdb/v2.0/2-optimizer-cost-constants/">Cost-Based Optimizer</a> (CBO) optimizer, which intelligently chooses the most efficient execution plans for queries. Additionally, MogDB utilizes a <a href="https://docs.mogdb.io/en/mogdb/v3.1/3-vectorized-engine/">vectorized engine</a> that processes data in batches instead of row by row, resulting in significant performance improvements. The <a href="https://docs.mogdb.io/en/mogdb/v3.0/5-adaptive-compression">adaptive compression</a> feature further enhances performance by reducing storage requirements and minimizing I/O operations.</p>



<p class="wp-block-paragraph">In terms of availability, MogDB offers robust solutions to ensure uninterrupted access to critical data. It supports <a href="https://en.wikipedia.org/wiki/Master-slave_replication">master-slave replication</a>, allowing for automatic failover in case of primary node failure. <a href="https://docs.mogdb.io/en/mogdb/v2.1/2-logical-replication">Logical replication</a> enables real-time data synchronization across multiple databases, while <a href="https://docs.mogdb.io/en/mogdb/v2.1/5-physical-backup">physical backup</a> provides reliable data protection. <a href="https://docs.mogdb.io/en/mogdb/v3.0/9-delayed-replay">Delayed replay</a> allows for easy recovery from accidental data corruption or deletion.</p>



<p class="wp-block-paragraph">Maintaining a database can be complex and time-consuming. However, MogDB simplifies this process with its advanced maintainability features. The <a href="https://docs.mogdb.io/en/mogdb/v3.0/upgrade-guide/">grey upgrade</a> feature allows for seamless upgrades without interrupting service availability. <a href="https://docs.mogdb.io/en/mogdb/v3.1/3-slow-sql-diagnosis">Slow SQL diagnosis</a> helps identify and optimize poorly performing queries, improving overall system efficiency. <a href="https://docs.mogdb.io/en/mogdb/v2.1/5-system-kpi-aided-diagnosis/">System KPI diagnosis</a> provides insights into system health and performance metrics, enabling proactive maintenance and troubleshooting. Fault diagnosis helps pinpoint issues quickly and accurately.</p>



<p class="wp-block-paragraph">Compatibility is another area where MogDB excels. It supports various SQL features and ensures compatibility with popular database systems such as Oracle and MySQL. This makes it easier for organizations to migrate their existing applications or leverage their existing SQL knowledge without major modifications.</p>



<p class="wp-block-paragraph">MogDB also boasts impressive AI capabilities that set it apart from traditional databases. The AI4DB feature enables autonomous database operations, automating routine tasks and optimizing performance based on machine learning algorithms. DB4AI allows for database-driven AI, empowering organizations to leverage their data for advanced analytics and machine learning applications. Additionally, the ABO optimizer intelligently adapts query execution plans based on real-time data statistics, further enhancing performance.</p>



<h2 class="wp-block-heading">High Performance Features</h2>



<p class="wp-block-paragraph">MogDB is designed to deliver exceptional performance, ensuring that your database operations run smoothly and efficiently. With its cutting-edge features, MogDB offers unparalleled speed and optimization capabilities.</p>



<p class="wp-block-paragraph">One of the key high-performance features of MogDB is the Cost-Based Optimizer (CBO). This optimizer leverages advanced algorithms and statistical models to determine the most efficient execution plan for queries. By analyzing query statistics and data distribution, the CBO can make intelligent decisions on how to execute queries in the most optimal way. This results in faster query processing times and improved overall performance.</p>



<p class="wp-block-paragraph">In addition to the CBO optimizer, MogDB also utilizes a vectorized engine. This engine takes advantage of modern CPU architectures by performing operations on entire vectors of data at once, rather than processing individual elements sequentially. As a result, complex queries that involve large datasets can be executed more quickly and efficiently.</p>



<p class="wp-block-paragraph">Another feature that contributes to MogDB&#8217;s high performance is adaptive compression. This feature dynamically adjusts the level of compression applied to data based on its characteristics and usage patterns. By compressing data when it is not actively being accessed or modified, MogDB can reduce storage requirements and improve I/O performance. When data needs to be accessed or modified, it is decompressed on-the-fly for seamless operations.</p>



<p class="wp-block-paragraph">Parallel query optimization is yet another powerful feature offered by MogDB. This feature allows queries to be divided into smaller tasks that can be executed simultaneously across multiple cores or nodes in a distributed environment. By leveraging parallelism, MogDB can significantly speed up query processing times for large datasets or complex queries.</p>



<p class="wp-block-paragraph">With these high-performance features combined, MogDB ensures that your database operations are lightning-fast and efficient. Whether you&#8217;re running simple CRUD operations or complex analytical queries, you can rely on MogDB to deliver exceptional performance every time.</p>



<p class="wp-block-paragraph">It&#8217;s worth noting that while these high-performance features greatly enhance the speed and efficiency of MogDB, they do not compromise on data integrity or reliability. MogDB is built with a strong focus on ACID (Atomicity, Consistency, Isolation, Durability) principles, ensuring that your data remains consistent and reliable even under high-performance workloads.</p>



<h2 class="wp-block-heading">High Availability Features</h2>



<p class="wp-block-paragraph">Ensuring high availability is crucial for any database management system, and MogDB excels in this aspect with its robust set of features. Let&#8217;s dive into the key high availability features that make MogDB a reliable choice for businesses.</p>



<p class="wp-block-paragraph"><strong>Master-slave replication for data redundancy</strong></p>



<p class="wp-block-paragraph">MogDB offers master-slave replication, a powerful feature that enhances data redundancy and fault tolerance. With this feature, changes made to the master node are automatically replicated to one or more slave nodes. In the event of a failure or outage on the master node, one of the slave nodes can seamlessly take over as the new master, ensuring uninterrupted service availability. This replication mechanism not only provides data redundancy but also improves read scalability by allowing read operations to be distributed across multiple nodes.</p>



<p class="wp-block-paragraph"><strong>Logical replication for real-time data synchronization</strong></p>



<p class="wp-block-paragraph">In addition to master-slave replication, MogDB supports logical replication, enabling real-time data synchronization between databases. This feature allows specific tables or even subsets of tables to be replicated from one database instance to another. By capturing and propagating changes at the logical level rather than replicating entire physical blocks, logical replication minimizes network traffic and reduces latency. It enables businesses to maintain up-to-date replicas of their databases for reporting purposes or offloading read-intensive workloads without impacting the performance of the primary database.</p>



<p class="wp-block-paragraph"><strong>Physical backup for data protection</strong></p>



<p class="wp-block-paragraph">Data protection is paramount in any database system, and MogDB addresses this need through its physical backup feature. With physical backups, administrators can create full copies of their databases at a specific point in time. These backups capture both the schema and data files, ensuring comprehensive recovery options in case of hardware failures, user errors, or other catastrophic events. MogDB&#8217;s physical backup mechanism provides flexibility by allowing backups to be stored on different storage devices or even transferred to remote locations for disaster recovery purposes.</p>



<p class="wp-block-paragraph"><strong>Delayed replay for data recovery</strong></p>



<p class="wp-block-paragraph">MogDB includes a delayed replay feature that allows administrators to recover data from a specific point in time. This feature is particularly useful in scenarios where accidental data deletions or modifications occur and need to be rolled back. By leveraging the transaction log, MogDB can replay changes up until a certain point, effectively restoring the database to its state prior to the incident. The delayed replay feature provides an additional layer of protection against human errors or malicious activities, ensuring that businesses can quickly recover from data-related incidents.</p>



<p class="wp-block-paragraph">In summary, MogDB offers a comprehensive set of high availability features that guarantee reliability and continuous operation for businesses. The master-slave replication ensures data redundancy and read scalability, while logical replication enables real-time data synchronization for reporting or offloading purposes. Physical backups and delayed replay provide robust data protection mechanisms, allowing administrators to recover from hardware failures or user errors effectively. With these high availability features, MogDB empowers organizations with the confidence that their critical databases will remain accessible and resilient even in the face of unexpected challenges.</p>



<p class="wp-block-paragraph">*[E-A-T]: Expertise, Authoritativeness, Trustworthiness</p>



<h2 class="wp-block-heading">Maintainability Features</h2>



<p class="wp-block-paragraph">Maintainability is a crucial aspect of any database management system, and MogDB excels in this area with its array of innovative features. These features are designed to ensure seamless system updates, optimize performance, monitor and analyze system KPIs, and resolve any potential faults. Let&#8217;s explore these maintainability features in detail.</p>



<p class="wp-block-paragraph">One of the standout maintainability features of MogDB is the grey upgrade capability. This feature allows for seamless system updates without interrupting ongoing operations. With grey upgrade, administrators can apply patches, upgrades, or even major version changes to MogDB without causing downtime or disrupting user access. This ensures that businesses can keep their databases up-to-date with the latest enhancements and security fixes while minimizing any potential disruptions to their operations.</p>



<p class="wp-block-paragraph">Another essential maintainability feature offered by MogDB is slow SQL diagnosis. Slow SQL queries can significantly impact database performance and user experience. MogDB addresses this issue by providing comprehensive tools for identifying and optimizing slow SQL queries. The system analyzes query execution plans, identifies bottlenecks, and suggests optimizations to improve query performance. By pinpointing problematic queries and optimizing them, administrators can enhance overall database performance and ensure smooth operation.</p>



<p class="wp-block-paragraph">System KPI diagnosis is another vital component of MogDB&#8217;s maintainability arsenal. Monitoring key performance indicators (KPIs) is crucial for understanding the health and efficiency of a database system. MogDB provides robust tools for monitoring and analyzing various KPIs such as CPU utilization, memory usage, disk I/O, network traffic, and more. Administrators can set up custom alerts based on predefined thresholds to proactively identify any anomalies or potential issues before they impact the system&#8217;s performance or availability.</p>



<p class="wp-block-paragraph">In addition to diagnosing slow SQL queries and monitoring KPIs, MogDB also offers fault diagnosis capabilities. When an issue arises within the database system, it is essential to quickly identify the root cause and resolve it efficiently. MogDB provides advanced diagnostic tools that help administrators identify and troubleshoot various types of faults, including hardware failures, network issues, software bugs, or configuration problems. By quickly identifying and resolving faults, administrators can minimize downtime and ensure the continuous availability of their database system.</p>



<h2 class="wp-block-heading">Compatibility Features</h2>



<p class="wp-block-paragraph">MogDB offers a wide range of compatibility features that make it a versatile and flexible choice for database administrators, developers, and IT professionals. One of the key compatibility features is its support for various SQL features. With MogDB, you can leverage the full power of SQL and take advantage of advanced querying capabilities to meet your specific business needs.</p>



<p class="wp-block-paragraph">In addition to its support for SQL features, MogDB also provides seamless compatibility with Oracle databases. This compatibility feature allows for easy migration from Oracle to MogDB without any major disruptions or changes to your existing applications. The transition process is smooth and hassle-free, ensuring that you can quickly start benefiting from the high-performance and highly available nature of MogDB.</p>



<p class="wp-block-paragraph">Another compatibility feature offered by MogDB is its support for MySQL databases. This means that you can seamlessly integrate MogDB into your existing MySQL infrastructure without any major modifications. Whether you are running applications that rely on MySQL or have data stored in MySQL databases, MogDB ensures a seamless integration process, allowing you to leverage the advanced capabilities and performance enhancements provided by MogDB.</p>



<p class="wp-block-paragraph">The compatibility features of MogDB not only enable smooth transitions and integrations but also ensure that your existing applications continue to function seamlessly with minimal changes required. This level of compatibility reduces the effort and time required for migration or integration projects, allowing you to focus on other critical aspects of your business.</p>



<p class="wp-block-paragraph">With its comprehensive set of compatibility features, MogDB provides a robust solution that meets the diverse needs of different industries and applications. Whether you are working with complex SQL queries, migrating from Oracle databases, or integrating with MySQL infrastructure, MogDB offers the flexibility and reliability needed to ensure a successful deployment.</p>



<h2 class="wp-block-heading">AI Capabilities</h2>



<p class="wp-block-paragraph">MogDB stands out among other distributed relational database management systems due to its advanced AI capabilities. These capabilities empower organizations to leverage the power of artificial intelligence for autonomous database operations, database-driven AI, and improved performance through the ABO optimizer.</p>



<h3 class="wp-block-heading">AI4DB for Autonomous Database Operations</h3>



<p class="wp-block-paragraph">With MogDB&#8217;s AI4DB feature, organizations can enhance their operational efficiency by automating various database tasks. This includes automated performance tuning, query optimization, and workload management. The AI algorithms embedded within MogDB continuously monitor the system&#8217;s performance metrics and automatically adjust configurations to optimize resource allocation and improve overall database performance.</p>



<p class="wp-block-paragraph">AI4DB also plays a crucial role in self-healing mechanisms. It can detect anomalies or potential issues within the database environment and take proactive measures to resolve them before they impact critical business operations. By leveraging machine learning algorithms, MogDB can identify patterns in historical data and predict potential failures or bottlenecks, allowing administrators to take preventive actions.</p>



<p class="wp-block-paragraph">Furthermore, AI4DB enables intelligent data compression techniques that optimize storage utilization without compromising query performance. By analyzing data access patterns and applying advanced compression algorithms, MogDB reduces storage costs while ensuring fast data retrieval.</p>



<h3 class="wp-block-heading">DB4AI for Database-Driven AI</h3>



<p class="wp-block-paragraph">MogDB&#8217;s DB4AI feature allows organizations to seamlessly integrate their databases with artificial intelligence applications. This empowers businesses to unlock valuable insights from their vast amounts of structured and unstructured data.</p>



<p class="wp-block-paragraph">By providing native support for popular machine learning frameworks such as TensorFlow and PyTorch, MogDB simplifies the process of training and deploying AI models directly within the database environment. This eliminates the need for complex data pipelines or costly data transfers between different systems.</p>



<p class="wp-block-paragraph">With DB4AI, organizations can leverage the full potential of their databases by performing real-time analytics on large volumes of data. They can train predictive models using historical data stored in MogDB and make accurate predictions based on real-time information ingested into the database. This enables businesses to make data-driven decisions faster and gain a competitive edge in today&#8217;s fast-paced market.</p>



<h3 class="wp-block-heading">ABO Optimizer for Improved Performance</h3>



<p class="wp-block-paragraph">MogDB&#8217;s AI capabilities extend to its query optimization engine through the Adaptive Bitwise Optimization (ABO) optimizer. This innovative feature leverages machine learning techniques to intelligently optimize query execution plans based on historical performance data.</p>



<p class="wp-block-paragraph">The ABO optimizer continuously analyzes query patterns, execution statistics, and system resources to identify optimal query plans. By learning from past experiences, it can adaptively adjust execution strategies to improve overall query performance. This results in faster response times and more efficient resource utilization.</p>



<p class="wp-block-paragraph">Furthermore, the ABO optimizer reduces the need for manual tuning by automatically selecting the most appropriate join methods, access paths, and index usage based on the characteristics of each query. This simplifies database administration tasks and allows administrators to focus on higher-level optimizations rather than fine-tuning individual queries.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">The key features of MogDB make it a powerful and versatile option for database administrators, developers, and IT professionals. Its high performance capabilities, such as the CBO optimizer, vectorized engine, adaptive compression, and parallel query optimization, ensure that users can process large amounts of data quickly and efficiently. This is crucial in today&#8217;s fast-paced business environment where time is of the essence.</p>



<p class="wp-block-paragraph">Furthermore, MogDB offers high availability features that guarantee uninterrupted access to critical data. The master-slave replication, logical replication, physical backup, and delayed replay functionalities ensure that data is always accessible even in the event of system failures or disasters. This level of reliability instills confidence in users and provides peace of mind knowing that their data is safe.</p>



<p class="wp-block-paragraph">Maintainability is another key aspect of MogDB. With features like grey upgrade, slow SQL diagnosis, system KPI diagnosis, and fault diagnosis tools, administrators can easily identify and resolve issues within the database system. This streamlines maintenance processes and minimizes downtime for businesses.</p>



<p class="wp-block-paragraph">Compatibility with various SQL features as well as Oracle and MySQL compatibility allows for seamless integration with existing systems and applications. This eliminates the need for extensive modifications or rewrites when migrating from other database management systems to MogDB.</p>



<p class="wp-block-paragraph">In addition to these impressive features, MogDB also offers AI capabilities through AI4DB for autonomous database operations and DB4AI for database-driven AI. These advanced capabilities enable users to leverage artificial intelligence technologies within their databases to enhance performance and gain valuable insights from their data.</p>



<p class="wp-block-paragraph">Overall, MogDB stands out as a highly performant, highly available, easy-to-use distributed relational database management system with a wide range of features tailored to meet the needs of modern businesses. Its compatibility with existing systems and applications combined with its AI capabilities make it an attractive choice for organizations across industries. Whether you are a database administrator looking for improved performance or a developer seeking seamless integration options, MogDB has you covered. Trust in MogDB to unlock the power of your data.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbform.com/2023/10/10/unlocking-the-power-key-features-of-mogdb/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4434</post-id>	</item>
		<item>
		<title>如何高效使用 GitHub Copilot</title>
		<link>https://www.dbform.com/2023/04/12/%e5%a6%82%e4%bd%95%e9%ab%98%e6%95%88%e4%bd%bf%e7%94%a8-github-copilot/</link>
					<comments>https://www.dbform.com/2023/04/12/%e5%a6%82%e4%bd%95%e9%ab%98%e6%95%88%e4%bd%bf%e7%94%a8-github-copilot/#respond</comments>
		
		<dc:creator><![CDATA[kamus]]></dc:creator>
		<pubDate>Wed, 12 Apr 2023 02:06:12 +0000</pubDate>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Copilot]]></category>
		<category><![CDATA[Github]]></category>
		<category><![CDATA[OpenAI]]></category>
		<guid isPermaLink="false">https://www.dbform.com/?p=4410</guid>

					<description><![CDATA[如何高效使用 GitHub Copilot GitHub Copilot 是一款由 OpenAI 和 GitHub 联合开发的人工智能编程助手，基于 GPT-4 模型。它可以帮助你编写代码、提供代码建议、自动完成代码片段等，大大提高编程效率。下面是如何高效使用 GitHub Copilot 的一些建议。 1. 安装和配置 首先，要在你的代码编辑器中安装 GitHub Copilot 插件。目前，该插件支持 Visual Studio Code。在安装插件后，确保登录到你的 GitHub 账户，以便与 Copilot 服务同步。 2. 详细描述你的需求 在开始编写代码之前，尽量详细描述你想要实现的功能。GitHub Copilot 会根据你的描述生成相应的代码建议。你可以使用注释（例如 `//` 或 `/* */`）来描述需求，这样 Copilot 就会根据注释生成代码。 3. 利用代码建议 当你开始输入代码时，GitHub Copilot 会自动提供代码建议。这些建议可能包括函数、变量、类等。要高效地利用这些建议，你可以： &#8211; 在输入时检查建议，如果符合你的需求，就接受它； &#8211; 在需要时手动触发代码建议，例如按 `Ctrl+Space`（或其他编辑器指定的快捷键）； &#8211; 当 Copilot 生成的建议不完全符合需求时，可对其进行修改并尝试重新获取建议。 4. 学会与 &#8230; <a href="https://www.dbform.com/2023/04/12/%e5%a6%82%e4%bd%95%e9%ab%98%e6%95%88%e4%bd%bf%e7%94%a8-github-copilot/" class="more-link">Continue reading <span class="screen-reader-text">如何高效使用 GitHub Copilot</span></a>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">如何高效使用 GitHub Copilot</h2>



<p class="wp-block-paragraph">GitHub Copilot 是一款由 OpenAI 和 GitHub 联合开发的人工智能编程助手，基于 GPT-4 模型。它可以帮助你编写代码、提供代码建议、自动完成代码片段等，大大提高编程效率。下面是如何高效使用 GitHub Copilot 的一些建议。</p>



<h2 class="wp-block-heading">1. 安装和配置</h2>



<p class="wp-block-paragraph">首先，要在你的代码编辑器中安装 GitHub Copilot 插件。目前，该插件支持 Visual Studio Code。在安装插件后，确保登录到你的 GitHub 账户，以便与 Copilot 服务同步。</p>



<h2 class="wp-block-heading">2. 详细描述你的需求</h2>



<p class="wp-block-paragraph">在开始编写代码之前，尽量详细描述你想要实现的功能。GitHub Copilot 会根据你的描述生成相应的代码建议。你可以使用注释（例如 `//` 或 `/* */`）来描述需求，这样 Copilot 就会根据注释生成代码。</p>



<h2 class="wp-block-heading">3. 利用代码建议</h2>



<p class="wp-block-paragraph">当你开始输入代码时，GitHub Copilot 会自动提供代码建议。这些建议可能包括函数、变量、类等。要高效地利用这些建议，你可以：</p>



<p class="wp-block-paragraph">&#8211; 在输入时检查建议，如果符合你的需求，就接受它；</p>



<p class="wp-block-paragraph">&#8211; 在需要时手动触发代码建议，例如按 `Ctrl+Space`（或其他编辑器指定的快捷键）；</p>



<p class="wp-block-paragraph">&#8211; 当 Copilot 生成的建议不完全符合需求时，可对其进行修改并尝试重新获取建议。</p>



<h2 class="wp-block-heading">4. 学会与 Copilot 交流</h2>



<p class="wp-block-paragraph">GitHub Copilot 可以理解简单的自然语言，因此在编写代码时，你可以像与人交流一样与它交流。例如，你可以在注释中写下 “创建一个计算两数之和的函数”，Copilot 会生成相应的代码。学会与 Copilot 交流有助于提高编程效率。</p>



<h2 class="wp-block-heading">5. 保持代码整洁</h2>



<p class="wp-block-paragraph">在使用 GitHub Copilot 时，要保持代码整洁，以便更容易地理解生成的代码。尽量使用清晰的命名规范，保持一致的缩进和代码风格。这样，当 Copilot 生成代码时，它也会遵循你的代码风格。</p>



<h2 class="wp-block-heading">6. 仔细审查生成的代码</h2>



<p class="wp-block-paragraph">虽然 GitHub Copilot 通常能生成有效的代码，但它并不总是完美的。在接受 Copilot 的建议之前，务必仔细审查代码，确保其正确性、安全性和性能。如有需要，对生成的代码进行调整以满足项目需求。</p>



<h2 class="wp-block-heading">7. 利用 Copilot 学习新技能</h2>



<p class="wp-block-paragraph">GitHub Copilot 不仅是一个编程助手，还是一个学习新技能的好帮手。你可以尝试让 Copilot 生成你不熟悉的编程语言或库的代码，通过阅读和理解生成的代码来学习新知识。此外，你还可以在注释中询问 Copilot 有关特定函数或方法的用途，它通常会提供有关信息。</p>



<h2 class="wp-block-heading">8. 与团队协作</h2>



<p class="wp-block-paragraph">在团队项目中使用 GitHub Copilot 时，确保与团队成员进行充分沟通。在共享代码库中，将 Copilot 生成的代码与团队成员共享，并征求他们的反馈。这有助于确保生成的代码符合项目需求和团队标准。</p>



<h2 class="wp-block-heading">9. 自定义代码生成</h2>



<p class="wp-block-paragraph">GitHub Copilot 允许你对生成的代码进行自定义。通过修改代码片段和调整参数，你可以让 Copilot 更好地适应你的项目需求。在实践中尝试不同的自定义设置，以找到最适合你的配置。</p>



<h2 class="wp-block-heading">10. 反馈与改进</h2>



<p class="wp-block-paragraph">GitHub Copilot 是一个持续学习和改进的工具。如果你发现生成的代码有问题，或者有优化空间，不要犹豫，向开发团队提供反馈。这有助于 Copilot 变得更加智能，为你提供更好的编程体验。</p>



<p class="wp-block-paragraph">总之，GitHub Copilot 是一款强大的编程助手，可以帮助你提高编程效率。要充分利用它，需要学会与 Copilot 交流，仔细审查生成的代码，并与团队成员协作。通过不断实践和反馈，你将能够更好地掌握如何高效使用 GitHub Copilot。</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">GitHub Copilotを効果的に使うためのヒントを紹介します。</h2>



<p class="wp-block-paragraph">練習とフィードバックを頻繁にする。Copilotとのインタラクションを増やし、前向きなフィードバックと建設的なフィードバックを提供することで、あなたのコーディングスタイルと好みをより理解するのに役立ちます。</p>



<p class="wp-block-paragraph">コメントにコンテキストを追加する。関数やクラスに詳細なコメントを付け加えることで、Copilotにより意図したコードを生成するためのコンテキストを提供できます。</p>



<p class="wp-block-paragraph">ショートカットを上手く使う。Tabキーで提案を受け入れ、Escキーで提案をスキップできます。これによりワークフローを最適化できます。</p>



<p class="wp-block-paragraph">定期的にアップデートする。GitHubは常にCopilotの改善に取り組んでいるので、最新バージョンを使用することで新機能を利用できます。</p>



<p class="wp-block-paragraph">設定を最適化する。提案の頻度、受け入れ言語などの設定を調整して、ユーザーエクスペリエンスを最適化できます。</p>



<p class="wp-block-paragraph">コピーコードをリファクタリングする。Copilotは時には重複コードを生成するので、コードをよりシンプルにリファクタリングすることに注意しましょう。</p>



<p class="wp-block-paragraph">思考の時間を取る。常にCopilotの提案を急いで受け入れるのではなく、自分でコードを考え改善する時間を取ることが大切です。</p>



<p class="wp-block-paragraph">チームと連携する。チームメンバーもCopilotについて知るようにし、使い方を共有してより良いコラボレーションができるようにしましょう。</p>



<p class="wp-block-paragraph">コード補完を上手く利用する。コード補完は開発速度を上げてくれますが、自分でどのタイミングで使うか判断する必要があります。</p>



<p class="wp-block-paragraph">新しい使い方を発見する。GitHub Copilotには多くのクリエイティブな使い方があるので、生産性を上げる新しい使い方を探求し続けましょう。</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Here are some tips for using GitHub Copilot effectively:</h2>



<p class="wp-block-paragraph">Practice and provide feedback frequently. Interact with Copilot more, provide positive and constructive feedback, which can help it better understand your coding style and preferences.</p>



<p class="wp-block-paragraph">Provide more context in comments. Adding detailed comments above functions and classes will give Copilot more information to generate code that better matches expectations.</p>



<p class="wp-block-paragraph">Use shortcuts wisely. Use Tab to accept Copilot&#8217;s suggestions and Esc to skip suggestions. Shortcuts can optimize workflow.</p>



<p class="wp-block-paragraph">Update regularly. GitHub is continuously optimizing Copilot. Updating to the latest version allows you to use Copilot&#8217;s new features.</p>



<p class="wp-block-paragraph">Optimize settings. You can adjust settings like suggestion frequency, accepted languages, etc. to optimize the user experience.</p>



<p class="wp-block-paragraph">Refactor duplicated code. Copilot sometimes generates duplicate code, pay attention to refactoring the code to be more concise.</p>



<p class="wp-block-paragraph">Take time to think. Don&#8217;t always hastily accept Copilot&#8217;s suggestions, take time to think and improve the code yourself.</p>



<p class="wp-block-paragraph">Collaborate with your team. Let team members also understand Copilot for better collaboration. Everyone can share usage experiences.</p>



<p class="wp-block-paragraph">Make good use of code completion. Copilot&#8217;s code completion can speed up development, but you still need to judge when to use it.</p>



<p class="wp-block-paragraph">Discover more use cases. GitHub Copilot has many creative use cases, you can keep exploring new use cases to improve work efficiency.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbform.com/2023/04/12/%e5%a6%82%e4%bd%95%e9%ab%98%e6%95%88%e4%bd%bf%e7%94%a8-github-copilot/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4410</post-id>	</item>
		<item>
		<title>MogDB ASH机制浅析</title>
		<link>https://www.dbform.com/2022/10/24/mogdb-ash%e6%9c%ba%e5%88%b6%e6%b5%85%e6%9e%90/</link>
					<comments>https://www.dbform.com/2022/10/24/mogdb-ash%e6%9c%ba%e5%88%b6%e6%b5%85%e6%9e%90/#respond</comments>
		
		<dc:creator><![CDATA[kamus]]></dc:creator>
		<pubDate>Mon, 24 Oct 2022 09:54:05 +0000</pubDate>
				<category><![CDATA[MogDB]]></category>
		<category><![CDATA[ash]]></category>
		<guid isPermaLink="false">https://www.dbform.com/?p=4386</guid>

					<description><![CDATA[ASH实际上是Oracle数据库中的一个名词，全称是Active Session History，这项功能会在数据库内存和持久化的系统表里都记录下每隔一定周期的活跃会话的信息，内存中的数据重启数据库以后会清空，但是持久化的系统表数据会长期保留。因为ASH的存在，所以当数据库发生故障或者经历性能问题，需要回溯定位问题原因的时候，非常有帮助。

在MogDB中，同样实现了ASH能力。]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">什么是ASH</h2>



<p class="wp-block-paragraph">ASH实际上是Oracle数据库中的一个名词，全称是Active Session History，这项功能会在数据库内存和持久化的系统表里都记录下每隔一定周期的活跃会话的信息，内存中的数据重启数据库以后会清空，但是持久化的系统表数据会长期保留。因为ASH的存在，所以当数据库发生故障或者经历性能问题，需要回溯定位问题原因的时候，非常有帮助。</p>



<p class="wp-block-paragraph">在MogDB中，同样实现了ASH能力。</p>



<h2 class="wp-block-heading">MogDB的ASH能力</h2>



<p class="wp-block-paragraph">分为两部分来阐述。社区开源版本openGauss的能力和MogDB企业版本增强的能力。</p>



<p class="wp-block-paragraph">首先是社区开源版本openGauss本身具备的ASH能力，MogDB是完全继承的。</p>



<p class="wp-block-paragraph">数据库中提供了两个主要视图，分别是<code>dbe_perf.LOCAL_ACTIVE_SESSION</code>和<code>GS_ASP</code>，其中LOCAL_ACTIVE_SESSION是内存中的表，而GS_ASP则是持久化保存的表。在这两个视图中包含了当前活动会话的采样信息。</p>



<p class="wp-block-paragraph">有以下几个主要参数，会对ASH功能产生影响：</p>



<p class="wp-block-paragraph"><a href="https://docs.mogdb.io/zh/mogdb/v3.0/27-system-performance-snapshot#enable_asp"><code>enable_asp</code></a> 设置为on或者off，表示是否开启ASH功能，默认为开启；</p>



<p class="wp-block-paragraph"><a href="https://docs.mogdb.io/zh/mogdb/v3.0/27-system-performance-snapshot#asp_sample_interval"><code>asp_sample_interval</code></a> 指定每次采样的间隔，默认为1s采样一次，如果想减轻采样压力，可以将该参数设置为更长间隔，最长允许设置为10s；</p>



<p class="wp-block-paragraph"><a href="https://docs.mogdb.io/zh/mogdb/v3.0/27-system-performance-snapshot#asp_sample_num"><code>asp_sample_num</code></a> 指定在内存表LOCAL_ACTIVE_SESSION中保留的样本总数，超过该数，将会触发将内存中的样本刷盘记录到GS_ASP系统表中的行为，默认为10万条。当发生刷盘行为后，LOCAL_ACTIVE_SESSION中的所有记录会被清空，重新开始采样；</p>



<p class="wp-block-paragraph"><a href="https://docs.mogdb.io/zh/mogdb/v3.0/27-system-performance-snapshot#asp_flush_rate"><code>asp_flush_rate</code></a> 指定哪些内存中的样本数据会被刷盘记录到GS_ASP表中，判断时会计算LOCAL_ACTIVE_SESSION中记录的sampleid字段值，其中 sampleid%asp_flush_rate == 0的记录会被标志为need_flush_sample=true，这些记录都会被持久化保存（在内核函数Asp::SubAspWorker中定义）。可以简单地理解为，该参数默认值为10，也就是1/10的样本会被持久化保存；</p>



<p class="wp-block-paragraph"><a href="https://docs.mogdb.io/zh/mogdb/v3.0/27-system-performance-snapshot#asp_retention_days"><code>asp_retention_days</code></a> 指定在GS_ASP中保留的数据的时限，默认为2天，最多7天。</p>



<p class="wp-block-paragraph">其次是MogDB企业版增强的ASH能力，称为“SQL运行状态观测”，主要是通过在采样数据中增加SQL执行算子的采样来完成的。</p>



<p class="wp-block-paragraph">MogDB在上述视图中增加了plan_node_id字段来记录每次采样时，SQL正在执行的算子情况，将该算子与其它性能视图中记录的SQL执行计划来关联，即可知道对于出现性能问题的SQL具体是慢在了执行计划的哪个步骤上。具体介绍可以参看文档：<a href="https://docs.mogdb.io/zh/mogdb/v3.0/22-sql-running-status-observation#sql%E8%BF%90%E8%A1%8C%E7%8A%B6%E6%80%81%E8%A7%82%E6%B5%8B">SQL运行状态观测</a>。</p>



<p class="wp-block-paragraph">以下参数，会对企业版ASH功能产生影响：</p>



<p class="wp-block-paragraph"><a href="https://docs.mogdb.io/zh/mogdb/v3.0/13-load-management#resource_track_level"><code>resource_track_level</code></a> 参数指定为operator，则会开启算子采样能力，默认值是query，只会记录SQL级别采样。</p>



<h2 class="wp-block-heading">LOCAL_ACTIVE_SESSION视图</h2>



<p class="wp-block-paragraph">该视图中已经记录了大量信息，包括用户关心的会话ID，等待事件，SQL query id （该值可以跟dbe_perf.statement_history表或者dbe_perf.statement_complex_runtime表进行关联，获取SQL的文本和执行计划）。</p>



<figure class="wp-block-image"><img decoding="async" src="https://s2.loli.net/2022/10/24/UZR4wcX8lyeDHS7.png" alt="image-20221024155531233"/></figure>



<p class="wp-block-paragraph">以上字段列表中，plan_node_id只有在MogDB企业版数据库中才存在，openGauss社区开源版本不存在该字段。</p>



<h2 class="wp-block-heading">关于SQL执行计划的记录</h2>



<p class="wp-block-paragraph">查询已经运行过的，或者正在执行的SQL的执行计划，是数据库运维工作中经常会遇到的需求。在MogDB中，以下视图中记录了SQL的执行计划。</p>



<p class="wp-block-paragraph"><code>dbe_perf.STATEMENT_HISTORY</code> 该视图中记录了已经运行结束的SQL的各种信息，同时包含了执行计划（query_plan字段）。</p>



<p class="wp-block-paragraph"><code>dbe_perf.STATEMENT_COMPLEX_RUNTIME</code> 该视图中记录了正在运行的SQL的各种信息，同时包含了执行计划（query_plan字段）。</p>



<p class="wp-block-paragraph">但是要注意，记录SQL的执行计划，受到以下参数影响。</p>



<p class="wp-block-paragraph"><code>enable_resource_track</code> 该参数设置是否对资源进行监控，默认为on，如果设置为off，则不仅仅是执行计划，而是所有用户SQL的执行信息都不再追踪。包括在ASH视图LOCAL_ACTIVE_SESSION中也不再记录用户会话采样。</p>



<p class="wp-block-paragraph"><code>resource_track_cost</code> 该参数设置对于SQL语句进行资源监控的最小执行代价，只有高于该参数值的成本的SQL才会记录执行计划。</p>



<h2 class="wp-block-heading">一个综合各种视图的查询语句</h2>



<p class="wp-block-paragraph">我们可以使用以下语句来获取正在执行的SQL的包括历史采样的所有信息。</p>



<pre class="wp-block-preformatted">select<br>    las.sample_time,<br>    las.application_name,<br>    las.unique_query_id,<br>    las.event,<br>    scr.query ,<br>    scr.query_plan<br>from<br>    dbe_perf.local_active_session las,<br>    dbe_perf.statement_complex_runtime scr<br>where<br>    las.thread_id = scr.pid<br>    and scr.pid &lt;&gt; pg_backend_pid();</pre>



<p class="wp-block-paragraph">该SQL执行的结果示例如下。这个例子中有一个全表扫描的语句频繁执行，在多次采样中被记录下来，包含了SQL文本，执行计划，发起查询的客户端信息等，均可以查询到。这些信息将对性能诊断提供极大帮助。</p>



<figure class="wp-block-image"><img decoding="async" src="https://s2.loli.net/2022/10/24/MxBW7629sCSaGKp.png" alt="image-20221024183300024"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbform.com/2022/10/24/mogdb-ash%e6%9c%ba%e5%88%b6%e6%b5%85%e6%9e%90/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4386</post-id>	</item>
		<item>
		<title>Using MTK to migrate Oracle sample schema to MogDB</title>
		<link>https://www.dbform.com/2022/09/25/using-mtk-to-migrate-oracle-sample-schema-to-mogdb/</link>
					<comments>https://www.dbform.com/2022/09/25/using-mtk-to-migrate-oracle-sample-schema-to-mogdb/#respond</comments>
		
		<dc:creator><![CDATA[kamus]]></dc:creator>
		<pubDate>Sat, 24 Sep 2022 17:43:51 +0000</pubDate>
				<category><![CDATA[MogDB]]></category>
		<guid isPermaLink="false">https://www.dbform.com/?p=4378</guid>

					<description><![CDATA[Get the latest version MTK wget https://cdn-mogdb.enmotech.com/mtk/v2.6.3/mtk_2.6.3_linux_amd64.tar.gztar -xvf mtk_2.6.3_linux_amd64.tar.gz Generate MTK trial license online The trial license lasts for 1 month, every mail address can only gernerate one license, except the mail address domain is &#8220;enmotech.com&#8221;, using &#8220;enmotech.com&#8221; mail can repeatly genarate license. So if the clients want to try MTK more after 1 month, &#8230; <a href="https://www.dbform.com/2022/09/25/using-mtk-to-migrate-oracle-sample-schema-to-mogdb/" class="more-link">Continue reading <span class="screen-reader-text">Using MTK to migrate Oracle sample schema to MogDB</span></a>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Get the latest version MTK</h2>



<pre class="wp-block-preformatted">wget https://cdn-mogdb.enmotech.com/mtk/v2.6.3/mtk_2.6.3_linux_amd64.tar.gz<br>tar -xvf mtk_2.6.3_linux_amd64.tar.gz</pre>



<h2 class="wp-block-heading">Generate MTK trial license online</h2>



<p class="wp-block-paragraph">The trial license lasts for 1 month, every mail address can only gernerate one license, except the mail address domain is &#8220;enmotech.com&#8221;, using &#8220;enmotech.com&#8221; mail can repeatly genarate license. So if the clients want to try MTK more after 1 month, should contact the sales or pre-sales from Enmotech, to ask for another 1 month license.</p>



<pre class="wp-block-preformatted">[kamus@altlinux10 mtk_2.6.3_linux_amd64]$ ./mtk license gen<br>License File Not Found (default license.json)<br>The License code is invalid, start applying<br>✔ Email: kamus@enmotech.com█<br>Start applying for email kamus@enmotech.com authorization.<br>Start parsing the interface to return data.<br>Successful application for authorization. Please check the mail and save it as license.json.</pre>



<p class="wp-block-paragraph">When get the mail, upload the attached license.json file to the MTK directory. Use <code>mtk -v</code> to check the license validation.</p>



<pre class="wp-block-preformatted">[kamus@altlinux10 mtk_2.6.3_linux_amd64]$ ./mtk -v<br>Using license file: /home/kamus/mogdb-tools/mtk_2.6.3_linux_amd64/license.json<br>Name: kamus@enmotech.com<br>Expiry: 2022-10-24 12:08:58.751194162 +0800 +0800<br>License key verified!<br>License checks OK!<br>​<br>MMMMMMMM &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MMMMMMMMTTTTTTTTTTTTTTTTTTTTTTTKKKKKKKKK &nbsp;  KKKKKKK<br>M:::::::M &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; M:::::::MT:::::::::::::::::::::TK:::::::K &nbsp;  K:::::K<br>M::::::::M &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; M::::::::MT:::::::::::::::::::::TK:::::::K &nbsp;  K:::::K<br>M:::::::::M &nbsp; &nbsp; &nbsp; &nbsp; M:::::::::MT:::::TT:::::::TT:::::TK:::::::K &nbsp; K::::::K<br>M::::::::::M &nbsp; &nbsp; &nbsp; M::::::::::MTTTTTT  T:::::T  TTTTTTKK::::::K  K:::::KKK<br>M:::::::::::M &nbsp; &nbsp; M:::::::::::M &nbsp; &nbsp; &nbsp;  T:::::T &nbsp; &nbsp; &nbsp; &nbsp;  K:::::K K:::::K<br>M:::::::M::::M &nbsp; M::::M:::::::M &nbsp; &nbsp; &nbsp;  T:::::T &nbsp; &nbsp; &nbsp; &nbsp;  K::::::K:::::K<br>M::::::M M::::M M::::M M::::::M &nbsp; &nbsp; &nbsp;  T:::::T &nbsp; &nbsp; &nbsp; &nbsp;  K:::::::::::K<br>M::::::M  M::::M::::M  M::::::M &nbsp; &nbsp; &nbsp;  T:::::T &nbsp; &nbsp; &nbsp; &nbsp;  K:::::::::::K<br>M::::::M &nbsp; M:::::::M &nbsp; M::::::M &nbsp; &nbsp; &nbsp;  T:::::T &nbsp; &nbsp; &nbsp; &nbsp;  K::::::K:::::K<br>M::::::M &nbsp;  M:::::M &nbsp;  M::::::M &nbsp; &nbsp; &nbsp;  T:::::T &nbsp; &nbsp; &nbsp; &nbsp;  K:::::K K:::::K<br>M::::::M &nbsp; &nbsp; MMMMM &nbsp; &nbsp; M::::::M &nbsp; &nbsp; &nbsp;  T:::::T &nbsp; &nbsp; &nbsp;  KK::::::K  K:::::KKK<br>M::::::M &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; M::::::M &nbsp; &nbsp;  TT:::::::TT &nbsp; &nbsp;  K:::::::K &nbsp; K::::::K<br>M::::::M &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; M::::::M &nbsp; &nbsp;  T:::::::::T &nbsp; &nbsp;  K:::::::K &nbsp;  K:::::K<br>M::::::M &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; M::::::M &nbsp; &nbsp;  T:::::::::T &nbsp; &nbsp;  K:::::::K &nbsp;  K:::::K<br>MMMMMMMM &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MMMMMMMM &nbsp; &nbsp;  TTTTTTTTTTT &nbsp; &nbsp;  KKKKKKKKK &nbsp;  KKKKKKK<br>​<br>Release version: v2.6.3<br>Git Commit hash: da0ed8ee<br>Git Commit Date: 2022-09-22T01:17:49Z<br>Git Tag &nbsp; &nbsp; &nbsp;  : v2.6.3<br>Build timestamp: 20220922011907</pre>



<h2 class="wp-block-heading">Install Oracle instant client</h2>



<p class="wp-block-paragraph">MTK needs <a href="https://www.oracle.com/database/technologies/instant-client/downloads.html">Oracle instant client</a> to migrate Oracle objects to MogDB, in this tutorial, we will download <a href="https://download.oracle.com/otn_software/linux/instantclient/217000/instantclient-basic-linux.x64-21.7.0.0.0dbru.zip">Oracle Instant Client for Linux x86-64 Basic Package</a>. Unzip the downloaded file, set the proper <code>LD_LIBRARY_PATH</code> parameter.</p>



<pre class="wp-block-preformatted">export LD_LIBRARY_PATH=/home/kamus/instantclient_21_7:$LD_LIBRARY_PATH</pre>



<p class="wp-block-paragraph">We will migrate a sample schema &#8220;customer_orders&#8221; to MogDB in this tutorial. the <a href="https://github.com/oracle-samples/db-sample-schemas">db-sample-schemas</a> scipts for Oracle can be downloaded from github.</p>



<figure class="wp-block-image"><img decoding="async" src="https://s2.loli.net/2022/09/24/mKnfuY28shRNI9X.png" alt="image-20220924140451621"/></figure>



<h2 class="wp-block-heading">Initialize migration project</h2>



<pre class="wp-block-preformatted">./mtk init-project -s oracle -t mogdb -n ora2mogdb</pre>



<h2 class="wp-block-heading">Modify MTK configuration file</h2>



<p class="wp-block-paragraph">Modify the example MTK confiuration file stored in project_name_dir/config directory, check <a href="https://docs.mogdb.io/en/mtk/v2.0/mtk-parameter">MTK documentation</a> for the details of every parameter. The essenssial config sections for MTK is <code>source</code>, <code>target</code>, <code>object</code> .</p>



<p class="wp-block-paragraph"><code>source</code> section: is the connection defination for source database, MTK needs to query Oracle database dictionary to get DDL, so typically we should use DBA user, the default system user will be OK.</p>



<p class="wp-block-paragraph"><code>target</code> section: is the connection defination for target database.</p>



<p class="wp-block-paragraph"><code>object</code> section: for migrating all the objects in one schema, we just need to put schema name in <code>schemas</code> section.</p>



<p class="wp-block-paragraph">The mtk.json config file will looks like:</p>



<pre class="wp-block-preformatted">{<br> &nbsp;  "source": {<br> &nbsp; &nbsp;  "type": "oracle",<br> &nbsp; &nbsp;  "connect": {<br> &nbsp; &nbsp; &nbsp;  "version": "",<br> &nbsp; &nbsp; &nbsp;  "host": "119.3.182.31",<br> &nbsp; &nbsp; &nbsp;  "user": "system",<br> &nbsp; &nbsp; &nbsp;  "port": 15221,<br> &nbsp; &nbsp; &nbsp;  "password": "oracle",<br> &nbsp; &nbsp; &nbsp;  "dbName": "ORACLE21C",<br> &nbsp; &nbsp; &nbsp;  "charset": "",<br> &nbsp; &nbsp; &nbsp;  "clientCharset": ""<br> &nbsp; &nbsp;  }<br> &nbsp;  },<br> &nbsp;  "target": {<br> &nbsp; &nbsp;  "type": "mogdb",<br> &nbsp; &nbsp;  "connect": {<br> &nbsp; &nbsp; &nbsp;  "version": "",<br> &nbsp; &nbsp; &nbsp;  "host": "127.0.0.1",<br> &nbsp; &nbsp; &nbsp;  "user": "co",<br> &nbsp; &nbsp; &nbsp;  "port": 26000,<br> &nbsp; &nbsp; &nbsp;  "password": "Enmo@123",<br> &nbsp; &nbsp; &nbsp;  "dbName": "postgres",<br> &nbsp; &nbsp; &nbsp;  "charset": "",<br> &nbsp; &nbsp; &nbsp;  "clientCharset": ""<br> &nbsp; &nbsp;  }<br> &nbsp;  },<br> &nbsp;  "object": {<br> &nbsp; &nbsp;  "tables": [],<br> &nbsp; &nbsp;  "schemas": ["co"],<br> &nbsp; &nbsp;  "excludeTable": {<br> &nbsp; &nbsp;  },<br> &nbsp; &nbsp;  "tableSplit": {<br> &nbsp; &nbsp;  }<br> &nbsp;  },<br> &nbsp;  "dataOnly": false,<br> &nbsp;  "schemaOnly": false<br>}</pre>



<p class="wp-block-paragraph">We are planning to migrate all the objects in &#8220;CO&#8221; schema from Oracle database to the same user in MogDB, for testing purpose, we will not create a new database in MogDB, we create a new user &#8220;co&#8221; in default database postgres.</p>



<pre class="wp-block-preformatted">[omm@altlinux10 ~]$ gsql -d postgres -p 26000 -r<br>gsql ((MogDB 3.0.2 build 9bc79be5) compiled at 2022-09-18 00:37:49 commit 0 last mr  )<br>Non-SSL connection (SSL connection is recommended when requiring high-security)<br>Type "help" for help.<br>​<br>MogDB=# create user co identified by "Enmo@123";<br>CREATE ROLE</pre>



<h2 class="wp-block-heading">Start migration</h2>



<p class="wp-block-paragraph">Now, we can start migration.</p>



<pre class="wp-block-preformatted">./mtk -c ora2mogdb/config/mtk.json</pre>



<h2 class="wp-block-heading">Check migration report</h2>



<p class="wp-block-paragraph">Migration result report will be generated in project report directory, both in pure text format and HTML format, till now the HTML report is in Chinese, so I put the text format result into this tutorial.</p>



<pre class="wp-block-preformatted">-----------------------<br>ObjectName Type Summary<br>-----------------------<br><br>+------------------+-------------------+-------------------+--------+-----------+-------------+-------------+-------------+--------------------|-------------+<br>|       Type       |     StartTime     |      EndTime      | Status | Total Num | Success Num | Warring Num | Failed  Num |Failed(Invalid) Num | Time        |<br>+------------------+-------------------+-------------------+--------+-----------+-------------+-------------+-------------+--------------------|-------------+<br>|Schema            |2022-09-24 15:12:36|2022-09-24 15:12:36|finish  |1          |1            |0            |0            |0                   |282 ms       ｜<br>|Sequence          |2022-09-24 15:12:36|2022-09-24 15:12:36|finish  |0          |0            |0            |0            |0                   |210 ms       ｜<br>|ObjectType        |2022-09-24 15:12:36|2022-09-24 15:12:36|finish  |0          |0            |0            |0            |0                   |356 ms       ｜<br>|Queue             |2022-09-24 15:12:36|2022-09-24 15:12:37|finish  |0          |0            |0            |0            |0                   |177 ms       ｜<br>|Table             |2022-09-24 15:12:37|2022-09-24 15:12:47|finish  |7          |7            |0            |0            |0                   |9 s 952 ms   ｜<br>|TableData         |2022-09-24 15:12:47|2022-09-24 15:12:53|finish  |7          |7            |0            |0            |0                   |6 s 743 ms   ｜<br>|Index             |2022-09-24 15:12:53|2022-09-24 15:12:53|finish  |7          |7            |0            |0            |0                   |1 ms         ｜<br>|Constraint        |2022-09-24 15:12:53|2022-09-24 15:12:53|finish  |24         |23           |0            |1            |0                   |51 ms        ｜<br>|DBLink            |2022-09-24 15:12:53|2022-09-24 15:12:53|finish  |0          |0            |0            |0            |0                   |67 ms        ｜<br>|View              |2022-09-24 15:12:53|2022-09-24 15:12:54|finish  |4          |2            |0            |2            |0                   |723 ms       ｜<br>|MaterializedView  |2022-09-24 15:12:54|2022-09-24 15:12:54|finish  |0          |0            |0            |0            |0                   |138 ms       ｜<br>|Function          |2022-09-24 15:12:54|2022-09-24 15:12:54|finish  |0          |0            |0            |0            |0                   |113 ms       ｜<br>|Procedure         |2022-09-24 15:12:54|2022-09-24 15:12:55|finish  |0          |0            |0            |0            |0                   |109 ms       ｜<br>|Package           |2022-09-24 15:12:55|2022-09-24 15:12:55|finish  |0          |0            |0            |0            |0                   |77 ms        ｜<br>|Trigger           |2022-09-24 15:12:55|2022-09-24 15:12:55|finish  |0          |0            |0            |0            |0                   |404 ms       ｜<br>|Synonym           |2022-09-24 15:12:55|2022-09-24 15:12:55|finish  |0          |0            |0            |0            |0                   |74 ms        ｜<br>|TableDataCom      |2022-09-24 15:12:55|2022-09-24 15:12:56|finish  |7          |7            |0            |0            |0                   |810 ms       ｜<br>|AlterSequence     |2022-09-24 15:12:56|2022-09-24 15:12:56|finish  |0          |0            |0            |0            |0                   |71 ms        ｜<br>|CollStatistics    |2022-09-24 15:12:56|2022-09-24 15:12:56|finish  |7          |7            |0            |0            |0                   |29 ms        ｜<br>+------------------+-------------------+-------------------+--------+-----------+-------------+-------------+-------------+--------------------|-------------+</pre>



<p class="wp-block-paragraph">We can see all the tables and table data are successfully migrated to MogDB without any error, but for constraint, there is 1 failed, and for view, there are 2 failed.</p>



<p class="wp-block-paragraph">The failed constraint is a JSON check constraint. MogDB dosn&#8217;t has this type of constraint.</p>



<figure class="wp-block-image"><img decoding="async" src="https://s2.loli.net/2022/09/24/RDKmsNFvroWTPgZ.png" alt="image-20220924153609138"/></figure>



<p class="wp-block-paragraph">The failed views are about grouping_id function and json_table function which MogDB not implemented yet.</p>



<figure class="wp-block-image"><img decoding="async" src="https://s2.loli.net/2022/09/24/4BMfnQ6alrqhvd8.png" alt="image-20220924154621375"/></figure>



<h2 class="wp-block-heading">Run the sample queries</h2>



<pre class="wp-block-preformatted">/* 5 products with the highest revenue<br>   With their corresponding order rank */<br>select p.product_name, <br>       count(*) number_of_orders,<br>       sum ( oi.quantity * oi.unit_price ) total_value,<br>       rank () over ( <br>         order by count(*) desc <br>       ) order_count_rank<br>from   products p<br>join   order_items oi<br>on     p.product_id = oi.product_id<br>group  by p.product_name<br>order  by sum ( oi.quantity * oi.unit_price ) desc<br>fetch  first 5 rows only;</pre>



<pre class="wp-block-preformatted">MogDB=&gt; select p.product_name,<br>MogDB-&gt;        count(*) number_of_orders,<br>MogDB-&gt;        sum ( oi.quantity * oi.unit_price ) total_value,<br>MogDB-&gt;        rank () over (<br>MogDB(&gt;          order by sum ( oi.quantity * oi.unit_price ) desc<br>MogDB(&gt;        ) revenue_rank<br>MogDB-&gt; from   products p<br>MogDB-&gt; join   order_items oi<br>MogDB-&gt; on     p.product_id = oi.product_id<br>MogDB-&gt; group  by p.product_name<br>MogDB-&gt; order  by count(*) desc<br>MogDB-&gt; fetch  first 5 rows only;<br>     product_name      | number_of_orders | total_value | revenue_rank<br>-----------------------+------------------+-------------+--------------<br> Girl's Trousers (Red) |              148 |    15794.76 |            1<br> Boy's Hoodie (Grey)   |              100 |     3754.08 |           35<br> Men's Pyjamas (Blue)  |              100 |     3274.61 |           36<br> Men's Coat (Red)      |               98 |     4230.30 |           31<br> Boy's Socks (White)   |               98 |     3081.12 |           38<br>(5 rows)</pre>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Migrating tables/table data/indexes from Oracle to MogDB normally has no issue, but for views/procedures/functions/packages, we still have to made some modification to the source code.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbform.com/2022/09/25/using-mtk-to-migrate-oracle-sample-schema-to-mogdb/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4378</post-id>	</item>
	</channel>
</rss>
