track: 新增 OpenClaw / QwenPaw / Tutti,样本达到 7 个

新增项目档案(五维 + claim_vs_reality):
- openclaw.yaml  388k★,GitHub 星标最多的仓库;个人助理赛道
- qwenpaw.yaml   34.7k★,OpenClaw 正面竞品;安全默认值最完整
- tutti.yaml     3.6k★,唯一做「多人 × 多 Agent」协作;技术维度基于本地源码实测

两处对既有结论的修正:
- OpenClaw 许可证自动定级为 L3/private 系误判。SPDX=NOASSERTION 是因为
  LICENSE 末尾多了一段第三方声明指引,原文主体是完整 MIT → 改判 L1/public。
  这是本系列第二个「SPDX 不可信」判例(第一个是 OpenWork 的 ee/ 目录切分许可)。
- OpenWork 巴士系数去重仅 3 人,与上一轮「工程治理最好」并不矛盾:
  流程规范与人员分散是两个独立维度,已在文章中区分。

脚本:
- build_matrix.py 象限图新增重合点沿小圆散开(SPREAD=11)+ 钳制 + 脚注。
  样本到 7 个时首次出现两组完全重合坐标,后画的点会整个盖住先画的,
  读者会以为少收录了一个项目——这种静默丢信息比图难看严重得多。
- build_matrix.py 跨项目文章索引改为按 emlog_id 升序(= 阅读顺序)。
  原先靠文件名 sorted() 排是碰运气:'-'(0x2D) < '.'(0x2E) 只是巧合。

