🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

开箱即用编码代理 cocode-agency/cocode

DeepSeek Harness
cocode-agency61 天前有提交已提供中文文档扫描:含敏感能力

开箱即用的 DeepSeek Harness 发行版。

62.3/100
综合分
167
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:仓库根目录无 package.json,浅层子目录有 3 份 dsh 插件清单(cocode-gui/package.json、cocode-host-supervisor/package.json、cocode-host-supervisor/packages/host-supervisor/package.json),无法唯一定位安装名。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add cocode-agency/cocode
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 61 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库根目录无 package.json,浅层子目录有 3 份 dsh 插件清单(cocode-gui/package.json、cocode-host-supervisor/package.json、cocode-host-supervisor/packages/host-supervisor/package.json),无法唯一定位安装名

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包cocode(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 02:39:48

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 32 处,展示前 26 条)
  • 执行外部命令来自配置/变量
    cocode-tui/bin/cli.mjs:115
    const result = spawnSync(launch.executable, [...launch.args, ...args], { cwd: process.cwd(), env, stdio: 'inherit', windowsHide: true })
  • 执行外部命令来自配置/变量
    cocode-tui/bin/cli.mjs:120
    const child = spawn(launch.executable, [...launch.args, ...args], { cwd: process.cwd(), env, detached: true, stdio: 'ignore', windowsHide: true })
  • 读取本地文件
    cocode-tui/bin/cli.mjs:158
    const entry = candidates.find((candidate) => existsSync(candidate))
  • 读取本地文件
    cocode-tui/bin/cli.mjs:167
    if (existsSync(manifestPath)) {
  • 读取本地文件
    cocode-tui/bin/cli.mjs:168
    const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'))
  • 读取本地文件
    cocode-tui/bin/cli.mjs:188
    const executable = candidates.find((candidate) => existsSync(candidate))
  • 读取本地文件
    cocode-tui/bin/cli.mjs:195
    const executable = candidates.find((candidate) => existsSync(candidate)) || findOnPath('Cocode.exe', 'where.exe', env)
  • 读取本地文件
    cocode-tui/bin/cli.mjs:200
    const executable = candidates.find((candidate) => existsSync(candidate)) || findOnPath('cocode-gui', 'sh', env)
  • 执行外部命令来自配置/变量
    cocode-tui/bin/cli.mjs:206
    const result = spawnSync(shell, shell === 'where.exe' ? [command] : ['-lc', `command -v ${shellQuote(command)}`], { env, encoding: 'utf8', stdio: ['ig
  • 读取本地文件
    cocode-tui/bin/cocode-tui.mjs:136
    if (!existsSync(entry)) {
  • 执行外部命令来自配置/变量
    cocode-tui/bin/cocode-tui.mjs:140
    const result = spawnSync(process.execPath, [entry, ...options.commandArgs], { cwd: process.cwd(), env: process.env, stdio: 'inherit' })
  • 读取本地文件
    cocode-tui/bin/cocode-tui.mjs:161
    if (existsSync(entry)) {
  • 读取本地文件
    cocode-tui/bin/cocode-tui.mjs:168
    if (!existsSync(entry)) throw new Error(`@cocode-agency/host-supervisor is missing its built service entry: ${entry}`)
  • 读取本地文件
    cocode-tui/bin/cocode-tui.mjs:174
    const checks = [['package', true], ['built TUI', existsSync(runtimePaths.tuiEntry)], ['DSH_HOME', scope.dshHome !== ''], ['profile', scope.profile !==
  • 读取本地文件
    cocode-tui/bin/cocode-tui.mjs:212
    if (!existsSync(entry)) throw new Error(`Packaged Host Supervisor is missing: ${entry}`)
  • 读取本地文件
    cocode-tui/bin/headless-run.mjs:68
    if (!existsSync(options.cwd) || !statSync(options.cwd).isDirectory()) {
  • 读取本地文件
    cocode-tui/bin/headless-run.mjs:68
    if (!existsSync(options.cwd) || !statSync(options.cwd).isDirectory()) {
  • 读取本地文件
    cocode-tui/bin/headless-run.mjs:78
    return nonemptyPrompt(await readFile(resolve(options.promptFile), 'utf8'))
  • 写入本地文件
    cocode-tui/bin/headless-run.mjs:138
    await mkdir(dirname(options.eventLog), { recursive: true })
  • 写入本地文件
    cocode-tui/bin/headless-run.mjs:139
    eventStream = createWriteStream(options.eventLog, { flags: 'w', mode: 0o600 })
  • 发起网络请求
    cocode-tui/bin/headless-run.mjs:174
    void peer.request('cocode/approval/respond', { requestId: params.requestId, outcome })
  • 发起网络请求
    cocode-tui/bin/headless-run.mjs:180
    void peer.request('cocode/question/respond', { requestId: params.requestId, cancelled: true })
  • 发起网络请求
    cocode-tui/bin/headless-run.mjs:187
    await peer.request('initialize', {
  • 发起网络请求
    cocode-tui/bin/headless-run.mjs:193
    workspace = await peer.request('cocode/workspace/ensure', { sessionId, approved: false })
  • 发起网络请求
    cocode-tui/bin/headless-run.mjs:198
    workspace = await peer.request('cocode/workspace/ensure', { sessionId, approved: true })
  • 发起网络请求
    cocode-tui/bin/headless-run.mjs:207
    await peer.request('session.selectModel', {
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

2 张 · 点击查看大图

功能亮点

  • DSH桌面GUI
  • DSH终端TUI
  • harness集成
展开完整介绍(63 字)↓

开箱即用的 DeepSeek Harness 发行版:DSH 桌面 GUI、DSH 终端 TUI,以及 harness 集成。

README

由 DeepSeek 最新模型翻译生成
Cocode 开箱即用的 DeepSeek Harness 发行版。 English · 简体中文 大多数编码 Agent 替你把选择做完之后,也把选择权一起收走了:能用哪些工具、怎么调度、界面长什么样,都由上游定好。Cocode 想做的是另一半——替你做完选择,但把螺丝刀留在你手边。默认那份装好就能用,不用先研究底下有什么;不称手的时候,你能打开它、看清它是怎么拼起来的,然后照自己的想法改。这是 Cocode 全部设计的出发点。 底下的运行时是 DeepSeek Harness。它有它自己的主张——一切都是插件:模型、工具、技能、会话、沙箱和调度都靠配置拼装,它不替你决定该拼出什么。Cocode 拼好了其中一份,并且把这份组装摊开在产品里,而不是藏进配置文件。 项目状态: 开发者预览版。Cocode 基于 DeepSeek Harness 开发者预览版构建,是独立发行版,不是 DeepSeek 官方产品,上游仍可能出现兼容性变化。仓库支持在 macOS、Windows 和 Linux 上进行源码构建;当前发布脚本面向 macOS 和 Windows 安装包,本仓库不包含托管后端,也不包含 Harness 的 vendored 副本。 安装方式与五分钟上手 | 场景 | 安装 | 启动 | | GUI | 从 GitHub Releases 下载对应平台安装包。
展开完整文档(README 剩余 1 节)
Cocode

开箱即用的 DeepSeek Harness 发行版。

English · 简体中文

大多数编码 Agent 替你把选择做完之后,也把选择权一起收走了:能用哪些工具、怎么调度、界面长什么样,都由上游定好。Cocode 想做的是另一半——替你做完选择,但把螺丝刀留在你手边。默认那份装好就能用,不用先研究底下有什么;不称手的时候,你能打开它、看清它是怎么拼起来的,然后照自己的想法改。这是 Cocode 全部设计的出发点。

底下的运行时是 DeepSeek Harness。它有它自己的主张——一切都是插件:模型、工具、技能、会话、沙箱和调度都靠配置拼装,它不替你决定该拼出什么。Cocode 拼好了其中一份,并且把这份组装摊开在产品里,而不是藏进配置文件。

项目状态: 开发者预览版。Cocode 基于 DeepSeek Harness 开发者预览版构建,是独立发行版,不是 DeepSeek 官方产品,上游仍可能出现兼容性变化。仓库支持在 macOS、Windows 和 Linux 上进行源码构建;当前发布脚本面向 macOS 和 Windows 安装包,本仓库不包含托管后端,也不包含 Harness 的 vendored 副本。

安装方式与五分钟上手

| 场景 | 安装 | 启动 |
| GUI | 从 GitHub Releases 下载对应平台安装包。 | 打开 Cocode,然后选择带 Nut 额度的 Cocode Pro,或自己的 DeepSeek 兼容 Key。 |
| TUI | Node.js 22.19.x 或更高版本(也支持 24+),执行 npm install --global @cocode-agency/tui。 | 先执行 cocode doctor,再执行 cocode;需要真实终端。 |
| 源码开发 | 按下面各组件的 pnpm 说明安装。 | 使用 make dev gui 或 make dev tui。 |

发布版 TUI 会自动安装匹配版本的 @cocode-agency/host-supervisor。每次发布时, @cocode-agency/tui 与 @cocode-agency/host-supervisor 必须保持同一版本线,不要混用不同发布版。
GUI 安装包从对应的 GitHub Release 单独下载,不通过 npm 安装。本仓库当前仍是开发者预览版,发布内容和上游 Harness 兼容性可能变化。

五分钟完成第一次运行

1. 从 GitHub Releases 安装 GUI,或执行 npm install --global @cocode-agency/tui。
2. 打开 GUI;或者在真实 TTY 中依次执行 cocode doctor、cocode。
3. 选择 Cocode Pro / Cocode Nut,或输入自己的 DeepSeek 兼容 API Key。
4. 打开一个工作区,让 Agent 检查一个文件或解释项目。
5. 如果启动失败,保存 cocode doctor 和 cocode host status --json 的输出用于排查。
分享前请删除凭证和私有会话内容。

为什么是 Cocode

Agent 本身是可以拆开的。 一个会话用哪些工具、什么提示词、开哪些能力,是一份叫「预设」的插件组装,界面上直接就能查看它的 agent.cordis.yml。内置标准、PTC、极简和创造四种,复制一份改成自己的即可。别处你能换的是模型,这里你能换的是 Agent 本身。

一个工作台,不是一个聊天框。 文件、Git、终端、内置浏览器和 diff 预览与会话在同一个界面里。Agent 改了什么、跑了什么,你在旁边就能看见,也能随时自己接手,不用在几个窗口之间来回搬运上下文。

桌面和终端接得上同一条会话。 GUI 和 TUI 连的是同一个 Host,读写同一份会话记录。
白天在桌面推进的任务,出门 SSH 上去用终端接着做——因为界面呈现态从不写进会话日志,换个客户端也能把整条对话完整重建出来。

模型也是你选的。 DeepSeek 官方 Key、任何 OpenAI 兼容的自建或网关端点,或者使用 Cocode Pro 提供的 Cocode Nut 托管模型服务——三条路都在,随时切换。

Cocode 不打算做成又一个聊天窗口,不会把完整思维链当成卖点摆给你看,也不会默认把所有工具都放开给模型。它想成为的,是一个你敢把真实工作放进去、并且能按自己的样子改的工作台。

两个入口,同一个会话

| Cocode GUI | 基于 Electron 的桌面工作台。会话、文件、终端和运行时状态在同一个界面里,代码 diff 与附件在预览面板中打开,确认之前就能看清改了什么。 |
| Cocode TUI | 面向键盘流和远程场景的终端客户端。SSH 上去就能继续推进任务,不需要图形环境。 |

两者通过 @cocode-agency/host-supervisor 接到同一个 Host;只有使用相同的 DSH_HOME、profile 和 Host 配置作用域时,才会共享会话与任务状态。在同一作用域内从桌面端切换到终端,不会让工作重来一遍。

Cocode GUI

Cocode 桌面工作台中的 DeepSeek Harness 会话

Cocode TUI

Cocode 终端界面中的 DeepSeek Harness 会话

仓库结构

这个仓库不是单一 workspace。三个组件各自是独立的 pnpm workspace,有各自的 lockfile 和工具链,由根目录的 Makefile 串起来。

cocode/
├── cocode-gui/ # Electron 桌面 / Web GUI (@cocode/gui-root) ├── cocode-tui/ # 终端客户端 (@cocode-agency/tui) ├── cocode-host-supervisor/ # 共享 DSH Host 生命周期 (@cocode-agency/host-supervisor) ├── Makefile # 根级开发快捷命令 └── AGENTS.md # 面向贡献者与 agent 的工程约定

运行时本身不在这里。@cocode-agency/host-supervisor 从 npm 固定依赖 @deepseek-ai/dsh,并负责 Supervisor 服务、本地 IPC 与 lease 协议、运行时槽位物化,以及 Cocode 的 JSON-RPC Host 插件。GUI 和 TUI 自己不启动 Harness 进程——它们为一个规范化的 DSH_HOME + profile + Host 配置 作用域申请 lease,然后连到 Host 广播出来的端点。

Cocode GUI ─┐
├─→ @cocode-agency/host-supervisor ─→ @deepseek-ai/dsh (npm) ─→ 模型 · 工具 · 会话 Cocode TUI ─┘

升级 DSH 时的兼容性检查

Cocode 按一个精确版本线使用 DSH。规范来源是 cocode-host-supervisor/package.json 里的 @deepseek-ai/dsh;GUI 客户端包和 packages/cocode/* 下每个插件的 DSH peer dependency 都必须使用同一个版本。

修改 DSH 版本并刷新两个 lockfile 后,先运行快速契约检查:

cd cocode-gui
corepack pnpm@10.34.5 install --frozen-lockfile --ignore-scripts
corepack pnpm@10.34.5 run check:dsh-contract

它会检查所有 DSH 版本声明、实际安装的 npm package manifest、Cocode 插件 manifest、浏览器插件入口,以及每个 dsh.client.inject 目标是否存在且版本一致。
完整门禁会重新构建插件和 Electron,运行 GUI/Host 测试,重新暂存干净的 npm DSH 运行时,并校验依赖闭包与哈希:

corepack pnpm@10.34.5 run check:dsh-compatibility

不要只把 TypeScript 编译成功当作兼容证明。DSH 升级还可能改变 slot 名称、插件注入关系、客户端导出入口或运行时依赖闭包;干净 staging 和 runtime verification 才能在发布前拦住这些集成问题。

环境要求

三个组件的工具链基线并不统一,按你要构建的那个来:

| 组件 | Node.js | pnpm |
| cocode-gui | >=22.12.0(见 .nvmrc) | 精确 10.34.5 |
| cocode-tui | ^22.19 或 >=24 | 任意较新版本 |
| cocode-host-supervisor | >=22.12.0 | 任意较新版本 |

快速开始

下面的目标都在仓库根目录执行。

桌面工作台:Electron 客户端 + Vite,端口 5273
make install-gui
make dev gui

终端客户端(需要 TTY;preflight 会装依赖并在必要时刷新 Host 运行时)
make install-tui
make dev tui

纯浏览器 GUI,适合调设计系统
make dev gui-web

单独跑 Host,用于调试 wire 协议
make install-dsh
make dev dsh

直接执行 make 会列出所有目标。

cocode 命令

安装 TUI 或桌面版后,cocode 是统一入口。没有子命令时保持原行为,直接打开 TUI;GUI、TUI 和 Host 管理使用同一组环境变量,因此不同端可以访问同一个 Host 作用域。

cocode --version # 查询安装版本 cocode gui # 打开 GUI cocode tui # 打开 TUI cocode host status # 查询共享 Host,不会启动 Host cocode host status --json # 输出机器可读状态 cocode host stop # 无活动客户端时停止 Host 和 Supervisor cocode host stop --force # 明确中断仍持有 lease 的 GUI/TUI 客户端 cocode doctor # 检查 TUI、Supervisor 和 Host 能否联通

--dsh-home <path>、--profile <name> 和 --runtime-channel stable|preview|dev 可以放在子命令前或后,用来选择需要管理的 Host 作用域。跨平台无法自动定位 GUI 时,设置 COCODE_GUI_EXECUTABLE(也支持别名 COCODE_GUI_PATH)指定 GUI 可执行文件。

GUI 会复用系统缓存目录里已暂存的运行时。缓存过期时有两个逃生口:

DSH_FORCE_RESTAGE=1 make dev gui # 刷新缓存
DSH_DISABLE_RUNTIME_CACHE=1 make dev gui # 隔离运行时,不走缓存

构建安装包

make gui-build # 当前平台的 Electron Forge 安装包

GUI 的发布构建统一使用平台和架构参数:

cd cocode-gui
corepack pnpm@10.34.5 run release -- --platform darwin --arch arm64

原有的 release:<platform>:<arch> 命令暂时保留为兼容别名,供已有自动化流程使用。

GUI 是私有的 Electron workspace,而不是 npm 应用包。TUI 和 Host Supervisor 已配置公开发布流程,但从 registry 安装前,应只使用同一个 GitHub Release 和 npm 发布中的匹配版本。

模型接入

Cocode 不内置模型,也不绑定某一家。第一次打开时它只问你一件事:用带 Nut 额度的 Cocode Pro,还是用你自己的 Key。 两条路都能留在这台机器上,随时切换。

Cocode Pro:订阅

Cocode Pro 是面向 Cocode GUI 和 TUI 的订阅计划,提供周期性的 Nut 模型额度、精选模型权限、付费调用优先级,以及统一的用量、账单和自动充值管理。周期额度在账期结束时失效;单独购买的 Nut 充值额度不会过期。

Cocode Nut:不用去申请 API Key

Cocode Nut 是工作台背后的托管模型服务。登录后可以从桌面端、终端或 OpenAI-compatible 个人 API Key 调用模型,不用申请或轮换上游 Key。

- 有免费档,可以直接试。 不用先付钱,跑通了再决定要不要加额度。
- Cocode Pro 从 $10 / 月起,最多可用价值 $60 的模型额度。 实际能跑多少取决于你用哪个模型,不是一个固定数额。模型跑在我们自建的 B300 集群上,不经第三方转售,所以同样的钱能多跑不少任务。
- DeepSeek V4 Pro 和 V4 Flash。 免费档只用 Flash,付费档两个都能用。
- 一份额度,两个入口共用。 桌面端和终端花的是同一份,不用分开管。
- 你的代码不会被拿去训练。 提示词、代码和模型返回不用于训练、不出售给第三方,除完成调用、计费和必要排障外不留存请求内容。

最新 Cocode Pro 套餐以 cocode.agency/pro 为准,模型服务和 API 说明见 cocode.agency/nut,随时可以升级或取消。身份令牌存在 ~/.cocode 下的 account.yaml,推理用的个人 Key 交给 Host 凭据服务管理,两者都不会进入会话日志。

自带 Key

已经有 DeepSeek API key 的话,首次启动直接粘贴即可。Cocode 本来就是 DeepSeek Harness 的发行版,完全在本地跑通不附加任何条件。Key 存在 $DSH_HOME 下的 DSH 凭据文件里,同样不会进入会话日志。

相关环境变量:DSH_HOME 和 DSH_PROFILE 决定共享 Host 的作用域, COCODE_HOST_CONFIG_FINGERPRINT 用于固定自定义 Host 组合,COCODE_HOME 隔离 Cocode 凭据,DSH_SESSION_ROOT 用于迁移会话文件位置。

文档

| CONTRIBUTING.md | 贡献流程、检查项和改动边界 |
| SECURITY.md | 漏洞报告流程 |
| cocode-tui/docs/ | TUI 用户指南,含中英文 |
| cocode-host-supervisor/README.md | Supervisor lease 协议与客户端 API |
| cocode-gui/README.md | GUI 开发、打包和更新行为 |
| THIRD_PARTY_NOTICES.md | 第三方来源与许可证说明 |

产品文档见 doc.cocode.agency。

参与贡献

先读 CONTRIBUTING.md——里面说明了提交信息规范、哪些检查是必须的,以及改动如何在三个组件之间划分范围。请将改动限制在对应组件内,不要提交本地运行时、缓存、凭据或生成产物。

报告安全漏洞请走 SECURITY.md 的流程,不要开公开 issue。

许可证

MIT © 2026 Cocode Agency。

第三方组件(包括 DeepSeek Harness 和以源码形式内置的 Cordis 框架)各自保留其许可证,详见 THIRD_PARTY_NOTICES.md。

cocode.agency · 文档 · 下载 · Cocode Pro · Cocode Nut
预览分享卡片长什么样 ↓cocode-agency/cocode
分享 · DeepSeek Harness Hub
cocode-agency/cocode

开箱即用的 DeepSeek Harness 发行版。

回到顶部