Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
3d18e1d
fix: 终端内容溢出 viewport 时的重影 bug
claude-code-best Jun 20, 2026
67d9d34
chore: 删除 3 个孤立诊断脚本
claude-code-best Jun 20, 2026
7c42e97
chore: 移除 self-hosted-runner stub 及其 cli.tsx fast-path
claude-code-best Jun 20, 2026
07a1a21
chore: 删除 agentSdkTypes 中三个 not-implemented stub
claude-code-best Jun 20, 2026
7242e5c
chore: 移除 Cursor.ts 中未引用的 kill ring 访问器
claude-code-best Jun 20, 2026
55a1711
chore: 移除 insights.ts 中未引用的导出
claude-code-best Jun 20, 2026
6194017
chore: 移除 autonomyCommandSpec.ts 中未引用的导出
claude-code-best Jun 20, 2026
5929308
chore: 移除 binaryCheck/claudeAiLimits/codeIndexing 中未引用的导出
claude-code-best Jun 20, 2026
ef18f95
chore: 移除多处仅内部使用的 export 关键字
claude-code-best Jun 20, 2026
b55ae75
chore: 清理注释代码块与 legacy shim
claude-code-best Jun 20, 2026
2711b63
chore: 移除 ccshareResume stub 及 main.tsx 的 ccshare fast-path
claude-code-best Jun 20, 2026
6d96173
chore: 移除 environment-runner stub 及其 cli.tsx fast-path
claude-code-best Jun 20, 2026
fe22aa7
chore: 删除孤立诊断脚本 probe-local-wiring.ts
claude-code-best Jun 20, 2026
704c2d7
chore: 移除 ultrareview preflight stub 及其测试
claude-code-best Jun 20, 2026
bdfe84b
chore: 移除 cachedMCConfig stub 及 prompts.ts 的 CACHED_MICROCOMPACT 死代码
claude-code-best Jun 20, 2026
402d076
chore: 移除 goalAudit stub 及其测试引用
claude-code-best Jun 20, 2026
57f13d1
chore: 删除 agentSdkTypes 第二批 not-implemented stub
claude-code-best Jun 20, 2026
9005432
chore: 移除 Tool.ts 中 backwards-compat 重导出 shim
claude-code-best Jun 20, 2026
f7875fc
chore: 移除 bootstrap/state.ts 中 4 个未引用的 export
claude-code-best Jun 20, 2026
e8dd441
chore: 移除 src/ 下多处未引用的导出
claude-code-best Jun 20, 2026
d96323c
chore: 移除 packages/ 下多处未引用的导出
claude-code-best Jun 20, 2026
f47ba3b
Revert "fix: 终端内容溢出 viewport 时的重影 bug"
claude-code-best Jun 20, 2026
ade9bab
revert: 移除主屏幕周期性 self-healing 重绘
claude-code-best Jun 20, 2026
1638728
fix: /workflows 面板默认只显示运行中 run,根治 tab 行乱码
claude-code-best Jun 20, 2026
9dba902
fix: /workflows 面板 phase 状态在脚本省略 phase() 时显示错乱
claude-code-best Jun 21, 2026
97f32a4
docs: 更新 readme
claude-code-best Jun 21, 2026
2746cc1
fix: ACP 模式未读取 settings.local.json
claude-code-best Jun 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@

