erbilnas/clawd-code

GitHub: erbilnas/clawd-code

一个为教育和防御性安全研究提供的TypeScript源代码静态镜像,专注于软件供应链分析和架构评审。

Stars: 30 | Forks: 40

# Clawd Code — 安全研究镜像 本仓库托管了一个用于**教育用途、防御性安全研究和软件供应链分析**的 **TypeScript `src/` 目录树的静态镜像**。它由一名独立的大学生作为个人研究项目维护。 **命名说明。** **Splinterworks**、**Clawd** 和 **Clawd Code** 是对供应商、助手和终端编码智能体 CLI 的虚构代称——其用意类似于用 **Macrohard** 指代一家大型软件公司。它们为这个镜像定义了一种 _产品风格_,而非真实存在的商业品牌。 ## 重要声明 **请在使用或再分发本仓库中的任何内容前,阅读此部分。** ## 目的与可接受用途 - 研究真实世界 CLI 工具中的**构建产物、打包和发布流程风险** - 对智能体开发工具进行**安全软件工程**与**防御性分析** - 此类系统的**架构评审**与结构讨论 请仅在符合适用法律和第三方条款的方式下使用本仓库。**请勿**使用本仓库损害他人、绕过安全措施或滥用上游服务。 ## 背景(概要) 2026年3月的公开讨论指出,与某个 **npm** 发行版相关的**源映射**产物可能使得 **TypeScript 源码**比预期更易获取。 ## 仓库内容 该目录树包含了一个保留用于研究和分析的镜像 **`src/`** 快照。 **Clawd Code**(上游)是一个终端导向的 CLI,与 Splinterworks 的编码助手栈配合使用,用于执行文件编辑、运行命令、搜索代码库和协调工作流等任务。**此镜像不是官方产品的受支持构建、分叉或替代品。** | 属性 | 详情 | | ---------------------- | ------------------------------------------------ | | 快照背景 | 2026-03-31 公开讨论 | | 编程语言 | TypeScript | | 运行时(上游) | Bun | | 终端 UI(上游) | React + [Ink](https://github.com/vadimdemedes/ink) | | 规模(近似) | ~1,900 文件,512,000+ 行代码 | ## 文档(VitePress) `src/` 目录树的可导航文档位于 [`docs/`](docs/) 目录下。它镜像并扩展了本 README,形成侧边栏导航(指南、架构、参考),并包含了一个顶层 `src/` 条目的生成索引。 从仓库根目录运行: ``` npm install npm run docs:dev # local dev server npm run docs:gen # regenerate docs/reference/src-index.md npm run docs:build # production build (runs docs:gen first; output in docs/.vitepress/dist) npm run docs:preview # preview the production build ``` ## 下架与联系 如果您是权利持有人或授权代表,并认为本仓库中的材料侵犯了您的权利或违反了适用法律,**请联系维护者**:在本仓库创建一个 **GitHub Issue**(或使用维护者在其 GitHub 个人资料上公布的任何联系方式)。 在收到**有效的法律通知**后(例如,在适用情况下满足法定要求的 DMCA 通知),维护者将**及时审查**,并在适当时**禁用或移除**被标识的内容或该仓库。善意合作不放弃任何一方的法律权利或救济。 ## 目录结构 ``` src/ ├── main.tsx # Entrypoint orchestration (Commander.js-based CLI path) ├── commands.ts # Command registry ├── tools.ts # Tool registry ├── Tool.ts # Tool type definitions ├── QueryEngine.ts # LLM query engine ├── context.ts # System/user context collection ├── cost-tracker.ts # Token cost tracking │ ├── commands/ # Slash command implementations (~50) ├── tools/ # Agent tool implementations (~40) ├── components/ # Ink UI components (~140) ├── hooks/ # React hooks ├── services/ # External service integrations ├── screens/ # Full-screen UIs (Doctor, REPL, Resume) ├── types/ # TypeScript type definitions ├── utils/ # Utility functions │ ├── bridge/ # IDE and remote-control bridge ├── coordinator/ # Multi-agent coordinator ├── plugins/ # Plugin system ├── skills/ # Skill system ├── keybindings/ # Keybinding configuration ├── vim/ # Vim mode ├── voice/ # Voice input ├── remote/ # Remote sessions ├── server/ # Server mode ├── memdir/ # Persistent memory directory ├── tasks/ # Task management ├── state/ # State management ├── migrations/ # Config migrations ├── schemas/ # Config schemas (Zod) ├── entrypoints/ # Initialization logic ├── ink/ # Ink renderer wrapper ├── buddy/ # Companion sprite ├── native-ts/ # Native TypeScript utilities ├── outputStyles/ # Output styling ├── query/ # Query pipeline └── upstreamproxy/ # Proxy configuration ``` ## 架构概要 以下描述了在镜像目录树中为研究目的而**观察到的结构**。这是**描述性分析**,并非官方产品文档。 ### 1. 工具系统 (`src/tools/`) 每个可调用工具都实现为一个独立的模块,定义了输入模式、权限模型和执行逻辑。 | 工具 | 描述 | | ------------------------------------------ | ---------------------------------------------- | | `BashTool` | Shell 命令执行 | | `FileReadTool` | 文件读取(图像、PDF、笔记本) | | `FileWriteTool` | 文件创建/覆盖 | | `FileEditTool` | 文件部分修改(字符串替换) | | `GlobTool` | 文件模式匹配搜索 | | `GrepTool` | 基于 ripgrep 的内容搜索 | | `WebFetchTool` | 获取 URL 内容 | | `WebSearchTool` | 网络搜索 | | `AgentTool` | 子智能体生成 | | `SkillTool` | 技能执行 | | `MCPTool` | MCP 服务器工具调用 | | `LSPTool` | 语言服务器协议集成 | | `NotebookEditTool` | Jupyter 笔记本编辑 | | `TaskCreateTool` / `TaskUpdateTool` | 任务创建与管理 | | `SendMessageTool` | 智能体间消息传递 | | `TeamCreateTool` / `TeamDeleteTool` | 团队智能体管理 | | `EnterPlanModeTool` / `ExitPlanModeTool` | 计划模式切换 | | `EnterWorktreeTool` / `ExitWorktreeTool` | Git 工作树隔离 | | `ToolSearchTool` | 延迟工具发现 | | `CronCreateTool` | 定时触发器创建 | | `RemoteTriggerTool` | 远程触发器 | | `SleepTool` | 主动模式等待 | | `SyntheticOutputTool` | 结构化输出生成 | ### 2. 命令系统 (`src/commands/`) 用户通过 `/` 前缀调用的斜杠命令。 | 命令 | 描述 | | -------------------- | ------------------------------ | | `/commit` | 创建 git 提交 | | `/review` | 代码审查 | | `/compact` | 上下文压缩 | | `/mcp` | MCP 服务器管理 | | `/config` | 设置管理 | | `/doctor` | 环境诊断 | | `/login` / `/logout` | 身份验证 | | `/memory` | 持久化记忆管理 | | `/skills` | 技能管理 | | `/tasks` | 任务管理 | | `/vim` | Vim 模式切换 | | `/diff` | 查看更改 | | `/cost` | 检查使用成本 | | `/theme` | 更改主题 | | `/context` | 上下文可视化 | | `/pr_comments` | 查看 PR 评论 | | `/resume` | 恢复上一个会话 | | `/share` | 分享会话 | | `/desktop` | 桌面应用切换 | | `/mobile` | 移动应用切换 | ### 3. 服务层 (`src/services/`) | 服务 | 描述 | | ------------------------ | ------------------------------------------ | | `api/` | Splinterworks API 客户端、文件 API、引导 | | `mcp/` | 模型上下文协议服务器连接与管理 | | `oauth/` | OAuth 2.0 身份验证流程 | | `lsp/` | 语言服务器协议管理器 | | `analytics/` | 基于 GrowthBook 的功能标志与分析 | | `plugins/` | 插件加载器 | | `compact/` | 会话上下文压缩 | | `policyLimits/` | 组织策略限制 | | `remoteManagedSettings/` | 远程管理设置 | | `extractMemories/` | 自动记忆提取 | | `tokenEstimation.ts` | 令牌计数估算 | | `teamMemorySync/` | 团队记忆同步 | ### 4. 桥接系统 (`src/bridge/`) IDE 扩展(VS Code、JetBrains)与 CLI 之间的双向通信。 - `bridgeMain.ts` — 桥接主循环 - `bridgeMessaging.ts` — 消息协议 - `bridgePermissionCallbacks.ts` — 权限回调 - `replBridge.ts` — REPL 会话桥接 - `jwtUtils.ts` — 基于 JWT 的身份验证 - `sessionRunner.ts` — 会话执行管理 ### 5. 权限系统 (`src/hooks/toolPermission/`) 工具调用时的权限检查:根据配置的权限模式(`default`、`plan`、`bypassPermissions`、`auto` 等),通过用户提示或自动解决。 ### 6. 功能标志 通过 Bun 的 `bun:bundle` 功能标志进行死代码消除: ``` import { feature } from "bun:bundle"; // Inactive code is completely stripped at build time const voiceCommand = feature("VOICE_MODE") ? require("./commands/voice/index.js").default : null; ``` 显著标志:`PROACTIVE`、`KAIROS`、`BRIDGE_MODE`、`DAEMON`、`VOICE_MODE`、`AGENT_TRIGGERS`、`MONITOR_TOOL` ## 关键文件详述 ### `QueryEngine.ts` (~46K 行) 用于 LLM API 调用的核心引擎:流式响应、工具调用循环、思维模式、重试逻辑、令牌计数。 ### `Tool.ts` (~29K 行) 工具的基础类型和接口——输入模式、权限模型、进度状态类型。 ### `commands.ts` (~25K 行) 斜杠命令的注册和执行;针对特定环境的命令集的条件导入。 ### `main.tsx` 基于 Commander.js 的 CLI 解析和 React/Ink 渲染器设置;启动路径包括 MDM 设置、密钥链预取和 GrowthBook 初始化以优化启动性能。 ## 技术栈 | 类别 | 技术 | | ----------------- | ---------------------------------------------------------------------- | | 运行时 | [Bun](https://bun.sh) | | 编程语言 | TypeScript(严格模式) | | 终端 UI | [React](https://react.dev) + [Ink](https://github.com/vadimdemedes/ink) | | CLI 解析 | [Commander.js](https://github.com/tj/commander.js)(额外类型定义) | | 模式验证 | [Zod v4](https://zod.dev) | | 代码搜索 | [ripgrep](https://github.com/BurntSushi/ripgrep) | | 协议 | [MCP SDK](https://modelcontextprotocol.io)、LSP | | API | [Splinterworks SDK](https://docs.splinterworks.invalid) | | 遥测 | OpenTelemetry + gRPC | | 功能标志 | GrowthBook | | 身份验证 | OAuth 2.0、JWT、macOS 钥匙串 | ## 显著设计模式 ### 并行预取 ``` // main.tsx — fired as side-effects before other imports startMdmRawRead(); startKeychainPrefetch(); ``` ### 延迟加载 重量级模块(OpenTelemetry、gRPC、分析和某些功能门控子系统)通过动态 `import()` 延迟到需要时加载。 ### 智能体群 通过 `AgentTool` 生成子智能体;`coordinator/` 用于多智能体编排;`TeamCreateTool` 用于团队级别的并行工作。 ### 技能系统 `skills/` 目录下的工作流通过 `SkillTool` 执行;上游产品支持用户自定义技能。 ### 插件架构 通过 `plugins/` 子系统加载插件。 ## 页脚 **无关联。** 与 Splinterworks 或任何指名的权利持有人无关、未经其背书或维护。 **知识产权。** 原创作品仍归其各自所有者所有;此镜像不转让任何权利。 **免责声明。** “按原样”提供,不作任何保证;不构成法律建议。使用风险自担。
标签:npm, TypeScript, 个人研究项目, 供应链分析, 反取证, 发布流程风险, 安全插件, 安全评估, 开发工具安全, 教育用途, 数据管道, 构建工件, 架构审查, 源码分析, 源码镜像, 研究分析, 终端工具, 终端编码代理, 网络安全, 自动化攻击, 软件供应链安全, 软件工程, 远程方法调用, 防御性安全, 隐私保护, 静态镜像