发布:横评文第二弹 id=100,总纲 id=98 已更新。
This commit is contained in:
gitea-publish
2026-09-01 20:13:55 +08:00
parent 5b6e695a9d
commit ed1da08f42
11 changed files with 1286 additions and 11 deletions
+249
View File
@@ -0,0 +1,249 @@
# openclaw · 项目档案
# 生成于 2026-09-01 · 由 scripts/new_project.py 从 schema 生成
# 人工补完重点:business / scenario / tech / risk.claim_vs_reality / verdict
# 字段规范见 schema/project.schema.yaml
id: openclaw
name: "OpenClaw"
repo: "openclaw/openclaw"
homepage: "https://openclaw.ai"
added_at: "2026-09-01"
status: active
identity:
tagline: "Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞"
vendor: "OpenClaw Foundation(非营利基金会)"
vendor_type: "foundation"
region: "奥地利(创始人 Peter Steinberger)/ 基金会独立运营"
first_seen: "2025-11-24"
name_history: # 三个月两次改名,检索历史资料时容易漏
- "Clawdbot(2025-11 创始)"
- "Moltbot"
- "OpenClaw(2026-01-30 定名)"
business:
positioning: |-
站在「个人助理执行层」,而且是**唯一一个不面向开发者的样本**。
它不接入别的 agent,自己就是 agent;不产出代码交付物,产出的是"事儿办完了"——
邮件发了、日程改了、值机办了。入口是用户已经在用的聊天软件,不是 IDE 也不是桌面工作台。
这一条把它和本体系其余 6 个样本彻底分开:**它们的用户是开发者,OpenClaw 的用户是普通人。**
target_users:
- 想让 AI 接管日常事务(收件箱、日历、出行)的非技术用户
- 重度聊天软件用户(WhatsApp / Telegram / iMessage / Signal)
- 想在自己机器上跑私人助理、拒绝 SaaS 托管的数据敏感用户
monetization: |-
免费开源 + 赞助(README 有 Sponsors 段)。创始人 2026-02 加入 OpenAI 后,
OpenAI 承诺在保持 MIT 的前提下继续赞助,项目转由独立基金会运营。
这是四个样本里唯一"没有商业变现路径"的——目前看不到收费层。
# ⚠️ 自动定级把本项目判为 L3/private,**人工复核后推翻**。
# SPDX=NOASSERTION 的原因:LICENSE 末尾多了一段
# "Third-party notices for incorporated or adapted code are recorded in
# THIRD_PARTY_NOTICES.md."
# GitHub 的 licensee 检测器见到正文之外的附加段落就判定为 NOASSERTION。
# 但原文主体是完整无改动的 MIT(Copyright 2026 OpenClaw Foundation),
# 附加段落只是指向第三方声明文件,不构成许可条款变更 → 实为 L1 / MIT / 可自由再分发。
# 这是继 OpenWork 之后第二个「SPDX 不可信,必须读原文」的判例。
license:
spdx: "NOASSERTION"
name: "MIT(SPDX 误判,人工复核确认)"
openness: L1
redistributable: true
manual_review: true
manual_review_reason: "SPDX=NOASSERTION 系检测器误判;LICENSE 原文为完整 MIT,仅末尾附带第三方声明指引"
key_restrictions:
- 无实质性使用限制
- MIT 不含商标许可,OpenClaw 名称与龙虾 Logo 未单独授权
- ⚠️ 自动化合规扫描工具(如 licensee、FOSSology)会把它识别为 NOASSERTION 并告警,
需要人工出具复核说明才能过企业的开源合规流程
moat: |-
聊天渠道覆盖面(WhatsApp / Telegram / Slack / Discord / Google Chat / Signal / iMessage
等 8+ 通道)+ 3001 名累计贡献者的插件生态 + ClawHub 市场 + 跨端伴侣 App(macOS / Windows /
iOS / Android 节点)。**网络效应在"渠道"和"插件"两侧同时成立**,这是它真正的壁垒。
competitive_risk: |-
创始人已在 OpenAI,OpenAI 随时可能推出官方同类产品直接覆盖。
更现实的风险是:**它的价值建立在"替用户操作真实账号"之上,而这个能力任何一家
操作系统厂商(Apple Intelligence / 微软 Copilot)都能在系统层直接拿走。**
scenario:
primary:
- 在 WhatsApp / Telegram 里一句话让助理处理收件箱、改日程、办登机
- 用手机语音或照片触发本机的助理执行任务( companion app 提供语音 / 摄像头 / 屏幕 / Canvas)
- 把助理常驻在家里的机器上,通过聊天软件远程使唤
- 2.0 起:把一条会话授权给同事,多人带着完整上下文接力
typical_use_cases:
- 发一张后院蛇的照片给助理,它识别物种、给出当地动物救助电话、建议怎么抓
- 让助理每天早上把行业资讯摘要推到 Telegram
- 2.0 起:在 Mac 上开始一件事,交给云端 worker 继续跑完
industries:
- 个人事务 / 生活助理
- 小团队共享助理(2.0 新增)
interaction_mode:
- 聊天软件频道(主要入口)
- 本地守护进程 Gateway(控制面)
- Web Control UI / CLI / TUI
- 桌面与移动端伴侣 App(macOS / Windows / iOS / Android)
human_in_the_loop: |-
配对审批:支持 DM 的频道**默认会配对未知发送者**,需人工 `openclaw pairing approve` 确认。
2.0 新增私密凭据请求(遮罩输入,敏感信息不进聊天记录与模型上下文)与插件安装前能力展示。
deliverables:
- 事务结果(邮件 / 日程 / 预订 / 消息)——不是文件型交付物
- 文件与本地系统操作
- Canvas / 语音 / 图像(伴侣 App 侧)
tech:
form_factor: |-
本地守护进程(Gateway)为控制面 + 多渠道接入。注意它**没有 IDE 形态**,
也不是传统意义的桌面工作台——Control UI 只是 Gateway 的一个 Web 前端。
stack:
- TypeScript 91%
- Swift 4.6%(macOS / iOS 原生)
- Kotlin 1.8%(Android 原生)
- JavaScript / Shell / CSS 各约 1%
engine_abstraction:
supported: [] # 不接入外部 agent 引擎
mechanism: |-
**本字段对 OpenClaw 不适用,这是它区别于其余 6 个样本的根本点。**
它不代理任何第三方 agent —— 它自己就是 agent,跑自己的执行循环。
可扩展性走的是 tools / skills / plugins 三条路(ClawHub 市场),不是"接别人的引擎"。
abstraction_layer: "无(自身即引擎)"
depth_notes: |-
把 OpenClaw 和"多引擎中立"放在一起比较会得出误导性结论。
横向对比时应把它的引擎立场标记为「自身即引擎」而非「绑定单引擎」,
两者在用户侧的风险完全不同:绑定单引擎是"换不了",自身即引擎是"不用换"。
extension_system:
skills: "Skills 系统 + ClawHub 市场(clawhub.ai)"
plugins: "第三方插件机制;2.0 起安装前展示能力、来源、版本;来自可执行来源的插件需强制参数确认"
mcp: "通过 tools / plugins 体系扩展(README 未强调 MCP,与其余样本的依赖程度不同)"
model_binding: |-
不绑定:支持 hosted 与 local model providers。2.0 默认 GPT-5.6,
本地模型方面把 node-llama-cpp 换成托管 llama-server,默认上下文提到 64K。
local_first: true
multi_agent: |-
2.0 新增共享云端会话:一个会话可授权给多名成员,完整上下文保留、可接力与实时协作;
会话能在本地设备、配对机器、云端 worker 之间迁移。底层存储从文件系统迁到 SQLite。
permission_sandbox: |-
⚠️ **默认无沙箱**。README Security 章节原文:
"Tools run on the host for the main session unless you configure sandboxing."
即不显式配置则工具直接跑在宿主机上。官方另建议:不要暴露 Gateway 到开放互联网、
维持强认证。2.0 补齐了信任边界、最小权限、基于角色的权限分配与提示词滥用防护。
observability: |-
Gateway 提供事件流;Control UI 可实时观看正在执行的任务、查看组件仪表盘。
2.0 新增会话精确搜索(可按词句回跳到上下文消息)。
ecosystem:
metrics:
stars: 388438
forks: 81543
open_issues: 5925
subscribers: 1754
created_at: 2025-11-24
pushed_at: 2026-09-01
size_kb: 3354345
languages: {TypeScript: 91.0, Swift: 4.6, Kotlin: 1.8, JavaScript: 1.0, Shell: 0.6, CSS: 0.4}
latest_release: v2026.8.1
release_cadence: 约 4 天/版本
data_date: 2026-09-01
stale: false
community: |-
GitHub 上星标最多的软件仓库(388k),累计 3001 名贡献者,README 的致谢段
有 649 个头像。2.0 由 933 名贡献者完成(其中 569 名首次参与)。
但贡献高度集中:最近 100 次提交中创始人 steipete 独占 64%,去重仅 27 人。
standards: []
notable_events:
- "2025-11:Peter Steinberger 创建,初名 Clawdbot"
- "2026-01-30:更名 OpenClaw"
- "2026-01:曝出 CVE-2026-25253 远程代码执行漏洞(CVSS 8.8,访问恶意页面即可窃取认证令牌、禁用沙箱、宿主机执行任意代码)"
- "2026-02:创始人加入 OpenAI,项目转由独立非营利基金会运营,OpenAI 承诺保持 MIT 并继续赞助"
- "2026-08-31:2.0 发布(v2026.8.1),重构安装、会话、记忆、权限、密钥、云端执行与团队协作"
risk:
license_risk: |-
法律上无风险(纯 MIT)。**工程上有风险**:SPDX 与主流合规扫描工具会识别为
NOASSERTION,企业引入时会被自动拦下,需要人工出复核说明。
这个"机器读不懂"的成本,比许可证本身的限制更影响落地。
vendor_lockin: |-
许可证层面零锁定(MIT + 本地运行)。真正的锁定在**账号与渠道**:
它替你操作的是真实邮箱、日历、聊天账号,迁移成本不在代码而在配置与凭据。
claim_vs_reality:
- claim: "停更 7 周(多家媒体转述,指 7 月中旬 v2026.7.1 之后断更)"
actual: |-
失真。查 release 时间轴:7-18 → 7-28 → 8-01 → 8-02 → 8-04 → 8-08 → 8-15 →
8-24 → 8-28 → 8-31 一直在发。**停的是稳定版,beta 从未停。**
但真实问题比"停更"更值得警惕:版本号体系已经乱到无法从版本号判断新旧——
8-28 发的 v2026.9.1-beta.1 早于 8-31 的正式版 v2026.8.1;
而 v2026.6.33 / v2026.6.34(8-08)又晚于 v2026.7.1-1 / -2(8-04)。
多线并行导致版本号与实际时间顺序倒挂。
source: "GitHub releases API(2026-09-01 取最近 12 个 release 的 published_at)"
- claim: "3001 名贡献者 / 933 人共建 2.0(项目方与媒体反复引用)"
actual: |-
数字属实,但不能推导出"去中心化"。抽样最近 100 次提交:创始人 steipete
独占 64 次(64%),第二名 vincentkoc 仅 4 次,去重作者 27 人。
**巴士系数接近 1** —— 贡献者基数和实际决策集中度是两回事。
source: "GitHub commits API(2026-09-01 取 main 分支最近 100 次提交的 author.login 分布)"
- claim: "PR 已经泛化成 Prompt Requests,AI 批量灌水(多家媒体报道)"
actual: |-
我抽样最新 60 条 open PR,**不支持**这个说法:标题全部是规范的
conventional commits(fix(memory-core)、refactor(sessions)、perf(media)),
去重 22 位作者,未见灌水特征。
但另一组数字确实异常:60 条**全部创建于 2026-09-01 同一天**,
说明日 PR 量超过 60 条——流量压力真实存在,只是"质量崩坏"缺乏证据。
媒体报道的"必须附对话记录/截图/测试证据才能过审"是维护方的应对动作,
从这批样本看,它似乎有效。
source: "GitHub pulls API(state=open, sort=created, direction=desc, per_page=60)"
- claim: "跑在你自己的设备上、own your data"
actual: |-
前半句属实(Gateway 是本地控制面,支持本地模型)。
但**安全默认值偏松**:README 原文承认工具默认跑在宿主机上、除非你配置沙箱;
支持 DM 的频道默认配对未知发送者(需人工 approve)。
历史上出过 CVE-2026-25253(CVSS 8.8):访问一个恶意页面即可窃取令牌、
禁用沙箱、在宿主机执行任意代码。"本地运行"不等于"默认安全"。
source: "README Security 章节原文;CVE-2026-25253(媒体报道,CVSS 8.8)"
- claim: "MIT 开源"
actual: |-
属实,但**机器读不出来**。GitHub 的 licensee 因为 LICENSE 末尾多了一段
第三方声明指引(THIRD_PARTY_NOTICES.md)而判定 NOASSERTION。
自动定级会给出 L3/private 的错误结论,必须人工读 LICENSE 原文才能纠正。
(本体系第二次遇到这类误判,前一次是 OpenWork 的目录切分许可。)
source: "GitHub license API 取原始文件,人工阅读全文 1170 字节"
maturity: |-
功能面极广、迭代极快(10 个月 237 次版本迭代),但**版本号体系失序**、
安全默认值偏松、巴士系数接近 1。适合愿意自己加固环境并接受高频变更的个人,
不适合需要可预测升级路径与稳定 SLA 的团队——尤其考虑到 2.0 自己都承认
"从 v2026.7.1 及更早版本升级时可能破坏原有 Agent 配置",官方建议升级前先备份。
maturity_level: "高速迭代期"
chart:
# ⚠️ 四个维度对 OpenClaw 的适配度都有限——它不在"Agent 工作台"这条赛道上。
# 坐标只是为了让它在同一张图里可比,解读时务必结合上方 engine_abstraction 的说明。
form_depth: 6 # 统一入口(Gateway + 多渠道),但不是可视化工作台
engine_neutral: 1 # 自身即引擎,不代理任何外部 agent;这不等于"绑定单引擎"
local_first_score: 8 # 本地 Gateway + 支持本地模型;2.0 推云端共享会话故未给满分
deliverable_depth: 2 # 产出"事务结果"而非可编辑交付物体系
chart_note: "本样本撑破了现有坐标系——四个维度均非为其设计,坐标仅作同图可比之用"
verdict:
one_liner: |-
388k star 的个人 AI 助理,常驻你自己的机器、从聊天软件驱动——
但沙箱默认关闭、版本号已经乱到读不懂发布节奏、关键提交仍系于一人之手。
who_should_use: |-
想让 AI 真正接管日常事务且愿意自己加固部署环境的重度个人用户;
想研究"非开发者向 agent 产品长什么样"的人(本体系里唯一的样本)。
who_should_not: |-
把 star 数当成生产就绪度的人;指望沙箱开箱即保护的人;
需要可预测升级路径的团队;希望助理"中立接入多个引擎"的人(它自己就是引擎,不接别人)。
mirror:
gitea_repo: "gitinbox/openclaw"
visibility: public
upstream: "https://github.com/openclaw/openclaw"
last_sync: ""
mode: "link-only"
sync_note: |-
**不镜像,仅存链接与元数据。** 仓库体积 3276 MB,撞上本体系两条硬约束:
① GitHub 链路约 50 KB/s,全量拉取需约 19 小时且中途失败无断点续传;
② Gitea 前置 nginx 的 client_max_body_size 约 50 MB,超限两个数量级,
连"源码快照"降级(通常能压到 1/4)也远无法覆盖。
许可证是 MIT(人工复核),不存在合规障碍——纯粹是体积不可行。
article:
emlog_id: 0 # emlog 文章 ID,发布后回写
published_at: ""
url: ""
+255
View File
@@ -0,0 +1,255 @@
# qwenpaw · 项目档案
# 生成于 2026-09-01 · 由 scripts/new_project.py 从 schema 生成
# 人工补完重点:business / scenario / tech / risk.claim_vs_reality / verdict
# 字段规范见 schema/project.schema.yaml
id: qwenpaw
name: "QwenPaw"
repo: "agentscope-ai/QwenPaw"
homepage: "http://qwenpaw.agentscope.io/"
added_at: "2026-09-01"
status: active
identity:
tagline: "Your Personal AI Assistant; easy to install, deploy on your own machine or on the cloud; supports multiple chat apps with easily extensible capabilities"
vendor: "AgentScope 团队(阿里巴巴通义实验室)"
vendor_type: "vendor"
region: "中国"
first_seen: "2026-02-24"
name_history: # ⚠️ 2026-04-12 改名,检索 4 月前的资料必须按 CoPaw
- "CoPaw(2026-02-24 建仓)"
- "QwenPaw(2026-04-12 更名)"
name_note: |-
更名官方理由是"更深融入 Qwen 开源生态、更聚焦模型层",原名 CoPaw 的仓库
`agentscope-ai/CoPaw` 与现名仓库指向同一项目。
另注意到 GitHub 上存在同名仓库 `aqua88hn/qwenpaw`(README 内容与官方高度相似),
**检索时容易认错本体**——本档案锁定的是 agentscope-ai 组织下的官方仓库。
business:
positioning: |-
与 OpenClaw 同处「个人助理执行层」,是本项目在本体系中唯一的正面对手。
但立足点不同:OpenClaw 靠**渠道覆盖与生态规模**取胜,QwenPaw 靠**安全默认值与
本地可跑**取胜。它把自己定位成"能长期记住你、数据不离开你机器的私人助理",
而不是功能最全的助理。
团队背景决定了差异化:背靠 AgentScope(AgentScope / AgentScope Runtime / ReMe),
记忆系统直接建在 ReMe 个人知识框架上。
target_users:
- 对数据主权与隐私有硬要求、希望助理完全跑在本地的个人用户
- 需要在钉钉 / 飞书 / 微信 / QQ 等国内渠道里用助理的团队
- 想不买 API key 就先跑起来的尝鲜用户(QwenPaw-Flash 本地模型)
- 愿意用功能广度换安全确定性的自用开发者
monetization: |-
Apache-2.0 全开源,未见收费层;提供 Docker / 阿里云 ECS / AgentScope 平台 /
ModelScope 创空间等多条部署路径(云部署路径隐含云厂商导流)。
与 OpenClaw 一样**没有明示的变现路径**。
license:
spdx: "Apache-2.0"
name: "Apache License 2.0"
openness: L1
redistributable: true
key_restrictions:
- Apache-2.0 含明确的专利授权条款(对使用者是加分项)
- 需保留 NOTICE 文件与版权声明
- 商标条款:不授予 Qwen / 通义等商标使用许可
moat: |-
三层:① 五层安全体系(沙箱 / Tool Guard / File Guard / Skill Scanner / Access Policy)
全部默认开启,这是同类里最完整的;② 无需 API key 即可跑的自研 QwenPaw-Flash
模型系列(2B/4B/9B,Q4/Q8 量化),把"先跑起来"的门槛降到零;
③ 覆盖国内七大渠道(钉钉 / 飞书 / 微信 / QQ / Discord / Telegram / iMessage)。
competitive_risk: |-
两面受敌:向上被 OpenClaw 的生态规模压制(388k vs 34.7k star,差一个数量级),
向下被任何一家有本地模型的助理框架追赶(安全是可以被快速抄的)。
真正的护城河可能是**渠道**——钉钉 / 飞书 / 微信的对接是海外项目做不了的。
scenario:
primary:
- 常驻本地的私人助理,通过钉钉 / 飞书 / 微信 / QQ 等 IM 渠道随时触达
- 本地文档与知识库:读 PDF / Office 提取信息进长期记忆,随时从 IM 调取
- 定时任务自动化:每日资讯摘要推送、邮件与日历整理、周报生成
- Coding Mode:三栏 Web IDE(文件树 / diff 预览 / 结构化代码搜索)
typical_use_cases:
- 每天自动抓小红书 / 知乎 / Reddit 热点生成摘要推到飞书
- 睡前描述目标,助理自动执行,醒来拿到原型
- 多个独立 agent 各自分角色(创意 / 写作 / 校对)协同产出内容
- 用本地 9B 模型处理敏感文档,全程不出本机、不花 API 费用
industries:
- 个人事务 / 知识管理
- 内容创作与自媒体
- 小团队办公自动化
interaction_mode:
- Web 控制台(默认 127.0.0.1:8088)
- Terminal UI(TUI)
- IM 渠道(钉钉 / 飞书 / 微信 / QQ / Discord / Telegram / iMessage)
- 桌面应用(Beta)
human_in_the_loop: |-
Access Policy 是声明式访问规则,可对每次能力调用设置 放行 / 拒绝 / 请求人工批准,
粒度到工具级、可按来源匹配。Tool Guard 提供 STRICT / SMART / AUTO / OFF 四档。
deliverables:
- code(Coding Mode 三栏 IDE)
- 文档处理结果(PDF / Word / Excel / PowerPoint)
- 记忆条目(可读可编辑可搜索的 Markdown 记忆)
- 定时推送内容(资讯摘要 / 视频脚本)
tech:
form_factor: |-
Python 包(pip / 安装脚本)+ Web 控制台 + TUI + 桌面应用(Beta)+ Docker。
形态偏"服务端 + 多渠道",与 OpenClaw 的"本地守护进程 Gateway"思路接近,
但更传统——没有 OpenClaw 那套原生伴侣 App 与设备节点。
stack:
- Python 59%
- TypeScript 37.2%
- Less 1.5%
- Rust 1.0%
- JavaScript / CSS 各约 0.3%
engine_abstraction:
supported: [] # 不代理外部 agent 引擎
mechanism: |-
与 OpenClaw 相同:**自身即引擎**,不接入第三方 agent。
但它能"派生子 agent"——多 agent 协同时各子体带独立记忆并行处理,
这是 OpenClaw 2.0 之前没有的内生能力。
模型层不绑定:14+ 云厂商(OpenAI / Anthropic / DeepSeek / Kimi 等)
与本地后端(内置 llama.cpp / Ollama / LM Studio)可混用。
abstraction_layer: "无(自身即引擎);模型层有统一 provider 抽象"
depth_notes: |-
注意区分两个"中立":模型层是真中立(14+ provider 可换),
agent 引擎层不存在中立问题(它自己就是)。横向比较时不要混为一谈。
extension_system:
skills: "Skills 文件系统;自定义 skill 自动加载,明确宣称 no lock-in"
plugins: "Skill Scanner 在激活前扫描第三方 skill(阻断 / 警告 / 关闭 + 白名单)"
mcp: "README 标注 mcp 主题(topics 含 mcp),支持浏览器工具抓取接口文档"
model_binding: |-
不绑定。本地侧主推自研 QwenPaw-Flash(2B / 4B / 9B,Q4 / Q8 量化,
ModelScope 与 Hugging Face 可下载),云侧 14+ provider。
**"无需 API key 即可跑"是它相对所有竞品的硬差异。**
local_first: true
multi_agent: |-
可创建多个独立 agent、各自分角色,开启协作 skill 后 agent 间可互相通信;
助理能派生带独立记忆的子 agent 并行处理任务。
permission_sandbox: |-
⚠️ 这是 QwenPaw 最强的维度,也是与 OpenClaw 分道扬镳之处——**默认开启**:
① Sandbox:内核级隔离,macOS 用 Seatbelt、Linux 用 Bubblewrap / Landlock、
Windows 用 AppContainer,shell 命令跑在受限文件系统视图里;
② Tool Guard:YAML 规则引擎 + ShellEvasionGuardian,执行前检查每次工具调用,
识别命令注入、路径穿越、反弹 shell、混淆攻击;
③ File Guard:独立于 Tool Guard,默认保护 ~/.qwenpaw.secret/、~/.ssh 等敏感路径;
④ Skill Scanner:第三方 skill 激活前扫描提示词注入、硬编码密钥、数据外泄;
⑤ Access Policy:声明式规则,工具级粒度的放行 / 拒绝 / 人工批准。
但注意:Tool Guard 提供 **OFF 档**,可以整层关掉。
observability: |-
滚动式上下文管理 + 持久化轮次存储;三层记忆(当前会话工作上下文 /
可搜索的完整对话历史 / 自进化的 Markdown 个人知识库)本身即构成了可审计轨迹。
ecosystem:
metrics:
stars: 34758
forks: 3052
open_issues: 898
subscribers: 109
created_at: 2026-02-24
pushed_at: 2026-09-01
size_kb: 112038
languages: {Python: 59.0, TypeScript: 37.2, Less: 1.5, Rust: 1.0, JavaScript: 0.3, CSS: 0.3}
latest_release: v2.2.0-beta.5
release_cadence: 约 1 天/版本
data_date: 2026-09-01
stale: false
community: |-
34.7k star、3k fork,活跃度高(约 1 天一个 beta)。
**巴士系数是七个样本里最健康的**:最近 100 次提交去重 24 位作者,
TOP1(yutai78786)仅占 15%,前八名分布在 15%–5% 之间,没有单点依赖。
对比同样在"个人助理"赛道的 OpenClaw(TOP1 独占 64%),差距显著。
standards: []
notable_events:
- "2026-02-24:以 CoPaw 之名建仓"
- "2026-04-12:正式更名 QwenPaw,官方称将更深融入 Qwen 开源生态"
- "2026-08-31:v2.2.0-beta.5(至今所有 release 均为 prerelease)"
risk:
license_risk: |-
Apache-2.0,无实质风险,且含专利授权条款(对企业用户是加分)。
需注意保留 NOTICE 与版权声明,以及商标不授权。
vendor_lockin: |-
模型层无锁定(14+ provider + 本地后端)。隐性锁定在两处:
① 记忆系统建在 ReMe 框架上,沉淀的个人知识库不易整体迁出;
② 云部署路径与阿里云 ECS / ModelScope 绑定,国内合规场景下迁移成本上升。
claim_vs_reality:
- claim: "数据归你、本地优先、不上传任何本地使用记录"
actual: |-
主力诉求成立(本地模型可完全离线跑,遥测一键可关)。
但 README 的 Telemetry 章节写明:**`qwenpaw init --defaults` 会自动接受遥测**,
且"每升级一个版本会重新收集一次"。而 `--defaults` 恰恰是快速上手文档
推荐的默认路径。收集的是匿名环境数据、不影响功能,但"默认接受"
与"数据归你"的叙事存在张力——尤其对把隐私当核心卖点的产品。
source: "README Telemetry 章节原文('If you choose --defaults, telemetry is accepted automatically.')"
- claim: "34.7k star 的成熟个人助理"
actual: |-
星标属实,但**至今没有任何正式 release**。查最近 8 个 release,
v2.1.1-beta.1 到 v2.2.0-beta.5 全部 prerelease=True。
也就是说它处在"高关注度 + 持续 beta"状态,与同赛道 OpenClaw
(有 v2026.8.1 正式版)相比,发布纪律反而更松。
source: "GitHub releases API(per_page=8,全部返回 prerelease=true)"
- claim: "五层安全,内核级沙箱"
actual: |-
五层的实现描述相当具体(Seatbelt / Bubblewrap+Landlock / AppContainer,
ShellEvasionGuardian 检测命令注入与反弹 shell),可信度高。
但 **Tool Guard 提供 OFF 档**,整层可以关掉;Access Policy 也是"可配置为放行"。
安全强度取决于用户配置,不是不可绕过的硬边界。
source: "README Security Features 章节(列出 Tool Guard 的 STRICT / SMART / AUTO / OFF 四档)"
- claim: "无需 API key,本地模型即可跑"
actual: |-
技术上成立:QwenPaw-Flash 2B / 4B / 9B(Q4 / Q8 量化)内置 llama.cpp 后端,
在 Web UI 点下载即可用,并提供硬件感知推荐。
但要清醒:**2B / 4B 量级的模型在复杂 agent 任务上的能力天花板很低**,
"无需 key 跑起来"和"无需 key 好用"是两件事,重度任务仍要接云端 provider。
source: "README Local Models 章节(列出 2B/4B/9B 与 Q4/Q8 量化)"
- claim: "(历史)QwenPaw 是一个 2026 年 4 月后出现的全新项目"
actual: |-
不是。它是 2026-02-24 以 **CoPaw** 之名建仓的项目,2026-04-12 才更名。
检索 2026 年 4 月之前的社区讨论、issue 与技术文章时必须按 CoPaw 检索,
否则会严重低估它的历史沉淀与已知问题。
source: "GitHub repo API(created_at=2026-02-24)+ README News 章节的更名公告"
- claim: "(检索风险)github.com/agentscope-ai/QwenPaw 是唯一官方仓库"
actual: |-
存在同名仓库 `aqua88hn/qwenpaw`,README 内容与官方高度相似。
以 star 数(官方 34.7k)与组织归属判断,官方仓库在 agentscope-ai 组织下;
但同名仓库的存在会让"按名字搜仓库"直接得到错误结果。
source: "GitHub 搜索结果与 repo API 交叉核对(agentscope-ai/QwenPaw = 34758 star,非 fork)"
maturity: |-
工程治理(巴士系数最健康、安全分层最完整)明显强于它的星标邻居们,
但**发布纪律是短板**——所有 release 都是 beta,且一天能发多个 beta。
功能面广、迭代快,适合自用与尝鲜;不适合作为团队关键链路的基础设施。
maturity_level: "beta 活跃期"
chart:
# 与 OpenClaw 同为"个人助理",但安全默认值与本地能力都更强,形态更传统。
form_depth: 5 # Web 控制台 + TUI + 桌面 beta,形态传统,无原生设备节点
engine_neutral: 2 # 自身即引擎(不代理外部 agent),但模型层 14+ provider 真中立
local_first_score: 9 # 内置 llama.cpp + 自研 Flash 模型,无需 API key 即可跑
deliverable_depth: 4 # Coding Mode 三栏 IDE + 文档处理 + 定时推送,但非可编辑交付物体系
chart_note: "与 OpenClaw 同赛道对照看:形态略浅、本地优先更强、安全默认值显著更高"
verdict:
one_liner: |-
七个样本里安全默认值最完整、巴士系数最健康的个人助理——
但至今没有发过一个正式版,且 `--defaults` 安装路径会默认打开遥测。
who_should_use: |-
把数据与隐私放第一位、希望助理完全跑在本地的个人与小团队;
需要在钉钉 / 飞书 / 微信 / QQ 渠道里用助理的国内团队;
想不买 API key 先把流程跑通的尝鲜者。
who_should_not: |-
需要正式版与稳定升级路径的团队(它全是 beta);
指望 2B / 4B 本地模型扛复杂 agent 任务的人;
把"五层安全"当成不可绕过硬边界的人(Tool Guard 有 OFF 档)。
mirror:
gitea_repo: gitinbox/qwenpaw
visibility: public
upstream: "https://github.com/agentscope-ai/QwenPaw"
last_sync: 2026-09-01
mode: source-only
sync_note: |-
109 MB,理论可行(约 36 分钟拉完),但超过 Gitea 50 MB 推送上限,
需走 mirror_sync.sh 的 source-only 快照降级。尚未执行,待带宽窗口。
article:
emlog_id: 0 # emlog 文章 ID,发布后回写
published_at: ""
url: ""
+302
View File
@@ -0,0 +1,302 @@
# tutti · 项目档案
# 生成于 2026-09-01 · 由 scripts/new_project.py 从 schema 生成
# 人工补完重点:business / scenario / tech / risk.claim_vs_reality / verdict
# 字段规范见 schema/project.schema.yaml
#
# ⚠️ 本档案的技术维度基于**本地源码实测**(/Users/figmarlite/.../tutti_repo,
# Apache-2.0 浅克隆 8291 文件),不是从 README 转述。所有行数均为 wc -l 实测。
id: tutti
name: "Tutti"
repo: "tutti-os/tutti"
homepage: "https://tutti.sh/"
added_at: "2026-09-01"
status: active
identity:
tagline: "Where people and agents build in tune."
vendor: "Nexight(tutti.sh)"
vendor_type: "vendor"
region: "未公开(NOTICE 声明 'developed at Nexight')"
first_seen: "2026-06-12"
name_note: |-
本体系里**最年轻的样本**(建仓至今 2.5 个月),也是 star 最少的(3.6k),
但工程规范度排在前列——见下方 risk 与 tech 的实测数据。
business:
positioning: |-
站在「多人 × 多 Agent 的实时协作空间层」,是七个样本里**唯一把"多人"写进定位的**。
它不造引擎、不卖模型,做的是"让你已有的 agent 订阅在同一个工作区里协同":
Claude 写了一半的活儿交给 Codex 接着干,中间不用重新讲一遍背景。
但它的商业模式是清晰的 open-core:**开源版只给"单人 + 多 Agent",
"多人 + 多设备 + 云同步"全在闭源的 Tutti · VM 侧**(Early Access,需邀请码)。
target_users:
- 同时用多个 agent 订阅(Claude Code + Codex + Hermes)的重度开发者
- 需要 agent 之间共享上下文、接力同一件事的小团队
- 想让 agent 产出不止代码(设计稿 / 文档 / PPT)的人
- 需要多人 × 多 Agent 同屏协作的团队(但这类需求会被引流到闭源 VM 版)
monetization: |-
**Open-core 双轨**:开源版(Apache-2.0)免费且自托管;Tutti · VM 为 Early Access
商业版,需邀请码创建 Cloud Room。Tutti 内置 Agent 在 Early Access 期免费,
README 明示"后续可能按用量计费"。
这是七个样本里**变现路径最清晰的一个**。
license:
spdx: "Apache-2.0"
name: "Apache License 2.0"
openness: L1
redistributable: true
key_restrictions:
- 需保留 NOTICE 文件——且本项目的 NOTICE 内容相当长(见 tech 备注)
- 商标条款:不授予 Tutti / Nexight 商标使用许可
- ⚠️ NOTICE 中有一处 **CC-BY-4.0**(VS Code Codicons 的 inspect 图标),
这是比 Apache-2.0 更严格的署名要求,再分发时必须保留署名
moat: |-
① 双层引擎接入架构(ACP 协议层 + runtimeprep 运行时准备层),把"接引擎"
拆成了协议适配与运行时准备两件事,这是其余样本没有做的分层;
② Workbench 节点模型 + 内置 Apps(AI Canvas / UI 原型 / Docs / AI PPT / 群聊);
③ 多 Agent 实时文件协同编辑(daemon 负责落盘与冲突投影)。
真正的壁垒在**多人协同的工程实现**(Cloud Room + DeviceLink 的 ICE/QUIC),
而这部分恰好不在开源侧。
competitive_risk: |-
最容易被 Anthropic / OpenAI 官方的协作能力吃掉——Tutti 不拥有任何引擎与模型。
更直接的威胁:它宣传的"agent 之间共享上下文"能力,各家引擎自己在做
(Claude Code 的 subagent、Codex 的 session resume),Tutti 的跨引擎优势
会随着引擎自身变强而稀释。
scenario:
primary:
- 同一 workspace 里并行驱动多个 agent,共享文件与上下文
- agent 之间接力:Codex 接着 Claude 写了一半的活儿继续,无需重述背景
- 用 Big @ 跨 agent / 跨会话引用产出与上下文,用 + 快速引用文件
- 多 agent 实时协同编辑同一批文件,daemon 负责落盘与冲突投影
- 通过内置 Apps 让 agent 直接产出设计稿 / 文档 / PPT(不只是代码)
- 【闭源 VM 版】多人同屏、跨设备、借用他人 agent、免部署分享
typical_use_cases:
- Claude 写完 PRD,让 agent 调设计 App 直接出视觉稿
- 描述一个目标,Tutti 拆成子任务后分派给最合适的 agent
- 用已有订阅额度驱动 Tutti 里的所有内置 App,不额外付费
- 【VM】本地跑的 localhost 站点直接在 Room 里给别人预览,不用部署
industries:
- 软件研发
- 产品与设计协作
- 内容生产
interaction_mode:
- 桌面应用(Electron)
- TUI / CLI(Go)
- Workbench 节点(Browser / Terminal / App Center)
- 【闭源 VM】Cloud Room 多人多设备
human_in_the_loop: |-
Agent Board 可视化所有 agent 的任务与状态,统一调度;goal review / plan feedback
(Tutti Mode 执行)。活动复制与状态探针(agentstatus + account-usage)提供过程可见性。
deliverables:
- code
- 设计稿(AI Canvas / UI-UX 原型)
- 文档 / PPT(Docs / AI PPT 内置 App)
- 会话回放(session-replay)
tech:
form_factor: |-
pnpm + Go Workspace 混合 monorepo;桌面端 Electron;守护进程 tuttid(Go);
CLI(Go);Agent 运行时基于 **ACP(Agent Client Protocol)** + uv / npm / pnpm
托管运行时。语言构成 TypeScript 48.8% / Go 45.4% —— **后端用 Go 而不是 Node,
这是它和其余 Electron 系样本的关键差异**(守护进程的稳定性与并发模型更好)。
stack:
- TypeScript 48.8%
- Go 45.4%(守护进程 tuttid + CLI)
- JavaScript 4.2%
- CSS 0.9%
- Kotlin 0.3%(Android)
- Shell 0.1%
engine_abstraction:
supported:
- Codex(接入最深)
- Claude Code
- Cursor
- OpenCode
- Kimi Code
- Hermes
- OpenClaw(in development)
- Computer Use
- Browser Use
- Tutti 内置 Agent
mechanism: |-
**双层架构**,这是 Tutti 在引擎接入上最值得记的一笔:
第 1 层 `packages/agent/daemon/runtime/acp_provider_*.go` —— ACP 协议适配
第 2 层 `packages/agent/runtimeprep/` —— 运行时准备(配置注入、skill 装配、
Windows 兼容、模型缓存、目录同步)
全仓有 363 个文件引用 ACP,**是真集成,不是营销词**。
abstraction_layer: "ACP(Agent Client Protocol)+ runtimeprep 准备层"
depth_notes: |-
⚠️ **接入深度极不对等,实测数据如下**(packages/agent/runtimeprep/,非测试行数):
Codex 16 文件 2170 行 ← 一国独大
Tutti 内置 2 文件 653 行
Cursor 2 文件 446 行
Claude 3 文件 410 行
OpenCode 2 文件 392 行
Kimi 1 文件 127 行
ComputerUse 1 文件 43 行
BrowserUse 1 文件 43 行
**Codex 是 Kimi 的 17 倍。** 且只有 Codex 有 Windows 变体文件
(codex_directory_windows.go 149 行、codex_file_windows.go、
codex_models_cache_windows.go 等 4 个),其余引擎一个 Windows 变体都没有
——说明**只有 Codex 在 Windows 上被真正验证过**。
更有意思的是**测试密度与实现规模成反比**:
OpenCode 392 行实现 / 218 行测试 = 0.56(密度最高)
Cursor 446 / 187 = 0.42
Tutti 内置 653 / 274 = 0.42
Claude 410 / 136 = 0.33
Codex 2170 / 261 = **0.12(投入最大,保障最薄)**
Kimi 127 / 0 = 0.00
ComputerUse / BrowserUse 43 / 0 = 0.00
即:**投入最重的 Codex 恰恰是质量保障最薄弱的地方**,因为它的边界情况最多
(Windows 兼容、模型缓存、配置依赖、skill roots、用户指令),测试却没跟上。
另有 19 个通用测试文件共 7851 行(preparer_test.go 单文件 2906 行)
覆盖跨引擎路径,部分弥补了单引擎测试的缺失。
extension_system:
skills: "provider_skill.go(655 行)+ stable_skill_bundle.go(308 行)+ codex_skill_roots.go;支持 personal skill"
plugins: "extension_runtime.go(735 行):为 Hermes 提供 RTK Python 插件机制(命令重写)"
mcp: "codex_mcp.go(65 行)—— 注意:MCP 实现挂在 Codex 名下,不是通用层"
model_binding: |-
不绑定模型,但**绑定 agent 订阅**:README 明确"用你已有的 Claude / Codex /
其他订阅"。没有订阅的用户可用 Tutti 内置 Agent(Early Access 期免费)。
local_first: true
multi_agent: |-
Agent Board 统一调度 + Big @ 跨 agent 引用 + 多 agent 实时文件协同编辑
(daemon 落盘与冲突投影)+ 工作流与自动化规则 + Issue/Task/Run 工作流。
会话回放(session-replay)与活动复制(activity-replication)是它的特色。
permission_sandbox: |-
tutti_cli_policy.go(140 行)提供 CLI 策略控制;workspace 级权限与 provision 流程。
相较 QwenPaw(内核级沙箱默认开)与 OpenClaw(沙箱默认关),
Tutti 的开源侧没有看到同等强度的执行隔离——它的安全边界更多落在
workspace 与 daemon 层,而非内核沙箱。
observability: |-
这是 Tutti 的强项:Agent Board 看板 + 状态探针(agentstatus + account-usage)+
会话回放 + 活动复制 + goal review / plan feedback。执行过程可追溯性
在七个样本里仅次于 Maka。
ecosystem:
metrics:
stars: 3660
forks: 371
open_issues: 185
subscribers: 115
created_at: 2026-06-12
pushed_at: 2026-09-01
size_kb: 248635
languages: {TypeScript: 48.8, Go: 45.4, JavaScript: 4.2, CSS: 0.9, Kotlin: 0.3, Shell: 0.1}
latest_release: stable
release_cadence: 约 3 天/版本
data_date: 2026-09-01
stale: false
community: |-
3.6k star、371 fork、185 issue,规模是七个里最小的,但**发布纪律是七个里最好的**:
最近 8 个 release 全部 prerelease=False(v0.2.25 → v0.2.31,约 3 天一版)。
另维护一个名为 `stable` 的**滚动 tag**(始终指向最新稳定版,会随发版移动)——
方便用户固定引用,代价是该 tag 的历史不可追溯。
对比:OpenClaw 版本号倒挂(9.1-beta 早于 8.1 正式)、QwenPaw 全是 beta,
star 数最少的 Tutti 反而是唯一持续发正式版的。
standards:
- "ACP(Agent Client Protocol)——363 个文件引用,深度采纳"
notable_events:
- "2026-06-12:建仓"
- "2026-07-23:docs/specs/2026-07-23-hermes-agent-extension-acceptance.md(Hermes 以扩展方式接入的验收规格)"
- "2026-09-01:v0.2.31 与滚动 tag stable 同日发布"
risk:
license_risk: |-
Apache-2.0 本身无风险,但**NOTICE 必须完整保留**:它记录了 5 处第三方代码,
且其中 VS Code Codicons 的 inspect 图标用的是 **CC-BY-4.0**(署名要求
比 Apache-2.0 更严),再分发时漏掉署名即构成侵权。
vendor_lockin: |-
**锁定在"协作"而非"代码"**:开源版能跑,但 Group chat / 多人协作 /
同时编辑 / 跨设备 / agent 借用 / 免部署分享这六项功能全在闭源 VM 侧,
且创建 Room 需要邀请码(waitlist)。一旦团队依赖上协作能力,就上了商业版的船。
这是七个样本里 open-core 切分最干脆的一个。
claim_vs_reality:
- claim: "(README)Currently Claude Code, Codex, and Hermes;OpenClaw is in development"
actual: |-
**README 与代码对不上,两个方向都偏。**
宣称"当前支持"的 Hermes,在 runtimeprep 里**没有 hermes.go** —— 它走的是
extension_runtime.go 的 RTK Python 插件机制(provider 标识 `acp:hermes`,
用 Python 插件重写命令),只有测试文件 hermes_test.go(580) 与
hermes_verify_test.go(77),没有原生 adapter。
宣称"in development"的 OpenClaw,确实只有 acp_provider_openclaw.go **52 行、
零测试**(对比 OpenCode 的 301 行 + 540 行测试)—— README 这处倒是诚实的。
反过来,**Cursor / OpenCode / Kimi / ComputerUse / BrowserUse 在代码里都有
完整实现,README 的支持列表却一个字没提。**
结论:README 的支持列表更像"营销优先级排序",不是代码覆盖的如实反映。
source: "本地源码实测:runtimeprep 目录文件清单 + daemon/runtime/acp_provider_*.go 行数 + grep hermes 引用"
- claim: "多引擎中立"
actual: |-
协议层中立(都走 ACP),**深度层远不中立**。Codex 2170 行 vs Kimi 127 行,
17 倍差距;只有 Codex 有 Windows 变体,其余引擎在 Windows 上未验证。
而且测试密度反常:Codex 0.12(最低)vs OpenCode 0.56(最高),
Kimi / ComputerUse / BrowserUse 测试为零。
所谓"中立"是**接入方式的中立**,不是**投入与保障的中立**。
source: "本地源码 wc -l 实测(实现文件与测试文件分别统计)"
- claim: "Where people and agents build in tune(多人 × 多 Agent)"
actual: |-
开源版里只有 "agents",**"people" 那部分在闭源侧**。README 的
Two Versions 对照表明确:Group chat / Work with others /
Work with others' agents / Simultaneous editing / Agent borrowing /
Across devices / No-deploy sharing —— 七项全部是 VM 版专属,
开源版一格 ✓ 都没有。而 VM 版是 Early Access,**创建 Room 需要邀请码**。
Big @ 在开源版里只能在"你自己的 agent 之间"引用,跨人引用要 VM 版。
source: "README 'Two Versions of Tutti' 与 'Tutti vs Tutti · VM' 两张对照表原文"
- claim: "Apache-2.0 开源"
actual: |-
许可证属实且 NOTICE 写得极其规范(5 处第三方代码全部精确到文件路径、
上游 revision hash 与适配说明,是七个样本里 NOTICE 质量最高的)。
但"开源"不等于"功能完整"——结合上一条,开源版的功能完整度约一半,
核心价值(协作)在闭源侧。Apache-2.0 保证了你能自由改代码,
不保证你能用到它宣传的完整体验。
source: "本地源码 NOTICE 全文 + README 版本对照表"
- claim: "(隐含)体量小 = 成熟度低"
actual: |-
反例。它是七个样本里 star 最少(3.6k)、建仓最晚(2026-06-12)的,
但**发布纪律最好**:8 个 release 全是正式版,且维护 `stable` 滚动 tag。
工程规范度(NOTICE 精度、测试投入 7851 行通用测试、Go 守护进程)
明显超过 star 数比它高一个数量级的 OpenClaw 与 QwenPaw。
**star 数与工程成熟度在本体系的七个样本里呈负相关。**
source: "GitHub releases API + 本地源码 NOTICE 与测试文件实测"
maturity: |-
建仓仅 2.5 个月,处在快速成长期。发布纪律是七个样本里最好的(全部正式版 +
stable 滚动 tag),工程规范度高(NOTICE 精确到 revision hash、通用测试 7851 行、
Go 守护进程),但引擎接入深度严重向 Codex 倾斜、开源版功能完整度约一半。
适合自用与"多 agent 接力"场景,不适合指望开源版承担团队协同。
maturity_level: "快速成长期"
chart:
form_depth: 8 # Electron + Workbench 节点 + 内置 Apps,形态最完整之一
engine_neutral: 8 # ACP 协议层真统一(363 文件),但深度极不对等(见 depth_notes)
local_first_score: 7 # 开源版本地跑,但协作能力全在云端 VM 侧
deliverable_depth: 7 # 内置 Apps 出设计稿 / 文档 / PPT,不止代码
chart_note: "引擎中立项给的是协议层统一;若按投入对等度重评,该项应下调至 4 左右"
verdict:
one_liner: |-
把「多 agent 共享上下文、接力干活」做成了产品,且是七个里发布纪律最好的——
但接入深度严重偏袒 Codex(17 倍差距),而宣传的「多人协作」全在闭源 VM 版。
who_should_use: |-
手里已有多个 agent 订阅、想让它们在同一工作区里接力与共享上下文的开发者;
想让 agent 产出设计稿 / 文档 / PPT 而不只是代码的人;
看重发布纪律与工程规范(NOTICE 精度、正式版节奏)的人。
who_should_not: |-
指望开源版做团队多人协作的人(那七项功能全在闭源 VM 侧,且需邀请码);
主要用 Kimi / ComputerUse / BrowserUse 的人(这三个接入最薄、测试为零);
Windows 用户且主力引擎不是 Codex 的人(只有 Codex 做了 Windows 适配)。
mirror:
gitea_repo: "gitinbox/tutti"
visibility: public
upstream: "https://github.com/tutti-os/tutti"
last_sync: ""
mode: "pending"
sync_note: |-
243 MB。本地已有浅克隆(/Users/figmarlite/.../tutti_repo,8291 文件),
技术维度分析即基于此,可直接复用做快照,无需重新下载。
仍需 unshallow 补全历史后走 source-only 降级(超 Gitea 50 MB 上限)。尚未执行。
article:
emlog_id: 0 # emlog 文章 ID,发布后回写
published_at: ""
url: ""