| 特性 | 说明 | 文档 |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **🎯 Goal 持续驱动** | `/goal <objective>` 设定目标后,自动跨轮驱动 agent 直至完成;带 token budget、completion/blocked audit、`pause`/`resume`/`continue`/`clear` 子命令,网络中断自动暂停 | 源码 [`commands/goal/`](./src/commands/goal/) · [`services/goal/`](./src/services/goal/) |
| **📦 Artifacts(HTML 上传)** | 复刻 Anthropic 官方 Artifacts:模型把 HTML/数据看板/报告上传到公开 URL(7d/30d 自动过期),`/artifacts` 命令集中管理,Cloudflare Worker + R2 完全开源、可自托管 | [8 小时复刻报告](./docs/blog/2026-06-20-cloud-artifacts-8h-recap.md) · [在线 demo](https://cloud-artifacts.claude-code-best.win/30d/c2jfwi3E-y3fTZ1ors-KE.html) |
| **🧠 Ultracode 多 Agent 编排** | `/ultracode` 注入 workflow 编排手册 + `Workflow` 工具跑确定性 JS 脚本(`agent`/`pipeline`/`parallel`/`phase`)+ `/workflows` 双栏监控面板;支持 journal 重放、token budget、并发 cap | [文档](https://ccb.agent-aura.top/docs/features/workflow-scripts) |
| **Claude 群控技术** | Pipe IPC 多实例协作:同机 main/sub 自动编排 + LAN 跨机器零配置发现与通讯,`/pipes` 选择面板 + `Shift+↓` 交互 + 消息广播路由 | [Pipe IPC](https://ccb.agent-aura.top/docs/features/uds-inbox) / [LAN](https://ccb.agent-aura.top/docs/features/lan-pipes) |
| **ACP 协议一等一支持** | 支持接入 Zed、Cursor 等 IDE,支持会话恢复、Skills、权限桥接 | [文档](https://ccb.agent-aura.top/docs/features/acp-zed) |
| **Remote Control 私有部署** | Docker 自托管远程界面, 可以手机上看 CC | [文档](https://ccb.agent-aura.top/docs/features/remote-control-self-hosting) |
Expand Down
31 changes: 0 additions & 31 deletions packages/@ant/ink/src/core/ink.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -165,12 +165,6 @@ export default class Ink {
private frontFrame: Frame;
private backFrame: Frame;
private lastPoolResetTime = performance.now();
/** Timestamp of last periodic full-redraw in main screen mode. Used to
* recover from accumulated cursor drift / blit ghosting. Wall-clock
* based (not frame-count) so drain scroll frames (250fps) don't
* accelerate the cycle. Alt-screen doesn't need this — CSI H resets
* cursor every frame. */
private lastMainScreenHealTime = performance.now();
private drainTimer: ReturnType<typeof setTimeout> | null = null;
private lastYogaCounters: {
ms: number;
Expand Down Expand Up @@ -527,25 +521,7 @@ export default class Ink {
// an extra React re-render cycle.
this.options.onBeforeRender?.();

// Periodic self-healing: every ~5s in main screen mode, force a full
// terminal redraw to recover from accumulated cursor drift / blit
// ghosting. Alt-screen doesn't need this — CSI H resets cursor to
// (0,0) every frame. Wall-clock based so drain scroll frames (250fps)
// don't accelerate the cycle. Guarded by isTTY so ANSI escape
// sequences are not leaked into pipes / redirected output.
const renderStart = performance.now();
if (
!this.altScreenActive &&
!this.isPaused &&
this.options.stdout.isTTY &&
renderStart - this.lastMainScreenHealTime > 5000
) {
this.lastMainScreenHealTime = renderStart;
this.repaint();
this.prevFrameContaminated = true;
this.needsEraseBeforePaint = true;
}

const terminalWidth = this.options.stdout.columns || 80;
const terminalRows = this.options.stdout.rows || 24;

Expand Down Expand Up @@ -780,13 +756,6 @@ export default class Ink {
optimized.unshift(CURSOR_HOME_PATCH);
}
optimized.push(this.altScreenParkPatch);
} else if (this.needsEraseBeforePaint && hasDiff) {
// Main-screen periodic self-healing: clear visible terminal before
// painting the diff. Without this, rows past the new frame's height
// would retain stale content from the previous frame. BSU/ESU keeps
// old content visible until the full erase+paint is flushed atomically.
this.needsEraseBeforePaint = false;
optimized.unshift(ERASE_THEN_HOME_PATCH);
}

// Native cursor positioning: park the terminal cursor at the declared
Expand Down
5 changes: 0 additions & 5 deletions packages/@ant/ink/src/core/termio/csi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -203,11 +203,6 @@ export function eraseToStartOfLine(): string {
return csi(1, 'K')
}

/** Erase entire line (CSI 2 K) */
export function eraseLine(): string {
return csi(2, 'K')
}

/** Erase entire line - constant form */
export const ERASE_LINE = csi(2, 'K')

Expand Down
5 changes: 0 additions & 5 deletions packages/acp-link/src/manager/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,6 @@ export interface LogEntry {
text: string
}

export interface CreateInstanceRequest {
group: string
command: string
}

export interface InstanceSummary {
id: string
group: string
Expand Down
10 changes: 0 additions & 10 deletions packages/builtin-tools/src/tools/AgentTool/agentMemory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,16 +100,6 @@ export function isAgentMemoryPath(absolutePath: string): boolean {
return false
}

/**
* Returns the agent memory file path for a given agent type and scope.
*/
export function getAgentMemoryEntrypoint(
agentType: string,
scope: AgentMemoryScope,
): string {
return join(getAgentMemoryDir(agentType, scope), 'MEMORY.md')
}

export function getMemoryScopeDisplay(
memory: AgentMemoryScope | undefined,
): string {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { createPermissionRequestMessage } from 'src/utils/permissions/permission
import { BashTool } from './BashTool.js'
import { bashCommandIsSafeAsync_DEPRECATED } from './bashSecurity.js'

export type CommandIdentityCheckers = {
type CommandIdentityCheckers = {
isNormalizedCdCommand: (command: string) => boolean
isNormalizedGitCommand: (command: string) => boolean
}
Expand Down
5 changes: 0 additions & 5 deletions packages/builtin-tools/src/tools/BashTool/bashSecurity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -579,11 +579,6 @@ export function stripSafeHeredocSubstitutions(command: string): string | null {
return result
}

/** Detection-only check: does the command contain a safe heredoc substitution? */
export function hasSafeHeredocSubstitution(command: string): boolean {
return stripSafeHeredocSubstitutions(command) !== null
}

function validateSafeCommandSubstitution(
context: ValidationContext,
): PermissionResult {
Expand Down
9 changes: 0 additions & 9 deletions packages/builtin-tools/src/tools/BashTool/sedEditParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,6 @@ export type SedEditInfo = {
extendedRegex: boolean
}

/**
* Check if a command is a sed in-place edit command
* Returns true only for simple sed -i 's/pattern/replacement/flags' file commands
*/
export function isSedInPlaceEdit(command: string): boolean {
const info = parseSedEditCommand(command)
return info !== null
}

/**
* Parse a sed edit command and extract the edit information
* Returns null if the command is not a valid sed in-place edit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,6 @@ export function getConfig(key: string): SettingConfig | undefined {
return SUPPORTED_SETTINGS[key]
}

export function getAllKeys(): string[] {
return Object.keys(SUPPORTED_SETTINGS)
}

export function getOptionsForSetting(key: string): string[] | undefined {
const config = SUPPORTED_SETTINGS[key]
if (!config) return undefined
Expand Down
36 changes: 0 additions & 36 deletions packages/builtin-tools/src/tools/FileEditTool/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -317,42 +317,6 @@ export function getSnippetForPatch(
return { formattedSnippet, startLine }
}

/**
* Gets a snippet from a file showing the context around a single edit.
* This is a convenience function that uses the original algorithm.
* @param originalFile The original file content
* @param oldString The text to replace
* @param newString The text to replace it with
* @param contextLines The number of lines to show before and after the change
* @returns The snippet and the starting line number
*/
export function getSnippet(
originalFile: string,
oldString: string,
newString: string,
contextLines: number = 4,
): { snippet: string; startLine: number } {
// Use the original algorithm from FileEditTool.tsx
const before = originalFile.split(oldString)[0] ?? ''
const replacementLine = before.split(/\r?\n/).length - 1
const newFileLines = applyEditToFile(
originalFile,
oldString,
newString,
).split(/\r?\n/)

// Calculate the start and end line numbers for the snippet
const startLine = Math.max(0, replacementLine - contextLines)
const endLine =
replacementLine + contextLines + newString.split(/\r?\n/).length

// Get snippet
const snippetLines = newFileLines.slice(startLine, endLine)
const snippet = snippetLines.join('\n')

return { snippet, startLine: startLine + 1 }
}

export function getEditsForPatch(patch: StructuredPatchHunk[]): FileEdit[] {
return patch.map(hunk => {
// Extract the changes from this hunk
Expand Down
7 changes: 0 additions & 7 deletions packages/remote-control-server/src/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -405,13 +405,6 @@ export function storeListAcpAgentsByChannelGroup(
)
}

/** List online ACP agents */
export function storeListOnlineAcpAgents(): EnvironmentRecord[] {
return [...environments.values()].filter(
e => e.workerType === 'acp' && e.status === 'active',
)
}

/** Mark an ACP agent as offline */
export function storeMarkAcpAgentOffline(id: string): boolean {
const rec = environments.get(id)
Expand Down
8 changes: 0 additions & 8 deletions packages/remote-control-server/src/transport/event-bus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,3 @@ export function getAcpEventBus(channelGroupId: string): EventBus {
}
return bus
}

export function removeAcpEventBus(channelGroupId: string) {
const bus = acpBuses.get(channelGroupId)
if (bus) {
bus.close()
acpBuses.delete(channelGroupId)
}
}
12 changes: 0 additions & 12 deletions packages/remote-control-server/src/types/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,6 @@ export interface ControlRequest extends SDKMessage {
[key: string]: unknown
}

export type SessionEventType =
| 'user'
| 'assistant'
| 'automation_state'
| 'permission_request'
| 'permission_response'
| 'control_request'
| 'tool_use'
| 'tool_result'
| 'status'
| 'error'

// --- Normalized Event Payloads (SSE contract) ---

export interface NormalizedEventPayload {
Expand Down
Loading